自定義工作流demo
Designer通過工作流的方式來實現(xiàn)模型構(gòu)建。您需要先創(chuàng)建一個工作流,再根據(jù)建模需求在工作流中排布不同組件的處理調(diào)度邏輯。本文通過創(chuàng)建一個空白工作流,以構(gòu)建二分類模型實現(xiàn)心臟疾病預(yù)測為例,帶您完成從0-1的可視化模型構(gòu)建與部署。
前提條件
已開通PAI并創(chuàng)建工作空間,詳情請參見開通并創(chuàng)建默認(rèn)工作空間。
步驟一:新建工作流
前往可視化建模(Designer),選擇工作空間并進(jìn)入Designer頁面。新建并進(jìn)入工作流。
參數(shù) | 說明 |
工作流名稱 | 自定義名稱。 |
工作流數(shù)據(jù)存儲 | 建議您配置該參數(shù),將其配置為OSS Bucket存儲路徑,用于存儲運行中產(chǎn)出的臨時數(shù)據(jù)和模型。若不設(shè)置,則取工作空間的默認(rèn)存儲。 系統(tǒng)會在每次運行時,自動為您創(chuàng)建 |
可見范圍 |
|
步驟二:數(shù)據(jù)準(zhǔn)備與預(yù)處理
構(gòu)建模型前,您需要準(zhǔn)備好所要使用的數(shù)據(jù)源,并完成數(shù)據(jù)的預(yù)處理,以便后續(xù)根據(jù)業(yè)務(wù)需求進(jìn)行模型訓(xùn)練。
準(zhǔn)備數(shù)據(jù)
在工作流中通過添加源/目標(biāo)類型組件實現(xiàn)數(shù)據(jù)讀取,支持讀取MaxCompute、OSS等數(shù)據(jù),詳情可參見組件參考:源/目標(biāo)下具體組件文檔。本文直接使用讀數(shù)據(jù)表組件來讀取PAI提供的心臟病案例公開數(shù)據(jù),數(shù)據(jù)集詳情請參見Heart Disease Data Set。
選擇合適源/目標(biāo)組件來讀取數(shù)據(jù)。
在左側(cè)組件列表中,單擊源/目標(biāo)文件,將讀數(shù)據(jù)表組件拖入右側(cè)畫布中,用于讀取MaxCompute表數(shù)據(jù)。畫布中會自動生成一個名稱為讀數(shù)據(jù)表-1的工作流節(jié)點。
在節(jié)點配置頁面配置源數(shù)據(jù)表名。
在畫布中選中讀數(shù)據(jù)表-1節(jié)點,在右側(cè)節(jié)點配置頁面的表名中填寫對應(yīng)的MaxCompute表名。本文填寫為
pai_online_project.heart_disease_prediction
,讀取PAI提供的公開的心臟病案例數(shù)據(jù)表。將右側(cè)的節(jié)點配置頁面切換到字段信息頁簽,查看此公開數(shù)據(jù)的字段詳情。
數(shù)據(jù)預(yù)處理
本文心臟病預(yù)測示例可以歸屬于二分類問題,使用的邏輯回歸模型組件要求輸入數(shù)據(jù)為DOUBLE(或BIGINT)類型,因此本部分將完成對心臟病案例數(shù)據(jù)的類型轉(zhuǎn)換等預(yù)處理,為模型訓(xùn)練做準(zhǔn)備。
數(shù)據(jù)預(yù)處理:將非數(shù)值類型字段轉(zhuǎn)換為數(shù)值類型。
搜索SQL腳本組件并將其拖入畫布中,畫布中生成一個名稱為SQL腳本-1的工作流節(jié)點。
通過連線,將讀數(shù)據(jù)表-1節(jié)點作為SQL腳本-1節(jié)點的t1輸入源。
配置節(jié)點。
單擊SQL腳本-1節(jié)點,在右側(cè)配置頁面輸入以下代碼(此時右側(cè)參數(shù)設(shè)置面板的輸入源為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組件,單擊從跟節(jié)點執(zhí)行到此處,調(diào)試運行本工作流。
工作流將根據(jù)節(jié)點順序依次運行各節(jié)點。當(dāng)節(jié)點成功運行完成后,節(jié)點的右上角會顯示。
說明您也可以單擊畫布左上方的(運行)圖標(biāo),直接運行整個工作流。當(dāng)工作流比較復(fù)雜時,建議您分模塊運行某個節(jié)點或部分節(jié)點,以方便進(jìn)行調(diào)試。如果運行失敗,可右鍵單擊對應(yīng)節(jié)點選擇查看日志,排查失敗原因。
運行成功后,您可以右鍵單擊目標(biāo)節(jié)點(例如SQL腳本-1),選擇
查看當(dāng)前節(jié)點輸出數(shù)據(jù)的正確性。
數(shù)據(jù)預(yù)處理:將字段轉(zhuǎn)換為DOUBLE類型,使得處理后的字段滿足邏輯回歸模型的輸入數(shù)據(jù)要求。
參考上一步,拖入類型轉(zhuǎn)換組件并連線,使其作為SQL腳本-1節(jié)點的下游節(jié)點,單擊節(jié)點后在字段設(shè)置頁簽,單擊轉(zhuǎn)換為double類型的列下的選擇字段,全選將所有字段轉(zhuǎn)換為DOUBLE類型。
數(shù)據(jù)預(yù)處理:歸一化處理,將每個特征的數(shù)值范圍轉(zhuǎn)換為0~1,去除量綱對結(jié)果的影響。
參考上一步,拖入歸一化組件并連線,使其作為類型轉(zhuǎn)換-1節(jié)點的下游節(jié)點,單擊節(jié)點后在字段設(shè)置頁簽,選擇所有字段。
數(shù)據(jù)預(yù)處理:將數(shù)據(jù)拆分為訓(xùn)練集和預(yù)測集,為后續(xù)模型訓(xùn)練和預(yù)測做準(zhǔn)備。
拖入拆分組件并連線,使其作為歸一化-1節(jié)點的下游節(jié)點,拆分后輸出2個數(shù)據(jù)表。
拆分組件默認(rèn)將數(shù)據(jù)按4:1拆分為模型訓(xùn)練集和模型預(yù)測集。您可以單擊拆分組件,在右側(cè)參數(shù)設(shè)置頁簽,設(shè)置切分比例,其他參數(shù)詳情請參見拆分。
右鍵單擊類型轉(zhuǎn)換-1組件,單擊從此處開始執(zhí)行,運行工作流中的剩余節(jié)點。
步驟三:模型訓(xùn)練
因為本示例中每個樣本只會患病或健康,所以心臟病預(yù)測屬于二分類問題,本部分使用邏輯回歸二分類組件,構(gòu)建心臟病預(yù)測模型。
拖入邏輯回歸二分類組件并連線,使其作為拆分-1節(jié)點輸出表1的下游節(jié)點。
配置節(jié)點。
單擊邏輯回歸二分類-1節(jié)點,在右側(cè)字段設(shè)置頁簽,將目標(biāo)列設(shè)置為ifhealth,將訓(xùn)練特征列設(shè)置為除目標(biāo)列以外的所有列。更多參數(shù)詳情請參見邏輯回歸二分類。
運行該節(jié)點。
步驟四:模型預(yù)測
運行預(yù)測節(jié)點并查看預(yù)測結(jié)果。
運行成功后,您可以右鍵單擊預(yù)測節(jié)點,選擇
,查看預(yù)測數(shù)據(jù)。
步驟五:模型評估
拖入二分類評估組件并連線,使其作為預(yù)測-1節(jié)點的下游節(jié)點。
單擊二分類評估-1節(jié)點,在右側(cè)字段設(shè)置頁簽,將原始標(biāo)簽列列名設(shè)置為ifhealth。
相關(guān)文檔
Designer提供了豐富的工作流模板,您也可以直接基于模板快速構(gòu)建模型,詳情請參見模板工作流demo。
您可以通過DataWorks實現(xiàn)離線工作流的離線調(diào)度,周期性地更新模型,詳情請參見使用DataWorks離線調(diào)度Designer工作流。
支持在工作流中配置全局變量,可用于在線工作流以及DataWorks離線調(diào)度工作流,提升工作流的靈活性和效率,詳情請參見高級功能:全局變量。