心臓病は人間の命を脅かします。 健康診断データに基づいて心臓病の身体指標を分析することができれば、心臓病を予防することができます。 このトピックでは、心臓病患者の健康診断データに基づいて、データマイニングアルゴリズムを使用して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% よりも高いことを示しています。
キャンバスで混乱マトリックスを右クリックして、ビジュアル分析をクリックします。
混乱マトリックスダイアログボックスで、統計タブをクリックして、モデルの精度などのモデル統計を表示します。
次に何をすべきか
パイプラインが期待どおりに実行されている場合は、サービス呼び出し用のモデルをデプロイできます。 デプロイの詳細については、「オンラインサービスとしてモデルをデプロイする」および「PMMLプロセッサ」をご参照ください。