IBM Watson Studio 内でモデルの作成を自動化する

このチュートリアルは、ラーニング・パス「Watson Studio 入門」の一部となっています。

このチュートリアルでは、IBM® Watson™ Studio 内に導入された AutoAI 機能を使用して、機械学習モデルを作成、評価する方法を説明します。モデルの作成フェーズでは各種のモデル化手法を選んで適用し、それらの手法でのパラメーターを調整することによって予測を最適化します。一般に、適用できる手法は複数あります。中にはデータ形式に関して固有の要件を満たさなければ適用できない手法もあるため、データの準備フェーズに戻らなければならないことはよくあります。ただし、モデルの評価フェーズではデータ分析の観点から見て高品質のモデルを作成することが目標となります。したがって、最終的にモデルをデプロイする前に徹底的にモデルを評価することが重要です。モデルの作成フェーズで行われる一連のステップを見直して、モデルがビジネス目標を適切に達成することを確実にしなければなりません。

Watson Studio 内に用意されている AutoAI グラフィカル・ツールを使用すると、コードを 1 行も作成することなく迅速にモデルを作成してその精度を評価できます。AutoAI の指示に従えば、トレーニング・データをアップロードするところから、機械学習の手法とアルゴリズムを選択し、モデルをトレーニングして評価するところまで、機械学習モデルの作成手順をひと通り完了できます。

このラーニング・パスの他のすべてのチュートリアルと同じく、ここでも Kaggle から入手できるカスタマー・チャーン・データセットを使用します。

前提条件

このラーニング・パスの一連のチュートリアルに取り組むには、IBM Cloud アカウントが必要です。無料のトライアル・アカウントを取得すれば、そのアカウントで IBM CloudIBM Watson StudioIBM Watson Machine Learning Service にアクセスできます。

所要時間

このチュートリアルの所要時間は約 30 分です。

手順

ラーニング・パス用の環境を構築する手順は、チュートリアル「IBM Watson Studio を使用したデータの視覚化、準備、変換」で説明しています。構築手順の概要は以下のとおりです。

  1. IBM Cloud Object Storage サービス・インスタンスを作成する
  2. Watson Studio プロジェクトを作成する。
  3. IBM Cloud サービスをプロビジョニングする
  4. データセットをアップロードする

ラーニング・パスに従うには、まず、以上のステップを完了しておく必要があります。環境の構築が完了している場合は、次のステップに進んで Watson Studio 内で新しいモデルを作成する作業に取り掛かってください。

Watson Studio 内で新しいモデルを作成する

  1. Watson Studio プロジェクトの「Assets (アセット)」タブを選択します。

  2. 「Asset (アセット)」タブで、「Add to Project (プロジェクトに追加)」コマンドをクリックします。

    add-model-to-project

  3. アセット・タイプとして「AutoAI Experiment」を選択します。

  4. Create an AutoAI experiment (AutoAI エクスペリメントの作成)」ウィンドウで、以下の操作を行います。

    1. エクスペリメント・タイプとして「From Blank (白紙から始める)」を選択します。

    2. Asset Name (アセット名)」に、作成するアセットに付ける名前を入力します (例: ‘customer-churn-manual’)。

    3. Machine Learning Service (機械学習サービス)」で、プロジェクト用に前に作成した Watson Machine Learning サービス・インスタンスを選択します。

      create-autoai-experiment

    4. Create (作成)」をクリックします。

  5. Add training data (トレーニング・データの追加)」ウィンドウで、以下の操作を行います。

    1. Select from project (プロジェクトから選択)」をクリックします。

    2. プロジェクトに前に追加した Kaggle データ・アセットを選択します。

      select-asset

    3. Select Asset (アセットの選択)」をクリックします。

モデルを実行してトレーニングする

Configure AutoAI experiment (AutoAI エクスペリメントの構成)」ウィンドウで、以下の操作を行います。

  1. Select column to predict (予測する列を選択)」ボックスで、「churn」を選択します。

    config-auto-ai-panel

  2. デフォルトの予測タイプ「Binary Classification (2 項分類)」と最適化メトリック「ROC AUC」(受信者動作特性曲線下面積) をそのまま受け入れます。

  3. Run experiment (エクスペリメントを実行)」をクリックします。

エクスペリメントの実行中はページの上部にステップのパイプラインが表示されます。エクスペリメントが完了すると、パネルの下部に完了済みモデルが精度順に一覧表示されます。

model-run

AutoAI プロセスでは、以下の順序に従ってパイプライン候補のリストを作成します。

  • データの前処理
  • モデルの自動選定 (パイプライン 1)
  • ハイパーパラメーターの最適化 (パイプライン 2)
  • 自動化された特徴エンジニアリング (パイプライン 3)
  • ハイパーパラメーターの最適化 (パイプライン 4)

ここで使用しているデータの場合、「ROC 曲線下面積」(ROC AUC) メトリックに基づいて 1 位にランキングされたのはパイプライン 3 でした。パイプライン 3 には「ハイパーパラメーター最適化」と「特徴エンジニアリング」の両方が適用されています。

完了した AutoAI エクスペリメントは Watson Studio プロジェクト内に保存されます保存済みエクスペリメントは、「Assets (アセット)」タブの「AutoAI experiments (AutoAI エクスペリメント)」で確認できます。

experiment-list

モデルのパフォーマンスを評価する

AutoAI Experiment のページでは、各パイプラインのパフォーマンスを詳しく調べるために、さまざまな方法を利用できるようになっています。

pipeline-list

「Compare pipelines (パイプラインの比較)」コマンドを使用すると、各パイプラインのメトリックのリストが展開されて表示されます。

compare-pipelines

「>」ボタンをクリックすると、選択したパイプラインに関するさらに詳しい情報が表示されます。

expand-pipeline

パイプライン名をクリックすると、そのパイプラインの「Model Evaluation (モデルの評価)」ウィンドウが開きます。

experiment-list

ページの左側にあるメニューからは、パイプラインのその他のメトリックにもアクセスできます。例えば、次のメトリックを確認できます。

  • 「Confusion Matrix (混合行列)」テーブル

    experiment-list

  • 「Feature Importance (特徴重要度)」グラフ

    experiment-list

AutoAI Experiment のモデル機能には、Jupyter ノートブックで使用できる分類手法と評価メトリックのすべてが揃っているわけではありませんが、結果を出すまでの時間が大幅に短縮されます。しかもプログラミングの必要は一切ありません。

初期の機械学習モデルを作成する際には、Watson Studio のこのモデル・ビルダー・コンポーネントが役立ちます。プログラミングの作業に時間をかけずに、作成したモデルをテストして予測パフォーマンスを評価できるためです。このサービスで提供される予測メトリックは、特定のデータセットが意図した目的に適切なものであるかどうかをまず判断する上でも役立ちます。

Watson Machine Learning サービスを利用してモデルをデプロイし、テストする

IBM のデータ・サイエンス・プロセスに従えば、満足できるモデルを開発してビジネス・スポンサーの承認を得た後のステップは、本番環境または本番環境に相当するテスト環境にモデルをデプロイすることです。通常、そのパフォーマンスが完全に評価されるまでは、モデルをデプロイする方法は限られています。

Watson Studio の Machine Learning サービスを利用する場合は、モデルを Web サービスとしてデプロイする、バッチ・プログラムとしてデプロイする、またはリアルタイムのストリーミング予測モデルとしてデプロイするという 3 つの方法のいずれかを選択できます。このチュートリアルではモデルを Web サービスとしてデプロイした後、対話式でテストします。

まず、モデルを保存する必要があります。

  1. 1 位にランキングされたパイプラインの「Save as model (モデルとして保存)」をクリックします。

    save-best-model

  2. デフォルトの名前のまま、「Save (保存)」をクリックします。

プロジェクトの「Assets (アセット)」タブにある「Models (モデル)」セクションに、この保存されたモデルが表示されているはずです。

new-model-list

モデルをデプロイするには、モデル名をクリックしてモデルを開きます。

  1. Deployments (デプロイメント)」タブを選択します。

    add-deployment

  2. Add Deployment (デプロイメントの追加)」をクリックします。

  3. Create Deployment (デプロイメントの作成)」ページで、以下の操作を行います。

    1. Name (名前)」に、デプロイメントに付ける名前を入力します (例: ‘customer-churn-manual-web-deployment’)。

    2. Deployment type (デプロイメント・タイプ)」の設定は、デフォルトの「Web service (Web サービス)」のままにします。

    3. 必要に応じて、「Description (説明)」にこのデプロイメントの説明を入力します。

      deploy-web-service

  4. Save (保存)」をクリックしてデプロイメントを保存します。

  5. Watson Studio によって「STATUS (ステータス)」フィールドの値が「ready」または「DEPLOY_SUCCESS」に設定されるまで待ちます。

deploy-status

これでモデルのデプロイが完了したので、モデルを予測に使用できます。ただし、本番環境でモデルを使用する場合は、あらかじめ実際のデータを使ってモデルをテストすることをお勧めします。Watson Machine Learning サービスでは、API を使用して対話式またはプログラムによってモデルをテストできるようになっています。この API の使用方法についてはラーニング・パスの別のチュートリアルで説明することとして、ここでは対話式でモデルをテストします。

対話式で予測のパフォーマンスをテストするには 2 つの方法があります。1 つは、個々のフィールド (特徴ごとに 1 つのフィールド) に値を 1 つずつ入力するという方法です。もう 1 つの方法では、JSON オブジェクトを使用してすべての特徴値をまとめて指定します。ここでは後者の方法を使用します。テストを複数回実行する場合 (通常はそうなります)、そして大量の特徴値が必要となる場合には、JSON オブジェクトを使用するのが最も効率的な方法になるからです。

簡単にテストを行えるよう、以下のサンプル JSON オブジェクトを用意してあります。テスト手順では、このコードをカット・アンド・ペーストして使用できます。

{"input_data":[{"fields": ["state", "account length", "area code", "phone number", "international plan", "voice mail plan", "number vmail messages", "total day minutes", "total day calls", "total day charge", "total eve minutes", "total eve calls", "total eve charge", "total night minutes", "total night calls", "total night charge", "total intl minutes", "total intl calls", "total intl charge", "customer service calls"], "values": [["NY",161,415,"351-7269","no","no",0,332.9,67,56.59,317.8,97,27.01,160.6,128,7.23,5.4,9,1.46,4]]}]}

この JSON オブジェクトは最初にフィールドの名前、次に予測する観測の順序を、いずれも 1 つのシーケンスとして定義しています。

一部の特徴 (状態、電話番号など) は (当然のことながら) 文字列形式であることが期待されていますが、数値形式の特徴は、その特定の特徴に応じて整数または浮動小数点数として入力することができます。

実行時にモデルをテストするには、以下の手順に従います。

  1. 先ほど作成したデプロイメントの名前 (例: ‘customer-churn-manual-web-deployment’) をクリックして選択します。

    deployment-list

  2. 新しいページが開き、デプロイメントのプロパティー (名前、作成日、ステータスなど) の概要が表示されます。

  3. Test (テスト)」タブを選択します。

  4. ファイルのアイコンを選択します。これにより、JSON を使用して値を入力できるようになります。

  5. サンプル JSON オブジェクトを「Enter input data (入力データを入力)」フィールドに貼り付けます。

  6. Predict (予測)」をクリックし、結果を確認します。

    deploy-est-result

予測結果には、顧客が解約する (True) か解約しない (False) 確率が示されます。このテストは、他の値を使用して試すこともできます。例えば、サンプル JSON 内の値を「customer-churn-kaggle.csv」ファイル内から抜粋した値で置き換えて予測を試します。また、電話番号を「XYZ」などの値で置き換えてから、予測を再実行してテストすることもできます。いずれも同じ予測結果になるはずです。これは、特徴は予測を左右する要因ではないことを意味します。

まとめ

このチュートリアルでは、Watson Studio 内で AutoAI Experiment 機能を使用する基本的な方法について説明し、以下の手順を案内しました。

  • プロジェクトを作成する
  • サービスをプロビジョニングしてプロジェクトに割り当てる
  • データセットなどのアセットをプロジェクトに追加する
  • AutoAI を実行して、データセットと特徴エンジニアリングに基づく予測子を生成する
  • モデルを作成してデプロイする
  • モデルをトレーニング、評価、テストする

AutoAI を使用すると、カスタマー・チャーンを予測するモデルを迅速、簡単に作成できます。AutoAI は、チュートリアル「IBM Watson Studio 内で Jupyter ノートブックを使用してモデルを作成する」で説明する Jupyter ノートブックを使用した完全なプログラム形式に代わる 1 つの手法です。

さらにもう 1 つの代替手法として使用できるのが、このラーニング・パスの次のチュートリアル「IBM Watson Studio 内で SPSS Modeler フローを作成する」で説明する、SPSS Modeler です。