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 にマップされます。 |
多クラス分類
多クラス分類は、データのインスタンスを 3 つ以上の クラス (カテゴリ) のいずれかに分類するために使用される、
- フライトを "早期"、"期限内"、または "遅延" として分類します。
- 映画のレビューを "肯定的"、"ニュートラル"、または "否定的" と理解します。
- たとえば、ホテルのレビューを "場所"、"価格"、"清潔さ" として分類します。
詳細については、Wikipedia の 多クラス分類 記事を参照してください。
多クラス分類トレーナー
次のトレーニング アルゴリズムを使用して、多クラス分類モデルをトレーニングできます。
- TextClassificationTrainer
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
多クラス分類の入力と出力
入力ラベル列のデータは、キー 型である必要があります。 特徴列は、Singleの固定サイズ ベクトルである必要があります。
このトレーナーは、次の内容を出力します。
[出力名] | 種類 | 説明 |
---|---|---|
Score |
Single のベクトル | すべてのクラスのスコア。 値が大きいほど、関連するクラスに分類される確率が高いことを意味します。 i -th 要素の値が最も大きい場合、予測されるラベル インデックスは i されます。 i は 0 から始まるインデックスであることに注意してください。 |
PredictedLabel |
キー | 予測ラベルのインデックス。 値が i の場合、実際のラベルは、キー値入力ラベルの種類の i 番目のカテゴリになります。 |
テキスト分類
テキスト分類は、特に生テキストを扱う多クラス分類のサブカテゴリです。 テキストは、テキストが発生するコンテキストとセマンティクスを考慮する必要があるため、興味深い課題になります。 そのため、意味とコンテキストをエンコードするのが難しい場合があります。
ディープ ラーニング モデルは、自然言語の問題を解決するための有望な手法として登場しています。 より具体的には、トランスフォーマー として知られるニューラル ネットワークの一種が、テキスト分類、翻訳、要約、質問の回答などの自然言語の問題を解決する主な方法となっています。 自然言語タスクの一般的なトランスフォーマー アーキテクチャには、次のようなものがあります。
- トランスフォーマーからの双方向エンコーダー表現 (BERT)
- 堅牢に最適化された BERT 事前トレーニング アプローチ (RoBERTa)
- 生成事前トレーニング済みトランスフォーマー (GPT)
ML.NET テキスト分類 API は、TorchSharp
テキスト分類の例については、「テキスト分類 APIの概要」を参照してください。
画像の分類
画像分類は、イメージのクラス (カテゴリ) を予測するために使用される、の教師あり機械学習 タスクです。 入力は、ラベル付けされた一連の例です。 通常、各ラベルはテキストとして開始されます。 その後、TermTransform を介して実行され、キー (数値) 型に変換されます。 画像分類アルゴリズムの出力は分類子であり、これを使用して新しい画像のクラスを予測できます。 画像分類タスクは、多クラス分類の一種です。 画像分類シナリオの例を次に示します。
- 犬の品種を「シベリアハスキー」、「ゴールデンレトリバー」、「プードル」などと判定する。
- 製造製品に欠陥があるかどうかを判断する。
- "バラ"、"ひまわり"などの花の種類を決定します。
画像分類トレーナー
次のトレーニング アルゴリズムを使用して、画像分類モデルをトレーニングできます。
画像分類の入力と出力
入力ラベル列のデータは、キー 型 である必要があります。 特徴列は、Byteの可変サイズのベクトルである必要があります。
このトレーナーは、次の列を出力します。
[出力名] | 種類 | 説明 |
---|---|---|
Score |
Single | すべてのクラスのスコア。 値が大きいほど、関連するクラスに分類される確率が高いことを意味します。 i -th 要素の値が最も大きい場合、予測されるラベル インデックスは i されます。 (i は 0 から始まるインデックスです。 |
PredictedLabel |
キーの種類 | 予測ラベルのインデックス。 値が i の場合、実際のラベルは、キー値入力ラベルの種類の i 番目のカテゴリになります。 |
回帰
回帰は、一連の関連する特徴からラベルの値を予測するために使用される、教師あり機械学習 タスクです。 ラベルは任意の実際の値にすることができ、分類タスクのように有限の値のセットからではありません。 回帰アルゴリズムは、関連する特徴に対するラベルの依存関係をモデル化して、特徴の値が変化するにつれてラベルがどのように変化するかを決定します。 回帰アルゴリズムの入力は、既知の値のラベルを持つ一連の例です。 回帰アルゴリズムの出力は関数であり、新しい入力特徴セットのラベル値を予測するために使用できます。 回帰シナリオの例を次に示します。
- 住宅の属性 (寝室の数、場所、サイズなど) に基づいて住宅価格を予測する。
- 過去のデータと現在の市場動向に基づいて将来の株価を予測する。
- 広告予算に基づいて製品の売上を予測する。
- 文書内の関連記事の検索 (文の類似性)。
回帰トレーナー
回帰モデルは、次のアルゴリズムを使用してトレーニングできます。
- SentenceSimilarityTrainer
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
回帰の入力と出力
入力ラベル列のデータは Singleする必要があります。
このタスクのトレーナーは、次のように出力します。
[出力名] | 種類 | 説明 |
---|---|---|
Score |
Single | モデルによって予測された生のスコア |
クラスタリング
クラスタリングは、教師なし機械学習 タスク
- ホテルの選択の習慣と特性に基づいて、ホテルのゲストのセグメントを理解します。
- ターゲット広告キャンペーンの構築に役立つ顧客セグメントと人口統計を特定する。
- 製造メトリックに基づいてインベントリを分類する。
クラスタリング トレーナー
クラスタリング モデルは、次のアルゴリズムを使用してトレーニングできます。
入力と出力のクラスタリング
入力特徴データは Singleである必要があります。 ラベルは必要ありません。
このトレーナーは、次の内容を出力します。
[出力名] | 種類 | 説明 |
---|---|---|
Score |
Single のベクトル | 指定されたデータポイントからすべてのクラスターの重心までの距離。 |
PredictedLabel |
キーの種類 | モデルによって予測される最も近いクラスターのインデックス。 |
異常検出
異常検出タスクは、主成分分析 (PCA) を使用して異常検出モデルを作成します。 PCA ベースの異常検出は、有効なトランザクションなど、1 つのクラスからトレーニング データを簡単に取得できるが、ターゲットとなる異常の十分なサンプルを取得するのが困難なシナリオでモデルを構築するのに役立ちます。
機械学習で確立された手法である PCA は、データの内部構造を明らかにし、データの分散を説明するため、探索的データ分析でよく使用されます。 PCA は、複数の変数を含むデータを分析することによって機能します。 変数間の相関関係を探し、結果の違いを最も適切にキャプチャする値の組み合わせを決定します。 これらの結合された特徴値は、プリンシパル コンポーネントと呼ばれるよりコンパクトな特徴空間を作成するために使用されます。
異常検出には、機械学習における多くの重要なタスクが含まれます。
- 不正な可能性があるトランザクションを特定する。
- ネットワーク侵入が発生したことを示す学習パターン。
- 患者の異常なクラスターを見つける。
- システムに入力された値をチェックします。
異常は定義上まれなイベントであるため、モデリングに使用するデータの代表的なサンプルを収集することは困難な場合があります。 このカテゴリに含まれるアルゴリズムは、不均衡なデータ セットを使用してモデルを構築およびトレーニングする主要な課題に対処するように特に設計されています。
異常検出トレーナー
異常検出モデルは、次のアルゴリズムを使用してトレーニングできます。
異常検出の入力と出力
入力特徴は、Single の固定サイズのベクターにする必要があります。
このトレーナーは、次の内容を出力します。
[出力名] | 種類 | 説明 |
---|---|---|
Score |
Single | 異常検出モデルによって計算された負でない無制限のスコア。 |
PredictedLabel |
Boolean | 入力が異常であるかどうかを true するか、そうでない場合は false します。 |
ランキング
ランク付けタスクは、ラベル付けされた一連の例からランカーを構築します。 このセット例は、特定の条件でスコア付けできるインスタンス グループで構成されています。 ランク付けラベルは、インスタンスごとに { 0、1、2、3、4 } です。 ランカーは、各インスタンスのスコアが不明な新しいインスタンス グループをランク付けするようにトレーニングされます。 ML.NET のランキング学習器は、機械が学習したランキングに基づいています。
ランク付けトレーニング アルゴリズム
ランク付けモデルは、次のアルゴリズムを使用してトレーニングできます。
入力と出力のランク付け
入力ラベルのデータ型は、キー 型または Singleでなければなりません。 ラベルの値によって関連性が決まります。値が大きいほど関連性が高いことを示します。 ラベルが キー 型の場合、キー インデックスは関連性の値であり、最も小さいインデックスは最も関連性が低い値です。 ラベルが Singleの場合、値が大きいほど関連性が高いことを示します。
特徴データはSingleの固定サイズベクトルである必要があり、入力行グループ列はキー型である必要があります。
このトレーナーは、次の内容を出力します。
[出力名] | 種類 | 説明 |
---|---|---|
Score |
Single | 予測を決定するためにモデルによって計算された無制限のスコア。 |
勧告
推奨タスクを使用すると、推奨される製品またはサービスの一覧を生成できます。 ML.NET では、カタログに製品評価データの履歴がある場合に推奨される コラボレーション フィルタリング アルゴリズムである マトリックス分解 (MF)が使用されます。 たとえば、ユーザーの映画評価の履歴データがあり、次に視聴する可能性が高い他の映画を推奨したいとします。
推薦訓練アルゴリズム
推奨モデルは、次のアルゴリズムを使用してトレーニングできます。
予測
予測タスクでは、過去の時系列データを使用して、将来の動作に関する予測を行います。 予測に適用されるシナリオには、天気予報、季節営業予測、予測メンテナンスなどがあります。
予測を行うトレーナー
予測モデルは、次のアルゴリズムを使用してトレーニングできます。
物体検出
物体検出は、監視対象機械学習 タスクであり、画像のクラス (カテゴリ) を予測するために使用されますが、そのカテゴリが画像内にある場所に境界ボックスも提供されます。 オブジェクト検出では、画像内の 1 つのオブジェクトを分類する代わりに、画像内の複数のオブジェクトを検出できます。 物体検出の例を次に示します。
- 道路の画像上の車、標識、または人を検出する。
- 製品の画像の欠陥を検出する。
- X 線画像に関する問題領域の検出。
オブジェクト検出モデルのトレーニングは、現在、Azure Machine Learning を使用
.NET