ML.NET での機械学習のタスク
機械学習タスクとは、問題や質問、および利用可能なデータに基づいて行われる予測または推論の種類です。 たとえば、分類タスクはデータをカテゴリに割り当て、クラスター化タスクは類似性に従ってデータをグループ化します。
機械学習タスクはデータのパターンに依存します。明示的にプログラミングされるのでありません。
この記事では、ML.NET から選択できる機械学習のさまざまなタスクと、一般的なユース ケースをいくつか取り上げ説明します。
どのタスクが自分のシナリオにとって適切かを決定したら、モデルをトレーニングするのに最適なアルゴリズムを選択する必要があります。 使用可能なアルゴリズムは、タスクごとのセクションに一覧表示されています。
二項分類
データのインスタンスが 2 つのうちのどちらのクラス (カテゴリ) に属しているかを予測するために使用する教師あり機械学習タスクです。 分類アルゴリズムの入力はラベル付けされた一連のサンプルであり、各ラベルは整数 0 または 1 です。 二項分類アルゴリズムの出力は分類子であり、ラベルのない新しいインスタンスのクラスを予測するために使用できます。 二項分類のシナリオの例を次に示します。
- Twitter コメントのセンチメントが "肯定的" か "否定的" かを理解する。
- 患者が特定の病気であるかどうかを診断する。
- 電子メールを "スパム" としてマークするかどうかを決定する。
- 写真にイヌや果物などの特定のアイテムが含まれているかどうかを判断します。
詳しくは、Wikipedia の二項分類の記事を参照してください。
二項分類トレーナー
次のアルゴリズムを使用して二項分類モデルをトレーニングすることができます。
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
二項分類の入力と出力
二値分類で最適な結果を得るには、バランスの取れた (すなわち、正と負のトレーニング データの数が等しい) トレーニング データを使用します。 欠損値はトレーニングの前に処理しておきます。
入力ラベル列データは Boolean にする必要があります。 入力特徴列データは、Single の固定サイズ ベクターにする必要があります。
これらのトレーナーから、以下の列が出力されます。
出力列の名前 | 列の型 | 説明 |
---|---|---|
Score |
Single | モデルによって計算された生のスコア |
PredictedLabel |
Boolean | スコアの符号に基づく予測ラベル。 負のスコアは false にマップされ、正のスコアは true にマップされます。 |
多クラス分類
データのインスタンスのクラス (カテゴリ) を予測するために使用する教師あり機械学習タスクです。 分類アルゴリズムの入力は、ラベル付けされた一連のサンプルです。 各ラベルは、通常、テキストとして開始されます。 その後、TermTransform を経由してキー (数値) 型に変換されます。 分類アルゴリズムの出力は分類子であり、ラベルのない新しいインスタンスのクラスを予測するために使用できます。 多クラス分類のシナリオの例を次に示します。
- フライトを "早着"、"時間どおり"、"遅延" として分類する。
- 映画のレビューが "肯定的"、"中立"、"否定的" のどれかを理解する。
- ホテルのレビューを "立地"、"価格"、"清潔さ" などに分類する。
詳しくは、Wikipedia の多クラス分類の記事を参照してください。
多クラス分類トレーナー
次のトレーニング アルゴリズムを使用して多クラス分類モデルをトレーニングすることができます。
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
多クラス分類の入力と出力
入力ラベル列データはキー型にする必要があります。 特徴列は、Single の固定サイズ ベクターにする必要があります。
このトレーナーの出力は以下のとおりです。
出力の名前 | 種類 | 説明 |
---|---|---|
Score |
Single のベクター | すべてのクラスのスコア。 値が大きいほど、関連するクラスに分類される可能性が高くなります。 i 番目の要素が最大値の場合、予測ラベル インデックスは i になります。 i はゼロベースのインデックスです。 |
PredictedLabel |
キー型 | 予測ラベルのインデックス。 その値が i の場合、実際のラベルはキーと値の入力ラベルの型の i 番目のカテゴリになります。 |
回帰
関連する一連の特徴からラベルの値を予測するために使用する教師あり機械学習タスクです。 ラベルには任意の実際の値を使用できます。分類タスクのように有限の値のセットから取得するものではありません。 回帰アルゴリズムでは、ラベルに関連する特徴におけるラベルの依存関係をモデル化して、特徴の値が変化するとラベルがどのように変化するかを判断します。 回帰アルゴリズムの入力は、既知の値のラベルが付いた一連のサンプルです。 回帰アルゴリズムの出力は関数であり、新しい入力特徴のセットのラベル値を予測するために使用できます。 回帰のシナリオの例を次に示します。
- 住宅の属性 (寝室数、立地、規模など) に基づいて住宅価格を予測する。
- 履歴データと現在の市場動向に基づいて将来の株価を予測する。
- 広告予算に基づいて製品の売り上げを予測する。
回帰トレーナー
次のアルゴリズムを使用して回帰モデルをトレーニングすることができます。
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
回帰の入力と出力
入力ラベル列データは Single にする必要があります。
このタスクのトレーナーの出力は以下のとおりです。
出力の名前 | 種類 | 説明 |
---|---|---|
Score |
Single | モデルによって予測された生のスコア |
クラスタリング
データのインスタンスを、同様の特性を持つクラスタにグループ化するために使用する教師なし機械学習タスクです。 また、閲覧や単純な観測では論理的に導き出せない可能性のあるデータ セットにおける関係をクラスタリングを使用して識別することもできます。 クラスタリング アルゴリズムの入力と出力は、選択した方法によって異なります。 分布、重心、結合性、または密度に基づくアプローチを利用できます。 現在、ML.NET では、K 平均法によるクラスタリングを使用した重心に基づくアプローチをサポートしています。 クラスタリングのシナリオの例を次に示します。
- ホテル選択の傾向と特性に基づいてホテルの宿泊客のセグメントを理解する。
- 対象を絞った広告キャンペーンの構築に役立つ顧客セグメントと統計データを特定する。
- 製造メトリックに基づいてインベントリを分類する。
クラスタリング トレーナー
次のアルゴリズムを使用してクラスタリング モデルをトレーニングすることができます。
入力と出力のクラスタリング
入力特徴データは Single である必要があります。 ラベルは必要ありません。
このトレーナーの出力は以下のとおりです。
出力の名前 | 種類 | 説明 |
---|---|---|
Score |
Single のベクター | 与えられたデータ ポイントからすべてのクラスターの重心までの距離 |
PredictedLabel |
キー型 | モデルによって予測された最も近いクラスターのインデックス。 |
異常検出
このタスクでは、主成分分析 (PCA) を使用して、異常検出モデルを作成します。 PCA に基づく異常分析は、有効なトランザクションなどの 1 つのクラスからトレーニング データを簡単に取得できるが、対象とする異常の十分なサンプルを取得するのが難しいシナリオでモデルを構築するのに役立ちます。
機械学習における確立された手法である PCA は、データの内部構造を明らかにし、データの分散を説明するために、調査データ分析で頻繁に使用されます。 PCA は、複数の変数が含まれるデータを分析することで機能します。 変数間の相関関係を探し、結果の違いを最もよく把握できる値の組み合わせを決定します。 これらの合成されたフィーチャー値を使用して、主成分と呼ばれる、よりコンパクトなフィーチャー空間が作成されます。
異常検出には、機械学習における多くの重要なタスクが含まれています。
- 不正な可能性があるトランザクションを識別します。
- ネットワークへの侵入が発生していることを示唆するパターンを学習します。
- 患者の異常なクラスターを検出します。
- システムに入力された値をチェックします。
異常とは定義上はまれに発生するイベントであるため、モデル化するために使用する代表的なデータ サンプルを収集するのは困難です。 このカテゴリに含まれるアルゴリズムは、不均衡なデータセットの使用によるモデルの構築とトレーニングという主要な課題に対処するように特別に設計されています。
異常検出トレーナー
次のアルゴリズムを使用して異常検出モデルをトレーニングすることができます。
異常検出の入力と出力
入力特徴は、Single の固定サイズのベクターにする必要があります。
このトレーナーの出力は以下のとおりです。
出力の名前 | 種類 | 説明 |
---|---|---|
Score |
Single | 異常検出モデルによって計算された、負ではない無制限のスコア |
PredictedLabel |
Boolean | 入力が異常 (PredictedLabel = true) か異常でないか (PredictedLabel = false) を表す true/false 値 |
ランキング
ランキング タスクでは、ラベル付きのサンプルのセットからランカーが構築されます。 この例のセットは、特定の条件を使用してスコア付けできるインスタンス グループで構成されています。 順位付けのラベルは、インスタンスごとに {0、1、2、3, 4} です。 各インスタンスのスコアが不明である新しいインスタンス グループをランク付けするように、ランカーがトレーニングされます。 ML.NET のランキング学習器は、機械が学習したランキングに基づいています。
ランキング トレーニング アルゴリズム
次のアルゴリズムを使ってランキング モデルをトレーニングすることができます。
入力と出力のランキング
入力ラベル データ型はキー型または Single である必要があります。 ラベルの値によって関連性が決まります。値が高いほど関連性が高くなります。 ラベルがキー型の場合、キーのインデックスは関連性の値です。ここで、最小のインデックスは最も低い関連性です。 ラベルが Single の場合、値が大きいほど関連性が高いことを示します。
特徴データは Single の固定サイズのベクターにする必要があります。また、入力行グループ列はキー型にする必要があります。
このトレーナーの出力は以下のとおりです。
出力の名前 | 種類 | 説明 |
---|---|---|
Score |
Single | 予測を決定するためにモデルによって計算された無制限のスコア |
推奨事項
レコメンデーション タスクによって、推奨される製品やサービスの一覧を作成できます。 ML.NET では、カタログ内に製品のレーティングの履歴データがある場合は、レコメンデーション用の協調フィルタリング アルゴリズムである行列因子分解 (MF) が使用されます。 たとえば、ユーザーによる映画の採点の履歴データがあるときに、そのユーザーが次に見たいと思う映画を推薦できます。
レコメンデーション トレーニング アルゴリズム
次のアルゴリズムを使ってレコメンデーション モデルをトレーニングすることができます。
予測
予測タスクでは過去の時系列データを使用し、将来の行動を予測します。 予測に適したシナリオには、気象予測、季節別の売上予測、予防保守管理などがあります。
予測トレーナー
次のアルゴリズムを使って予測モデルをトレーニングすることができます。
画像の分類
画像のクラス (カテゴリ) を予測するために使用する教師あり機械学習タスクです。 入力は、ラベル付けされた一連の例です。 各ラベルは、通常、テキストとして開始されます。 その後、TermTransform を経由してキー (数値) 型に変換されます。 画像分類アルゴリズムの出力は分類子であり、新しい画像のクラスを予測するために使用できます。 画像分類タスクは、マルチクラス分類の一種です。 画像分類のシナリオの例を次に示します。
- "シベリアン ハスキー"、"ゴールデン レトリバー"、"プードル" などの犬種を特定する。
- 製造製品に欠陥があるかどうかを判断する。
- "バラ"、"ヒマワリ" など、花の種類を特定する。
画像分類トレーナー
次のトレーニング アルゴリズムを使用して画像分類モデルをトレーニングすることができます。
画像分類の入力と出力
入力ラベル列データはキー型にする必要があります。 特徴列は、Byte の可変サイズのベクターにする必要があります。
このトレーナーからは、以下の列が出力されます。
出力の名前 | 種類 | 説明 |
---|---|---|
Score |
Single | すべてのクラスのスコア。値が大きいほど、関連するクラスに分類される可能性が高くなります。 i 番目の要素が最大値の場合、予測ラベル インデックスは i になります。i はゼロベースのインデックスです。 |
PredictedLabel |
キー型 | 予測ラベルのインデックス。 その値が i の場合、実際のラベルはキーと値の入力ラベルの型の i 番目のカテゴリになります。 |
オブジェクトの検出
画像のクラス (カテゴリ) を予測するために使用されるが、画像内でそのカテゴリがある場所の境界ボックスも提供する教師あり機械学習タスク。 オブジェクトの検出では、画像内の 1 つのオブジェクトを分類する代わりに、画像内の複数のオブジェクトを検出できます。 オブジェクトの検出の例を次に示します。
- 道路の画像での自動車、標識、または人の検出。
- 製品の画像での欠陥の検出。
- X 線画像での関心領域の検出。
オブジェクト検出モデルのトレーニングは、現在、Azure Machine Learning を使用する Model Builder でのみ使用できます。
.NET