轉(zhuǎn)載自:http://www.52cs.org/?p=879
統(tǒng)計(jì)建模和工程開(kāi)發(fā)很相似牲览。
在工程開(kāi)發(fā)中,人們有多種方法搭建一套鍵-值存儲(chǔ)系統(tǒng),每種設(shè)計(jì)針對(duì)使用模式有一套不同的假設(shè)。在統(tǒng)計(jì)建模中曹宴,也有很多算法來(lái)構(gòu)造一個(gè)分類(lèi)器,每種算法對(duì)數(shù)據(jù)也有各自的假設(shè)集合歉提。
當(dāng)處理少量數(shù)據(jù)時(shí)笛坦,因?yàn)閷?shí)驗(yàn)成本很低,我們盡可能多的嘗試各種算法苔巨,從而選出效果最優(yōu)的算法版扩。但提到“大數(shù)據(jù)”,提前分析數(shù)據(jù)侄泽,然后設(shè)計(jì)相應(yīng)“管道”模型(預(yù)處理礁芦,建模,優(yōu)化算法蔬顾,評(píng)價(jià)宴偿,產(chǎn)品化)是事半功倍的。
正如在我以前的文章里提到诀豁,每個(gè)給定的建模問(wèn)題都存在幾十種解法窄刘。每個(gè)模型會(huì)提出不同的假設(shè)條件,我們也很難直觀辨別哪些假設(shè)是合理的舷胜。在業(yè)界娩践,大多數(shù)從業(yè)人員傾向于挑選他們熟悉的建模算法,而不是最適合數(shù)據(jù)集的那個(gè)烹骨。在這篇文章中翻伺,我將分享一些常見(jiàn)的認(rèn)識(shí)誤區(qū)(要避免的)。在今后的文章中再介紹一些最佳實(shí)踐方法(應(yīng)該做的)沮焕。
1. 想當(dāng)然地使用默認(rèn)損失函數(shù)
很多從業(yè)者喜歡用默認(rèn)的損失函數(shù)(比如平方誤差)來(lái)訓(xùn)練和選擇最優(yōu)模型吨岭。事實(shí)上,默認(rèn)的損失函數(shù)很少能滿足我們的業(yè)務(wù)需求峦树。拿詐騙檢測(cè)來(lái)說(shuō)辣辫。當(dāng)我們檢測(cè)詐騙交易時(shí),我們的業(yè)務(wù)需求是盡量減少詐騙帶來(lái)的損失魁巩。然而現(xiàn)有二元分類(lèi)器默認(rèn)的損失函數(shù)對(duì)誤報(bào)和漏報(bào)的危害一視同仁急灭。對(duì)于我們的業(yè)務(wù)需求,損失函數(shù)不僅對(duì)漏報(bào)的懲罰要超過(guò)誤報(bào)谷遂,對(duì)漏報(bào)的懲罰程度也要和詐騙金額成比例葬馋。而且,詐騙檢測(cè)的訓(xùn)練數(shù)據(jù)集往往正負(fù)樣本極度不均衡肾扰。在這種情況下畴嘶,損失函數(shù)就要偏向于照顧稀少類(lèi)(如通過(guò)升/降采樣等)。
2. 用普通線性模型處理非線性問(wèn)題
當(dāng)需要構(gòu)建一個(gè)二元分類(lèi)器時(shí)集晚,很多人馬上就想到用邏輯回歸掠廓,因?yàn)樗芎?jiǎn)單。但是甩恼,他們忘記了邏輯回歸是線性模型蟀瞧,非線性因素的交叉特征需要靠手工編碼處理√趺回到剛才詐騙檢測(cè)的例子悦污,要獲得好的模型效果,就需要引入“帳單地址=送貨地址
&&
交易金額<50”之類(lèi)的高階交叉特征钉蒲。因此切端,在處理包含交叉特征的問(wèn)題上我們應(yīng)該盡可能選擇非線性模型,比如有核函數(shù)的SVM顷啼,或者基于樹(shù)的分類(lèi)器踏枣。
3.忽視異常值
異常值很有意思昌屉。根據(jù)上下文情況,它們要么需要被特別處理茵瀑,要么應(yīng)該被完全忽略间驮。就拿收入預(yù)測(cè)來(lái)說(shuō)。如果觀察到收入有異常尖峰马昨,我們可能要加倍注意他們竞帽,并分析是什么原因造成這些峰值。但如果異常值是由于機(jī)械誤差鸿捧、測(cè)量誤差或者其它任何非普遍化因素導(dǎo)致的屹篓,那我們最好在準(zhǔn)備訓(xùn)練數(shù)據(jù)之前過(guò)濾掉這些異常值。
有些模型算法對(duì)異常值非常靈敏匙奴。比如堆巧,AdaBoost 會(huì)對(duì)它們“倍加關(guān)注”,賦予一個(gè)相當(dāng)大的權(quán)重值泼菌。相反恳邀,決策樹(shù)就簡(jiǎn)單地把它們當(dāng)做錯(cuò)誤分類(lèi)來(lái)處理。如果數(shù)據(jù)集包含相當(dāng)數(shù)量的異常值灶轰,那么谣沸,使用一種具有異常值魯棒性的建模算法或直接過(guò)濾掉異常值是非常重要的。
4. 樣本數(shù)遠(yuǎn)小于特征數(shù)時(shí)使用高方差模型
SVM是最流行的建模算法之一笋颤,它的強(qiáng)大功能之一就在于用不同核函數(shù)去擬合模型乳附。SVM內(nèi)核被認(rèn)為是可以自發(fā)組合現(xiàn)有特征,從而形成更高維度特征空間的方法伴澄。由于獲得這項(xiàng)強(qiáng)大功能的代價(jià)幾乎忽略不計(jì)赋除,大多數(shù)人在訓(xùn)練SVM模型時(shí)默認(rèn)使用核函數(shù)。然而非凌,當(dāng)訓(xùn)練樣本數(shù)遠(yuǎn)遠(yuǎn)少于特征維度時(shí)(n遠(yuǎn)小于p)——
常見(jiàn)于醫(yī)學(xué)數(shù)據(jù)——高維特征空間數(shù)據(jù)過(guò)擬合風(fēng)險(xiǎn)會(huì)隨之增加举农。事實(shí)上,在上述情況下我們應(yīng)該完全避免使用高方差模型敞嗡。
5. 不做標(biāo)準(zhǔn)化的L1/L2正則化
使用L1或L2正則化是線性回歸或邏輯回歸懲罰權(quán)重系數(shù)值過(guò)大的常用方法颁糟。然而,許多人在使用這些正則化方法時(shí)都沒(méi)有意識(shí)到標(biāo)準(zhǔn)化的重要性喉悴。
再回到詐騙檢測(cè)棱貌,設(shè)想一個(gè)把交易金額作為特征的線性回歸模型。如果不做正則化箕肃,當(dāng)交易金額以美元為單位時(shí)婚脱,其擬合系數(shù)將會(huì)是以美分為單位時(shí)的100倍。同時(shí),因?yàn)長(zhǎng)1/L2正則化對(duì)系數(shù)值大的項(xiàng)懲罰更重障贸,美元作為單位時(shí)交易金額這個(gè)維度將會(huì)受到更多的懲罰错森。因此,正則化并不是一視同仁篮洁,它往往在更小尺度上懲罰特征涩维。為了緩解這一問(wèn)題,需要在預(yù)處理過(guò)程中標(biāo)準(zhǔn)化所有特征嘀粱,使它們處在平等的位置激挪。
6.不考慮線性相關(guān)就使用線性模型
假設(shè)構(gòu)建一個(gè)含有X1和X2兩個(gè)變量的線性模型辰狡,真實(shí)的模型是Y = X1 +
X2锋叨。理想情況下,如果數(shù)據(jù)僅含有少量噪點(diǎn)宛篇,線性回歸模型能夠還原真實(shí)模型娃磺。然而,如果X1和X2存在線性相關(guān)叫倍,對(duì)于大多數(shù)優(yōu)化算法而言偷卧,無(wú)論Y = 2
* X1 , Y = 3 * X1-X2 還是 Y = 100 * X1-99 *
X2效果都一樣好。盡管這個(gè)問(wèn)題沒(méi)有造成我們預(yù)測(cè)的偏差吆倦,看上去它似乎并無(wú)大礙听诸。但是,它使問(wèn)題變得病態(tài)了蚕泽,因?yàn)橄禂?shù)權(quán)重?zé)o法得到解釋晌梨。
7. 把線性模型或者邏輯回歸模型系數(shù)的絕對(duì)值解釋為特征重要性
因?yàn)楹芏喱F(xiàn)成的線性回歸方法返回每個(gè)系數(shù)的p值,很多人就認(rèn)為系數(shù)的絕對(duì)值越大须妻,對(duì)應(yīng)的特征就發(fā)揮更大作用仔蝌。事實(shí)并非如此,因?yàn)椋ㄒ唬┛s放變量就會(huì)改變系數(shù)絕對(duì)值荒吏;(二)如果特征是線性相關(guān)的敛惊,其系數(shù)可以從一維特征轉(zhuǎn)移到另一維特征。此外绰更,數(shù)據(jù)集包含的特征維度越多瞧挤,特征之間就越有可能線性相關(guān),用系數(shù)解釋特征重要性就越不靠譜儡湾。
以上就是機(jī)器學(xué)習(xí)實(shí)踐操作中的7個(gè)常見(jiàn)錯(cuò)誤皿伺。這個(gè)列表并不完整,它只是激發(fā)讀者去思考盒粮,模型算法的假設(shè)并不一定適用于手頭的數(shù)據(jù)鸵鸥。在追求模型最佳性能時(shí),重要的是選擇適合數(shù)據(jù)的模型算法,而不是你最熟悉的那個(gè)妒穴。