機器學習項目流程清單

機器學習項目流程清單 前端

 

 

 

 

這份列表可讓你學習到如何部署本身的機器學習項目。總共八個步驟: 算法

  1. 首先你要有一個要解決的問題
  2. 獲取解決問題須要的數據
  3. 探索數據,對數據有一個清楚的理解
  4. 預處理數據以便更好地輸入給機器學習算法
  5. 探索不一樣的模型而且找到最好的那個
  6. 調整你的模型參數,並將這些參數組合成一個更好的解決方案
  7. 展現你的結果
  8. 對你的系統進行上線、監控和維護

  1. 規範化問題(抽象成數學問題):Frame the problem and look at the big picture

    明確問題是進行機器學習的第一步。機器學習的訓練過程一般都是一件很是耗時的事情,胡亂嘗試時間成不是很是高的。 後端

    這裏要先將問題抽象成數學問題,指的是咱們明確咱們能夠得到什麼樣的數據,目標是一個分類仍是迴歸或者是聚類的問題,若是都不是的話,劃歸爲其中的某類問題。 數組

    1. 用商業術語來定義你的目標
    2. 您的解決方案將如何使用?
    3. 若是有的話,目前的解決方案/方法是什麼?
    4. 你如何規範化這個問題(有監督/無監督,在線/離線)?
    5. 模型的效果如何測量?
    6. 模型測量的指標是否與業務目標(原文爲business objective)保持一致?
    7. 達到業務目標所需的最低模型性能是多少?
    8. 相似的問題有哪些? 你能夠重複使用他們的經驗或工具嗎?
    9. 是否是人類專長的問題?
    10. 你如何人工手動解決這個問題?
    11. 列出目前爲止,你或其餘人所作出的假設
    12. 若是可能的話,驗證假設

       

  2. 獲取數據 Get the Data

    數據決定了機器學習結果的上限,而算法只是儘量逼近這個上限。 機器學習

    數據要有表明性,不然必然會過擬合。 分佈式

    並且對於分類問題,數據偏斜不能過於嚴重,不一樣類別的數據數量不要有數個數量級的差距。 函數

    並且還要對數據的量級有一個評估,多少個樣本,多少個特徵,能夠估算出其對內存的消耗程度,判斷訓練過程當中內存是否可以放得下。若是放不下就得考慮改進算法或者使用一些降維的技巧了。若是數據量實在太大,那就要考慮分佈式了。 工具

    1. 列出你須要的數據和你須要的數據量
    2. 查找並記錄能夠獲取該數據的位置
    3. 檢查這些數據須要多少空間
    4. 檢查法律義務,並在必要時得到受權
    5. 獲取訪問權限
    6. 建立一個足夠的存儲空間的工做區(能夠簡單理解爲計算機上的文件夾)
    7. 將數據轉換爲你能夠輕鬆操做的格式(不要更改數據自己)
    8. 確保刪除或保護敏感信息(例如:使用匿名)
    9. 檢查數據的大小和類型
    10. 抽樣出一個測試集,放在一邊,不要管它

       

  3. 探索數據(explore the data)
    1. 爲探索數據常見一份數據副本(若是須要,可將其抽樣爲可管理的大小)
    2. 在Jupyter notebook上以記錄您的數據探索過程
    3. 研究每一個屬性及其特徵
      1. 名字
      2. 類型:分類,int / float,有界/無界,文本,結構化等
      3. 丟失數據的百分比
      4. 噪音和噪音類型(隨機,異常值,舍入偏差等)
      5. 對任務的有用性
      6. 數據分佈的類型(高斯分佈,均勻分佈,對數分佈等)
    4. 對於有監督學習任務,肯定標籤值
    5. 可視化數據
    6. 研究樣本屬性之間的關係
    7. 思考如何手動解決這個問題
    8. 肯定您可能想要應用的數據轉換
    9. 確承認能有用的額外數據
    10. 將你學到的東西記錄下來
  4. 數據預處理(特徵預處理與特徵選擇)

    良好的數據要可以提取出良好的特徵才能真正發揮效力。 性能

    特徵預處理、數據清洗是很關鍵的步驟,每每可以使得算法的效果和性能獲得顯著提升。歸一化、離散化、因子化、缺失值處理、去除共線性等,數據挖掘過程當中不少時間就花在它們上面。這些工做簡單可複製,收益穩定可預期,是機器學習的基礎必備步驟。 學習

    篩選出顯著特徵、摒棄非顯著特徵,須要機器學習工程師反覆理解業務。這對不少結果有決定性的影響。特徵選擇好了,很是簡單的算法也能得出良好、穩定的結果。這須要運用特徵有效性分析的相關技術,如相關係數、卡方檢驗、平均互信息、條件熵、後驗機率、邏輯迴歸權重等方法。

    1. 數據清理
      1. 根據須要,修復或刪除異常值
      2. 補全異常值(利用零、均值、中位數等)或者刪除掉此行(或者列)
    2. 特徵選擇

      1)刪除對任務無用的屬性

    3. 適當的特徵工程
      1. 對連續特徵離散化處理
      2. 分解特徵(例如,分類,日期/時間等)
      3. 添加有但願的特徵轉換
      4. 將特徵聚合成新的特徵
    4. 特徵縮放:對特徵進行歸一化或者標準化處理

注意:

在數據副本上進行處理(保持原始數據集的完整)

對全部數據轉換的函數編寫代碼,緣由有五:

能夠在下次獲取新數據集時輕鬆處理數據

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

對測試集進行預處理

在解決方案生效後清理並準備新的數據實例

輕鬆地將預處理選擇做爲超參數來處理

  1. 訓練模型與調優

    直到這一步纔用到咱們上面說的算法進行訓練。如今不少算法都可以封裝成黑盒供人使用。可是真正考驗水平的是調整這些算法的(超)參數,使得結果變得更加優良。這須要咱們對算法的原理有深刻的理解。理解越深刻,就越能發現問題的癥結,提出良好的調優方案。

  2. 模型診斷

如何肯定模型調優的方向與思路呢?這就須要對模型進行診斷的技術。

過擬合、欠擬合 判斷是模型診斷中相當重要的一步。常見的方法如交叉驗證,繪製學習曲線等。過擬合的基本調優思路是增長數據量,下降模型複雜度。欠擬合的基本調優思路是提升特徵數量和質量,增長模型複雜度。

偏差分析 也是機器學習相當重要的步驟。經過觀察偏差樣本,全面分析偏差產生偏差的緣由:是參數的問題仍是算法選擇的問題,是特徵的問題仍是數據自己的問題……

診斷後的模型須要進行調優,調優後的新模型須要從新進行診斷,這是一個反覆迭代不斷逼近的過程,須要不斷地嘗試, 進而達到最優狀態。

  1. 模型融合

通常來講,模型融合後都能使得效果有必定提高。並且效果很好。

工程上,主要提高算法準確度的方法是分別在模型的前端(特徵清洗和預處理,不一樣的採樣模式)與後端(模型融合)上下功夫。由於他們比較標準可複製,效果比較穩定。而直接調參的工做不會不少,畢竟大量數據訓練起來太慢了,並且效果難以保證。

  • 記錄下你所作的事情
  • 建立一個不錯的演示
    • 確保首先突出重點。
  • 解釋您的解決方案爲什麼可以達到業務目標
  • 不要忘記提出你一路注意到的有趣觀點
    • 描述什麼工做是有效的,什麼沒效
    • 列出您的假設和模型系統的侷限性
  • 確保您關鍵的研究結果經過美觀的可視化或易於記憶的陳述進行傳達(例如,"收入中位數是房價的頭號預測指標")
  1. 上限運行

    這一部份內容主要跟工程實現的相關性比較大。工程上是結果導向,模型在線上運行的效果直接決定模型的成敗。 不單純包括其準確程度、偏差等狀況,還包括其運行的速度(時間複雜度)、資源消耗程度(空間複雜度)、穩定性是否可接受。

    這些工做流程主要是工程實踐上總結出的一些經驗。並非每一個項目都包含完整的一個流程。這裏的部分只是一個指導性的說明,只有你們本身多實踐,多積累項目經驗,纔會有本身更深入的認識。

 

 

本文轉自:https://ask.julyedu.com/question/7013

相關文章
相關標籤/搜索