機器學習項目清單

架構問題,關注藍圖網絡

  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 筆記原本記錄數據研究
  3. 研究每一個屬性及其特徵:
    名字
    類型(分類、整型/浮點型、有界/無界、文本、結構等)
    缺失值的百分比
    噪音和噪音類型(隨機、異常、舍入偏差等)
    可能有用的任務
    分佈類型(高斯、統 、對數等)
  4. 對於有監督的學習任務,確認目標屬性
  5. 可視化數據
  6. 研究屬性之間的相關性
  7. 研究如何手動解決問題
  8. 肯定但願使用轉換
  9. 肯定可能有用的額外數據(回到以前的「獲取數據」部分)
  10. 記錄學習到的東西

準備數據以更好地將低層模型暴 給機器學習算告函數

在數據的副本上工做(保持原始數據集不變)。工具

編寫適用於全部數據轉換的函數,緣由有五個:性能

能夠很容易地準備下一次獲得新數據時的數據

能夠在將來的項目中使用這些轉換

清理和準備測試數據集。

一旦解決方案失效,用來清理和準備新數據實例

能夠輕鬆地將你的準備選擇做爲超參數

1. 數據清理:單元測試

修復或刪除異常值(可選)
填充缺失值(例如,使用零、平均數、中位數等)或刪除該行(或列)

2. 特徵選擇(可選):學習

刪除不能爲任務提供任何有用信息的屬性。

3. 在適當狀況下,處理特徵:測試

離散連續特徵;
分解特徵性(如,分類、日期/時間等);
添加指望的特徵轉換(如, log(x)、sqrt(x)、x2等);
聚合特徵稱爲指望的新特徵

研究各類不一樣的模型,並列出最好的模型優化

  • 若是數據很大,可能須要採樣爲較小的訓練集,以便於在合理的時間內訓練不一樣的模型。
  • 再次,儘量地自動化這些步驟。

1. 使用標準參數,從不一樣類別(例如,線性、樸素貝葉斯、SVM、隨機森林、神經網絡等)中訓練需求快速的不成熟的模型。

2. 測量並比較它們的性能。

對於每一個模型,使用N倍交叉驗證並計算N次摺疊的性能測試的均值和標準差。

3. 分析每一個算怯最重要的變量。

4. 分析模型產生的錯誤類型。

人類用什麼樣的數據避免這些錯誤?

5. 快速進行特徵選擇和處理。

6. 對前面五步進行一兩次快速迭代。

7. 列出前 到五個最有但願模型,傾向於選擇有不一樣錯誤類型的模型。

微調模型,並將其組合爲更好的解決方案
1. 使用交叉驗證微調超參數。

把數據轉換選擇看成超參數,尤爲是不肯定時(例如,應該用零或者平均值填充缺失值?或者直接刪除?)。
除非須要研究的超參數值不多,不然更喜歡在網格搜索上隨機搜索。若是訓練很長,你可能更喜歡貝葉斯優化方提(高斯過程進行先驗)

2. 嘗試組合方怯。組合多個好模型每每比單獨運行效果好。

3. 一旦你對最終模型有信心,在測試集上測 它的性能以估計泛化偏差。
提出解決方案
1. 文檔化工做。

2. 建立完美的橫示。

首先確保突出藍圖。

3. 解釋爲何你的解決方案達到了業務目標。

4. 不要忘記展現你發現的一些有趣的地方。

描述什麼能夠工做,什麼不行。
列出你的假設和系統的侷限。

5. 確保你的關鍵發現被完美展現或易於記憶的陳述。
啓動、監視、維護系統
1. 準備好生產環境的解決方案(插入生產數據輸入,寫單元測試等)。
2. 編寫監控代碼,按期檢查系統的性能,出問題時及時報警。

  • 一樣須要考慮緩慢退化:隨着數據的增長,模型每每會「腐爛」。
  • 測量性能可能須要人工流水線。
  • 同時監控輸入質量。這對在線學習系統尤其重要。

3. 按期對新數據從新建模(儘量自動化)。

相關文章
相關標籤/搜索