Machine Learning Designerはパイプラインを使用してモデルを構築およびデバッグします。 パイプラインの計画と作成から始めて、処理とスケジューリングのロジックに従ってさまざまなコンポーネントを整理します。 この例では、心臓病予測のためのバイナリ分類モデルを構築するためにブランクパイプラインが作成される。
前提条件
Platform for AI (PAI) がアクティブ化され、ワークスペースが作成されました。
ステップ1: パイプラインを作成する
[Visualized Modeling (Designer)] に移動し、ワークスペースを選択し、[Visualized Modeling (Designer)] ページに移動します。 表示されるページで、パイプラインを作成して開きます。
パラメーター | 説明 |
パイプライン名 | カスタム名を入力します。 |
データストレージ | 実行中に一時的なデータとモデルを保存するには、このパラメーターをOSSバケットパスに設定することを推奨します。 指定しない場合、ワークスペースのデフォルトストレージが使用されます。 システムは、実行ごとに |
可視性 |
|
ステップ2: 準備とデータの前処理
モデルを構築する前に、データソースを準備し、データの前処理を完了します。 これにより、ビジネス要件に基づいた後続のモデルトレーニングが容易になります。
データの準備
作成したパイプラインで、[データソース /ターゲット] カテゴリにコンポーネントを追加して、MaxComputeやObject Storage Service (OSS) などのデータソースからデータを読み取ります。 詳細については、コンポーネントリファレンス: データソースまたは宛先の特定のコンポーネントドキュメントをご参照ください。 このトピックでは、[読み取りテーブル] コンポーネントを使用して、PAIが提供する心臓病の症例に関連するパブリックデータを読み取ります。 データセットの詳細については、「心臓病データセット」をご参照ください。
[データソース /ターゲット] カテゴリの [テーブルの読み取り] コンポーネントに適切なテーブルを選択して、データを読み取ります。
左側のコンポーネントリストで、[データソース /ターゲット] をクリックし、[テーブルの読み取り] コンポーネントを右側のキャンバスにドラッグして、MaxComputeテーブルデータを読み取ります。 Read Table-1という名前のパイプラインノードがキャンバス上に自動的に生成されます。
ノード設定ページでソースデータテーブルを設定します。
キャンバス上の [Read Table-1] ノードをクリックし、右側のノード設定セクションの [table name] フィールドにMaxComputeテーブル名を入力します。 このトピックでは、
pai_online_project.heart_disease_prediction
テーブルを使用して、PAIが提供する心臓病の症例に関連するパブリックデータを読み取ります。ノード設定セクションの [フィールド情報] タブに切り替えて、パブリックデータのフィールドの詳細を表示します。
前処理データ
このトピックで説明する心臓病の予測は、バイナリ分類の問題です。 ロジスティック回帰モデルコンポーネントには、DOUBLEまたはBIGINTタイプの入力データが必要です。 このセクションでは、モデルトレーニングのために心臓病の症例に関連するデータに対してデータ型変換などの前処理操作を実行する方法について説明します。
データ前処理: 非数値フィールドを数値フィールドに変換します。
SQL Scriptコンポーネントを検索し、キャンバスにドラッグします。 SQL Script-1という名前のパイプラインノードが生成されます。
[Read Table-1] ノードからSQL Script-1ノードのt1入力ポートに線を引きます。 このようにして、Read Table-1ノードはSQL Script-1ノードのデータソースになります。
SQL Script-1ノードを設定します。
[SQL Script-1] ノードをクリックし、右側のSQLスクリプトエディターに次のコードを入力します。 [パラメーターの設定] タブで、[入力ソース] フィールドにt1が表示されます。
select age, (case sex when 'male' then 1 else 0 end) as sex, (case cp when 'angina' then 0 when 'notang' then 1 else 2 end) as cp, trestbps, chol, (case fbs when 'true' then 1 else 0 end) as fbs, (case restecg when 'norm' then 0 when 'abn' then 1 else 2 end) as restecg, thalach, (case exang when 'true' then 1 else 0 end) as exang, oldpeak, (case slop when 'up' then 0 when 'flat' then 1 else 2 end) as slop, ca, (case thal when 'norm' then 0 when 'fix' then 1 else 2 end) as thal, (case status when 'sick' then 1 else 0 end) as ifHealth from ${t1};
キャンバスの左上隅にある [保存] をクリックして、パイプライン設定を保存します。
SQL Script-1コンポーネントを右クリックし、[Run from Root Node To Here] をクリックしてパイプラインをデバッグおよび実行します。
パイプラインの各ノードは順番に実行されます。 ノードが期待どおりに実行されると、ノードの右上隅に表示されるノードボックスにアイコンが表示されます。
説明キャンバスの左隅にある (実行) アイコンをクリックして、パイプライン全体を実行することもできます。 パイプラインが複雑な場合は、コンポーネントに基づいて特定のノードまたは一部のノードを実行することをお勧めします。 これにより、パイプラインデバッグが容易になります。 ノードの実行に失敗した場合は、ノードを右クリックし、[ログの表示] を選択して障害を診断します。
パイプラインの実行後、SQL Script-1などのノードを右クリックし、
を選択して、ノードの出力データが正しいかどうかを確認します。
データ前処理: ロジスティック回帰モデルの入力データ要件を満たすように、フィールドをDOUBLEデータ型に変換します。
[データ型変換] コンポーネントをキャンバスにドラッグし、前の手順を参照して、[SQL Script-1] ノードを [データ型変換-1] ノードに接続します。 このようにして、Data Type Conversion-1ノードは、SQL Script-1ノードの下流ノードになります。 [データ型変換-1] ノードをクリックします。 [フィールド設定] タブで、[ダブルタイプの列に変換] フィールドの [フィールドの選択] をクリックし、すべてのフィールドを選択して、フィールドをダブルデータタイプに変換します。
データの前処理: データを正規化して、各特徴の値を0から1の範囲の値に変換します。 これにより、予測結果に対するディメンションの影響が取り除かれます。
[正規化] コンポーネントをキャンバスにドラッグし、前の手順を参照して、[データ型変換-1] ノードを [正規化-1] ノードに接続します。 このようにして、正規化 − 1ノードは、データ型変換 − 1ノードの下流ノードになる。 [Normalization-1] ノードをクリックします。 [フィールド設定] タブで、すべてのフィールドを選択します。
データ前処理: データをトレーニングデータセットと予測データセットに分割し、その後のモデルトレーニングと予測を行います。
[Split] コンポーネントをキャンバスにドラッグし、[Normalization-1] ノードを [Split-1] ノードに接続します。 このようにして、Split-1ノードはNormalization-1ノードの下流ノードになります。 Split-1ノードの実行後、2つのデータテーブルが生成されます。
デフォルトでは、Splitコンポーネントはデータをモデルトレーニングセットとモデル予測セットに4:1の比率で分割します。 [分割1] ノードをクリックします。 右側の [パラメーターの設定] タブで、[分割] パラメーターを指定します。 その他のパラメーターの詳細については、「分割」をご参照ください。
[データ型変換-1] ノードを右クリックし、[ここから実行] をクリックして、データ型変換-1ノードからパイプライン内のノードを実行します。
ステップ3: モデルを訓練する
各サンプルにおいて、各患者は病気または健康である。 したがって、心臓病の予測はバイナリ分類の問題です。 このセクションでは、バイナリ分類コンポーネントのロジスティック回帰を使用して心臓病予測モデルを構築する方法について説明します。
バイナリ分類のロジスティック回帰コンポーネントをキャンバスにドラッグし、[分割1] ノードの [出力テーブル1] を [バイナリ分類のロジスティック回帰-1] ノードに接続します。 このようにして、Binary Classification-1ノードのロジスティック回帰は、Split-1ノードの出力テーブル1の下流ノードになります。
バイナリ分類-1ノードのロジスティック回帰を設定します。
[バイナリ分類のロジスティック回帰-1] ノードをクリックします。 右側の [フィールド設定] タブで、[ターゲット列] パラメーターの [ifhealth] フィールドを選択し、[トレーニング機能列] パラメーターの [ターゲット列] パラメーターの値を除くすべてのフィールドを選択します。 その他のパラメーターの詳細については、「バイナリ分類のロジスティック回帰」をご参照ください。
バイナリ分類のロジスティック回帰ノードを実行します。
ステップ4: 予測にモデルを使用する
[Prediction-1] ノードを実行し、予測結果を表示します。
予測-1ノードを実行した後、予測-1ノードを右クリックし、
を選択し、予測データを表示します。
ステップ5: モデルの評価
[バイナリ分類評価] コンポーネントをキャンバスにドラッグし、[予測-1] ノードを [バイナリ分類評価-1] ノードに接続します。 このようにして、Binary Classification Evaluation-1ノードは、Prediction-1ノードの下流ノードになります。
[バイナリ分類評価-1] ノードをクリックします。 右側の [フィールド設定] タブで、[元のラベル列] パラメーターの [ifhealth] フィールドを選択します。
関連ドキュメント
Machine Learning Designerには、モデルの作成に使用できるさまざまなテンプレートが用意されています。 詳細については、「テンプレートを使用したパイプラインの作成のデモ」をご参照ください。
パイプラインは、DataWorksタスクを使用してMachine Learning Designerでスケジュールできます。 詳細については、「Machine Learning DesignerでのDataWorksタスクの使用によるパイプラインのスケジュール」をご参照ください。
パイプラインでグローバル変数を設定できます。 この機能は、オンラインパイプラインを管理し、DataWorksタスクを使用してパイプラインをスケジュールするのに役立ちます。 このようにして、パイプラインの柔軟性と効率が向上します。 詳細については、「高度な機能: グローバル変数」をご参照ください。