NO IMAGE

翻譯自Hands-On Machine learning with Scikit-Learn and TensorFlow
APPENDIX B : Machine Learning Project Checklist

機器學習專案清單

本清單引導你實踐一個機器學習專案。主要包括8步:
1、問題構建及全域性控制
2、獲得資料
3、探索並瞭解資料
4、準備資料,從而更好的發現機器學習演算法需要的潛在資料模式
5、探索多種不同模型並選取幾個最優模型
6、優化模型並組合成最好的解決方案
7、提出方案
8、上線、監視並維護系統
顯然,你應該根據需要隨時調整這個清單

問題構建及全域性控制

1、使用業務術語定義目標
2、你的方案將被用什麼方式使用?
3、當前有什麼解決方案/替代辦法(如果有)?
4、你將如何構建這個問題(監督的/非監督的,線上的/離線的,等等)
5、怎麼評估效能?
6、效能評估與業務目標一致嗎?
7、達到業務目標的最小效能標準是什麼?
8、類似的問題有哪些?經驗和工具能複用嗎?
9、有專家評價可用嗎?
10、你將怎樣手工解決問題?
11、列出迄今為止你(或其他人)已經做的假設
12、儘可能驗證假設

獲取資料

注意:儘可能自動獲取最新資料
1、列出你需要的資料以及需要多少資料
2、找到能夠獲取相關資料的文件
3、檢查資料可能佔用多少空間
4、檢視法律條文,需要的話獲取許可權
5、獲取訪問許可權
6、建立工作空間(帶有足夠的儲存空間)
7、獲取資料
8、將資料轉換為容易操作的格式(不改變資料本身)
9、確保刪除或保護敏感資料(例如:匿名)
10、檢查資料的規模和型別(時間序列、樣本、地理學等等)
11、取樣測試集另外放置,並不再看它(不能窺探資料)

探索資料

注意:嘗試從業務專家的角度觀察
1、建立探索的資料副本(如果需要,取樣到可管理的規模)
2、建立Jupyter notebook來記錄你的資料探索
3、研究每個屬性以及它們的特徵:
 名稱
 型別(類別,int/float,有界的/無界的,文字,結構化的,等等)
 缺失值百分比
 噪度和噪聲型別(隨機的、離群值、舍入誤差等)
4、對於有監督學習任務,識別目標屬性
5、視覺化資料
6、研究屬性之間的相關度
7、研究怎樣手工解決問題
8、識別有用的轉換
9、識別有用的附加資料
10、已經學習的文件

準備資料

注意:
在資料副本上進行操作(保持原始資料完整)
為所有資料編寫轉換函式,因為:
 可以在下次獲取新資料集時方便的準備資料
 可以在將來的專案中使用這些轉換方法
 用來清洗並準備測試資料集
 使得將製備選擇作為超參時更容易
1、資料清洗:
 處理或刪除離群值(可選)
 填充缺失值(例如:用0,均值、中位數…)或刪除它們所在的行(或列)
2、特徵選擇(可選)
刪除對任務無有用資訊的屬性
3、特徵工程(視情況):
 離散化連續特徵
 分解特徵(如:分類的,日期/時間,等)
 進行有用的特徵轉換(如,log(x),sqrt(x),x^2,等)
 聚合成有用的新特徵
4、特徵規範化:標準化或正則化特徵

選出可用的模型

注意:
 如果資料規模很大,可能要取樣出小的訓練集從而適用於在合理時間內訓練多個不同模型(要意識到這對複雜模型如大規模神經網路或隨機森林不利)
 再一次說明,儘可能使下面步驟自動化
1、使用標準引數訓練多個迅速而又隨性的不同類別的模型(如:線性、樸素貝葉斯,SVM,隨機森林,神經網路等)
2、評估並比較效能
對每個模型,使用N折交叉驗證,並計算N折效能評估的均值和標準差
3、對每個演算法分析最重要變數
4、分析每個模型產生的錯誤型別
要避免這些錯誤,人會使用什麼資料
5、進行一輪快速的特徵選擇和工程化
6、對前五步進行一到兩次快速迭代
7、選出3至5個表現最好的模型,優化模型

系統調優

注意:
 本步中要使用儘可能多的資料,特別是要進行最終調優時
 儘可能自動化
1、使用交叉驗證優化超參
 將資料轉換選擇作為超參對待,特別是不能確定怎樣處理它們才合適時(例如:是應該用0還是中位數替換缺失值?或只是丟棄行?)
 除非只有很少超參值供選,否則最好使用grid search隨機尋找合適引數值。如果訓練很耗時,可以優先使用貝葉斯優化方法(如:使用高斯過程優先,如Jasper Snoek, Hugo Larochelle, and Ryan Adams描述的)
2、嘗試組合方法。組合最好的模型通常會比單獨執行它們效能更好一些
3、一旦確定了最終模型,在測試集上測量效能以估計泛化誤差
警告:測量泛化誤差後不要調整模型:那會使得模型對測試集過擬合

提交解決方案

1、編寫技術文件和分析報告
2、做一個精彩的報告:先確信你強調了全域性
3、解釋你的方案為什麼能達到業務目標
4、不要忘了呈現出過程中的興趣點
 描述什麼有效什麼無效
 列出你的假設以及你係統的侷限
5、確保你的關鍵成果通過漂亮的視覺化或容易記住的陳述傳達(如:收入中值是房價預測中的第一關鍵因素)

上線

1、為生產環境準備方案(插入生產資料輸入,寫單元測試,等)
2、編寫監控程式碼以定時檢測系統執行表現,掉線時發出警告
 瞭解慢性惡化:模型在資料演變時趨於腐壞
 效能測量可能需要人為渠道(如:通過眾包服務)
 監視輸入質量(如:一個故障感測器傳送隨機值,或其他團隊的輸出失效)。這對線上學習系統特別重要
3、維持模型使用定期最新資料(儘可能自動化)