機器學習項目流程清單 前端
這份列表可讓你學習到如何部署本身的機器學習項目。總共八個步驟: 算法
明確問題是進行機器學習的第一步。機器學習的訓練過程一般都是一件很是耗時的事情,胡亂嘗試時間成不是很是高的。 後端
這裏要先將問題抽象成數學問題,指的是咱們明確咱們能夠得到什麼樣的數據,目標是一個分類仍是迴歸或者是聚類的問題,若是都不是的話,劃歸爲其中的某類問題。 數組
數據決定了機器學習結果的上限,而算法只是儘量逼近這個上限。 機器學習
數據要有表明性,不然必然會過擬合。 分佈式
並且對於分類問題,數據偏斜不能過於嚴重,不一樣類別的數據數量不要有數個數量級的差距。 函數
並且還要對數據的量級有一個評估,多少個樣本,多少個特徵,能夠估算出其對內存的消耗程度,判斷訓練過程當中內存是否可以放得下。若是放不下就得考慮改進算法或者使用一些降維的技巧了。若是數據量實在太大,那就要考慮分佈式了。 工具
良好的數據要可以提取出良好的特徵才能真正發揮效力。 性能
特徵預處理、數據清洗是很關鍵的步驟,每每可以使得算法的效果和性能獲得顯著提升。歸一化、離散化、因子化、缺失值處理、去除共線性等,數據挖掘過程當中不少時間就花在它們上面。這些工做簡單可複製,收益穩定可預期,是機器學習的基礎必備步驟。 學習
篩選出顯著特徵、摒棄非顯著特徵,須要機器學習工程師反覆理解業務。這對不少結果有決定性的影響。特徵選擇好了,很是簡單的算法也能得出良好、穩定的結果。這須要運用特徵有效性分析的相關技術,如相關係數、卡方檢驗、平均互信息、條件熵、後驗機率、邏輯迴歸權重等方法。
1)刪除對任務無用的屬性
注意:
在數據副本上進行處理(保持原始數據集的完整)
對全部數據轉換的函數編寫代碼,緣由有五:
能夠在下次獲取新數據集時輕鬆處理數據
能夠在將來的項目中應用這些轉換
對測試集進行預處理
在解決方案生效後清理並準備新的數據實例
輕鬆地將預處理選擇做爲超參數來處理
直到這一步纔用到咱們上面說的算法進行訓練。如今不少算法都可以封裝成黑盒供人使用。可是真正考驗水平的是調整這些算法的(超)參數,使得結果變得更加優良。這須要咱們對算法的原理有深刻的理解。理解越深刻,就越能發現問題的癥結,提出良好的調優方案。
如何肯定模型調優的方向與思路呢?這就須要對模型進行診斷的技術。
過擬合、欠擬合 判斷是模型診斷中相當重要的一步。常見的方法如交叉驗證,繪製學習曲線等。過擬合的基本調優思路是增長數據量,下降模型複雜度。欠擬合的基本調優思路是提升特徵數量和質量,增長模型複雜度。
偏差分析 也是機器學習相當重要的步驟。經過觀察偏差樣本,全面分析偏差產生偏差的緣由:是參數的問題仍是算法選擇的問題,是特徵的問題仍是數據自己的問題……
診斷後的模型須要進行調優,調優後的新模型須要從新進行診斷,這是一個反覆迭代不斷逼近的過程,須要不斷地嘗試, 進而達到最優狀態。
通常來講,模型融合後都能使得效果有必定提高。並且效果很好。
工程上,主要提高算法準確度的方法是分別在模型的前端(特徵清洗和預處理,不一樣的採樣模式)與後端(模型融合)上下功夫。由於他們比較標準可複製,效果比較穩定。而直接調參的工做不會不少,畢竟大量數據訓練起來太慢了,並且效果難以保證。
這一部份內容主要跟工程實現的相關性比較大。工程上是結果導向,模型在線上運行的效果直接決定模型的成敗。 不單純包括其準確程度、偏差等狀況,還包括其運行的速度(時間複雜度)、資源消耗程度(空間複雜度)、穩定性是否可接受。
這些工做流程主要是工程實踐上總結出的一些經驗。並非每一個項目都包含完整的一個流程。這裏的部分只是一個指導性的說明,只有你們本身多實踐,多積累項目經驗,纔會有本身更深入的認識。