心臓病は人間の命を脅かします。 健康診断データに基づいて心臓病の身体指標を分析することができれば、心臓病を予防することができる。 このトピックでは、心臓病患者の健康診断データに基づいて、データマイニングアルゴリズムを使用してPlatform for AI (PAI) で心臓病予測モデルを構築する方法について説明します。
前提条件
ワークスペースが作成済み。 詳細については、「ワークスペースの作成」をご参照ください。
MaxComputeリソースはワークスペースに関連付けられています。 詳細については、「ワークスペースの管理」をご参照ください。
データマイニング手順
データセット
このトピックで説明するパイプラインでは、UCI Machine Learning Repositoryのオープンソースデータセットを使用します。 詳細については、「心臓病データセット」をご参照ください。 データセットには、米国の地域の303人の心臓病患者の健康診断データが含まれています。 次の表に、データセットのフィールドを示します。
項目 | データ型 | 説明 |
age | STRING | 患者の年齢。 |
性別 | STRING | 患者の性別。 有効な値: femaleとmale。 |
cp | STRING | 患者が持っている胸痛のタイプ。 有効な値: 典型的、非定型、非狭心症、無症候性。 |
trestbps | STRING | 患者の安静時血圧レベル。 |
チョル | STRING | 患者の血清コレステロールレベル。 |
fbs | STRING | 患者の空腹時血糖値。 空腹時血糖値が120 mg/dlを超える場合、値はtrueに設定されます。 それ以外の場合、値はfalseに設定されます。 |
restecg | STRING | 患者の安静時心電図 (ECG) の結果。 有効な値: normとhyp。 |
タラハ | STRING | 患者の最大心拍数。 |
exang | STRING | 患者が運動誘発性狭心症を有するかどうかを示す。 有効な値は true と false です。 |
oldpeak | STRING | 安静に対する運動によって誘発されるSTうつ病。 |
slop | STRING | ピーク运动STセグメントの勾配。 有効な値: down、flat、up。 |
ca | STRING | 蛍光透視法によって着色される主要な血管の数。 |
thal | STRING | 患者が持っている欠陥のタイプ。 有効な値: norm、fix、rev。 |
status | STRING | 患者の心臓病の存在。 有効な値: buffとsick。 |
心臓病を予測する
Machine Learning Designerページに移動します。
PAIコンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、管理するワークスペースの名前をクリックします。
ワークスペースページの左側のナビゲーションウィンドウで、 機械学習デザイナーページに移動します。
Build a pipeline
可视化モデリング (デザイナー)ページで、プリセットテンプレートタブをクリックします。
[パイプラインテンプレート] タブの [心臓病の予測] セクションで、[作成] をクリックします。
[パイプラインの作成] ダイアログボックスで、必要なパラメーターを設定します。 デフォルト値を使用できます。
Pipeline Data Pathパラメーターに指定された値は、パイプラインのランタイム中に生成された一時データおよびモデルのObject Storage Service (OSS) バケットパスです。
OKをクリックします。
パイプラインの作成には約10秒かかります。
[パイプラインリスト] タブで、心臓病予測という名前のパイプラインを見つけ、開く.
次の図に示すように、キャンバス上のパイプラインのコンポーネントを表示します。 システムは、プリセットテンプレートに基づいてパイプラインを自動的に作成します。
エリア
説明
①
このセクションに表示されるコンポーネントは、データを前処理します。 たとえば、コンポーネントはデータのノイズを除去し、欠落した値を埋め、値を数値に変換します。 各サンプルにおいて、患者は健康または病気のいずれかである。 したがって、このパイプラインでの心臓病の予測は分類の問題です。 このパイプラインで使用されるデータセットには、14のフィーチャフィールドと1つのゴールフィールドが含まれます。 データの前処理中に、各フィールドの値は、フィールドの意味に基づいて数値に変換する必要があります。 パラメーター:
2値フィールド: コンポーネントは一方の値を0に、もう一方の値を1に変換します。 たとえば、性別フィールドの値は女性または男性です。 変換後、0は女性を指定し、1は男性を指定します。
多値フィールド: コンポーネントは、値を0、1、2、または3に変換します。 たとえば、cpフィールドには、胸痛の種類を軽いものから重いものまで指定する4つの値があります。 変換後、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型の入力データのみを受け入れるため、Type Transformコンポーネントは入力特徴データをDOUBLE型に変換します。 次に、Feature Select Runnerコンポーネントは、エントロピーとGiniインデックスを使用して、予測結果に対する各特徴の影響を測定します。 正規化コンポーネントは、各フィーチャの値を0から1の範囲の値に変換します。 これにより、予測結果に対するディメンションの影響が取り除かれます。 正規化式は、
result=(val − min)/(max − min)
である。③
このセクションに表示されるコンポーネントは、モデルをトレーニングして予測を実行します。
分割コンポーネントは、データセットを7:3の比率でトレーニングデータセットと予測データセットに分割します。
ロジスティック回帰コンポーネントはモデルをトレーニングします。
説明PMMLモデルファイルをエクスポートする場合は、[フィールド設定] タブの [PMMLを生成するかどうか] チェックボックスをオンにします。 キャンバス上の空白領域をクリックし、[パイプライン属性] タブで [データストレージ] を指定します。
トレーニングデータセットと予測データセットが予測コンポーネントにインポートされます。 予測コンポーネントは、予測結果を生成する。
④
Confusion MatrixおよびEvaluateコンポーネントは、モデルを評価します。
パイプラインを実行し、結果を表示します。
キャンバスの左上隅で、アイコンが表示されます。
パイプラインの実行後、ロジスティック回帰キャンバス上のコンポーネントを選択し、 トレーニングされた心臓病予測モデルをエクスポートします。
キャンバスで [予測] を右クリックし、 を選択して予測結果を表示します。 モデルの評価レポートを表示します。
結果を表示します。
キャンバス上の評価を右クリックし、ビジュアル分析をクリックします。
では、評価ダイアログボックスで、インデックスデータタブでモデルの評価に使用されるインデックスを表示します。
評価レポートでは、AUCの値は、モデルの予測精度が90% よりも高いことを示しています。
キャンバス上の混乱マトリックスを右クリックし、ビジュアル分析をクリックします。
では、混乱マトリックスダイアログボックスで、統計タブを使用して、モデルの精度などのモデル統計を表示します。