心臟病嚴重影響人們的生命健康,如果可以通過人體相關體測指標,分析不同特征對心臟病的影響,則可以有效預防心臟病。本工作流基于真實的心臟病患者體測數據,為您介紹如何通過數據挖掘算法構建心臟病預測模型。
前提條件
數據挖掘流程
數據集
本工作流的數據集為UCI開源數據集,詳情請參見Heart Disease Data Set。該數據集包含了303條美國某區域的心臟病檢查患者的體測數據,具體字段如下。
字段名 | 類型 | 描述 |
age | STRING | 對象的年齡。 |
sex | STRING | 對象的性別,取值為female或male。 |
cp | STRING | 胸部疼痛類型,痛感由重到輕依次為typical、atypical、non-anginal及asymptomatic。 |
trestbps | STRING | 血壓。 |
chol | STRING | 膽固醇。 |
fbs | STRING | 空腹血糖。如果血糖含量大于120mg/dl,則取值為true,否則取值為false。 |
restecg | STRING | 心電圖結果是否有T波,由輕到重依次為norm和hyp。 |
thalach | STRING | 最大心跳數。 |
exang | STRING | 是否有心絞痛。true表示有心絞痛,false表示沒有心絞痛。 |
oldpeak | STRING | 運動相對于休息的ST Depression,即ST段壓值。 |
slop | STRING | 心電圖ST Segment的傾斜度,程度取值包括down、flat及up。 |
ca | STRING | 透視檢查發現的血管數。 |
thal | STRING | 病發種類,由輕到重依次為norm、fix及rev。 |
status | STRING | 是否患病。buff表示健康,sick表示患病。 |
心臟病預測
進入Designer頁面。
登錄PAI控制臺。
在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。
在工作空間頁面的左側導航欄選擇 ,進入Designer頁面。
構建工作流。
在Designer頁面,單擊預置模板頁簽。
在模板列表的心臟病預測案例區域,單擊創建。
在新建工作流對話框,配置參數(可以全部使用默認參數)。
其中:工作流數據存儲配置為OSS Bucket路徑,用于存儲工作流運行中產出的臨時數據和模型。
單擊確定。
您需要等待大約十秒鐘,工作流可以創建成功。
在工作流列表,選擇心臟病預測案例工作流,單擊進入工作流。
系統根據預置的模板,自動構建工作流,如下圖所示。
區域
描述
①
數據預處理,主要對數據進行去噪、缺失值填充及類型變換操作。因為每個樣本只會患病或健康,所以心臟病預測可以歸屬于分類問題。本工作流的輸入數據包括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)
。③
模型訓練和預測:
使用拆分組件將數據集按照7:3分為訓練數據集和預測數據集。
使用邏輯回歸二分類組件訓練模型。
說明如果您需要導出PMML模型文件,在該組件的字段設置頁簽,需要選中是否生成PMML復選框。然后單擊空白畫布,在該工作流頁面的工作流屬性頁簽,配置工作流數據存儲路徑。
將模型和預測數據集輸入至預測組件,進行結果預測。
④
使用混淆矩陣和二分類評估組件進行模型評估。
運行工作流并查看輸出結果。
單擊畫布上方的。
工作流運行結束后,右鍵單擊畫布中的邏輯回歸二分類,在快捷菜單,單擊 ,即可導出訓練完成的心臟病預測模型。
右鍵單擊畫布中的預測,在快捷菜單,單擊 ,即可查看模型預測結果。
查看模型效果。
右鍵單擊畫布中的二分類評估,在快捷菜單,單擊可視化分析。
在二分類評估對話框,單擊指標數據頁簽,即可查看模型評估指標數據。
其中AUC值表示該工作流模型的預測準確率達到了90%以上。
右鍵單擊畫布中的混淆矩陣,在快捷菜單,單擊可視化分析。
在混淆矩陣對話框,單擊統計信息頁簽,即可查看模型準確率等信息。
后續操作
如果工作流運行結果符合預期,您可以將運行生成的模型進行部署,待部署成功后便可進行服務調用。關于部署詳情,請參見單模型部署在線服務、PMML。