一個完整的機器學習項目一般流程包括:
1、抽象成數學問題
首先要明確問題,分類還是回歸,盡量避免胡亂嘗試;
2、數據獲取及分析
獲取的數據要有代表性,否則必然會過擬合。
而且對於分類問題,數據偏斜不能過於嚴重,不同類別的數據數量不要有數個數量級的差距。 而且還要對數據的量級有一個評估,多少個樣本,多少個特征,可以估算出其對內存的消耗程度,判斷訓練過程中內存是否能夠放得下。如果放不下就得考慮改進算法或者使用一些降維的技巧了。如果數據量實在太大,那就要考慮分布式了。
3、數據預處理
數據清洗、數據歸一化、擴充等。歸一化、離散化、因子化、缺失值處理、去除共線性等,數據挖掘過程中很多時間就花在它們上面。這些工作簡單可復制,收益穩定可預期,是機器學習的基礎必備步驟。
4、特征工程
篩選出顯著特征、摒棄非顯著特征,需要機器學習工程師反復理解業務。這對很多結果有決定性的影響。特征選擇好了,非常簡單的算法也能得出良好、穩定的結果。這需要運用特征有效性分析的相關技術,如相關系數、卡方檢驗、平均互信息、條件熵、后驗概率、邏輯回歸權重等方法。
5、訓練模型選擇與調優
要根據數據的實際情況和具體要解決的問題來選擇模型,比如樣本數、特征維度,數據特征綜合考慮;要解決的問題是分類還是回歸,問題需要網絡去關注哪方面,結合實際情況選擇網絡。
調優問題,可以采用交差驗證,觀察損失曲線,測試結果曲線等分析原因,調節參數:優化器、學習率、batchsize等
可以嘗試多模型融合,來提高效果。
6、后處理
網絡的到的結果一般不直接使用,通過一些后處理方案,不如加入先驗約束,一些處理,將明顯錯誤去除。
7、模型評估
從各個方面評估,模型准確率、誤差,時間、空間復雜度,穩定性、遷移性等