機器學習實踐中的 7 種常見錯誤

jopen 10年前發布 | 17K 次閱讀 機器學習

編注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其專長是數據挖掘和機器學習,之前在 Google、LinkedIn和Square就職。


統計建模非常像工程學。

在工程學中,有多種構建鍵-值存儲系統的方式,每個設計都會構造一組不同的關于使用模式的假設集合。在統計建模中,有很多分類器構建算法,每個算法構造一組不同的關于數據的假設集合。

當處理少量數據時,嘗試盡可能多的算法,然后挑選最好的一個的做法是比較合理的,因為此時實驗成本很低。但當遇到“大數據”時,提前分析數據,然后設計相應“管道”模型(預處理,建模,優化算法,評價,產品化)是值得的。

正如我之前文章中所指出的,有很多種方法來解決一個給定建模問題。每個模型做出不同假設,如何導引和確定哪些假設合理的方法并不明確。在業界,大多數實踐者是挑選他們更熟悉而不是最合適的建模算法。在本文中,我想分享一些常見錯誤(不能做的),并留一些最佳實踐方法(應該做的)在未來一篇文章中介紹。

 

1. 想當然地使用缺省損失函數

許多實踐者使用缺省損失函數(如,均方誤差)訓練和挑選最好的模型。實際上,現有損失函數很少符合業務目標。以欺詐檢測為例,當試圖檢測欺詐性交易時,業務目標是最小化欺詐損失。現有二元分類器損失函數為誤報率和漏報率分配相等權重,為了符合業務目標,損失函數懲罰漏報不僅要多于懲罰誤報,而且要與金額數量成比例地懲罰每個漏報數據。此外,欺詐檢測數據集通常含有高度不平衡的標簽。在這些情況下,偏置損失函數能夠支持罕見情況(如,通過上、下采樣)。

2.非線性情況下使用簡單線性模型

當構建一個二元分類器時,很多實踐者會立即跳轉到邏輯回歸,因為它很簡單。但是,很多人也忘記了邏輯回歸是一種線性模型,預測變量間的非線性交互需要手動編碼。回到欺詐檢測問題,要獲得好的模型性能,像“billing address = shipping address and transaction amount < $50”這種高階交互特征是必須的。因此,每個人都應該選擇適合高階交互特征的帶核SVM或基于樹的分類器。

3.忘記異常值

異常值非常有趣,根據上下文環境,你可以特殊關注或者完全忽略它們。以收入預測為例,如果觀察到不同尋常的峰值收入,給予它們額外關注并找出其原因可能是個好主意。但是如果異常是由于機械誤差,測量誤差或任何其它不可歸納的原因造成的,那么在將數據輸入到建模算法之前忽略掉這些異常值是個不錯的選擇。

相比于其它模型,有些模型對異常值更為敏感。比如,當決策樹算法簡單地將每個異常值計為一次誤分類時,AdaBoost算法會將那些異常值視為 “硬”實例,并為異常值分配極大權值。如果一個數據集含有相當數量的異常值,那么,使用一種具有異常值魯棒性的建模算法或直接過濾掉異常值是非常重要的。

4.樣本數少于特征數(n<<p)時使用高方差模型

SVM是現有建模算法中最受歡迎算法之一,它最強大的特性之一是,用不同核函數去擬合模型的能力。SVM核函數可被看作是一種自動結合現有特征,從而形成一個高維特征空間的方式。由于獲得這一強大特性不需任何代價,所以大多數實踐者會在訓練SVM模型時默認使用核函數。然而,當數據樣本數遠遠少于特征數(n<<p)—業界常見情況如醫學數據—時,高維特征空間意味著更高的數據過擬合風險。事實上,當樣本數遠小于特征數時,應該徹底避免使用高方差模型。

5.尚未標準化就進行L1/L2/等正則化

使用L1或L2去懲罰大系數是一種正則化線性或邏輯回歸模型的常見方式。然而,很多實踐者并沒有意識到進行正則化之前標準化特征的重要性。

回到欺詐檢測問題,設想一個具有交易金額特征的線性回歸模型。不進行正則化,如果交易金額的單位為美元,擬合系數將是以美分為單位時的100倍左右。進行正則化,由于L1/L2更大程度上懲罰較大系數,如果單位為美元,那么交易金額將受到更多懲罰。因此,正則化是有偏的,并且趨向于在更小尺度上懲罰特征。為了緩解這個問題,標準化所有特征并將它們置于平等地位,作為一個預處理步驟。

6. 不考慮線性相關直接使用線性模型

設想建立一個具有兩變量X1和X2的線性模型,假設真實模型是Y=X1+X2。理想地,如果觀測數據含有少量噪聲,線性回歸解決方案將會恢復真實模型。然而,如果X1和X2線性相關(大多數優化算法所關心的),Y=2*X1, Y=3*X1-X2或Y=100*X1-99*X2都一樣好,這一問題可能并無不妥,因為它是無偏估計。然而,它卻會使問題變得病態,使系數權重變得無法解釋。

7. 將線性或邏輯回歸模型的系數絕對值解釋為特征重要性

因為很多現有線性回歸量為每個系數返回P值,對于線性模型,許多實踐者認為,系數絕對值越大,其對應特征越重要。事實很少如此,因為:(a)改變變量尺度就會改變系數絕對值;(b)如果特征是線性相關的,則系數可以從一個特征轉移到另一個特征。此外,數據集特征越多,特征間越可能線性相關,用系數解釋特征重要性就越不可靠。

 

這下你就知道了機器學習實踐中的七種常見錯誤。這份清單并不詳盡,它只不過是引發讀者去考慮,建模假設可能并不適用于手頭數據。為了獲得最好的模型性能,挑選做出最合適假設的建模算法—而不只是選擇你最熟悉那個算法,是很重要的。原文鏈接: Cheng-Tao Chu   翻譯: 伯樂在線 - yixingqingkong
譯文鏈接: http://blog.jobbole.com/70684/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!