实践中学到的最重要的机器学习经验!
文 | 微調
源 | 知乎問答
今天我們討論一個很有實際意義的問題:你在實踐中學到的最重要的機器學習經驗是什么?以下回答來自知乎優秀答主微調。
1.永遠保持懷疑
機器學習是最容易得到錯誤結論的一種解決方案。和編程、做表格、或者純粹的數學建模不同,機器學習是由數據驅動,并有很強的黑箱性。因此很多時候容易得出似是而非的結論。舉個最簡單的例子:偽相關/虛假相關(spurious correlation),兩個變量很容易看起來有很強的相關(參看圖1和2),然而這僅僅是偶然。因此當機器學習模型很輕松就達到很好的效果時,比如百分之百的正確率,你要警惕。除了過擬合以外,你很有可能包含了某個不該使用的強特征,甚至把標簽y也當做特征使用了。
▲圖1. 奶酪消耗量與被死于床單(交纏)之間的關聯性 [1]▲圖2. 非商業性空間飛船發射數量與社會學博士畢業數量之間的關系 [1]2.尋找“最小預測單元”,避免追求通過一個模型預測多個目標
最清晰易懂,且容易證明正誤的模型就是目標明確的模型。我們得知業務需求以后,盡量把預測范圍控制好,不要被同時實現多個目標所誘惑。
舉例,如果客戶的需要是預測明天的天氣,那就做一個純粹的天氣預測模型,不要瞻前顧后的想要同時預測濕度、溫度等相關但不是根本的問題。你想要通過單個模型得到的結論越多,往往建模和調參就越復雜。從單一問題入手,再逐步擴展,甚至將知識遷移,都是可以的。
3.簡單有效的模型最好,不要完全棄用“人為規則”
首先不要為了使用模型而創造問題:機器學習的目標是解決問題。因此,從簡單到復雜模型的“進化”才是比較合理的方案。比如如果能用監督,就監督學習。退而求其次才選擇半監督或者無監督。
另一個經驗是,如果一個問題有現成的規則,不要完全棄用,也不要追求用機器學習模型徹底替代規則。可以從半自動模型到自動模型進行“升級“,這可以理解為迭代過程。比如在機器學習模型不成熟、數據量不夠的時候,僅當模型評分高且符合人為規則時才使用其預測結果,置信度低的預測結果依然使用規則預測或者人為驗證。等到數據量和數據質量上去了,再逐步替換或者舍棄人為規則。
升級進化是錦上添花,不是雪中送炭。在商業上,我們告訴客戶這叫做“混合系統”Hybrid System,但機器學習上這個叫“主動學習”(active learning)。
4.考慮的數據的依賴性(dependency)
數據往往有時序或者空間上的相關性。如果不考慮時空依賴性,問題往往會得到簡化,但可能有嚴重偏差。如果需要考慮時間與空間上的依賴性,優先從簡單的角度入手。
舉個簡單的例子,圖2和圖3中的數據如果不考慮時空依賴性,都會導致錯誤的理解。解決機器學習問題,如果在不確定數據的結構關系時,有限假設不存在依賴。如果效果不好,再換用更復雜的,可以處理依賴性的模型。
▲圖3. O點在單獨來看的情況下是正常點,但考慮到臨近點后就是異常點 [2]▲圖4. 紅色部分單獨來看不是異常,但考慮到臨近點的時間關系后就是異常點 [3]5.從回歸到分類、從全部數據到部分數據、從連續到離散
5.1. 在特定情況下,因為條件限制,我們的回歸模型效果不好或者要求的精度比較低,可以把回歸問題轉化為分類問題。
▲圖5. 將預測漲跌幅度轉化為單純預測“漲”和“跌”5.2. 同理,如果數據的質量不連貫,我們可以大膽的拋棄掉一部分數據。比如下圖中所描述的情況,拋棄掉一部分數據可以增強中間區段的模型擬合能力。當然,由精簡數據后得到的模型不該被用于預測拋棄數據段。
▲圖6. 去掉一部分數據后,模型擬合程度可能會大幅度提高 [4]5.3. 如果需要,對于特征也可以做離散化。連續變量:變量在特定區間內有無限個可能取值,如股票的價格。離散變量:變量在特定區間內的可選取值有限,比如{紅、藍、黃}三種顏色。從數學角度看,連續變量往往可以被離散化,從而轉為離散變量。這種轉化可以依賴于固定區間,或者固定密度,甚至是變化的條件。將連續變量離散化適合廣義線性模型,如邏輯回歸,而不適合樹模型或者神經網絡。連續特征離散化的優點:
降低噪音對模型的干擾,提高魯棒性。假設一個特征的正常范圍是[0,1],那么明顯異常的值,如100,不會造成大的擾動
在特征離散化以后,模型過擬合的風險一定程度上也得到了降低
一般經過轉化后,編碼可以使用獨熱編碼(one-hot encoding),得到一個稀疏的表示,方便進行矩陣計算
此處的重點是:部分價值 >>毫無價值。將預測范圍縮小后,預測效果往往能有大幅度的提高。將數據分割后單獨處理,預測效果往往也有提升。而數據離散化可以有效的提高某些模型的能力。
6. 數據比模型更重要,但數據不是越多越好
機器學習模型的表現高度依賴于數據量 [6],選擇對的模型至少其次,巧婦難為無米之炊。數據重要性 >> 模型重要性。
但數據不是越多越好,隨機數據中也可能因為巧合而存在某種關聯。就像上文中提到的虛假相關的例子。Freedman在1989年做過的模擬實驗 [5]中發現,即使數據全是由噪音構成,在適當的處理后,也能發現數據中顯著的相關性:
6個特征顯著
對回歸的做F-test的P值遠小于0.05,即回歸存在統計學意義
以此為例,統計學檢驗顯著不代表模型真的有意義。一般來說,需要先確認數據的來源性,其次要確認顯著的特征是否正常,最后需要反復試驗來驗證。最重要的是,要依據人為經驗選取可能有關的數據,這建立在對問題的深入理解上。
7. 模型選擇、評估與調試
模型選擇是建立在對于問題的理解上,一般是啟發式(heuristic),也就是基于經驗所確定的。
優先選取符合問題假設的模型。如樸素貝葉斯假設特征間的獨立同分布,而邏輯回歸就沒有這么強的假設
優先選取簡單模型,循序漸進
優先選取對于數據預處理要求低的模型,如可以處理缺失值,不需要進行數值化轉化的模型。比如xgboost或者lightbgm等
用迭代的思路選擇模型,先選擇大方向,再微調。在模型選擇時可以使用工具包的默認值,確定了大概模型后再進行參數調整
同時,評估模型時,每次僅選擇一個標準,比如召回率、ROC或者準確度,同時優化多個目標是很復雜的:
可以用可視化來直觀對比算法間的優劣
控制模型中的隨機性,保證評估有意義,如選用固定的參數(如 random_state=42)
用相同的數據集來訓練、測試不同的模型
善用交叉驗證,尤其當數據集較小的時候
如果有必要,也可以使用統計學檢驗
除此之外,還需要考慮到運算開銷的問題。訓練不同的模型運算開銷差別很大,要根據資源和時間決定。在資源有限的前提下,可以選擇模型表現相對較差但運算開銷小的方法。
8. 總結出一套適合自己的“套路”
開始一個機器學習項目以前,值得思考幾個“小問題”:
確定要預測的目標,找到項目痛點,不追求同時預測多個目標
確定解決問題的框架,優先使用監督學習,用無監督發掘新思路
結合已有的規則,嘗試融合機器學習模型和人為規則
如果可能,優先嘗試分類任務,也可以嘗試將回歸轉為分類
從易到難,確定嘗試哪些機器學習模型
要解決的問題是否對于“時空”存在依賴性,如果可以回避依賴性,可以先試試簡單模型
如果發現使用全部數據效果不好,可以嘗試拋棄部分數據或分段處理
在做數據工程時,應該考慮到的一些問題:
數據并非越多越好,多余的無關特征會因為偽相關、巧合而影響模型
對數據做相關性分析的時候,善用可視化可以一目了然的發現問題
對于高度相關的特征,移除或者合并前要三思,可能并不會提高模型能力
如果選用了線性模型,可能需要對特征進行離散化
對于大部分模型來說,歸一化或者標準化是必不可少的步驟,至少“無害”
如果問題較為復雜,盡量選擇非線性的魯棒性強的模型:
在模型選擇與評估時,考慮到一些問題:
根據要解決的問題和對數據的理解,大致決定出模型的搜索范圍,如嘗試SVM,邏輯回歸,隨機森林,xgboost。如資源允許,可擴大模型候選名單
根據要解決的問題和對數據的理解,決定模型的評估標準。雖然我們建議選擇單一的評估標準進行對比,但推薦計算所有可能的評估標準
根據具體問題中的數據量大小,以及模型穩定性,決定是否使用交叉驗證
結合參數搜索、交叉驗證方法,通過選定的評估標準從候選模型中找到表現最好的模型
對上一步中的所選模型進行微調
迭代以上步驟直到找到最優的模型
還有很多摔過的坑,吃過的苦,有限于篇幅就不展開了。如果只允許我說一條我學到的最重要的經驗,那一定是:保持獨立思考的能力,不要別人說什么/書上說什么/論文里寫什么,你就相信什么。畢竟在機器學習的世界里,我們每個人都是“民科”:)
來源:知乎問答https://www.zhihu.com/question/46301335/answer/317361262
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1]http://tylervigen.com/spurious-correlations
[2]Mira, A., Bhattacharyya, D.K. and Saharia, S., 2012. RODHA: robust outlier detection using hybrid approach. American Journal of Intelligent Systems, 2(5), pp.129-140.
[3]http://researchmining.blogspot.ca/2012/10/types-of-outliers.html
[4]支持向量機-從入門到放棄(https://zhuanlan.zhihu.com/p/30596284)
[5]Freedman, L.S. and Pee, D., 1989. Return to a note on screening regression equations. The American Statistician, 43(4), pp.279-282.
總結
以上是生活随笔為你收集整理的实践中学到的最重要的机器学习经验!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源词法分析工具LAC重大升级!打造属于
- 下一篇: 惊呆!不用一张图片,却训出个图像识别SO