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

機(jī)器學(xué)習(xí)十大算法精髓總結(jié)

機(jī)器學(xué)習(xí)在衛(wèi)星遙測分析建模中的應(yīng)用綜述
17個機(jī)器學(xué)習(xí)的常用算法
17個機(jī)器學(xué)習(xí)的常用算法!

新手學(xué)習(xí)單片機(jī)最常見的六大誤區(qū)!

評論