RDS SQLFlow モデルライブラリは、さまざまなシナリオに適した各種モデルを提供します。解決する必要がある問題の種類に基づいて、適切なモデルを選択できます。このトピックでは、さまざまなモデルとそのアルゴリズムについて説明します。
モデルの概要
分類モデル
分類モデルは、データセットに複数のデータカテゴリが含まれており、新しいデータが属するカテゴリを決定する必要があるという問題を解決するために使用されます。分類モデルは、二値 (はい/いいえ) の質問や多クラス分類 (A、B、または C) の質問に答えるのに役立ちます。詳細については、「分類モデル」をご参照ください。
シナリオ
画像分類: 手書き数字認識や物体認識などのタスク
テキスト分類: 感情分析や迷惑メールの識別などのタスク
推奨システム: e コマース分野におけるユーザーの購入意図の予測
医療診断: 患者情報を分析して疾患リスクを予測
回帰モデル
回帰モデルは、定量化可能な関係を持つデータに適しています。回帰モデルは、データ間の関係を推定し、推定された関係に基づいて新しいデータセットの予測を行うために使用できます。詳細については、「回帰モデル」をご参照ください。回帰モデルは、入力変数 (特徴) と出力変数 (結果) の間の関係に基づいて構築され、次のシナリオの要件を満たします。
シナリオ
経済学: 住宅価格や株価などの経済指標の予測。このシナリオでは、線形回帰がさまざまな変数間の関係を効率的に理解するのに役立ちます。
医学: ライフスタイルや遺伝情報などの特徴に基づいて、血糖値などの健康上の結果を予測します。
マーケティング: 広告費と売上収益の関係を分析して、マーケティング戦略を最適化します。
エンジニアリング: プロダクトのパフォーマンスを予測し、その結果を使用してさまざまなパラメーターに基づいてモデルを構築します。
社会科学: 教育レベルが収入に与える影響など、社会現象を分析します。
クラスタリングモデル
クラスタリングモデルは、特定の類似性に基づいてデータセット内のデータを分類し、次のシナリオで使用できる新しいインスタンスモデルを生成するために使用されます。詳細については、「クラスタリングモデル」をご参照ください。クラスタリングモデルは、機械学習 (ML) のための教師なし学習メソッドを提供します。クラスタリングモデルは、特徴の類似性に基づいて異なるサンプルを分類するために使用されます。結果では、同じグループ内のサンプルは互いに類似していますが、異なるグループ内のサンプルは著しく異なります。クラスタリングモデルは、ラベルなしデータ内の潜在的なパターンを効率的に識別できるため、データ分析やパターン認識で広く使用されています。
シナリオ
顧客分類: ベンダーは、クラスタリング分析を使用して、ユーザーの行動パターンとプリファレンスに関する詳細な調査を実施し、精密マーケティング戦略を実装したいと考えています。
画像処理: 画像分類と物体認識の間、類似した特徴を持つピクセルは、クラスタリングによって同じカテゴリに分類される必要があります。
異常検出: どのクラスターにも属さないサンプルを識別して、サイバーセキュリティの分野における攻撃などの潜在的な外れ値を検出する必要があります。
ドキュメントクラスタリング: 多くのドキュメントを Topic またはコンテンツで分類して、情報取得とデータ照合を容易にする必要があります。
バイオインフォマティクス: 遺伝子発現データの分析において、研究者はクラスター分析を使用して類似の遺伝子グループを特定したいと考えています。
分類モデル
DNNClassifier
概要
ディープニューラルネットワーク分類器 (DNNClassifier) は、二値または多クラス分類予測のためのディープニューラルネットワーク (DNN) モデルを構築するために TensorFlow が提供する高度な API です。この API は、多層の全結合ネットワークを使用してデータ内の非線形関係をキャプチャし、モデルの出力と実際のカテゴリ間の損失を最小化するように重みとバイアスをトレーニングおよび最適化します。
DNNClassifier の利点は次のとおりです。
使いやすさ: DNNClassifier は、ディープラーニングモデルの構築を簡素化する高度な API として機能します。
モジュール性: DNNClassifier を使用して、隠れ層の数やサイズなどのネットワーク構造を柔軟に構成できます。
並列トレーニング: DNNClassifier を使用すると、マルチコア CPU または GPU を使用してトレーニングを高速化できます。
複数の入力特徴: DNNClassifier は、数値特徴とカテゴリ特徴の組み合わせをサポートします。
パラメーター
パラメーター | 説明 |
model.hidden_units | DNN モデルの隠れ層のニューロン数。たとえば、値が [128, 32] の範囲にある場合、モデルには 2 つの隠れ層が含まれ、これらの層のニューロン数はそれぞれ 128 と 32 です。 |
model.n_classes | モデルが分類できるカテゴリの総数 (分類モデルに適用可能)。たとえば、 |
model.optimizer | モデルのトレーニングに使用されるオプティマイザー。 |
model.batch_norm | 各隠れ層の後に batch_norm を使用するかどうかを指定します。有効な値:
|
model.dropout | ドロップアウト確率。値の例: 0.5。デフォルト値: None。 |
例
### トレーニング
SELECT * FROM iris.train TO TRAIN DNNClassifier WITH
model.n_classes = 3,
train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;
## 予測
SELECT * FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;XGBoost gbtree
概要
Extreme Gradient Boosting (XGBoost) は、分類と回帰に広く使用される効率的な勾配ブースティングツリーアルゴリズムです。XGBoost gbtree モデルは、決定木をベース学習器として使用します。
このアルゴリズムには次の特徴があります。
高性能: さまざまな分類タスクにおいて、XGBoost の BoostedTreesClassifier は、従来の方法よりも高い精度を達成するのに役立ちます。
適応性: XGBoost は、特徴の重要性を自動的に評価し、さまざまなデータ分布に適応できます。
解釈可能性: XGBoost は、特徴の重要性を分析し、モデルがどのように決定を下すかを理解できるようにします。
過学習の防止: Boosted Trees は、正則化技術を使用して、深い木を走査する際の過学習を効果的に防止できます。
欠損値の処理能力: サンプル内の欠損値を適切に処理して、欠損値によって引き起こされる前処理の問題を回避できます。
並列および分散トレーニング: モデルは、大規模なデータセットで効率的にトレーニングできます。
例
## 二値分類に使用
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="binary:logistic", validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;
## 多クラス分類に使用
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="multi:softmax", num_class=3, validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;
## 回帰タスクに使用
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="reg:squarederror", validation.select="SELECT * FROM val_table"
LABEL target
INTO my_xgb_regression_model;GCN
概要
グラフ畳み込みネットワーク (GCN) は、グラフ上で畳み込みを適用することにより、グラフ構造化データを処理するために特別に設計されたディープラーニングモデルです。GCN は、ノード間の複雑な関係とグラフの深い構造的特徴を効果的にキャプチャできます。この機能により、GCN は、ソーシャルネットワーク、推奨システム、生物学的ネットワークに関わるデータなど、複雑な構造と関係を持つデータを分析できます。GCN は、ノードとエッジで構成されるグラフを入力として受け取ります。多くのビジネスシナリオでは、データはソーシャルネットワークや知識グラフなどのグラフ構造で自然に表現できます。GCN は、畳み込みニューラルネットワーク (CNN) でグラフ畳み込みを使用し、隣接ノードから特徴情報を集約して各ノードの表現を更新します。このようにして、ノードの表現には、その隣接ノードの特徴が含まれます。
シナリオ
ソーシャルネットワーク分析: GCN は、ソーシャルネットワークにおけるユーザー推奨、関係予測、コミュニティ検出などのタスクを実行するために使用できます。
ノード分類: GCN は、知識グラフまたは類似の構造内のノードまたはエンティティを分類し、特定のノードまたはエンティティが属するカテゴリを予測するために使用できます。これは、ブランドまたはプロダクトを分類するために使用できます。
画像セグメンテーション: GCN は、ピクセルで構成される画像で使用して、画像セグメンテーションと物体認識のパフォーマンスを向上させることができます。
回帰モデル
DNNRegressor
概要
DNNRegressor は、回帰タスクのディープラーニングのために TensorFlow が提供する高度な API です。DNNRegressor は TensorFlow Estimator モジュールに属し、テーブル内のデータや CSV フォーマットのデータなどの構造化データを処理するために使用できます。DNNRegressor は、複雑な非線形データ関係を学習して、価格や確率などの連続値の出力を予測するためにも使用できます。
パラメーター
パラメーター | 説明 |
n_classes | モデルが分類できるカテゴリの総数 (分類モデルに適用可能)。たとえば、 |
optimizer | モデルのトレーニングに使用されるオプティマイザー。 |
sparse_combiner | カテゴリ列の入力に複数の同一の値が含まれている場合の処理メソッドを指定します。例: |
例
## トレーニング
SELECT f9, target FROM housing.train
TO TRAIN DNNRegressor WITH model.hidden_units = [10, 20]
COLUMN EMBEDDING(CATEGORY_ID(f9, 1000), 2, "sum")
LABEL target
INTO housing.dnn_model;
## 予測
SELECT f9, target FROM housing.test
TO PREDICT housing.predict.class USING housing.dnn_model;RNNBasedTimeSeriesModel
概要
RNNBasedTimeSeriesModel、再帰型ニューラルネットワーク (RNN) は、長短期記憶 (LSTM) 時系列に基づく予測モデルです。過去の値を特徴として使用して将来の値を予測します。RNN は、シーケンシャルデータを処理するために使用できるニューラルネットワークです。各タイムステップで、RNN は現在の時点のデータを受信するだけでなく、前の時点のステータスデータも考慮します。RNN は、株価、温度の読み取り値、自然言語などの時系列データの処理に適しています。
RNN の利点は次のとおりです。
メモリ機能: RNN は、以前の入力情報を保存できます。これにより、RNN は時系列の長期的な依存関係をキャプチャできます。
動的入力長: RNN は、任意の長さの入力シーケンスを処理できます。これは、時系列データにとって特に重要です。
非線形マッピング: RNN は、入力データと出力データの間に非線形関係を確立できます。これにより、RNN は時系列データに関する複雑な予測タスクを完了できます。
シーケンス生成: RNN は、予測タスクを完了し、音楽やテキスト情報などの時系列データを生成するために使用できます。
パラメーター
パラメーター | 説明 |
model.stack_units | LSTM レイヤーの数と各レイヤーのサイズ。デフォルト値: [500, 500]。 |
model.n_in | 入力時点の数。 |
model.n_out | 出力時点の数。 |
例
## トレーニング
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class
FROM iris.train
TO TRAIN sqlflow_models.RNNBasedTimeSeriesModel WITH
model.n_in=3,
model.stack_units = [10, 10],
model.n_out=2,
model.model_type="lstm",
validation.metrics= "MeanAbsoluteError,MeanSquaredError"
LABEL class
INTO sqlflow_models.my_dnn_regts_model_2;
## 予測
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class
FROM iris.test
TO PREDICT iris.predict_ts_2.class
USING sqlflow_models.my_dnn_regts_model_2;クラスタリングモデル
DeepEmbeddingClusterModel
概要
DeepEmbeddingClusterModel は、ディープラーニングとクラスタリングメソッドを組み合わせたモデルです。DeepEmbeddingClusterModel は、主にデータの低次元埋め込み表現を自動的に学習し、埋め込み空間でクラスタリングを実行するために使用されます。
DeepEmbeddingClusterModel の利点は次のとおりです。
ディープラーニング: DeepEmbeddingClusterModel は、ディープニューラルネットワークを特徴抽出に使用し、データの有用な表現を自動的に学習し、複雑な非線形関係をキャプチャできます。
埋め込み表現: DeepEmbeddingClusterModel は、高次元データを低次元の埋め込み空間に投影して、クラスタリングを簡素化し、クラスタリングのパフォーマンスを向上させることができます。
クラスタリング機能: DeepEmbeddingClusterModel は、埋め込み空間で直接クラスタリングを実行して、同じタイプのデータポイント間の距離を縮めることができます。これは、クラスタリングの精度と解釈可能性を向上させるのに役立ちます。
一般化機能: ほとんどの場合、DeepEmbeddingClusterModel は、ディープラーニングの利点により、ノイズの多い複雑なデータを処理できます。
スケーラビリティ: DeepEmbeddingClusterModel は、大量のデータを含むデータセットを処理でき、ディープラーニングに基づいてデータを効果的に反復および更新できます。
パラメーター
パラメーター | 説明 |
model.n_clusters | クラスタリングカテゴリの数。デフォルト値: 10。 |
model.kmeans_init | K-means アルゴリズムが実行されて最適なセンターポイントを取得する回数。デフォルト値: 20。 |
model.run_pretrain | 事前トレーニングを実行するかどうかを指定します。デフォルト値: True。 |
model.pretrain_dims | オートエンコーダーが事前トレーニングされるときの各隠れ層のディメンション。デフォルト値: [500, 500, 2000, 10]。 |
model.pretrain_activation_func | オートエンコーダー部分の活性化関数、デフォルト値: |
model.pretrain_batch_size | オートエンコーダートレーニングのバッチサイズ。デフォルト値: 256。 |
model.train_batch_size | トレーニングのバッチサイズ。デフォルト値: 256。 |
model.pretrain_epochs | 事前トレーニングのエポック数。デフォルト値: 10。 |
model.pretrain_initializer | オートエンコーダーパラメーターの初期化メソッド、デフォルト値: |
model.pretrain_lr | 事前トレーニングの学習率。デフォルト値: 1。 |
model.train_lr | トレーニングの学習率。デフォルト値: 0.1。 |
model.train_max_iters | トレーニングの最大反復ステップ数。デフォルト値: 8000。 |
model.update_interval | 必要な分布が更新されるステップ数。デフォルト値: 100。 |
model.tol | 許容範囲。デフォルト値: 0.001。 |
例
## トレーニング
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.train
TO TRAIN sqlflow_models.DeepEmbeddingClusterModel
WITH
model.pretrain_dims = [10,10,3],
model.n_clusters = 3,
model.pretrain_epochs=5,
train.batch_size=10,
train.verbose=1
INTO sqlflow_models.my_clustering_model;
## 予測
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_clustering_model;