心臓病は主要な健康リスクです。患者の検査データを分析することで、主要なリスク要因を特定し、早期予防を可能にします。このチュートリアルでは、実際の患者データを使用してデータマイニングパイプラインで心臓病予測モデルを作成する方法を説明します。
前提条件
-
ワークスペースを作成済みであること。詳細については、「ワークスペースの作成と管理」をご参照ください。
-
MaxCompute リソースをワークスペースに関連付けていること。詳細については、「ワークスペースの作成と管理」をご参照ください。
データマイニングプロセス
心臓病の予測
-
ビジュアルモデリングのページに移動します。
-
PAI コンソールにログインします。
-
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。ワークスペースページで、管理するワークスペースの名前をクリックします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
-
パイプラインを作成します。
-
Designer ページで、Preset Templates タブをクリックします。
-
テンプレートリストの [心臓病の予測] セクションで、Create をクリックします。
-
Create Pipeline ダイアログボックスで、パラメーターを設定します。デフォルト設定を使用できます。
Data Storage パラメーターは、パイプラインの実行中に生成された一時データとモデルを格納するための Object Storage Service (OSS) バケットパスを指定します。
-
Confirm をクリックします。
パイプラインが作成されるまで約 10 秒待ちます。
-
パイプラインリストで、心臓病予測パイプラインを選択し、Open をクリックします。
-
システムは、プリセットテンプレートに基づいて、次の図に示すようにパイプラインを自動的に構築します。

エリア
説明
①
データ前処理:この段階では、データクレンジング、欠損値の補完、データ型の変換が含まれます。各患者は病気か健康かのいずれかであるため、心臓病の予測は二項分類問題です。このパイプラインの入力データには、14 の特徴列と 1 つのターゲット列が含まれます。フィールドの詳細については、「付録:心臓病データセット」をご参照ください。データ前処理中に、各フィールドの意味に基づいて文字列値が数値型に変換されます。例:
-
二値クラスデータ:sex フィールドを例にとると、その値は female または male であり、0 を female、1 を male として表現できます。
-
多値データ:たとえば、cp フィールドは胸痛を表し、痛みのレベルは重症度の昇順で 0 から 3 までの数値にマッピングできます。
以下は、データ前処理用のサンプル SQL スクリプトです。
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};②
特徴量エンジニアリング:この段階では、新しい特徴量の派生と既存の特徴量のスケーリングが含まれます。このパイプラインでは、まず [型変換] コンポーネントを使用して入力特徴量を DOUBLE 型に変換します。これは、ロジスティック回帰モデルが DOUBLE 型の入力データを必要とするためです。次に、パイプラインは [特徴量選択ランナー] コンポーネントを使用して、各特徴量が結果に与える影響を決定します。これは情報エントロピーとジニ係数によって反映されます。パイプラインはまた、[正規化] コンポーネントを使用して各特徴量を 0 から 1 の範囲にスケーリングします。このプロセスは正規化として知られ、異なる単位やスケールが結果に与える影響を排除します。数式は
result=(val-min)/(max-min)です。③
モデルのトレーニングと予測:
-
Split コンポーネントを使用して、データセットを 7:3 の比率でトレーニングセットと予測セットに分割します。
-
[ロジスティック回帰] コンポーネントを使用してモデルをトレーニングします。
説明PMML モデルファイルをエクスポートする場合は、このコンポーネントの [フィールド設定] タブで、[PMML を生成するかどうか] チェックボックスをオンにします。次に、キャンバスの空白領域をクリックし、Pipeline Attributes タブでデータストレージパスを設定します。
-
トレーニング済みのモデルと予測セットを Predicted コンポーネントに渡し、予測を生成します。
④
Confusion Matrix および [評価] コンポーネントを使用してモデル評価を行います。
-
-
-
パイプラインを実行し、結果を表示します。
-
キャンバスの上部にある
をクリックします。 -
パイプラインの実行が完了したら、キャンバス上の [ロジスティック回帰] コンポーネントを右クリックし、 を選択して、トレーニング済みの心臓病予測モデルをエクスポートします。
-
キャンバス上の Predicted コンポーネントを右クリックし、 を選択して、予測結果を表示します。
-
-
モデルのパフォーマンスを評価します。
-
キャンバス上の [評価] コンポーネントを右クリックし、Visual Analysis をクリックします。
-
[評価] ダイアログボックスで、Indicator Data タブをクリックして、モデル評価メトリックを表示します。
このモデルの AUC 値は 0.9 を超えており、優れた予測性能を示しています。 -
キャンバス上の Confusion Matrix コンポーネントを右クリックし、Visual Analysis をクリックします。
-
Confusion Matrix ダイアログボックスで、Summary タブをクリックして、モデルの精度などの情報を表示します。
-
付録:心臓病データセット
このパイプラインは、UCI 機械学習リポジトリのオープンソースデータセットを使用します。これには、米国のとある地域の患者 303 人の身体検査記録が含まれています。次の表にフィールドの説明を示します。
|
パラメーター |
型 |
説明 |
|
age |
STRING |
患者の年齢。 |
|
sex |
STRING |
患者の性別。有効値:female および male。 |
|
cp |
STRING |
胸痛の種類。重症度の降順で、typical、atypical、non-anginal、asymptomatic です。 |
|
trestbps |
STRING |
安静時血圧。 |
|
chol |
STRING |
コレステロール。 |
|
fbs |
STRING |
空腹時血糖値。血糖値が 120 mg/dL を超える場合、値は true です。それ以外の場合、値は false です。 |
|
restecg |
STRING |
心電図の T 波の考えられる結果は、軽度から重度の順に norm と hyp です。 |
|
thalach |
STRING |
達成された最大心拍数。 |
|
exang |
STRING |
ユーザーが狭心症を患っているかどうかを示します。true は狭心症の存在を示し、false は狭心症の不在を示します。 |
|
oldpeak |
STRING |
運動によって誘発された安静時との比較による ST 低下。 |
|
slop |
STRING |
心電図 (ECG) の ST セグメントの傾き。有効値には down、flat、up が含まれます。 |
|
ca |
STRING |
透視検査で着色された主要血管の数。 |
|
thal |
STRING |
発生の種類は、重症度の昇順で norm、fix、rev です。 |
|
status |
STRING |
健康状態を示します。buff は健康を意味し、sick は病気を意味します。 |
テンプレートから作成されたパイプラインには、このデータセットが含まれています。データセットをダウンロードするか、詳細を確認するには、「Heart Disease Data Set」をご参照ください。
次のステップ
パイプラインが正常に実行されたら、モデルをオンラインサービスとしてデプロイして推論に使用できます。デプロイの詳細については、「モデルをオンラインサービスとしてデプロイする」および「PMML」をご参照ください。