ビジュアルモデリング (Designer) はパイプラインを使用してモデルを構築します。パイプラインを作成し、キャンバス上でコンポーネントを配置し、処理ロジックを定義します。このチュートリアルでは、データの準備からデプロイまで、心疾患予測のためのビジュアルモデルの構築とデプロイの手順を説明します。
前提条件
-
PAI が有効化され、ワークスペースが作成されていること。詳細は、「PAI の有効化とデフォルトワークスペースの作成」をご参照ください。
-
ワークスペースが MaxCompute リソースに関連付けられていること。詳細は、「クイックスタート - 前提条件」をご参照ください。
ステップ 1:パイプラインの作成
ビジュアルモデリング (Designer) を開き、ワークスペースを選択し、右上隅の [新しいパイプライン] をクリックします。パイプライン名を入力し、[OK] をクリックします。
|
パラメーター |
説明 |
|
ワークフロー名 |
カスタムワークフロー名。 |
|
ワークフローデータストレージ |
一時データとモデルを格納する OSS バケットのパスです。設定しない場合、デフォルトでワークスペースのストレージが使用されます。 実行ごとに、Designer は |
|
可視性 |
|
ステップ 2:データの準備と前処理
モデルを構築する前に、トレーニングデータを準備し、前処理を行います。
データの準備
[ソース/ターゲット] コンポーネントを追加して、MaxCompute、OSS、または他のソースからデータを読み取ります。詳細は、「コンポーネントリファレンス:ソース/ターゲット」をご参照ください。この例では、[テーブル読み込み] を使用して、PAI の公開されている心疾患データセットを読み取ります。データセットの詳細は、「心疾患データセット」をご参照ください。
-
[ソース/ターゲット] コンポーネントを選択してデータを読み取ります。
左側のコンポーネントリストで [ソース/ターゲット] をクリックし、[テーブル読み込み] をキャンバスにドラッグします。[テーブル読み込み-1] ノードが作成されます。
-
ソーステーブルを設定します。
キャンバスで [テーブル読み込み-1] を選択します。右側の設定ペインで、[テーブル名] に MaxCompute のテーブル名を入力します。この例では、
pai_online_project.heart_disease_predictionを入力します。 -
[フィールド] タブに切り替えて、フィールドの詳細を表示します。
データの前処理
二項ロジスティック回帰コンポーネントは、DOUBLE 型または BIGINT 型の入力を必要とします。モデルのトレーニングのために、データ型変換を使用してデータセットを前処理します。
-
非数値フィールドを数値型に変換します。
-
[SQLスクリプト] を検索し、キャンバスにドラッグします。[SQLスクリプト-1] ノードが作成されます。
-
Read Table-1を、SQLスクリプト-1のt1 入力ポートに接続します。
-
ノードを設定します。
[SQLスクリプト-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スクリプト-1] コンポーネントを右クリックし、[ルートノードからここまで実行] を選択して、パイプラインをデバッグおよび実行します。
ノードは順番に実行されます。各ノードが正常に実行されると、
アイコンが表示されます。説明キャンバスの左上隅にある
(実行) をクリックして、パイプライン全体を実行することもできます。複雑なパイプラインの場合、個々のノードを実行するとデバッグが簡素化されます。実行が失敗した場合は、失敗したノードを右クリックし、[ログの表示] を選択してトラブルシューティングを行います。 -
実行後、[SQLスクリプト-1] などの宛先ノードを右クリックし、 を選択して出力を確認します。
-
-
すべてのフィールドを DOUBLE データ型に変換します。
[データ型変換] をキャンバスにドラッグし、[SQLスクリプト-1] の後に接続します。[フィールドの設定] タブで、[double に変換する列] の下にある [フィールドの選択] をクリックし、すべてのフィールドを選択します。
-
特徴量を [0, 1] の範囲に正規化します。
[正規化] をキャンバスにドラッグし、[データ型変換-1] の後に接続します。[フィールドの設定] タブですべてのフィールドを選択します。
-
データをトレーニングセットとテストセットに分割します。
[分割] をキャンバスにドラッグし、[正規化-1] の後に接続します。このコンポーネントは 2 つのテーブルを出力します。
デフォルトでは、データは 4:1 の比率で分割されます。[パラメーター] タブの [分割比率] で調整できます。詳細は、「分割」をご参照ください。
-
[データ型変換-1] を右クリックし、[ここから実行] を選択して残りのノードを実行します。
ステップ 3:モデルのトレーニング
心疾患予測は、各サンプルが「病気」か「健康」かを示す二項分類問題です。二項ロジスティック回帰コンポーネントを使用してモデルを構築します。
-
Binary Logistic Regression コンポーネントをキャンバスにドラッグし、[分割-1] ノードの [出力テーブル 1] ポートに接続します。
-
ノードを設定します。
[二項ロジスティック回帰-1] をクリックします。[フィールドの設定] タブで、[ラベル列] を ifhealth に、[特徴量列] を残りのすべての列に設定します。詳細は、「二項ロジスティック回帰」をご参照ください。
説明ステップ 6:モデルのデプロイ (任意) でモデルをデプロイするには、[二項ロジスティック回帰] を選択し、[フィールドの設定] タブで [PMML ファイルの生成] にチェックを入れる必要があります。
-
ノードを実行します。
ステップ 4:予測の実行
-
予測ノードを実行し、結果を表示します。
予測ノードを右クリックし、[データの表示] > [予測結果の出力] を選択します。
出力には、ifhealth (実際のラベル、1.0 または 0.0)、prediction_result (予測結果)、prediction_score (信頼度スコア)、および prediction_detail (JSON 形式のクラスごとの確率) が含まれます。
ステップ 5:モデルの評価
-
[二項分類評価] をキャンバスにドラッグし、[予測-1] の後に接続します。
-
[二項分類評価-1] をクリックします。[フィールドの設定] タブで、[元のラベル列] を ifhealth に設定します。
ステップ 6:モデルのデプロイ (任意)
Designer は Elastic Algorithm Service (EAS) と統合されています。トレーニング、予測、評価の後、モデルをオンラインサービスとして EAS にデプロイできます。
-
パイプラインの実行後、[モデルリスト] をクリックし、モデルを選択して [EAS にデプロイ] をクリックします。
-
設定を確認します。詳細は、「モデルをオンラインサービスとしてデプロイ」をご参照ください。
[モデルファイル] と [プロセッサタイプ] は事前に設定されています。必要に応じて他のパラメーターを調整します。
-
[デプロイ] をクリックします。
[サービスステータス] が [作成中] から [実行中] に変わると、サービスはデプロイされています。
重要不要な課金を避けるため、サービスが不要になったら、[操作] 列の [停止] をクリックしてください。
関連ドキュメント
-
Designer はモデル構築のためのパイプラインテンプレートを提供しています。詳細は、「テンプレートパイプライン」をご参照ください。
-
DataWorks でオフラインパイプラインをスケジュールして、モデルを定期的に更新します。詳細は、「DataWorks を使用した Designer のオフラインパイプラインのスケジューリング」をご参照ください。
-
グローバル変数を設定して、オンラインサービスや DataWorks のスケジュールジョブに対してパイプラインをより柔軟かつ効率的にします。詳細は、「グローバル変数」をご参照ください。
