天天看點

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

統計模組化非常像工程學。

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

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

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

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)如果特征是線性相關的,則系數可以從一個特征轉移到另一個特征。此外,資料集特征越多,特征間越可能線性相關,用系數解釋特征重要性就越不可靠。

這下你就知道了機器學習實踐中的七種常見錯誤。這份清單并不詳盡,它隻不過是引發讀者去考慮,模組化假設可能并不适用于手頭資料。為了獲得最好的模型性能,挑選做出最合适假設的模組化算法—而不隻是選擇你最熟悉那個算法,是很重要的。

zzfrom: http://www.52ml.net/16140.html

繼續閱讀