Cheng-Tao Chu總結(jié)了機器學習建模中常見的誤區(qū),提醒讀者注意算法的假定未必適合手頭的數(shù)據(jù)。Chu曾任Google欺詐支付分析首席工程師,LinkedIn搜索相關(guān)性負責人,Square欺詐檢測負責人,Codecademy數(shù)據(jù)分析主管,現(xiàn)為都鐸投資公司下一代研究、模擬、交易基礎(chǔ)設(shè)施MacroPipeline的首席架構(gòu)師。Chu在NIPS 2006的論文“基于多核的機器學習Map-Reduce”引用超過1400次,是開源項目Apache Mahout的基礎(chǔ)。
統(tǒng)計建模和工程有許多相似之處。
在工程上,有多種方法構(gòu)建一個鍵值存儲,而每種設(shè)計對使用模式有著不同的假設(shè)。在統(tǒng)計建模中,有多種算法構(gòu)建一個分類器,而每種算法對數(shù)據(jù)有著不同的假設(shè)。
當處理小規(guī)模數(shù)據(jù)時,由于試驗的成本較低,盡可能多地嘗試各種算法然后選出最好的算法,是很合理的選擇。但是當我們碰到“大數(shù)據(jù)”的時候,事先分析數(shù)據(jù)并據(jù)此設(shè)計建模流程(預處理、建模、優(yōu)化算法、評估、產(chǎn)品化),會有很大幫助。
我在前一篇博客文章就提到了,有幾十種方法解決一個給定的建模問題。每種模型有著不同的假定,辨識哪些假設(shè)合理,并沒有顯而易見的方法。在業(yè)界,大多數(shù)從業(yè)人員選擇他們最熟悉的建模算法,而不是最適合數(shù)據(jù)的算法。在這篇文章中,我想要分享一些常見的誤區(qū),至于最佳實踐,留待以后的文章。
1. 理所當然地使用默認損失函數(shù)
很多從業(yè)人員在訓練和挑選模型的時候使用默認的損失函數(shù)(例如,均方誤差)。在實踐中,默認的損失函數(shù)很少對齊業(yè)務的目標。就拿欺詐檢測來說吧。當嘗試檢測欺詐性交易時,業(yè)務目標是最小化欺詐的損失。而二元分類器的默認損失函數(shù)給予假陽性和假陰性同樣的權(quán)重。為了對齊業(yè)務目標,損失函數(shù)不僅應該加大懲罰假陰性的力度,同時懲罰假陰性的力度也應該和損失金額成比例。此外,欺詐檢測中的數(shù)據(jù)集通常包含高度失衡的標簽。在這些情形下,損失函數(shù)需要向罕見類別方向傾斜。
2. 在非線性相互作用中使用原始的線性模型
構(gòu)建二元分類器時,出于簡單性,許多從業(yè)人員立刻拿出邏輯回歸。不過,很多人忘了,邏輯回歸是一個線性模型,因此需要手工編碼預測因子中的非線性相互作用?;氐狡墼p性檢測的例子,“賬單地址 = 配送地址且交易額 < $50”這樣的高階相互作用特征對良好的模型表現(xiàn)而言不可或缺。所以,這類問題應該考慮非線性模型,比如配有核函數(shù)的SVM、基于決策樹的分類器這樣內(nèi)置高階相互作用特征支持的模型。
3. 忘了離群值
離群值值得注意。取決于上下文,它們或者需要特別關(guān)注,或者應該完全忽略。以利潤預測為例。如果觀察到了不同尋常的利率尖峰,對其給予額外關(guān)注,查明導致尖峰的原因,應該是個好主意。不過如果離群值是由機制誤差、測量誤差或其他任何不可推廣的原因造成的,那么,在將數(shù)據(jù)傳給建模算法前,過濾掉這些離群值是個好主意。
相比其他模型,一些模型對離群值更敏感。比如,AdaBoost可能會將那些離群值視作“困難”情形,給予離群值巨大的權(quán)重,而決策樹可能僅僅將每個離群值視作假分類。如果數(shù)據(jù)集包含相當數(shù)量的離群值,需要使用在離群值上魯棒性好的建模算法,或者過濾掉離群值,這一點很重要。
4. 當n遠小于p時使用高方差模型
SVM是最流行的現(xiàn)成的建模算法之一,而其最強力的特性之一是使用不同的核調(diào)整模型。SVM的核可以看成一種自動組合現(xiàn)有特征至更豐富的特征空間的方法。由于這一強力特性幾乎沒什么代價,大多數(shù)從業(yè)人員在訓練SVM模型時默認使用核。然而,當n << p(樣本數(shù)遠小于特征數(shù))時——在業(yè)界很常見,比如醫(yī)療數(shù)據(jù)——更豐富的特征空間意味著高得多的過擬合數(shù)據(jù)的風險。事實上,當n << p時,應該完全避免高方差模型。
5. 使用L1/L2/...正則化時不做標準化
應用L1或L2懲罰大系數(shù)是常用的正則化線性回歸或邏輯回歸的方法。然而,許多從業(yè)人員沒有意識到在應用這些正則化技術(shù)之前標準化特征的重要性。
回到欺詐檢測的例子,想象一個交易額特征的線性回歸模型。在沒有正則化的情況下,如果交易額的單位是元,擬合的參數(shù)大概會是單位是分的情況下擬合的參數(shù)的一百倍。而在有正則化的情況下,由于L1/L2對較大系數(shù)懲罰的力度更大,以元為單位的交易額會受到更多懲罰。因此,正則化出現(xiàn)了偏差,傾向于懲罰尺度較小的特征。為了緩解這一問題,在預處理步驟中標準化所有特征,讓它們位于同一水平線上。
6. 使用線性模型時沒有考慮多重共線性
想象一下,創(chuàng)建一個包含兩個變量X1、X2的線性模型,假定標準答案是Y = X1+ X2。理想情況下,如果觀測數(shù)據(jù)的噪聲不大,線性回歸方案將重建標準答案。然而,如果X1和X2共線,那么在大多數(shù)優(yōu)化算法看來,Y = 2 * X1、Y = 3 * X1- X2、Y = 100 * X1- 99 * X2都很不錯。這可能不會造成什么妨害,因為它并未導致估計出現(xiàn)偏差。不過,它確實造成了不良的狀況,使得系數(shù)的權(quán)重難以解釋。
7. 將線性回歸或邏輯回歸的系數(shù)絕對值視作特征重要性
因為很多現(xiàn)成的線性回歸器返回每個系數(shù)的p值,許多從業(yè)人員相信,線性模型的系數(shù)的絕對值越大,相應的特征就越重要。其實這極少成立:
改變變量的尺度會改變系數(shù)的絕對值
如果特征具有多重共線性,系數(shù)可以從一個特征移動到其他特征。同時,數(shù)據(jù)集的特征越多,特征具有多重共線性的概率就越高,通過系數(shù)解釋特征重要性就越不可靠。
以上是機器學習實踐中常見的7個誤區(qū)。這個列表并不求全,主要用意是激發(fā)讀者的思考,建模的假定可能并不適用于手頭的數(shù)據(jù)。為了達到最佳的模型表現(xiàn),選擇具有最合適的假定的建模算法很重要——而不是直接選擇你最熟悉的算法。
-
機器學習
+關(guān)注
關(guān)注
66文章
8492瀏覽量
134089
原文標題:老司機帶你避開機器學習那些坑
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
電路設(shè)計常見的八個誤區(qū)
單片機學習中常見的問題和誤區(qū)
從零到python機器學習大神的7個步驟
糾正10個有關(guān)編程的常見誤區(qū)
工業(yè)機器人常見的三大應用誤區(qū)盤點
機器學習研究中常見的七大謠傳總結(jié)

17個機器學習的常用算法
新手學習單片機最常見的六大誤區(qū)!

評論