次の方法で共有


チュートリアル: モデル ビルダーで回帰を使用して価格を予測する

このチュートリアルでは、ML.NET モデル ビルダーを使用して、価格を予測する回帰モデルを構築する方法について説明します。 このチュートリアルで開発する .NET コンソール アプリは、ニューヨークの過去のタクシー料金データに基づいてタクシー料金を予測します。

  • データを準備して理解する
  • モデル ビルダー構成ファイルを作成する
  • シナリオを選択する
  • データを読み込む
  • モデルをトレーニングする
  • モデルを評価する
  • 予測にモデルを使用する

モデル ビルダーの価格予測テンプレートは、数値の予測値を必要とする任意のシナリオに使用できます。 シナリオの例としては、住宅価格の予測、需要予測、売上予測などがあります。

前提 条件

前提条件とインストール手順の一覧については、Model Builder インストール ガイドを参照してください。

コンソール アプリケーションを作成する

"TaxiFarePrediction" という名前の C# コンソール アプリケーション を作成します。 ソリューションとプロジェクトを同じディレクトリに配置オフになっていることを確認します。

データを準備して理解する

  1. Data という名前のディレクトリをプロジェクトに作成して、データ セット ファイルを格納します。

  2. 機械学習モデルのトレーニングと評価に使用されるデータ セットは、NYC TLC タクシー乗車データ セットからのデータ セットです。

    1. データ セットをダウンロードするには、taxi-fare-train.csv ダウンロード リンクに移動します。

    2. ページが読み込まれたら、ページ上の任意の場所を右クリックし、[として保存] 選択します。

    3. [名前を付けて保存]ダイアログ を使用して、前の手順で作成した Data フォルダーにファイルを保存します。

  3. ソリューション エクスプローラー で、taxi-fare-train.csv ファイルを右クリックし、[プロパティ]選択します。 [詳細設定] で、[出力ディレクトリにコピー] の値を [新しい場合はコピーする] に変更します。

taxi-fare-train.csv データ セットの各行には、タクシーによって行われた乗車の詳細が含まれています。

  1. taxi-fare-train.csv データ セットを開く

    指定されたデータ セットには、次の列が含まれています。

    • vendor_id: タクシー ベンダーの ID が機能です。
    • rate_code: タクシー乗車の料金の種類が特徴です。
    • passenger_count: 乗車中の乗客数が特徴です。
    • trip_time_in_secs: 移動にかかった時間。 旅行が完了する前に、旅行の料金を予測する必要があります。 その時点で、あなたは旅行にどのくらいの時間がかかるか分かりません。 したがって、乗車時間は特徴ではないため、この列をモデルから除外します。
    • trip_distance: 乗車の距離が特徴です。
    • payment_type: 支払い方法 (現金またはクレジット カード) が機能です。
    • fare_amount: 支払った合計タクシー運賃はラベルです。

label は、あなたが予測したい列です。 回帰タスクを実行する場合の目標は、数値を予測することです。 この価格予測シナリオでは、タクシー乗車のコストが予測されています。 したがって、fare_amount はラベルです。 識別された features は、labelを予測するためにモデルに与える入力です。 この場合、trip_time_in_secs を除く残りの列は、料金を予測するための特徴または入力として使用されます。

モデル ビルダー構成ファイルの作成

最初にモデル ビルダーをソリューションに追加すると、mbconfig ファイルを作成するように求められます。 mbconfig ファイルは、セッションを再度開くことを可能にするために、モデルビルダーで行うすべてのことを追跡します。

  1. ソリューション エクスプローラーで、TaxiFarePrediction プロジェクトを右クリックし、[Machine Learning モデルの追加] >選択
  2. mbconfig プロジェクトに TaxiFarePrediction という名前を付け、[追加] ボタンをクリックします。

シナリオを選択する

モデル ビルダー シナリオ 画面

モデルをトレーニングするには、モデル ビルダーによって提供される利用可能な機械学習シナリオの一覧から選択する必要があります。 この場合、シナリオは Value predictionです。

  1. モデル ビルダー ツールのシナリオ段階で、値の予測シナリオ を選択します。

環境を選択する

モデル ビルダーは、選択したシナリオに応じて、さまざまな環境でトレーニングを実行できます。

  1. Local (CPU) 項目が選択されていることを確認し、[ 次のステップ] ボタンをクリックします。

データを読み込む

モデル ビルダーは、SQL Server データベースまたはローカル ファイルの 2 つのソースからのデータを csv または tsv 形式で受け入れます。

  1. モデル ビルダー ツールのデータ ステップで、データ ソースの種類の選択から ファイル を選択します。
  2. テキスト ボックスの横にある [参照] ボタンを選択し、エクスプローラーを使用して、Data ディレクトリ内の taxi-fare-test.csv を参照して選択します
  3. [予測する列 (ラベル)] ドロップダウンで [fare_amount] を選択します。
  4. 詳細データ オプション リンクをクリックします。
  5. [列の設定] タブで、trip_time_in_secs 列の [目的] ドロップダウンを選択し、[無視] を選択し、トレーニング中の機能として除外します。 [保存] ボタンをクリックしてダイアログを閉じます。
  6. [次のステップ] ボタンをクリックします。

モデルをトレーニングする

このチュートリアルで価格予測モデルをトレーニングするために使用される機械学習タスクは回帰です。 モデル トレーニング プロセス中、モデル ビルダーは、さまざまな回帰アルゴリズムと設定を使用して個別のモデルをトレーニングし、データセットに最適なパフォーマンスモデルを見つけます。

モデルのトレーニングに必要な時間は、データの量に比例します。 モデル ビルダーにより、[Time to train (seconds)]\(トレーニング時間 (秒)\) の既定値が、データ ソースのサイズに基づいて自動的に選択されます。

  1. 長い時間トレーニングする場合を除き、時間 (秒) の既定値のままにします。
  2. [トレーニング開始] を選択します。

トレーニング プロセス全体を通じて、トレーニング ステップの Training results セクションに進行状況データが表示されます。

  • 状態には、トレーニング プロセスの完了状態が表示されます。
  • [最適な精度] には、これまでにモデル ビルダーによって検出されたパフォーマンスの高いモデルの精度が表示されます。 精度が高いということは、モデルがテスト データでより正しく予測されたことを意味します。
  • ベスト アルゴリズムには、これまでにモデル ビルダーによって検出されたパフォーマンスが最も高いアルゴリズムの名前が表示されます。
  • 最後のアルゴリズムには、モデル ビルダーがモデルをトレーニングするために最後に使用したアルゴリズムの名前が表示されます。

トレーニングが完了すると、mbconfig ファイルには、トレーニング後に TaxiFarePrediction.zip と呼ばれる生成されたモデルと、それに 2 つの C# ファイルが含まれます。

  • TaxiFare.consumption.cs: このファイルには、モデルを読み込み、それを使用して予測エンジンを作成し、予測を返すパブリック メソッドがあります。
  • TaxiFare.training.cs: このファイルは、モデル ビルダーが使用したハイパーパラメーターを含む最適なモデルを構築するために作成されたトレーニング パイプラインで構成されます。

[次のステップ ] ボタンをクリックして、評価ステップに移動します。

モデルを評価する

トレーニング 手順の結果は、最高のパフォーマンスを持つ 1 つのモデルになります。 モデル ビルダー ツールの評価手順の Best model セクションには、Model エントリで最もパフォーマンスの高いモデルによって使用されるアルゴリズムと、RSquared内のそのモデルのメトリックが含まれます。

さらに、Visual Studio の [出力] ウィンドウには、上位のモデルとそのメトリックを含む概要テーブルがあります。

このセクションでは、1 つの予測を実行してモデルをテストすることもできます。 値を入力するテキスト ボックスが表示され、[予測] ボタンをクリックして、最適なモデルから予測を取得できます。 既定では、これはデータセット内のランダムな行によって入力されます。

精度メトリックに満足できない場合は、モデルの精度を向上させる簡単な方法として、モデルをトレーニングする時間を増やすか、より多くのデータを使用することです。 それ以外の場合は、「次のステップ()」をクリックして、消費ステップに進みます。

(省略可能) モデルを使用する

この手順には、モデルの使用に使用できるプロジェクト テンプレートがあります。 この手順は省略可能であり、モデルの提供方法に関するニーズに最も適した方法を選択できます。

  • コンソール アプリ
  • Web API

コンソール アプリ

コンソール アプリをソリューションに追加すると、プロジェクトに名前を付けるメッセージが表示されます。

  1. コンソール プロジェクトに TaxiFare_Console名前を付けます。

  2. [ソリューションに追加] をクリックして、プロジェクトを現在のソリューションに追加します。

  3. アプリケーションを実行します。

    プログラムによって生成される出力は、次のスニペットのようになります。

    Predicted Fare: 15.020833
    

Web API

Web API をソリューションに追加すると、プロジェクトに名前を付けるメッセージが表示されます。

  1. Web API プロジェクトに TaxiFare_API名前を付けます。

  2. [ソリューション 追加]* をクリックして、プロジェクトを現在のソリューションに追加します。

  3. アプリケーションを実行します。

  4. PowerShell を開き、次のコードを入力します。PORT は、アプリケーションがリッスンしているポートです。

    $body = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. 成功した場合、出力は次のテキストのようになります。

    score
    -----
    15.020833
    

このチュートリアルで説明されているトピックの詳細については、次のリソースを参照してください。