次の方法で共有


ML.NET CLI コマンド リファレンス

classificationregression、および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 タスク コマンド (classificationregressionrecommendation、および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 タスク コマンド (classificationregressionrecommendationforecastingtrain) は、提供されたデータセットと 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 datasettest datasetを使用する場合、検証フェーズは次の 2 つの部分に分割されます。

  1. 最初のパートでは、モデルを確認し、検証データ (=validation) を使用して最適なパフォーマンスのアプローチを選択します。
  2. 次に、選択したアプローチ (=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

各コマンドのパラメーターの説明を含むコマンドのヘルプを出力します。

こちらも参照ください