ML.NET アルゴリズムの選び方
ML.NET タスク ごとに選択できるトレーニング アルゴリズムは複数あります。 どれを選択するかは、解決しようとしている問題、データの特性、利用できるコンピューティング リソースとストレージ リソースによって変わります。 機械学習モデルのトレーニングは反復処理である点に注意することが重要です。 場合によっては、最適なものを見つけるために複数のアルゴリズムを試す必要があります。
アルゴリズムは特徴に対して動作します。 特徴は、入力データから計算された数値です。 それらは機械学習アルゴリズムに最適な入力です。 生の入力データを 1 つ以上のデータ変換を使用して特徴に変換します。 たとえば、テキスト データは、単語数と単語の組み合わせ数のセットに変換されます。 データ変換を使用して生のデータの種類から特徴が抽出されると、特徴付けされたと呼ばれます。 たとえば、特徴付けされたテキスト、特徴付けされた画像データなどです。
トレーナー = アルゴリズム + タスク
アルゴリズムは、モデルを生成するために実行される数学です。 アルゴリズムが異なると、特性が異なるモデルが生成されます。
ML.NET では、同じアルゴリズムを異なるタスクに適用できます。 たとえば、確率的双対座標上昇法は、二項分類、多クラス分類、回帰に使用できます。 違いは、タスクに合わせてアルゴリズムの出力が解釈される方法にあります。
ML.NET には、各アルゴリズムとタスクの組み合わせに対して、トレーニング アルゴリズムを実行し、解釈するコンポーネントが用意されています。 これらのコンポーネントはトレーナーと呼ばれます。 たとえば、SdcaRegressionTrainer には、回帰タスクに適用される StochasticDualCoordinatedAscent アルゴリズムが使用されます。
線形アルゴリズム
線形アルゴリズムでは、入力データと一連の重みの線形結合からスコアを計算するモデルが生成されます。 重みは、トレーニング中に推定されるモデルのパラメーターです。
線形アルゴリズムは、線形分離可能である特徴の場合に適しています。
線形アルゴリズムでトレーニングする前に、特徴を正規化しておくことをお勧めします。 こうすることで、ある特徴が他の特徴よりも結果に大きな影響を及ぼすことを防ぎます。
一般に、線形アルゴリズムはスケーラブルで高速であり、トレーニング コストが低コストで、予測も低コストです。 これらは、特徴の数と、おおよそのトレーニング データ セットのサイズによってスケールします。
線形アルゴリズムは、トレーニング データに対して複数回実行されます。 データセットがメモリに収まる場合は、トレーナーを追加する前に ML.NET パイプラインにキャッシュ チェックポイントを追加すると、トレーニングが高速になります。
Averaged perceptron (平均化パーセプトロン)
テキスト分類に最適です。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
AveragedPerceptronTrainer | 二項分類 | はい |
確率的双対座標上昇法
既定のパフォーマンスが適切な場合、調整は不要です。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
SdcaLogisticRegressionBinaryTrainer | 二項分類 | はい |
SdcaNonCalibratedBinaryTrainer | 二項分類 | はい |
SdcaMaximumEntropyMulticlassTrainer | 多クラス分類 | はい |
SdcaNonCalibratedMulticlassTrainer | 多クラス分類 | はい |
SdcaRegressionTrainer | 回帰 | はい |
L-BFGS
特徴数が多い場合に使用します。 ロジスティック回帰トレーニング統計を生成しますが、AveragedPerceptronTrainer ほどスケーリングしません
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
LbfgsLogisticRegressionBinaryTrainer | 二項分類 | はい |
LbfgsMaximumEntropyMulticlassTrainer | 多クラス分類 | はい |
LbfgsPoissonRegressionTrainer | 回帰 | はい |
Symbolic stochastic gradient descent (シンボリック確率的勾配降下法)
最も高速で最も正確な線形二項分類トレーナー。 プロセッサの数に合わせてスケーリングします。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
SymbolicSgdLogisticRegressionBinaryTrainer | 二項分類 | はい |
オンライン勾配降下
選択した損失関数と、時間の経過と共に表示されるベクターの平均を使用して重みベクトルを更新するオプションを使用して、標準 (非バッチ) 確率的勾配降下法を実装します。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
OnlineGradientDescentTrainer | 回帰 | はい |
デシジョン ツリー アルゴリズム
デシジョン ツリー アルゴリズムは、一連の決定を含むモデルを作成します。事実上、データ値を通るフロー チャートです。
この種類のアルゴリズムを使用するために、特徴が線形に分離可能である必要はありません。 また、特徴ベクター内の個々の値は決定プロセスで独立して使用されるため、特徴を正規化する必要はありません。
一般的に、デシジョン ツリー アルゴリズムは非常に正確です。
Generalized Additive Model (一般化加法モデル、GAM) を除き、特徴の数が多いと、説明可能性のないツリー モデルになる可能性があります。
デシジョン ツリー アルゴリズムに消費されるリソースは多く、線形アルゴリズムほどスケールしません。 メモリに収まるようなデータセットに対しては適切に動作します。
Boosted decision trees (ブースト デシジョン ツリー) は小さなツリーの集合であり、各ツリーで入力データにスコアが付けられ、そのスコアは次のツリーに渡され、より良いスコアが生成されるという処理が繰り返されます。集合内の各ツリーは、前のツリーに基づいて改善されます。
Light gradient boosted machine (軽勾配ブースト マシン)
最も高速で最も正確な二項分類ツリー トレーナー。 高度に調整可能。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
LightGbmBinaryTrainer | 二項分類 | はい |
LightGbmMulticlassTrainer | 多クラス分類 | はい |
LightGbmRegressionTrainer | 回帰 | はい |
LightGbmRankingTrainer | 順位付け | いいえ |
Fast tree (高速ツリー)
特徴付けされた画像データに使用します。 不均衡なデータに対応できます。 高度に調整可能。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
FastTreeBinaryTrainer | 二項分類 | はい |
FastTreeRegressionTrainer | 回帰 | はい |
FastTreeTweedieTrainer | 回帰 | はい |
FastTreeRankingTrainer | 順位付け | いいえ |
Fast forest (高速フォレスト)
ノイズの多いデータに適しています。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
FastForestBinaryTrainer | 二項分類 | はい |
FastForestRegressionTrainer | 回帰 | はい |
Generalized Additive Model (一般化加法モデル、GAM)
ツリー アルゴリズムに適した問題で、説明可能性が優先される場合に最適です。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
GamBinaryTrainer | 二項分類 | いいえ |
GamRegressionTrainer | 回帰 | いいえ |
行列因子分解
行列因子分解
レコメンデーションでの協調フィルター処理に使用されます。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
MatrixFactorizationTrainer | 推奨 | いいえ |
Field Aware Factorization Machine
データセットが大規模で、カテゴリ別のスパース データに最適です。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
FieldAwareFactorizationMachineTrainer | 二項分類 | いいえ |
メタ アルゴリズム
これらのトレーナーでは、二項トレーナーから多クラストレーナーを作成します。 AveragedPerceptronTrainer、LbfgsLogisticRegressionBinaryTrainer、SymbolicSgdLogisticRegressionBinaryTrainer、LightGbmBinaryTrainer、FastTreeBinaryTrainer、FastForestBinaryTrainer、GamBinaryTrainer と共に使用します。
One versus all (1 対すべて)
この多クラス分類子では、クラスごとに 1 つの二項分類子がトレーニングされます。これにより、そのクラスは他のすべてのクラスと区別されます。 分類するクラスの数によってスケールが制限されます。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
OneVersusAllTrainer | 多クラス分類 | はい |
Pairwise coupling (ペアワイズ結合)
この多クラス分類子では、クラスの各ペアに対して二項分類アルゴリズムがトレーニングされます。 2 つのクラスの各組み合わせをトレーニングする必要があるので、クラスの数によってスケールが制限されます。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
PairwiseCouplingTrainer | 多クラス分類 | いいえ |
K-Means
クラスタリングに使用されます。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
KMeansTrainer | クラスタリング | はい |
主成分分析
異常検出に使用されます。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
RandomizedPcaTrainer | 異常検出 | いいえ |
Naive Bayes
特徴が独立しており、トレーニング データセットが小さい場合は、この多クラス分類アルゴリズムを使用します。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
NaiveBayesMulticlassTrainer | 多クラス分類 | はい |
以前のトレーナー
他のトレーナーのパフォーマンスを基準にするには、この二項分類アルゴリズムを使用します。 他のトレーナーのメトリックは以前のトレーナーよりも効果の点で優れています。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
PriorTrainer | 二項分類 | はい |
サポート ベクター マシン
サポート ベクター マシン (SVM) は非常に人気があり、よく研究されているクラスの教師あり学習モデルで、線形と非線形の分類タスクで使用できます。
最近の研究では、より大規模なトレーニング セットに合わせて効率的に拡大できるようにこれらのモデルを最適化する方法に重点が置かれています。
リニア SVM
ブール値のラベル付きデータに対してトレーニングされた線形二項分類モデルを使用して、ターゲットを予測します。 確率的勾配降下法ステップと射影ステップを交互に切り替えます。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
LinearSvmTrainer | 二項分類 | はい |
ローカル ディープ SVM
非線形二項分類モデルを使用してターゲットを予測します。 予測時間のコストを削減します。予測コストは、線形ではなくトレーニング セットのサイズに応じて対数的に増加し、分類精度の低下は許容可能です。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
LdSvmTrainer | 二項分類 | はい |
最小二乗法
最小二乗法 (OLS) は、線形回帰で最も一般的に使用される技術です。
通常の最小二乗法は、実績値から予測された線までの距離の平方の合計として誤差を計算し、二乗エラーを最小限にすることでモデルを適合させる損失関数を示します。 このメソッドは、入力と従属変数との間の強力な線形関係を前提とします。
Trainer | タスク | ONNX エクスポート可能 |
---|---|---|
OlsTrainer | 回帰 | はい |
.NET