チュートリアル: デザイナー - コードなし回帰モデルをトレーニングする

Azure Machine Learning デザイナーを使用して自動車の価格を予測する線形回帰モデルをトレーニングします。 このチュートリアルは、2 部構成のシリーズのパート 1 です。

このチュートリアルでは、Azure Machine Learning デザイナーを使用します。詳細については、「Azure Machine Learning デザイナーとは」を参照してください。

このチュートリアルのパート 1 では、次の方法について学習します。

  • 新しいパイプラインを作成する。
  • データをインポートする。
  • データを準備する。
  • 機械学習モデルをトレーニングする。
  • 機械学習モデルを評価する。

チュートリアルのパート 2 では、リアルタイム推論エンドポイントとしてモデルをデプロイし、送信した技術仕様に基づいて任意の自動車の価格を予測します。

Note

このチュートリアルの完成版をサンプル パイプラインとして入手できます。

これを見つけるには、ワークスペースのデザイナーに移動します。 [新しいパイプライン] セクションで [Sample 1 - Regression:Automobile Price Prediction(Basic)](サンプル 1 - 回帰: 自動車価格の予測 (Basic)) を選択してください。

重要

このドキュメントで言及しているグラフィカル要素 (Studio やデザイナーのボタンなど) が表示されない場合は、そのワークスペースに対する適切なレベルのアクセス許可がない可能性があります。 ご自分の Azure サブスクリプションの管理者に連絡して、適切なレベルのアクセス許可があることを確認してください。 詳細については、「ユーザーとロールを管理する」を参照してください。

新しいパイプラインを作成する

Azure Machine Learning パイプラインによって、複数の機械学習ステップとデータ処理ステップが 1 つのリソースに整理されます。 複数のプロジェクトや複数のユーザーにまたがる複雑な機械学習ワークフローをパイプラインで効率的に整理、管理、再利用することができます。

Azure Machine Learning パイプラインを作成するには、Azure Machine Learning ワークスペースが必要です。 このセクションでは、その両方のリソースを作成する方法について説明します。

新しいワークスペースを作成する

デザイナーを使用するには、Azure Machine Learning ワークスペースが必要です。 ワークスペースは、Azure Machine Learning の最上位のリソースで、Azure Machine Learning で作成するすべての成果物を操作するための一元的な場所を提供します。 ワークスペースを作成する手順については、「Azure Machine Learning ワークスペースを作成して管理する」を参照してください。

Note

ワークスペースで仮想ネットワークを使用する場合、デザイナーを使用するには、追加の構成手順を使用する必要があります。 詳細については、「Azure 仮想ネットワークで Azure Machine Learning スタジオを使用する」を参照してください。

パイプラインを作成する

  1. ml.azure.com にサインインし、使用するワークスペースを選択します。

  2. [デザイナー] を選択します。

    Screenshot of the visual workspace showing how to access the designer.

  3. [使いやすい事前構築済みコンポーネント] を選択します。

  4. キャンバスの上部にある既定のパイプライン名 Pipeline-Created-on を選択します。 この名前を Automobile price prediction (自動車価格の予測) に変更します。 名前は一意でなくてもかまいません。

既定のコンピューティング先を設定する

パイプラインは、ワークスペースにアタッチされたコンピューティング リソースであるコンピューティング先で実行されます。 コンピューティング先を作成した後、それを将来の実行のために再利用できます。

重要

アタッチされたコンピューティングはサポートされていません。代わりに、コンピューティング インスタンスまたはクラスターを使用してください。

パイプライン全体の既定のコンピューティング先を設定できます。この設定により、既定で同じコンピューティング先を使用するようすべてのコンポーネントに伝えられます。 ただしコンピューティング先は、モジュールごとに自分で指定することができます。

  1. キャンバスの上部で、パイプライン名の横に表示される歯車アイコンScreenshot of the gear icon that is in the UI. を選択して [設定] ペインを開きます。

  2. キャンバスの右側にある [設定] ペインで、 [コンピューティング先を選択] を選択します。

    使用できるコンピューティング先が既にある場合は、それを選択してこのパイプラインを実行できます。

  3. コンピューティング リソースの名前を入力します。

  4. [保存] を選択します。

    注意

    コンピューティング リソースを作成するには約 5 分かかります。 リソースの作成後は、それを再利用できるため、今後の実行では、この待機時間をスキップできます。

    コンピューティング リソースは、コストを節約するために、アイドル状態のときは 0 ノードに自動スケーリングされます。 しばらくしてからそれを再度使用すると、スケールアップして元に戻すときに約 5 分の待機時間が発生することがあります。

データのインポート

デザイナーには、実験に利用できるいくつかのサンプル データセットが含まれています。 このチュートリアルでは、Automobile price data (Raw) を使用します。

  1. パイプライン キャンバスの左側には、データセットとコンポーネントのパレットがあります。 [サンプル データセット] を選択して、使用可能なサンプル データセットを表示します。

  2. Automobile price data (Raw) データセットを選択し、キャンバスにドラッグします。

    Gif of dragging the Automobile price data to the canvas.

データの視覚化

使用するデータセットを把握するために、データを視覚化することができます。

  1. [Automobile price data (Raw)] を右クリックし、[データのプレビュー] を選択します。

  2. データ ウィンドウで別の列を選択して、それぞれの情報を表示します。

    各行は自動車を表していて、各自動車に関連付けられている変数が列として表示されます。 このデータセット内には、205 の行と 26 の列があります。

データを準備する

通常、データセットには、分析前にある程度の前処理が必要です。 データセットを検査したときに、いくつか不足値があることに気付いたかもしれません。 モデルがデータを正しく分析するには、これらの不足値を整理する必要があります。

列の削除

モデルをトレーニングする際は、欠損データに対処する必要があります。 このデータセットでは、normalized-losses 列に多数の欠損値が存在するので、その列全体をモデルから除外します。

  1. キャンバスの左側にあるコンポーネント パレットで [データ変換] セクションを展開し、 [Select Columns in Dataset](データセットの列を選択する) コンポーネントを見つけます。

  2. [Select Columns in Dataset](データセットの列を選択する) コンポーネントをキャンバスにドラッグします。 そのコンポーネントをデータセット コンポーネントの下にドロップします。

  3. Automobile price data (Raw) データセットを、 [Select Columns in Dataset](データセットの列を選択する) コンポーネントに接続します。 データセットの出力ポート (キャンバス上のデータセットの下部にある小さい円) から [Select Columns in Dataset](データセットの列を選択する) の入力ポート (コンポーネントの上部にある小さい円) までドラッグします。

    ヒント

    1 つのコンポーネントの出力ポートを別のコンポーネントの入力ポートに接続するときに、パイプラインを通じてデータのフローを作成することになります。

    Screenshot of connecting Automobile price data component to select columns in dataset component.

  4. [Select Columns in Dataset](データセットの列を選択する) コンポーネントを選択します。

  5. キャンバスの右側にある [コンポーネントの詳細] ペインで [列の編集] を選択します。

  6. [Include](対象) の横にある [列名] ボックスの一覧を展開し、[すべての列] を選びます。

  7. [+] を選択し、新しいルールを追加します。

  8. ドロップダウン メニューから [Exclude](除外)[列名] を選択します。

  9. テキスト ボックスに「normalized-losses」と入力します。

  10. 右下の [保存] を選択して列セレクターを閉じます。

    Screenshot of select columns with exclude highlighted.

  11. [Select Columns in Dataset](データセットの列を選択する) コンポーネントを選択します。

  12. キャンバスの右側にある [コンポーネントの詳細] ペインで [コメント] ボックスを選択し、「Exclude normalized losses」と入力します。

    コメントがグラフに表示されることで、パイプラインが整理しやすくなります。

見つからないデータのクリーンアップ

normalized-losses 列を削除した後も、データセットにはまだ欠損値が存在します。 残りの欠損データは [Clean Missing Data](見つからないデータのクリーンアップ) コンポーネントを使用して削除できます。

ヒント

デザイナーでは、欠損値を入力データから取り除くことが、ほとんどのコンポーネントを使用するための前提条件となっています。

  1. キャンバスの左側にあるコンポーネント パレットで [データ変換] セクションを展開し、 [Clean Missing Data](見つからないデータのクリーンアップ) コンポーネントを見つけます。

  2. [Clean Missing Data](見つからないデータのクリーンアップ) コンポーネントをパイプライン キャンバスにドラッグします。 それを [Select Columns in Dataset](データセットの列を選択する) コンポーネントに接続します。

  3. [Clean Missing Data](見つからないデータのクリーンアップ) コンポーネントを選択します。

  4. キャンバスの右側にある [コンポーネントの詳細] ペインで [列の編集] を選択します。

  5. 表示される [クリーニング対象の列] ウィンドウで、 [含める] の横にあるドロップダウン メニューを展開します。 [すべての列] を選択します

  6. [保存] を選びます。

  7. キャンバスの右側にある [コンポーネントの詳細] ペインで、 [Cleaning mode](クリーニング モード)[Remove entire row](行全体を削除) を選択します。

  8. キャンバスの右側にある [コンポーネントの詳細] ペインで [コメント] ボックスを選択し、「Remove missing value rows」と入力します。

    これでパイプラインは次のようになっているはずです。

    Screenshot of automobile price data connected to select columns in dataset component, which is connected to clean missing data.

機械学習モデルのトレーニング

データを処理するためのコンポーネントが揃ったら、トレーニング コンポーネントを設定することができます。

予測したい価格は数値であるため、回帰アルゴリズムを使用できます。 この例では、線形回帰モデルを使用します。

データを分割する

データの分割は、機械学習における一般的なタスクです。 データを 2 つの独立したデータセットに分割します。 一方のデータセットでモデルをトレーニングし、もう一方のデータセットでモデルの精度をテストします。

  1. コンポーネント パレットで [データ変換] セクションを展開し、 [Split Data](データの分割) コンポーネントを見つけます。

  2. [Split Data](データの分割) コンポーネントをパイプライン キャンバスにドラッグします。

  3. [Clean Missing Data](見つからないデータのクリーンアップ) コンポーネントの左側のポートを [Split Data](データの分割) コンポーネントに接続します。

    重要

    [Split Data](データの分割) には必ず、 [Clean Missing Data](見つからないデータのクリーンアップ) の左側の出力ポートを接続してください。 クリーンアップされたデータは、左側のポートに格納されます。 右側のポートには、破棄されたデータが格納されます。

  4. [Split Data](データの分割) コンポーネントを選択します。

  5. キャンバスの右側にある [コンポーネントの詳細] ペインで、 [Fraction of rows in the first output dataset](最初の出力データセット内の行の割合) を 0.7 に設定します。

    このオプションによって、データの 70% をモデルのトレーニング、30% をテストに分割します。 70% のデータセットには、左側の出力ポートからアクセスできます。 残りのデータには、右側の出力ポートからアクセスできます。

  6. キャンバスの右側にある [コンポーネントの詳細] ペインで [コメント] ボックスを選択し、「Split the dataset into training set (0.7) and test set (0.3) 」と入力します。

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

価格が含まれたデータセットを指定して、モデルをトレーニングします。 トレーニング データによって提示された価格と特徴との間の関係を説明するモデルがアルゴリズムによって構築されます。

  1. コンポーネント パレットで [Machine Learning Algorithms](機械学習アルゴリズム) を展開します。

    このオプションによって、学習アルゴリズムの初期化に使用できるコンポーネントのカテゴリが複数表示されます。

  2. [Regression](回帰)[Linear Regression](線形回帰) の順に選択し、パイプライン キャンバスにドラッグします。

  3. コンポーネント パレットで [Module training](モジュールのトレーニング) セクションを展開し、 [Train Model](モデルのトレーニング) コンポーネントをキャンバスにドラッグします。

  4. [Linear Regression](線形回帰) コンポーネントの出力を [Train Model](モデルのトレーニング) コンポーネントの左側の入力に接続します。

  5. [Split Data](データの分割) コンポーネントのトレーニング データ出力 (左側のポート) を [Train Model](モデルのトレーニング) コンポーネントの右側の入力に接続します。

    重要

    [Train Model](モデルのトレーニング) には必ず、 [Split Data](データの分割) の左側の出力ポートを接続してください。 トレーニング セットは、左側のポートに格納されます。 右側のポートには、テスト セットが格納されます。

    Screenshot showing the Linear Regression connects to left port of Train Model and the Split Data connects to right port of Train Model.

  6. [Train Model](モデルのトレーニング) コンポーネントを選択します。

  7. キャンバスの右側にある [コンポーネントの詳細] ペインで [列の編集] セレクターを選択します。

  8. [Label column](ラベル列) ダイアログ ボックスのドロップダウン メニューを展開して [列名] を選択します。

  9. テキスト ボックスに「price」(価格) を入力して、モデルで予測しようとする値を指定します。

    重要

    列名を正確に入力してください。 price は大文字にしないでください。

    パイプラインは次のようになっているはずです。

    Screenshot showing the correct configuration of the pipeline after adding the Train Model component.

[Score Model](モデルのスコア付け) コンポーネントを追加する

データの 70% を使用してモデルをトレーニングした後で、残りの 30% にスコアを付け、モデルの精度を確認します。

  1. 検索ボックスに「score model」と入力して、 [Score Model](モデルのスコア付け) コンポーネントを見つけます。 そのコンポーネントをパイプライン キャンバスにドラッグします。

  2. [Train Model](モデルのトレーニング) コンポーネントの出力を、 [Score Model](モデルのスコア付け) の左側の入力ポートに接続します。 [Split Data](データの分割) コンポーネントのテスト データの出力 (右側のポート) を、 [Score Model](モデルのスコア付け) の右側の入力ポートに接続します。

[Evaluate Model](モデルの評価) コンポーネントを追加する

モデルがどの程度の精度でテスト データセットにスコア付けしたかを、 [Evaluate Model](モデルの評価) コンポーネントを使用して評価します。

  1. 検索ボックスに「evaluate」と入力して、 [Evaluate Model](モデルの評価) コンポーネントを見つけます。 そのコンポーネントをパイプライン キャンバスにドラッグします。

  2. [Score Model](モデルのスコア付け) コンポーネントの出力を、 [Evaluate Model](モデルの評価) の左側の入力に接続します。

    最終的なパイプラインは次のようになっているはずです。

    Screenshot showing the correct configuration of the pipeline.

パイプラインを送信する

パイプラインの設定がすべて完了したら、パイプラインの実行を送信して機械学習モデルをトレーニングすることができます。 有効なパイプライン実行をいつでも送信できます。これを使用すると、開発中にパイプラインの変更を確認できます。

  1. キャンバス上部の [Submit](送信) を選択します。

  2. [Set up pipeline job](パイプライン ジョブのセットアップ) ダイアログ ボックスで、[Create new](新規作成) を選択します。

    注意

    実験グループの同様のパイプラインは同時に実行されます。 パイプラインを複数回実行する場合は、一連の実行に対して同じ実験を選択できます。

    1. [New experiment Name](新しい実験名) に、「Tutorial-CarPrices」と入力します。

    2. [Submit](送信) をクリックします。

    3. キャンバスの左側のウィンドウに送信一覧が表示され、ページの右上隅に通知がポップアップ表示されます。 [ジョブの詳細] リンクを選択すると、デバッグのためにジョブの詳細ページに移動できます。

      Screenshot of the submitted jobs list with a success notification.

    これが最初の実行の場合は、パイプラインの実行が完了するまでに最大 20 分かかることがあります。 既定のコンピューティング設定の最小ノード サイズは 0 です。これは、アイドル状態になった後に、デザイナーによってリソースが割り当てられる必要があることを意味します。 コンピューティング リソースが既に割り当てられているため、パイプラインの反復実行にかかる時間は短くなります。 さらにデザイナーでは、各コンポーネント用にキャッシュされた結果を使用して、効率を向上させます。

スコア付けラベルを確認する

ジョブの詳細ページでは、パイプライン ジョブの状態、結果、ログを確認できます。

Screenshot showing the pipeline job detail page.

実行が完了したら、パイプラインの実行結果を確認できます。 まず、回帰モデルによって生成された予測に注目します。

  1. [モデルのスコア付け] コンポーネントを右クリックし、[データのプレビュー][スコアリング済みデータセット] の順に選択してその出力を表示します。

    ここでは、予測された価格と、データのテストによる実際の価格を確認できます。

    Screenshot of the output visualization highlighting the Scored Label column.

モデルを評価する

テスト データセットに対してトレーニング済みのモデルがどの程度の精度で実行されたかを [Evaluate Model](モデルの評価) を使用して確認します。

  1. [モデルの評価] コンポーネントを右クリックし、[データのプレビュー][評価結果] の順に選択してその出力を表示します。

作成したモデルに対して、以下の統計値が表示されます。

  • Mean Absolute Error (MAE、平均絶対誤差):絶対誤差の平均。 誤差とは、予測された値と実際の値との差です。
  • Root Mean Squared Error (RMSE、二乗平均平方根誤差):テスト データセットに対して実行した予測の二乗誤差平均の平方根です。
  • Relative Absolute Error (相対絶対誤差):実際の値とすべての実際の値の平均との絶対差を基準にした絶対誤差の平均です。
  • Relative Squared Error (相対二乗誤差):実際の値とすべての実際の値の平均との二乗差を基準にした二乗誤差の平均です。
  • Coefficient of Determination (決定係数):R-2 乗値ともいいます。どの程度モデルが高い精度でデータと適合するかを示す統計指標です。

この誤差の統計情報は、それぞれ小さいほど良いとされます。 値が小さいほど、予測が実際の値により近いことを示します。 決定係数では、値が 1 (1.0) に近づくほど、予測の精度が高くなります。

リソースをクリーンアップする

続けてチュートリアルのパート 2 (モデルのデプロイ) を行う場合は、このセクションはスキップしてください。

重要

作成したリソースは、Azure Machine Learning のその他のチュートリアルおよびハウツー記事の前提条件として使用できます。

すべてを削除する

作成したすべてのものを使用する予定がない場合は、料金が発生しないように、リソース グループ全体を削除します。

  1. Azure portal で、ウィンドウの左側にある [リソース グループ] を選択します。

    Delete resource group in the Azure portal

  2. 一覧から、作成したリソース グループを選択します。

  3. [リソース グループの削除] を選択します。

リソース グループを削除すると、デザイナーで作成したすべてのリソースも削除されます。

個々の資産を削除する

実験を作成したデザイナーで、個々の資産を選択し、[削除] ボタンを選択してそれらを削除します。

ここで作成したコンピューティング ターゲットは、使用されていない場合、自動的にゼロ  ノードに自動スケーリングされます。 このアクションは、料金を最小限に抑えるために実行されます。 コンピューティング ターゲットを削除する場合は、次の手順を実行してください。

Delete assets

各データセットを選択し、[登録解除] を選択することによって、ワークスペースからデータセットを登録解除できます。

Unregister dataset

データセットを削除するには、Azure portal または Azure Storage Explorer を使用してストレージ アカウントに移動し、これらのアセットを手動で削除します。

次のステップ

パート 2 では、モデルをリアルタイム エンドポイントとしてデプロイする方法を学習します。