原文:http://blog.csdn.net/xmu_jupiter/article/details/47108523
對于機器學(xué)習(xí)的實際運用亿胸,光停留在知道了解的層面還不夠,我們需要對實際中容易遇到的一些問題進行深入的挖掘理解。我打算將一些瑣碎的知識點做一個整理。
1 數(shù)據(jù)不平衡問題
這個問題是經(jīng)常遇到的泪酱。就拿有監(jiān)督的學(xué)習(xí)的二分類問題來說吧抡蛙,我們需要正例和負例樣本的標(biāo)注。如果我們拿到的訓(xùn)練數(shù)據(jù)正例很少負例很多庄拇,那么直接拿來做分類肯定是不行的。通常需要做以下方案處理:
1.1 數(shù)據(jù)集角度
通過調(diào)整數(shù)據(jù)集中正負樣本的比例來解決數(shù)據(jù)不平衡巫玻,方法有:
正樣本本來就少丛忆,怎么增加呢?方法是直接復(fù)制已有的正樣本丟進訓(xùn)練集仍秤。這樣可以稍微緩解正樣本缺失的困境熄诡,但是容易帶來一個問題,就是過擬合的潛在危險诗力。因為這樣粗暴的引入正樣本并沒有增加數(shù)據(jù)集的樣本多樣性凰浮。如何設(shè)計復(fù)制哪些正樣本有一些技巧,比如選擇有特定意義的代表性的那些苇本。
首先這是一個通用的合理的方法袜茧,但是負樣本的減少必然導(dǎo)致數(shù)據(jù)多樣性的損失。有一種方法可以緩解這個問題瓣窄,那就是類似于隨機森林方法笛厦,每次正樣本數(shù)量不變,隨機選擇等量的不同的負樣本進行模型訓(xùn)練俺夕,反復(fù)幾次裳凸,訓(xùn)練多個模型,最后所有的模型投票決定最終的分類結(jié)果劝贸。
1.2 損失函數(shù)的角度
可以重新修改模型訓(xùn)練的損失函數(shù)姨谷,使得錯分正樣本的損失變大,錯分負樣本的損失變小映九。這樣訓(xùn)練出來的模型就會對正負樣本有一個合理的判斷梦湘。
更多于此話題相關(guān)內(nèi)容請移步:
分類中數(shù)據(jù)不平衡問題的解決經(jīng)驗
機器學(xué)習(xí)中的數(shù)據(jù)不平衡問題
2 異常值處理問題
說到異常值,首先得說一下數(shù)據(jù)量的問題件甥。異常值不是缺失值捌议,更不是錯誤值,同樣是真實情況的表現(xiàn)嚼蚀,之所以覺得一個數(shù)據(jù)異常禁灼,是因為我們能夠用到的數(shù)據(jù)量不夠大,無法準(zhǔn)確地代表整個此類數(shù)據(jù)的分布轿曙。如果把異常值放在海量數(shù)據(jù)的大背景下弄捕,那么這個異常值也就不那么異常了僻孝。
下載摘自某大牛博客一段話:
異常值并非錯誤值,而同樣是真實情況的表現(xiàn)守谓,我們之所以認(rèn)為異常穿铆,只是因為我們的數(shù)據(jù)量不足夠大而已。但是從實際的工業(yè)界來看斋荞,考慮到實際的計算能力以及效果荞雏,大多數(shù)公司都會對大數(shù)據(jù)做“去噪”,那么在去噪的過程中去除的不僅僅是噪音平酿,也包括“異常點”凤优,而這些“異常點”,恰恰把大數(shù)據(jù)的廣覆蓋度給降低了蜈彼,于是利用大數(shù)據(jù)反而比小數(shù)據(jù)更容易產(chǎn)生趨同的現(xiàn)象筑辨。尤其對于推薦系統(tǒng)來說,這些“異常點”的觀察其實才是“個性化”的極致幸逆。
既然說到大數(shù)據(jù)棍辕,同樣是這位大牛的一段話:
【異常值并非錯誤值,而同樣是真實情況的表現(xiàn)还绘,我們之所以認(rèn)為異常楚昭,只是因為我們的數(shù)據(jù)量不足夠大而已。但是從實際的工業(yè)界來看拍顷,考慮到實際的計算能力以及效果租悄,大多數(shù)公司都會對大數(shù)據(jù)做“去噪”魁蒜,那么在去噪的過程中去除的不僅僅是噪音蛾派,也包括“異常點”咽筋,而這些“異常點”,恰恰把大數(shù)據(jù)的廣覆蓋度給降低了爱沟,于是利用大數(shù)據(jù)反而比小數(shù)據(jù)更容易產(chǎn)生趨同的現(xiàn)象。尤其對于推薦系統(tǒng)來說匆背,這些“異常點”的觀察其實才是“個性化”的極致呼伸。】
既然說到大數(shù)據(jù)钝尸,同樣是這位大牛的一段話:
【說得學(xué)術(shù)一些括享,我們不妨認(rèn)為大數(shù)據(jù)是頻率學(xué)派對于貝葉斯學(xué)派一次強有力的逆襲。那么既然說到這個份上了珍促,我們不妨思考一下铃辖,我們是不是有希望在回歸貝葉斯學(xué)派,利用先驗信息+小數(shù)據(jù)完成對大數(shù)據(jù)的反擊呢猪叙?】
某些機器學(xué)習(xí)算法對異常值很敏感娇斩,比如:K-means聚類仁卷,AdaBoost。使用此類算法必須處理異常值犬第。
某些算法擁有對異常值不敏感的特性锦积,比如:KNN,隨機森林歉嗓。
如何處理異常值丰介?最簡單的方法就是直接丟掉。其它方法我后面會繼續(xù)研究鉴分。
3 過擬合問題
過擬合可要命了哮幢,好不容易訓(xùn)練一個模型,來一些測試數(shù)據(jù)志珍,分類結(jié)果非常的差橙垢。過擬合產(chǎn)生的原因:
1.訓(xùn)練數(shù)據(jù)太少
2.模型太復(fù)雜
3.訓(xùn)練數(shù)據(jù)中存在噪聲點(就算訓(xùn)練數(shù)據(jù)足夠多)
幾乎所有的機器學(xué)習(xí)算法都會容易遇到過擬合的問題。所以先說一些解決過擬合的通用辦法碴裙。當(dāng)然钢悲,首先得保證訓(xùn)練數(shù)據(jù)不要太少。
3.1 正則化
正則化就是在模型的優(yōu)化目標(biāo)上再加入一個懲罰因子舔株。這樣模型的優(yōu)化策略就從經(jīng)驗風(fēng)險最小化變?yōu)榻Y(jié)構(gòu)風(fēng)險最小化莺琳。
1.線性回歸正則化就是嶺回歸和lasso回歸,分別對應(yīng)L2载慈,L1罰項惭等。
2.決策樹正則化就是剪枝,通常把子節(jié)點個數(shù)作為罰項办铡。
3.2 交叉驗證
在數(shù)據(jù)量足夠的情況下辞做,可以采用交叉驗證的方式避免過擬合,甚至可以在正則化之后再做一次交叉驗證寡具。
其它詳細研究請點擊:
4 特征工程問題
有句話必須得放在前面:數(shù)據(jù)和特征決定了機器學(xué)習(xí)的上限秤茅,而模型和算法只是逼近這個上限而已。由此可見童叠,特征工程尤其是特征選擇在機器學(xué)習(xí)中占有相當(dāng)重要的地位框喳。
4.1 什么是特征工程
首先拽一段英文定義:
Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.
in a word, feature engineering is manually designing what the input x’s should be.
4.2 為什么要進行特征降維和特征選擇
主要是出于如下考慮:
1. 特征維數(shù)越高,模型越容易過擬合厦坛,此時更復(fù)雜的模型就不好用五垮。
2. 相互獨立的特征維數(shù)越高,在模型不變的情況下杜秸,在測試集上達到相同的效果表現(xiàn)所需要的訓(xùn)練樣本的數(shù)目就越大放仗。
3. 特征數(shù)量增加帶來的訓(xùn)練、測試以及存儲的開銷都會增大撬碟。
4. 在某些模型中诞挨,例如基于距離計算的模型KMeans莉撇,KNN等模型,在進行距離計算時亭姥,維度過高會影響精度和性能稼钩。
5. 可視化分析的需要。在低維的情況下达罗,例如二維坝撑,三維,我們可以把數(shù)據(jù)繪制出來粮揉,可視化地看到數(shù)據(jù)巡李。當(dāng)維度增高時,就難以繪制出來了扶认。
在機器學(xué)習(xí)中侨拦,有一個非常經(jīng)典的維度災(zāi)難的概念。用來描述當(dāng)空間維度增加時辐宾,分析和組織高維空間狱从,因體積指數(shù)增加而遇到各種問題場景。例如叠纹,100個平均分布的點能把一個單位區(qū)間以每個點距離不超過0.01采樣季研;而當(dāng)維度增加到10后,如果以相鄰點距離不超過0.01小方格采樣單位超一單位超正方體誉察,則需要10^20 個采樣點与涡。
正是由于高維特征有如上描述的各種各樣的問題,所以我們需要進行特征降維和特征選擇等工作持偏。
4.3 特征提取
對于高維特征(成百上千維)驼卖,比如圖像,文本鸿秆,聲音的特征酌畜,特征的每一維沒有顯著意義的,最好要對特征先進行降維卿叽,也就是從初始數(shù)據(jù)中提取有用的信息檩奠。通過降維,將高維空間中的數(shù)據(jù)集映射到低維空間數(shù)據(jù)附帽,同時盡可能少地丟失信息,或者降維后的數(shù)據(jù)點盡可能地容易被區(qū)分井誉。這樣蕉扮,可以提取出顯著特征,避免維度災(zāi)難颗圣,還可以避免特征之間的線性相關(guān)性喳钟。
特征降維常用的算法有PCA屁使,LDA等。
PCA算法通過協(xié)方差矩陣的特征值分解能夠得到數(shù)據(jù)的主成分奔则,以二維特征為例蛮寂,兩個特征之間可能存在線性關(guān)系(例如運動的時速和秒速度),這樣就造成了第二維信息是冗余的易茬。PCA的目標(biāo)是發(fā)現(xiàn)這種特征之間的線性關(guān)系酬蹋,并去除。
LDA算法考慮label抽莱,降維后的數(shù)據(jù)點盡可能地容易被區(qū)分范抓。
4.4 特征選擇
通常遇到的情況是:特征不夠用。食铐。在這種情況下匕垫,我們就要在設(shè)計算法之前,好好地挖掘一下特征虐呻。對于邏輯斯蒂回歸和決策樹象泵,每一維的特征是有確切意義的。我們就要從各個方面斟叼,抽取與目標(biāo)相關(guān)的所有可用信息作為特征偶惠。這個過程可能會比較痛苦。犁柜。
然后洲鸠,是不是特征越多越好?其實也不是馋缅。盜一張圖過來如下:
可以發(fā)現(xiàn)扒腕,剛開始模型的準(zhǔn)確率隨著特征數(shù)量的增加而增加,當(dāng)增加到一定程度便趨于穩(wěn)定了萤悴。如果還要強行加入如此多的特征瘾腰,反而畫蛇添足,容易過擬合覆履。然后蹋盆,如果出現(xiàn)特征過多出現(xiàn)過擬合的情況,就要適當(dāng)?shù)剡M行參數(shù)縮減硝全。對于邏輯斯蒂回歸栖雾,某一維特征對應(yīng)的參數(shù)如果接近為零,說明這個特征影響不大伟众,就可以去掉析藕。因此,我們的特征選擇過程一般如下:
1.選取盡可能多的特征凳厢,必要時先進行降維
2.對特征進行選擇账胧,保留最具有代表性的特征
這個過程的進行要同時觀察模型準(zhǔn)確率的變化竞慢。
最后,特征選擇有哪些算法呢治泥?
- 過濾方法:將所有特征進行打分評價筹煮,選擇最有效的一些特征。比如:卡法檢驗居夹,信息增益败潦,相關(guān)系數(shù)打分。
- 包裝方法:將特征組合的選擇看做是一個在特征空間中的搜索問題吮播。比如:隨機爬山法变屁,啟發(fā)式的搜索方法等。
- 嵌入方法:將特征選擇的過程嵌入到模型訓(xùn)練的過程中意狠,其實也就是正則化的方法粟关。比如lasso回歸,嶺回歸环戈,彈性網(wǎng)絡(luò)(Elastic Net)等闷板。
具體其它細節(jié),以后補充院塞。
推薦一篇美團網(wǎng)的技術(shù)報告:機器學(xué)習(xí)中的數(shù)據(jù)清洗與特征處理綜述
還有一篇參考:機器學(xué)習(xí)中的特征選擇問題
最后一篇特征選擇的好文:A introduction on feature seclection
機器學(xué)習(xí)算法需要注意的一些問題(二)
訓(xùn)練樣本大小選取的問題
模型學(xué)習(xí)的準(zhǔn)確度與數(shù)據(jù)樣本大小有關(guān)遮晚,那么如何展示更多的樣本與更好的準(zhǔn)確度之間的關(guān)系呢?
我們可以通過不斷增加訓(xùn)練數(shù)據(jù)拦止,直到模型準(zhǔn)確度趨于穩(wěn)定县遣。這個過程能夠很好讓你了解,你的系統(tǒng)對樣本大小及相應(yīng)調(diào)整有多敏感汹族。
所以萧求,訓(xùn)練樣本首先不能太少,太少的數(shù)據(jù)不能代表數(shù)據(jù)的整體分布情況顶瞒,而且容易過擬合夸政。數(shù)據(jù)當(dāng)然也不是越多越好,數(shù)據(jù)多到一定程度效果就不明顯了榴徐。不過守问,這里假設(shè)數(shù)據(jù)是均勻分布增加的。
然而這里有另一種聲音:
【算法使用的數(shù)據(jù)越多坑资,它的精度會更加準(zhǔn)確耗帕,所以如果可能要盡量避免抽樣。機器學(xué)習(xí)理論在預(yù)測誤差上有著非常直觀的描述袱贮。簡而言之仿便,在機器學(xué)習(xí)模型和最優(yōu)預(yù)測(在理論上達到最佳可能的誤差)之間的預(yù)測誤差的差距可以被分解為三個部分:
由于沒有找到正確函數(shù)形式的模型的誤差
由于沒有找到最佳參數(shù)的模型的誤差
由于沒用使用足夠數(shù)據(jù)的模型的誤差
如果訓(xùn)練集有限,它可能無法支撐解決這個問題所需的模型復(fù)雜性。統(tǒng)計學(xué)的基本規(guī)律告訴我們探越,如果我們可以的話,應(yīng)該利用所有的數(shù)據(jù)而不是抽樣窑业∏蔗#】
其實當(dāng)然數(shù)據(jù)越多越好,但是更多的數(shù)據(jù)意味著獲取的難度以及處理的復(fù)雜度等常柄。并且當(dāng)數(shù)據(jù)多到一定程度后區(qū)別就不那么明顯了鲤氢。所以我們還是要根據(jù)自己情況科學(xué)地使用一定數(shù)量的數(shù)據(jù)。
參考資料:
選擇什么模型算法西潘?
很多像我一樣的機器學(xué)習(xí)新手在遇到問題的時候卷玉,都會對用什么樣的模型解決問題感到困惑。除了基本的有監(jiān)督無監(jiān)督喷市,分類還是回歸相种,二分類多分類等等基本的選擇標(biāo)準(zhǔn),貌似其他的都差不多品姓,通常的做法就是每個模型都試一試寝并,看看哪個效果好就用哪個。腹备。顯然這么做的不夠的衬潦。
其實,選擇什么算法最好植酥,關(guān)鍵不在于算法镀岛,而在于具體要解決的問題,以及問題所具有的數(shù)據(jù)和特征友驮。下面結(jié)合自己的經(jīng)驗和收集的資料漂羊,給出幾點選擇算法的tips。
1 特征角度
就像古代把人分為三六九等喊儡,特征也有層次之分拨与。我們暫且粗略地分為高級別特征和低級別特征,有的時候高級別的特征又叫組合特征艾猜÷蛐總體上,低級別特征比較有針對性匆赃,單個特征覆蓋面杏倜(含有這個特征的數(shù)據(jù)不多),特征數(shù)量(維度)很大算柳。高級別特征比較泛化低淡,單個特征覆蓋面大(含有這個特征的數(shù)據(jù)很多),特征數(shù)量(維度)不大。下圖展示了什么是高級低級特征:
特征的低級和高級帶來模型選擇上的線性模型和非線性模型的考量:
非線性模型的特征:
1)可以主要使用High Level特征蔗蹋,因為計算復(fù)雜度大何荚,所以特征維度不宜太高;
2)通過High Level非線性映射可以比較好地擬合目標(biāo)猪杭。
線性模型的特征:
1)特征體系要盡可能全面餐塘,High Level和Low Level都要有;
2)可以將High Level轉(zhuǎn)換Low Level皂吮,以提升模型的擬合能力戒傻。
線性模型有:邏輯斯蒂回歸,線性SVM等蜂筹;
非線性模型有:決策樹需纳,隨機森林,GBDT等艺挪。
那平常我們所糾結(jié)的邏輯斯蒂回歸和決策樹用哪個好為例,決策樹是一種非線性模型闺属,因此如果是高級別特征的話我們就選擇決策樹慌盯;邏輯斯蒂回歸是一種線性模型,因此如果是低級別特征的話我們就選擇邏輯斯蒂回歸掂器。
然而亚皂,在我們是具體應(yīng)用中,高級特征通常難以獲得国瓮,或者獲得的時間和成本很高灭必,然而低級特征卻很容易拿到。所以乃摹,在解決問題的初始階段禁漓,我們最好先廣泛收集可以用的低級別特征,來一個邏輯斯蒂回歸孵睬,作為框架的基線系統(tǒng)播歼。
線性模型對非線性關(guān)系缺乏準(zhǔn)確刻畫,高級特征剛好可以加入模型的非線性表達掰读,增強模型的表達能力秘狞。另外,使用低級特征可以認(rèn)為是對全局進行建模蹈集,而高級特征更加精細烁试,是個性化建模,這就是為什么
1.決策樹深入數(shù)據(jù)細部拢肆,但同時失去了對全局的把握减响,因為決策樹一般使用高級特征靖诗;
2.邏輯回歸始終著眼整個數(shù)據(jù)的擬合,所以對全局把握較好支示。但無法兼顧局部數(shù)據(jù)刊橘,或者說缺乏探查局部結(jié)構(gòu)的內(nèi)在機制,因為邏輯回歸一般使用低級特征颂鸿;
3.長尾樣本的預(yù)測值主要受High Level特征影響伤为,因為長尾樣本是個性化樣本;
3.高頻樣本的預(yù)測值主要受Low Level特征影響据途,因為高頻樣本是大眾化的樣本。
當(dāng)我們有一些高級特征的時候叙甸,就把高級特征和低級特征共同加入到邏輯回歸中進行訓(xùn)練颖医,這樣訓(xùn)練出來的模型兼顧了全局化與個性化,會使模型預(yù)測的準(zhǔn)確率有所提高裆蒸。具體到邏輯回歸和決策樹的使用上熔萧,我們可以充分利用兩者之間的優(yōu)缺點進行互補。主要思路是利用決策樹對局部數(shù)據(jù)結(jié)構(gòu)優(yōu)越的把握能力增加邏輯回歸的效力僚祷。在具體做法上有幾種佛致,一種是從決策樹分析中找出數(shù)據(jù)局部結(jié)構(gòu),作為在邏輯回歸中構(gòu)建依變量(interaction)的依據(jù)辙谜。另一種是在需要對預(yù)測因子進行離散化處理時俺榆,利用決策樹分析決定最佳切分點。還有一種是把決策樹分類的最終結(jié)果作為預(yù)測變量装哆,和其他協(xié)變量一起代入回歸模型罐脊,又稱為“嫁接式模型”。從理論上講蜕琴,嫁接模型綜合了決策樹和邏輯回歸的優(yōu)點萍桌。最終節(jié)點包含了數(shù)據(jù)中重要的局部結(jié)構(gòu),而協(xié)變量可以拾補被決策樹遺漏的數(shù)據(jù)整體結(jié)構(gòu)凌简。
本部分參考文獻:
2 要解決的問題本身
有時候我們要解決的問題可以用單個復(fù)雜的模型解決雏搂,也可以用多個簡單的模型分別解決各個子問題藕施,再基于各個單模型進行融合解決總問題。融合的方式可以是簡單的線性融合畔派,也可以是更加復(fù)雜的融合铅碍。
不同模型有不同 優(yōu)缺點,具體如下:
選擇哪種模式线椰?
1)問題可預(yù)估的難度胞谈,難度大,則考慮用多模型;
2)問題本身的重要性烦绳,問題很重要卿捎,則考慮用多模型;
3)多個模型的關(guān)系是否明確径密,關(guān)系明確午阵,則可以用多模型。
這一部分主要抄襲美團技術(shù)報告:
3 模型組合
最近模型組合的算法越來越流行享扔,當(dāng)單個分類器的性能不足以解決實際問題的時候底桂,可以考慮使用模型組合的方法,也就是bagging和boosting的方法惧眠。
關(guān)于這部分籽懦,只知道GBDT在工業(yè)界很火,當(dāng)有了一定了解和實戰(zhàn)經(jīng)驗后氛魁,再來補充暮顺。