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