プログラムによる Machine Learning のモデルの再トレーニングRetrain Machine Learning models programmatically

このチュートリアルでは、C# および Machine Learning バッチ実行サービスを使用して、Azure Machine Learning Web サービスをプログラムによって再トレーニングする方法を説明します。In this walkthrough, you will learn how to programmatically retrain an Azure Machine Learning Web Service using C# and the Machine Learning Batch Execution service.

モデルを再トレーニングしたら、次のチュートリアルで、予測 Web サービスでのモデルの更新方法を確認してください。Once you have retrained the model, the following walkthroughs show how to update the model in your predictive web service:

再トレーニング プロセスの概要については、「Retrain a Machine Learning Model (Machine Learning モデルの再トレーニング)」をご覧ください。For an overview of the retraining process, see Retrain a Machine Learning Model.

既存の新しい Azure Resource Manager ベースの Web サービスを使用して開始するには、「Retrain an existing Predictive Web service (既存の予測 Web サービスの再トレーニング)」を参照してください。If you want to start with your existing New Azure Resource Manager based web service, see Retrain an existing Predictive web service.

トレーニング実験を作成するCreate a training experiment

この例では、Microsoft Azure Machine Learning のサンプル "Sample 5: Train, Test, Evaluate for Binary Classification: Adult Dataset" を使用します。For this example, you will use "Sample 5: Train, Test, Evaluate for Binary Classification: Adult Dataset" from the Microsoft Azure Machine Learning samples.

実験を作成するには:To create the experiment:

  1. Microsoft Azure Machine Learning Studio にサインインします。Sign into to Microsoft Azure Machine Learning Studio.
  2. ダッシュボードの右下隅の下部にある [新規] をクリックします。On the bottom right corner of the dashboard, click New.
  3. Microsoft サンプルから、[Sample 5] を選択します。From the Microsoft Samples, select Sample 5.
  4. 実験の名前を変更するには、実験キャンバスの上部にある実験名 [Sample 5: Train, Test, Evaluate for Binary Classification: Adult Dataset] を選択します。To rename the experiment, at the top of the experiment canvas, select the experiment name "Sample 5: Train, Test, Evaluate for Binary Classification: Adult Dataset".
  5. 「Census Model」と入力します。Type Census Model.
  6. 実験キャンバスの下部で、 [実行] をクリックします。At the bottom of the experiment canvas, click Run.
  7. [Set Up Web Service (Web サービスの設定)] をクリックして、[Retraining Web Service (Web サービスの再トレーニング)] を選択します。Click Set Up web service and select Retraining web service.

初期状態の実験を次に示します。The following shows the initial experiment.

最初の実験。

予測実験を作成して Web サービスとして発行するCreate a predictive experiment and publish as a web service

次に、予測実験を作成します。Next you create a Predicative Experiment.

  1. 実験キャンバスの下部で、[Set Up Web Service (Web サービスの設定)] をクリックして [Predictive Web Service (予測 Web サービス)] を選択します。At the bottom of the experiment canvas, click Set Up Web Service and select Predictive Web Service. これによりモデルがトレーニング済みのモデルとして保存され、Web サービス入力モジュールと Web サービス出力モジュールが追加されます。This saves the model as a Trained Model and adds web service Input and Output modules.
  2. [実行] をクリックします。Click Run.
  3. 実験の実行が終了したら [Deploy Web Service [Classic] (Web サービスのデプロイ [従来])] または [Deploy Web Service [New] (Web サービスのデプロイ [新規])] を選択します。After the experiment has finished running, click Deploy Web Service [Classic] or Deploy Web Service [New].

注意

新しい Web サービスをデプロイするには、Web サービスのデプロイ先となるサブスクリプションで十分なアクセス許可を持っている必要があります。To deploy a New web service you must have sufficient permissions in the subscription to which you deploying the web service. 詳しくは、「Azure Machine Learning Web サービス ポータルを使用して Web サービスを管理する」をご覧ください。For more information see, Manage a Web service using the Azure Machine Learning Web Services portal.

トレーニング実験をトレーニング Web サービスとしてデプロイするDeploy the training experiment as a Training web service

トレーニング済みのモデルを再トレーニングするには、再トレーニング Web サービスとして作成したトレーニング実験をデプロイする必要があります。To retrain the trained model, you must deploy the training experiment that you created as a Retraining web service. この Web サービスでは、"トレーニング モデル" モジュールにつながっている "Web サービス出力" モジュールが必要です。これにより新しいトレーニング済みのモデルを生成できます。This web service needs a Web Service Output module connected to the Train Model module, to be able to produce new trained models.

  1. トレーニング実験に戻るには、左側のウィンドウの実験アイコンをクリックし、Census Model という名前の実験をクリックします。To return to the training experiment, click the Experiments icon in the left pane, then click the experiment named Census Model.
  2. [Search Experiment Items (実験項目の検索)] 検索ボックスに、「Web サービス」と入力します。In the Search Experiment Items search box, type web service.
  3. "Web サービス入力" モジュールを実験キャンバスにドラッグし、その出力を、"見つからないデータのクリーンアップ" モジュールに接続します。Drag a Web Service Input module onto the experiment canvas and connect its output to the Clean Missing Data module. こうすると、再トレーニング データが最初のトレーニング データと同じ方法で処理されます。This ensures that your retraining data is processed the same way as your original training data.
  4. 2 つの "Web サービス出力" モジュールを実験キャンバスにドラッグします。Drag two web service Output modules onto the experiment canvas. "モデルのトレーニング" モジュールの出力を一方に、"モデルの評価" モジュールの出力をもう一方に接続します。Connect the output of the Train Model module to one and the output of the Evaluate Model module to the other. モデルのトレーニングの Web サービス出力により、新しいトレーニング済みのモデルを使用できます。The web service output for Train Model gives us the new trained model. モデルの評価 に関連付けられている出力は、そのモジュールのモデルの評価出力 (パフォーマンス結果) を返します。The output attached to Evaluate Model returns that module’s output, which is the performance results.
  5. [実行] をクリックします。Click Run.

次に、トレーニング実験を Web サービスとしてデプロイし、トレーニング済みのモデルとモデル評価の結果を生成する必要があります。Next you must deploy the training experiment as a web service that produces a trained model and model evaluation results. ここでは、次の一連の操作は、従来の Web サービスを使用するか、新しい Web サービスを使用するかに依存します。To accomplish this, your next set of actions are dependent on whether you are working with a Classic web service or a New web service.

従来の Web サービスClassic web service

実験キャンバスの下部で、[Set Up Web Service (Web サービスの設定)] をクリックして Deploy Web Service [Classic] (Web サービスのデプロイ [従来]) を選択します。At the bottom of the experiment canvas, click Set Up Web Service and select Deploy Web Service [Classic]. Web サービス ダッシュボード が、API キーとバッチ実行用 API ヘルプ ページとともに表示されます。The Web Service Dashboard is displayed with the API Key and the API help page for Batch Execution. トレーニング済みのモデルの作成に使用できるのはバッチ実行メソッドのみです。Only the Batch Execution method can be used for creating Trained Models.

新しい Web サービスNew web service

実験キャンバスの下部で、[Set Up Web Service (Web サービスの設定)] をクリックして [Deploy Web Service [New] (Web サービスのデプロイ [新規])] を選択します。At the bottom of the experiment canvas, click Set Up Web Service and select Deploy Web Service [New]. Web サービス Azure Machine Learning Web サービスのポータルが [Deploy web service (Web サービスのデプロイ)] ページに表示されます。The Web Service Azure Machine Learning Web Services portal opens to the Deploy web service page. Web サービスの名前を入力し、支払プランを選択してから、[デプロイ] をクリックします。Type a name for your web service and choose a payment plan, then click Deploy. トレーニング済みのモデルの作成に使用できるのはバッチ実行メソッドのみです。Only the Batch Execution method can be used for creating Trained Models

いずれの場合でも、実験の実行が完了すると、ワークフローは次のようになります。In either case, after experiment has completed running, the resulting workflow should look as follows:

実行後のワークフロー。

BES を使用して新しいデータでモデルを再トレーニングするRetrain the model with new data using BES

この例では、C# を使用して再トレーニング アプリケーションを作成します。For this example, you are using C# to create the retraining application. Python または R サンプル コードを使用してこのタスクを行うこともできます。You can also use the Python or R sample code to accomplish this task.

再トレーニング API を呼び出すには:To call the Retraining APIs:

  1. Visual Studio で C# コンソール アプリケーションを作成します ([新規作成] > [プロジェクト] > [Visual C#] > [Windows クラシック デスクトップ] > [コンソール アプリ (.NET Framework)])。Create a C# console application in Visual Studio: New > Project > Visual C# > Windows Classic Desktop > Console App (.NET Framework).
  2. Machine Learning Web サービス ポータルにサインインします。Sign in to the Machine Learning Web Service portal.
  3. 従来の Web サービスを使用する場合は、[Classic Web Services (従来の Web サービス)] をクリックします。If you are working with a Classic web service, click Classic Web Services.
    1. 使用する Web サービスをクリックします。Click the web service you are working with.
    2. 既定のエンドポイントをクリックします。Click the default endpoint.
    3. [Consume (使用)] をクリックします。Click Consume.
    4. [Consume (使用)] ページの下部の [Sample Code (サンプル コード)] セクションで [Batch] をクリックします。At the bottom of the Consume page, in the Sample Code section, click Batch.
    5. この手順の手順 5. に進みます。Continue to step 5 of this procedure.
  4. 新しい Web サービスを使用する場合は、[Web サービス] をクリックします。If you are working with a New web service, click Web Services.
    1. 使用する Web サービスをクリックします。Click the web service you are working with.
    2. [Consume (使用)] をクリックします。Click Consume.
    3. [Consume (使用)] ページの下部の [Sample Code (サンプル コード)] セクションで [Batch] をクリックします。At the bottom of the Consume page, in the Sample Code section, click Batch.
  5. バッチ実行用 C# のサンプル コードをコピーして、Program.cs ファイルに貼り付けます。このとき、名前空間を変更しないように注意します。Copy the sample C# code for batch execution and paste it into the Program.cs file, making sure the namespace remains intact.

コメントに示されているように Nuget パッケージ Microsoft.AspNet.WebApi.Client を追加します。Add the Nuget package Microsoft.AspNet.WebApi.Client as specified in the comments. 参照を Microsoft.WindowsAzure.Storage.dll に追加するには、最初に Microsoft Azure ストレージ サービスのクライアント ライブラリのインストールが必要になる場合があります。To add the reference to Microsoft.WindowsAzure.Storage.dll, you might first need to install the client library for Microsoft Azure storage services. 詳しくは、「 Windows Storage Services」(Windows ストレージ サービス) をご覧ください。For more information, see Windows Storage Services.

ApiKey 宣言の更新Update the apikey declaration

ApiKey 宣言を見つけます。Locate the apikey declaration.

const string apiKey = "abc123"; // Replace this with the API key for the web service

[Consume (使用)]Consume ページの [Basic consumption info (基本的な実行情報)] セクションで、プライマリ キーを探して apikey 宣言にコピーします。In the Basic consumption info section of the Consume page, locate the primary key and copy it to the apikey declaration.

Azure Storage 情報を更新するUpdate the Azure Storage information

BES サンプル コードは、ファイルをローカル ドライブ ("C:\temp\CensusIpnput.csv" など) から Azure Storage にアップロードして処理し、その結果を Azure Storage に書き込みます。The BES sample code uploads a file from a local drive (For example "C:\temp\CensusIpnput.csv") to Azure Storage, processes it, and writes the results back to Azure Storage.

このタスクを完了するには、ストレージ アカウントのストレージ アカウント名、キー、およびコンテナー情報を従来の Azure ポータルから取得して、コード内の対応する値を更新する必要があります。To accomplish this task, you must retrieve the Storage account name, key, and container information for your Storage account from the classic Azure portal and the update corresponding values in the code.

  1. 従来の Azure ポータルにサインインします。Sign in to the classic Azure portal.
  2. 左側のナビゲーションで [ストレージ] をクリックします。In the left navigation column, click Storage.
  3. ストレージ アカウントの一覧から、再トレーニング済みのモデルを格納するいずれかのアカウントを選択します。From the list of storage accounts, select one to store the retrained model.
  4. ページの下部にある [アクセス キーの管理] をクリックします。At the bottom of the page, click Manage Access Keys.
  5. プライマリ アクセス キー をコピーして保存し、ダイアログを閉じます。Copy and save the Primary Access Key and close the dialog.
  6. ページ上部の [コンテナー] をクリックします。At the top of the page, click Containers.
  7. 既存のコンテナーを選択するか、コンテナーを新規作成して、名前を保存します。Select an existing container or create a new one and save the name.

StorageAccountNameStorageAccountKey、および StorageContainerName 宣言を見つけて、Azure Portal から保存した値に更新します。Locate the StorageAccountName, StorageAccountKey, and StorageContainerName declarations and update the values you saved from the Azure portal.

const string StorageAccountName = "mystorageacct"; // Replace this with your Azure Storage Account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage Key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage Container name

また、入力ファイルがコードで指定した場所で有効であることを確認する必要があります。You also must ensure the input file is available at the location you specify in the code.

出力場所の指定Specify the output location

要求ペイロードで出力場所を指定する場合は、" RelativeLocation " で指定されたファイルの拡張子を ilearner として指定する必要があります。When specifying the output location in the Request Payload, the extension of the file specified in RelativeLocation must be specified as ilearner.

次の例を参照してください。See the following example:

Outputs = new Dictionary<string, AzureBlobDataReference>() {
    {
        "output1",
        new AzureBlobDataReference()
        {
            ConnectionString = storageConnectionString,
            RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the location you would like to use for your output file, and valid file extension (usually .csv for scoring results, or .ilearner for trained models)*/
        }
    },

注意

出力場所の名前は、このチュートリアルで使用されている名前とは異なる場合があります。これは、Web サービス出力モジュールを追加した順序に基づいています。The names of your output locations may be different from the ones in this walkthrough based on the order in which you added the web service output modules. このトレーニング実験は 2 つの出力で設定したため、結果には、両方のストレージの場所に関する情報が含まれています。Since you set up this training experiment with two outputs, the results include storage location information for both of them.

再トレーニング出力

図 4: 再トレーニング出力。Diagram 4: Retraining output.

再トレーニングの結果を評価するEvaluate the Retraining Results

アプリケーションを実行すると、評価結果へのアクセスに必要な URL と SAS トークンが出力に示されます。When you run the application, the output includes the URL and SAS token necessary to access the evaluation results.

再トレーニング済みモデルのパフォーマンス結果を確認するには、output2 の出力結果 (前の再トレーニング出力の画像を参照) の BaseLocationRelativeLocationSasBlobToken を組み合わせて、ブラウザーのアドレス バーに完全な URL を貼り付けます。You can see the performance results of the retrained model by combining the BaseLocation, RelativeLocation, and SasBlobToken from the output results for output2 (as shown in the preceding retraining output image) and pasting the complete URL in the browser address bar.

この結果で、新しくトレーニングされたモデルが、既存のモデルに代わるのに十分なパフォーマンスを発揮しているかどうかを確認します。Examine the results to determine whether the newly trained model performs well enough to replace the existing one.

出力結果から BaseLocationRelativeLocationSasBlobToken をコピーします。これは、後で再トレーニング プロセスで使用します。Copy the BaseLocation, RelativeLocation, and SasBlobToken from the output results, you will use them during the retraining process.

次の手順Next steps

[Deploy Web Service [Classic] (Web サービスのデプロイ [従来])] をクリックして予測 Web サービスをデプロイした場合は、「従来の Web サービスの再トレーニング」を参照してください。If you deployed the predictive web service by clicking Deploy Web Service [Classic], see Retrain a Classic web service.

[Deploy Web Service [New] (Web サービスのデプロイ [新規])] をクリックして予測 Web サービスをデプロイした場合は、Machine Learning Management コマンドレットを使用した新しい Web サービスの再トレーニングに関するページをご覧ください。If you deployed the predictive web service by clicking Deploy Web Service [New], see Retrain a New web service using the Machine Learning Management cmdlets.