機器學(xué)習(xí)項目的備忘清單!
機器學(xué)習(xí)項目中含有眾多因素,包括數(shù)據(jù)處理、模型優(yōu)化等。開發(fā)者經(jīng)常會陷入混亂,或者遺漏一些重要的東西。這里有一份備忘清單,請查收。

我們所了解事物的數(shù)量和復(fù)雜度已經(jīng)超出了自身從它們中正確、安全或可靠地獲益的能力。

問題的本質(zhì)(有監(jiān)督的 / 無監(jiān)督的,分類問題 / 回歸問題)。
你可以開發(fā)的方案類型。
應(yīng)該用什么指標(biāo)來度量性能?
機器學(xué)習(xí)是解決這個問題的正確方法嗎?
解決該問題的手動方法。
該問題固有的假設(shè)。
列出你需要的數(shù)據(jù)源及數(shù)據(jù)量;
檢查存儲空間是否會成為問題;
檢查你是否有權(quán)限應(yīng)用這些數(shù)據(jù)來達到你的目的;
獲取數(shù)據(jù)并將其轉(zhuǎn)換為可利用的格式;
檢查數(shù)據(jù)類型,通常包括文本、分類、數(shù)值、時序、圖像數(shù)據(jù);
保留樣本以進行最終的測試。
使用 jupyter notebook,因為它為研究數(shù)據(jù)提供了簡單直觀的界面;
確定目標(biāo)變量;
確定特征的類型(分類、數(shù)值、文本等);
分析特征之間的關(guān)系;
添加一些可視化數(shù)據(jù),使每個特征對目標(biāo)變量的影響更易于解釋;
記錄你的發(fā)現(xiàn)。
編寫數(shù)據(jù)轉(zhuǎn)換函數(shù),并自動處理將輸入的下一批數(shù)據(jù);
編寫數(shù)據(jù)清理函數(shù)(估算缺失值并處理異常值);
編寫函數(shù)以選擇和工程化特征,包括刪除冗余特征、特征格式化以及其他數(shù)學(xué)變換;
特征擴展——標(biāo)準化特征。
使用默認參數(shù)訓(xùn)練一些常用的機器學(xué)習(xí)模型,如樸素貝葉斯、線性回歸、支持向量機(SVM)等;
度量并比較每種模型的性能;
對每個模型采用 N 倍交叉驗證并在 N 倍的基礎(chǔ)上計算性能指標(biāo)的均值和標(biāo)準差;
研究對目標(biāo)影響最大的特征;
分析模型在預(yù)測過程中存在的錯誤類型;
用不同的方式工程化特征;
重復(fù)上述步驟幾次,以確保使用正確的特征,且其形式也無誤;
選出基于性能指標(biāo)的最佳模型。
用交叉驗證優(yōu)化超參數(shù);
用隨機搜索或網(wǎng)格搜索等自動調(diào)整方法來找出最佳模型的最佳配置;
測試相關(guān)方法,比如集成學(xué)習(xí)等;
用盡可能多的數(shù)據(jù)測試模型;
最終確定后,使用在開始保留的未見過測試樣例來檢查模型是否存在過擬合或欠擬合。
保存代碼并記錄整個項目的過程及用到的方法;
創(chuàng)建儀表板,如 voila 或帶有接近自我解釋可視化的有效 presentation;
撰寫一篇描述你如何進行特征分析、測試數(shù)據(jù)轉(zhuǎn)換等的文章 / 報告。記錄你的學(xué)習(xí)過程,包括失敗的經(jīng)驗和有效的技術(shù)方法;
總結(jié)主要結(jié)果并規(guī)劃未來設(shè)想(如果有的話)。
在 h5 或 pickle 文件中保存你最終的訓(xùn)練模型;
提供網(wǎng)頁版模型應(yīng)用,你可以使用 Flask 來開發(fā)這些網(wǎng)頁服務(wù);
關(guān)聯(lián)輸入數(shù)據(jù)源并設(shè)置 ETL 路徑;
基于擴展需求,用 pipenv、docker/Kubernetes 管理依賴關(guān)系;
你可以使用亞馬遜、Azure 或者谷歌云平臺來部署你的服務(wù);
在實時數(shù)據(jù)上監(jiān)測性能或讓人們在你的模型上方便地使用他們的數(shù)據(jù)。
