classification
、regression
、およびrecommendation
コマンドは、ML.NET CLI ツールによって提供される主なコマンドです。 これらのコマンドを使用すると、自動機械学習 (AutoML) と、そのモデルを実行/スコア付けする C# コードの例を使用して、分類、回帰、およびレコメンデーション モデルの高品質な ML.NET モデルを生成できます。 さらに、モデルをトレーニングする C# コードが生成され、モデルのアルゴリズムと設定が調査されます。
注
この記事では、現在プレビュー段階にある ML.NET CLI と ML.NET AutoML について説明します。資料は変更される可能性があります。
概要
使用例:
mlnet regression --dataset "cars.csv" --label-col price
mlnet
ML タスク コマンド (classification
、regression
、recommendation
、およびforecasting
) では、次の資産が生成されます。
- シリアル化されたモデル .zip ("最適なモデル") をすぐに使用できます。
- 生成されたモデルを実行/スコア付けする C# コード。
- そのモデルの生成に使用されるトレーニング コードを含む C# コード。
最初の 2 つの資産は、エンドユーザー アプリ (ASP.NET Core Web アプリ、サービス、デスクトップ アプリなど) で直接使用して、モデルで予測を行うことができます。
3番目の資産であるトレーニングコードは、CLIが生成されたモデルをトレーニングするために使用したML.NET APIコードを示しているため、モデルの具体的なアルゴリズムと設定を調査できます。
例示
分類の問題に対する最も簡単な CLI コマンド (AutoML は、指定されたデータからほとんどの構成を推論します)。
mlnet classification --dataset "customer-feedback.tsv" --label-col Sentiment
回帰の問題に対するもう 1 つの簡単な CLI コマンド:
mlnet regression --dataset "cars.csv" --label-col Price
トレーニング データセット、テスト データセット、さらにカスタマイズされた明示的な引数を使用して、分類モデルを作成およびトレーニングします。
mlnet classification --dataset "/MyDataSets/Population-Training.csv" --test-dataset "/MyDataSets/Population-Test.csv" --label-col "InsuranceRisk" --cache on --train-time 600
コマンド オプション
mlnet
ML タスク コマンド (classification
、regression
、recommendation
、forecasting
、train
) は、提供されたデータセットと ML.NET CLI オプションに基づいて複数のモデルをトレーニングします。 これらのコマンドでは、最適なモデルを選択し、シリアル化された .zip ファイルとしてモデルを保存し、スコアリングとトレーニングに関連する C# コードを生成します。
分類オプション
mlnet classification
を実行すると、分類モデルがトレーニングされます。 ML モデルでデータを 2 つ以上のクラス (センチメント分析など) に分類する場合は、このコマンドを選択します。
mlnet classification
--dataset <path> (REQUIRED)
--label-col <col> (REQUIRED)
--cache <option>
--has-header (Default: true)
--ignore-cols <cols>
--log-file-path <path>
--name <name>
-o, --output <path>
--test-dataset <path>
--train-time <time> (Default: 30 minutes, in seconds)
--validation-dataset <path>
-v, --verbosity <v>
-?, -h, --help
回帰オプション
mlnet regression
を実行すると、回帰モデルがトレーニングされます。 ML モデルで数値 (価格予測など) を予測する場合は、このコマンドを選択します。
mlnet regression
--dataset <path> (REQUIRED)
--label-col <col> (REQUIRED)
--cache <option>
--has-header (Default: true)
--ignore-cols <cols>
--log-file-path <path>
--name <name>
-o, --output <path>
--test-dataset <path>
--train-time <time> (Default: 30 minutes, in seconds)
--validation-dataset <path>
-v, --verbosity <v>
-?, -h, --help
推奨オプション
mlnet recommendation
を実行すると、レコメンデーション モデルがトレーニングされます。 ML モデルで評価 (製品の推奨事項など) に基づいてユーザーに項目を推奨する場合は、このコマンドを選択します。
mlnet recommendation
--dataset <path> (REQUIRED)
--item-col <col> (REQUIRED)
--rating-col <col> (REQUIRED)
--user-col <col> (REQUIRED)
--cache <option>
--has-header (Default: true)
--log-file-path <path>
--name <name>
-o, --output <path>
--test-dataset <path>
--train-time <time> (Default: 30 minutes, in seconds)
--validation-dataset <path>
-v, --verbosity <v>
-?, -h, --help
入力オプションが無効な場合、CLI ツールは有効な入力とエラー メッセージの一覧を出力します。
予測オプション
mlnet forecasting
を実行すると、時系列予測モデルがトレーニングされます。 ML モデルで履歴データ (売上予測など) に基づいて値を予測する場合は、このコマンドを選択します。
mlnet forecasting
--dataset <dataset> (REQUIRED)
--horizon <horizon> (REQUIRED)
--label-col <label-col> (REQUIRED)
--time-col <time-col> (REQUIRED)
--cache <Auto|Off|On>
--has-header
--log-file-path <log-file-path>
--name <name>
-o, --output <output>
--test-dataset <test-dataset>
--train-time <train-time>
-v, --verbosity <verbosity>
トレーニングの選択肢
mlnet train
を実行すると、モデル ビルダーから生成された "mbconfig" ファイルに基づいてモデルがトレーニングされます。 このコマンドを機能させるには、トレーニング データが "mbconfig" ファイルと同じディレクトリにある必要があります。
-training-config <training-config> (REQUIRED)
--log-file-path <log-file-path>
-v, --verbosity <verbosity>
データセット
--dataset | -d
(文字列)
この引数は、次のいずれかのオプションにファイルパスを提供します。
A: データセット ファイル全体: このオプションを使用していて、ユーザーが
--test-dataset
と--validation-dataset
を提供していない場合は、モデルの検証にクロス検証 (k フォールドなど) または自動データ分割アプローチが内部的に使用されます。 その場合、ユーザーはデータセット ファイルパスを指定するだけで済みます。B: トレーニング データセット ファイル: ユーザーがモデル検証用のデータセットも提供している場合 (
--test-dataset
を使用し、必要に応じて--validation-dataset
)、--dataset
引数は "トレーニング データセット" のみを持つことになります。 たとえば、80% - 20% アプローチを使用してモデルの品質を検証し、精度メトリックを取得する場合、"トレーニング データセット" にはデータの% が 80 個あり、"テスト データセット" には 20% のデータが含まれます。
テスト データセット
--test-dataset | -t
(文字列)
テスト データセット ファイルを指すファイル パス。たとえば、精度メトリックを取得するために定期的な検証を行うときに 80% - 20% アプローチを使用する場合などです。
--test-dataset
を使用する場合は、--dataset
も必要です。
--validation-dataset を使用しない限り、 --test-dataset
引数は省略可能です。 その場合、ユーザーは 3 つの引数を使用する必要があります。
検証データセット
--validation-dataset | -v
(文字列)
検証データセット ファイルを指すファイル パス。 いずれの場合も、検証データセットは省略可能です。
validation dataset
を使用する場合、動作は次のようになります。
test-dataset
引数と--dataset
引数も必要です。validation-dataset
データセットは、モデル選択の予測エラーを推定するために使用されます。test-dataset
は、最終的に選択されたモデルの一般化エラーの評価に使用されます。 理想的には、テスト セットは "コンテナー" に保持し、データ分析の最後にのみ取り出す必要があります。
基本的に、 validation dataset
と test dataset
を使用する場合、検証フェーズは次の 2 つの部分に分割されます。
- 最初のパートでは、モデルを確認し、検証データ (=validation) を使用して最適なパフォーマンスのアプローチを選択します。
- 次に、選択したアプローチ (=test) の精度を推定します。
そのため、データの分離は 80/10/10 または 75/15/10 になります。 例えば次が挙げられます。
-
training-dataset
ファイルには、75 個の% のデータが含まれている必要があります。 -
validation-dataset
ファイルには、データの 15% が含まれている必要があります。 -
test-dataset
ファイルには、10% のデータが含まれている必要があります。
いずれの場合も、これらの割合は、既に分割されたファイルを提供する CLI を使用してユーザーによって決定されます。
ラベル列
--label-col
(int または string)
この引数を使用すると、データセットのヘッダーに設定された列の名前またはデータセットのファイル内の列の数値インデックス (列インデックス値は 0 から始まる) を使用して、特定の目標/ターゲット列 (予測する変数) を指定できます。
この引数は、 分類 と 回帰 の問題に使用されます。
項目列
--item-col
(int または string)
アイテム列には、ユーザーが評価する項目の一覧が表示されます (アイテムはユーザーに推奨されます)。 この列は、データセットのヘッダーに設定された列の名前、またはデータセットのファイル内の列の数値インデックス (列インデックスの値は 0 から始まる) を使用して指定できます。
この引数は、 推奨 タスクにのみ使用されます。
評価列
--rating-col
(int または string)
評価列には、ユーザーによって項目に与えられる評価の一覧が表示されます。 この列は、データセットのヘッダーに設定された列の名前、またはデータセットのファイル内の列の数値インデックス (列インデックスの値は 0 から始まる) を使用して指定できます。
この引数は、 推奨 タスクにのみ使用されます。
ユーザー列
--user-col
(int または string)
ユーザー列には、項目に評価を与えるユーザーの一覧が表示されます。 この列は、データセットのヘッダーに設定された列の名前、またはデータセットのファイル内の列の数値インデックス (列インデックスの値は 0 から始まる) を使用して指定できます。
この引数は、 推奨 タスクにのみ使用されます。
列を無視する
--ignore-columns
(文字列)
この引数を使用すると、データセット ファイル内の既存の列を無視して、トレーニング プロセスによって読み込まれ、使用されないようにすることができます。
無視する列名を指定します。 複数の列名を区切るには、'、' (スペース付きコンマ) または ' (スペース) を使用します。 空白を含む列名には引用符を使用できます ("ログイン" など)。
例:
--ignore-columns email, address, id, logged_in
ヘッダーがある
--has-header
(bool)
データセット ファイルにヘッダー行があるかどうかを指定します。 使用可能な値は次のとおりです。
true
false
ML.NET CLI は、この引数がユーザーによって指定されていない場合に、このプロパティの検出を試みます。
トレーニング時間
--train-time
(文字列)
既定では、探索またはトレーニングの最大時間は 30 分です。
この引数は、複数のトレーナーと構成を調べるプロセスの最大時間 (秒単位) を設定します。 1 回の反復に対して短すぎる (たとえば 2 秒) 場合、構成された時間制限を超える可能性があります。 この場合、実際の時間は、1 回のイテレーションで 1 つのモデル構成を生成するために必要な時間です。
イテレーションに必要な時間は、データセットのサイズによって異なる場合があります。
キャッシュ
--cache
(文字列)
キャッシュを使用すると、トレーニング データセット全体がメモリ内に読み込まれます。
中小規模のデータセットの場合、キャッシュを使用するとトレーニングのパフォーマンスが大幅に向上します。つまり、キャッシュを使用しない場合よりもトレーニング時間が短くなる可能性があります。
ただし、大規模なデータセットの場合、メモリ内のすべてのデータを読み込むと、メモリ不足になる可能性があるため、悪影響を及ぼす可能性があります。 キャッシュを使用せず、大きなデータセット ファイルを使用してトレーニングする場合、トレーニング中にさらにデータを読み込む必要がある場合、ML.NET はドライブからデータのチャンクをストリーミングします。
次の値を指定できます。
on
: トレーニング時にキャッシュを強制的に使用します。
off
: トレーニング時にキャッシュを強制的に使用しません。
auto
: AutoML のヒューリスティックに応じて、キャッシュが使用されるかしれません。 通常、小規模/中規模のデータセットではキャッシュが使用され、 auto
の選択肢を使用する場合、大きなデータセットではキャッシュは使用されません。
--cache
パラメーターを指定しない場合、キャッシュauto
構成が既定で使用されます。
名前
--name
(文字列)
作成された出力プロジェクトまたはソリューションの名前。 名前が指定されていない場合は、名前 sample-{mltask}
が使用されます。
ML.NET モデル ファイル (.ZIP ファイル) も同じ名前を取得します。
出力パス
--output | -o
(文字列)
生成された出力を配置するルートの場所/フォルダー。 既定値は、現在のディレクトリです。
冗漫
--verbosity | -v
(文字列)
標準出力の冗長度を設定します。
使用できる値は、以下のとおりです。
q[uiet]
-
m[inimal]
(既定) -
diag[nostic]
(ログ情報レベル)
既定では、CLI ツールでは、作業時に最小限のフィードバック (minimal
) が表示されます。たとえば、動作していること、可能であれば残っている時間や完了した時間の % などです。
ヘルプ
-h |--help
各コマンドのパラメーターの説明を含むコマンドのヘルプを出力します。
こちらも参照ください
.NET