機器學(xué)習(xí)是做NLP和計算機視覺這類應(yīng)用算法的基礎(chǔ),雖然現(xiàn)在深度學(xué)習(xí)模型大行其道,但是懂一些傳統(tǒng)算法的原理和它們之間的區(qū)別還是很有必要的??梢詭椭覀冏鲆恍┠P瓦x擇。本篇博文就總結(jié)一下各種機器學(xué)習(xí)算法的特點和應(yīng)用場景。本文是筆者結(jié)合自身面試中遇到的問題和總結(jié)網(wǎng)絡(luò)上的資源得到的,所有引用已給出鏈接,如侵刪。
機器學(xué)習(xí)
SVM與LR的區(qū)別
從模型解決問題的方式來看
Linear SVM直觀上是trade-off兩個量
a large margin,就是兩類之間可以畫多寬的gap ;不妨說是正樣本應(yīng)該在分界平面向左gap/2(稱正分界),負(fù)樣本應(yīng)該在分解平面向右gap/2(稱負(fù)分界)
L1 error penalty,對所有不滿足上述條件的點做L1 penalty
給定一個數(shù)據(jù)集,一旦完成Linear SVM的求解,所有數(shù)據(jù)點可以被歸成兩類
一類是落在對應(yīng)分界平面外并被正確分類的點,比如落在正分界左側(cè)的正樣本或落在負(fù)分界右側(cè)的負(fù)樣本
第二類是落在gap里或被錯誤分類的點。
假設(shè)一個數(shù)據(jù)集已經(jīng)被Linear SVM求解,那么往這個數(shù)據(jù)集里面增加或者刪除更多的一類點并不會改變重新求解的Linear SVM平面。不受數(shù)據(jù)分布的影響。
求解LR模型過程中,每一個數(shù)據(jù)點對分類平面都是有影響的,它的影響力遠(yuǎn)離它到分類平面的距離指數(shù)遞減。換句話說,LR的解是受數(shù)據(jù)本身分布影響的。在實際應(yīng)用中,如果數(shù)據(jù)維度很高,LR模型都會配合參數(shù)的L1 regularization。
兩者的區(qū)別
兩個模型對數(shù)據(jù)和參數(shù)的敏感程度不同,Linear SVM比較依賴penalty的系數(shù)和數(shù)據(jù)表達空間的測度,而(帶正則項的)LR比較依賴對參數(shù)做L1 regularization的系數(shù)。但是由于他們或多或少都是線性分類器,所以實際上對低維度數(shù)據(jù)overfitting的能力都比較有限,相比之下對高維度數(shù)據(jù),LR的表現(xiàn)會更加穩(wěn)定,為什么呢?因為Linear SVM在計算margin有多“寬”的時候是依賴數(shù)據(jù)表達上的距離測度的,換句話說如果這個測度不好(badly scaled,這種情況在高維數(shù)據(jù)尤為顯著),所求得的所謂Large margin就沒有意義了,這個問題即使換用kernel trick(比如用Gaussian kernel)也無法完全避免。所以使用Linear SVM之前一般都需要先對數(shù)據(jù)做normalization,而求解LR(without regularization)時則不需要或者結(jié)果不敏感。
Linear SVM和LR都是線性分類器
Linear SVM不直接依賴數(shù)據(jù)分布,分類平面不受一類點影響;LR則受所有數(shù)據(jù)點的影響,如果數(shù)據(jù)不同類別strongly unbalance一般需要先對數(shù)據(jù)做balancing。
Linear SVM依賴數(shù)據(jù)表達的距離測度,所以需要對數(shù)據(jù)先做normalization;LR不受其影響
Linear SVM依賴penalty的系數(shù),實驗中需要做validation
Linear SVM和LR的performance都會收到outlier的影響,其敏感程度而言,誰更好很難下明確結(jié)論。
balance的方法
調(diào)整正、負(fù)樣本在求cost時的權(quán)重,比如按比例加大正樣本cost的權(quán)重。然而deep learning的訓(xùn)練過程是on-line的因此你需要按照batch中正、負(fù)樣本的比例調(diào)整。
做訓(xùn)練樣本選?。喝鏷ard negative mining,只用負(fù)樣本中的一部分。
做訓(xùn)練樣本選?。喝缤ㄟ^data augmentation擴大正樣本數(shù)量。
過擬合方面
LR容易欠擬合,準(zhǔn)確度低。
SVM不太容易過擬合:松弛因子+損失函數(shù)形式
注意SVM的求解方法叫拉格朗日乘子法,而對于均方誤差的優(yōu)化方法是最小二乘法。
方法的選擇
在Andrew NG的課里講到過:
如果Feature的數(shù)量很大,跟樣本數(shù)量差不多,這時候選用LR或者是Linear Kernel的SVM
如果Feature的數(shù)量比較小,樣本數(shù)量一般,不算大也不算小,選用SVM+Gaussian Kernel
如果Feature的數(shù)量比較小,而樣本數(shù)量很多,需要手工添加一些feature變成第一種情況
當(dāng)你的數(shù)據(jù)非常非常非常非常非常大然后完全跑不動SVM的時候,跑LR。SVM適合于小樣本學(xué)習(xí)。多大算是非常非常非常非常非常非常大? 比如幾個G,幾萬維特征,就勉強算大吧...而實際問題上幾萬個參數(shù)實在完全不算個事兒,太常見了。隨隨便便就得上spark。讀一遍數(shù)據(jù)就老半天,一天能訓(xùn)練出來的模型就叫高效了。所以在新時代,LR其實反而比以前用的多了=. =
應(yīng)用場景方面不同
擬合程度,樣本量,
距離測度,數(shù)據(jù)balance
模型簡單易解釋
如果數(shù)據(jù)特征維度高,svm要使用核函數(shù)來求解
Note:拉格朗日對偶沒有改變最優(yōu)解,但改變了算法復(fù)雜度:原問題—樣本維度;對偶問題–樣本數(shù)量。所以 線性分類&&樣本維度<樣本數(shù)量:原問題求解(liblinear默認(rèn)); 非線性–升維—一般導(dǎo)致 樣本維度>樣本數(shù)量:對偶問題求解
SVM適合處理什么樣的數(shù)據(jù)?
高維稀疏,樣本少?!緟?shù)只與支持向量有關(guān),數(shù)量少,所以需要的樣本少,由于參數(shù)跟維度沒有關(guān)系,所以可以處理高維問題】
機器學(xué)習(xí)常見算法總結(jié)
機器學(xué)習(xí)常見算法個人總結(jié)(面試用)
樸素貝葉斯
樸素貝葉斯的優(yōu)點:
對小規(guī)模的數(shù)據(jù)表現(xiàn)很好,適合多分類任務(wù),適合增量式訓(xùn)練。
缺點:
對輸入數(shù)據(jù)的表達形式很敏感(離散、連續(xù),值極大極小之類的)
線性回歸
線性回歸試圖學(xué)得一個線性模型以盡可能準(zhǔn)確地預(yù)測實值輸出標(biāo)記。均方誤差是回歸任務(wù)中最常用的性能度量,基于均方誤差最小化來進行模型求解的方法成為最小二乘法。在線性回歸中,最小二乘法就是試圖找到一條直線,使得所有樣本到直線上的歐式距離之和最小。這個想法和分類問題是正好相反的,分類問題是找到一個分界面離所有樣本盡可能遠(yuǎn)。
優(yōu)化方法
當(dāng)x矩陣是列滿秩的時候,可以用最小二乘法,但是求矩陣的逆比較慢

enter description here
梯度下降法,以最大似然估計的結(jié)果對權(quán)值求梯度,sigmoid函數(shù)也是如此

enter description here
均方無法的概率解釋
假設(shè)根據(jù)特征的預(yù)測結(jié)果與實際結(jié)果有誤差∈ (i) ,那么預(yù)測結(jié)果θ T x (i) 和真實結(jié)果y (i) 滿足下
式:

enter description here
一般來講,誤差滿足平均值為 0 的高斯分布,也就是正態(tài)分布。那么 x 和 y 的條件概率也就
是

enter description here
用條件概率最大似然估計法得到:

enter description here
LR回歸

enter description here
回歸用來分類 0/1 問題,也就是預(yù)測結(jié)果屬于 0 或者 1 的二值分類問題

enter description here
仍然求的是最大似然估計,然后求導(dǎo),得到迭代公式結(jié)果為,梯度下降法:

enter description here
優(yōu)化問題的求解方法
大部分的機器學(xué)習(xí)算法的本質(zhì)都是建立優(yōu)化模型,通過最優(yōu)化方法對目標(biāo)函數(shù)(或損失函數(shù))進行優(yōu)化,從而訓(xùn)練出最好的模型。常見的最優(yōu)化方法有梯度下降法、牛頓法和擬牛頓法、共軛梯度法等等。
梯度下降法
優(yōu)化思想
當(dāng)目標(biāo)函數(shù)是凸函數(shù)時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度下降法的速度也未必是最快的。梯度下降法的優(yōu)化思想是用當(dāng)前位置負(fù)梯度方向作為搜索方向,因為該方向為當(dāng)前位置的最快下降方向,所以也被稱為是”最速下降法“。最速下降法越接近目標(biāo)值,步長越小,前進越慢。
缺點
梯度下降法的最大問題就是會陷入局部最優(yōu),靠近極小值時收斂速度減慢。
批量梯度下降法
最小化所有訓(xùn)練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解,即求解的參數(shù)是使得風(fēng)險函數(shù)最小,但是對于大規(guī)模樣本問題效率低下。
隨機梯度下降法
最小化每條樣本的損失函數(shù),雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向, 但是大的整體的方向是向全局最優(yōu)解的,最終的結(jié)果往往是在全局最優(yōu)解附近,適用于大規(guī)模訓(xùn)練樣本情況。
隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),那么可能只用其中幾萬條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。但是,SGD伴隨的一個問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
牛頓法
牛頓法是一種在實數(shù)域和復(fù)數(shù)域上近似求解方程的方法。方法使用函數(shù)f (x)的泰勒級數(shù)的前面幾項來尋找方程f (x) = 0的根。牛頓法最大的特點就在于它的收斂速度很快。

迭代公式
牛頓法比梯度下降法快
牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當(dāng)前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之后,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠(yuǎn)一點,能更快地走到最底部。
但是牛頓法要算hessian矩陣的逆,比較費時間。
擬牛頓法
擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運算的復(fù)雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標(biāo)函數(shù)的梯度。通過測量梯度的變化,構(gòu)造一個目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法,尤其對于困難的問題。另外,因為擬牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時比牛頓法更為有效。
拉格朗日法
拉格朗日乘子法主要用于解決約束優(yōu)化問題,它的基本思想就是通過引入拉格朗日乘子來將含有n個變量和k個約束條件的約束優(yōu)化問題轉(zhuǎn)化為含有(n+k)個變量的無約束優(yōu)化問題。拉格朗日乘子背后的數(shù)學(xué)意義是其為約束方程梯度線性組合中每個向量的系數(shù)。
通過引入拉格朗日乘子建立極值條件,對n個變量分別求偏導(dǎo)對應(yīng)了n個方程,然后加上k個約束條件(對應(yīng)k個拉格朗日乘子)一起構(gòu)成包含了(n+k)變量的(n+k)個方程的方程組問題,這樣就能根據(jù)求方程組的方法對其進行求解。
機器學(xué)習(xí)算法選擇
隨機森林平均來說最強,但也只在9.9%的數(shù)據(jù)集上拿到了第一,優(yōu)點是鮮有短板。SVM的平均水平緊隨其后,在10.7%的數(shù)據(jù)集上拿到第一。神經(jīng)網(wǎng)絡(luò)(13.2%)和boosting(~9%)表現(xiàn)不錯。數(shù)據(jù)維度越高,隨機森林就比AdaBoost強越多,但是整體不及SVM2。數(shù)據(jù)量越大,神經(jīng)網(wǎng)絡(luò)就越強。
貝葉斯
是相對容易理解的一個模型,至今依然被垃圾郵件過濾器使用。
K近鄰
典型的例子是KNN,它的思路就是——對于待判斷的點,找到離它最近的幾個數(shù)據(jù)點,根據(jù)它們的類型決定待判斷點的類型。
它的特點是完全跟著數(shù)據(jù)走,沒有數(shù)學(xué)模型可言。
三要素:
k值的選擇
距離的度量(常見的距離度量有歐式距離,馬氏距離等)
分類決策規(guī)則 (多數(shù)表決規(guī)則)
k值的選擇
k值越小表明模型越復(fù)雜,更加容易過擬合
但是k值越大,模型越簡單,如果k=N的時候就表明無論什么點都是訓(xùn)練集中類別最多的那個類
所以一般k會取一個較小的值,然后用過交叉驗證來確定
這里所謂的交叉驗證就是將樣本劃分一部分出來為預(yù)測樣本,比如95%訓(xùn)練,5%預(yù)測,然后k分別取1,2,3,4,5之類的,進行預(yù)測,計算最后的分類誤差,選擇誤差最小的k
分類決策規(guī)則
找到最近的k個實例之后,可以計算平均值作為預(yù)測值,也可以給這k個實例加上一個權(quán)重再求平均值,這個權(quán)重與度量距離成反比(越近權(quán)重越大)
優(yōu)缺點:
優(yōu)點
思想簡單
可用于非線性分類
訓(xùn)練時間復(fù)雜度為O(n)
準(zhǔn)確度高,對outlier不敏感
缺點
計算量大
樣本不平衡問題不適用
需要大量的內(nèi)存
KD樹
KD樹是一個二叉樹,表示對K維空間的一個劃分,可以進行快速檢索
構(gòu)造KD樹
在k維的空間上循環(huán)找子區(qū)域的中位數(shù)進行劃分的過程。
假設(shè)現(xiàn)在有K維空間的數(shù)據(jù)集: $T={x_1,x_2,x_3,…x_n}$, $xi={a_1,a_2,a_3..a_k}$
首先構(gòu)造根節(jié)點,以坐標(biāo)$a_1$的中位數(shù)b為切分點,將根結(jié)點對應(yīng)的矩形局域劃分為兩個區(qū)域,區(qū)域1中$a_1 < b$,區(qū)域2中$a_1>b$
構(gòu)造葉子節(jié)點,分別以上面兩個區(qū)域中$a_2$的中位數(shù)作為切分點,再次將他們兩兩劃分,作為深度1的葉子節(jié)點,(如果a2=中位數(shù),則a2的實例落在切分面)
不斷重復(fù)2的操作,深度為j的葉子節(jié)點劃分的時候,索取的$a_i$ 的$i=j % k+1$,直到兩個子區(qū)域沒有實例時停止
KD樹的搜索
首先從根節(jié)點開始遞歸往下找到包含x的葉子節(jié)點,每一層都是找對應(yīng)的xi
將這個葉子節(jié)點認(rèn)為是當(dāng)前的“近似最近點”
遞歸向上回退,如果以x圓心,以“近似最近點”為半徑的球與根節(jié)點的另一半子區(qū)域邊界相交,則說明另一半子區(qū)域中存在與x更近的點,則進入另一個子區(qū)域中查找該點并且更新”近似最近點“
重復(fù)3的步驟,直到另一子區(qū)域與球體不相交或者退回根節(jié)點
最后更新的”近似最近點“與x真正的最近點
log(n)
決策樹
決策樹的特點是它總是在沿著特征做切分。隨著層層遞進,這個劃分會越來越細(xì)。
因為它能夠生成清晰的基于特征(feature)選擇不同預(yù)測結(jié)果的樹狀結(jié)構(gòu)
隨機森林
器學(xué)習(xí)崗位面試問題匯總 之 集成學(xué)習(xí)
基本概念
天池離線賽 - 移動推薦算法(四):基于LR, RF, GBDT等模型的預(yù)測
它首先隨機選取不同的特征(feature)和訓(xùn)練樣本(training sample)bagging,生成大量的決策樹,然后綜合這些決策樹的結(jié)果來進行最終的分類。
隨機森林在現(xiàn)實分析中被大量使用,它相對于決策樹,在準(zhǔn)確性上有了很大的提升
適用場景:數(shù)據(jù)維度相對低(幾十維),同時對準(zhǔn)確性有較高要求時。
參數(shù)調(diào)節(jié)
是一種基于決策樹基模型的集成學(xué)習(xí)方法,其核心思想是通過特征采樣來降低訓(xùn)練方差,提高集成泛化能力。
max_depth 屬于基學(xué)習(xí)器參數(shù),它控制著每個決策樹的深度,一般來說,決策樹越深,模型擬合的偏差越小,但同時擬合的開銷也越大。一般地,需要保證足夠的樹深度,但也不宜過大。
RF與傳統(tǒng)bagging的區(qū)別
(1)樣本采樣:RF有放回選取和整體樣本數(shù)目相同的樣本,一般bagging用的樣本<總體樣本數(shù)
(2)特征采樣:RF對特征進行采樣,BAGGING用全部特征
RF的優(yōu)點
(1)在數(shù)據(jù)集上表現(xiàn)良好,在當(dāng)先很多數(shù)據(jù)集上要優(yōu)于現(xiàn)有的很多算法
(2)可以并行,且不是對所有屬性進行訓(xùn)練,訓(xùn)練速度相對較快
(3)防止過擬合
(4)能夠處理高維特征,且不用做特征選擇,可以給出特征重要性的評分,訓(xùn)練過程中,可以檢測到feature的相互影響
缺點
①樹越多,隨機森林的表現(xiàn)才會越穩(wěn)定。所以在實際使用隨機森林的時候需要注意如果樹不夠多的時候,可能會導(dǎo)致不穩(wěn)定的情況。
②不平衡數(shù)據(jù)集。分類結(jié)果會傾向于樣本多的類別,所以訓(xùn)練樣本中各類別的數(shù)據(jù)必須相同。Breiman在實際實現(xiàn)該算法的時候有考慮到了這個問題,采取了根據(jù)樣本類別比例對決策樹的判斷賦予不同權(quán)值的方法
RF的學(xué)習(xí)算法
ID3:離散
C4.5:連續(xù)
CART:離散或連續(xù)
GBDT
基本概念
GBDT(梯度迭代決策樹)是一種基于決策回歸樹的Boosting模型,其核心思想是將提升過程建立在對“之前殘差的負(fù)梯度表示”的回歸擬合上,通過不斷的迭代實現(xiàn)降低偏差的目的。
GBDT設(shè)置大量基學(xué)習(xí)器的目的是為了集成來降低偏差,所以 n_estimators (基決策器的個數(shù))一般會設(shè)置得大一些。
對于GBDT模型來說,其每個基學(xué)習(xí)器是一個弱學(xué)習(xí)器(欠擬合),決策樹的深度一般設(shè)置得比較小,以此來降低方差(模型復(fù)雜度低),之后在經(jīng)過殘差逼近迭代來降低偏差,從而形成強學(xué)習(xí)器。
GBDT與傳統(tǒng)Boosting(AdaBoost)的區(qū)別
Boosting算法,但與傳統(tǒng)boosting有區(qū)別、擬合上一步的殘差,傳統(tǒng)意義上說不能并行,只能用CART回歸樹,降低偏差
迭代思路不同:傳統(tǒng)boosting對訓(xùn)練樣本進行加權(quán),GBDT則是擬合殘差,下一棵樹沿殘差梯度下降的方向進行擬合
GBDT正則化的方式
(1)同AdaBoost,通過步長
(2)CART樹的剪枝
(3)子抽樣,不放回,SGBT,可以實現(xiàn)一定程度上的并行
GBDT的優(yōu)缺點
優(yōu)點:(1)調(diào)參少的情況下,準(zhǔn)確率也高(SVM)
(2)靈活處理各種數(shù)據(jù),包括連續(xù)和離散,無需歸一化處理(LR)
(3)模型非線性變換多,特征不用經(jīng)過復(fù)雜處理即可表達復(fù)雜信息
(4)從一定程度上可以防止過擬合,小步而非大步擬合
缺點:(1)一般來說傳統(tǒng)的GBDT只能串行,但是也可以通過子采樣比例(0.5~0.8)實現(xiàn)某種意義上的并行,但一般這就不叫GBDT了。
(2)對異常值敏感,但是可以采取一些健壯的損失函數(shù)緩解,如Huber./Quantile損失函數(shù)
GBDT預(yù)測時每一棵樹是否能并行?
可以,訓(xùn)練需串行,預(yù)測可并行
GBDT和RF的區(qū)別與聯(lián)系
聯(lián)系:多棵樹進行訓(xùn)練+多棵樹共同進行預(yù)測
區(qū)別:(1)取樣方式
(2)預(yù)測時,RF多數(shù)投票,GBDT加權(quán)累加
(3)樣本的關(guān)系—>并行和串行
(4)學(xué)期器的種類,GBDT只能用CART回歸樹(因為要計算連續(xù)梯度)
(5)對異常值的敏感性
(6)通過減少方差/偏差提高性能
XGBOOST相比于GBDT有何不同?XGBOOST為什么快?XGBOOST如何支持并行?
(1)GBDT只能用CART回歸樹,而XGBOOST可以用CART樹(回歸/分類),還可以用用想LR之類的線性模型,相當(dāng)于加入L1、L2正則項的LR或線性回歸
(2)列抽樣,可以并行,不是樹粒度上的,是特征粒度上的,block塊,并行計算所有信息增益等信息
(3)可處理多種特征,且對缺失值也不用進行處理
(4)GBDT在殘差梯度下降方向擬合,一階導(dǎo);XGBOOST泰勒展開至二階導(dǎo)
(5)近似直方圖算法,高效生產(chǎn)候選分割點
(6)shrink,縮減,葉子節(jié)點同時乘,防止過擬合
(7)可以自己定義評價函數(shù)
(8)代價函數(shù)含正則化項,防止過擬合
ababoost
daBoost的優(yōu)缺點
優(yōu)點:(1)容易理解、實現(xiàn)簡單
(2)易編碼
(3)分類精度高
(4)可以使用各種回歸模型構(gòu)建基分類器,非常靈活
(5)作為二元分類器是,構(gòu)造簡單、結(jié)果可理解、少參數(shù)
(6)相對來說,不宜過擬合
缺點:(1)只能串行
(2)對異常值敏感boosting對異常值敏感
集成學(xué)習(xí)與方差偏差
我覺得,避免偏差的話,首先我們需要盡量選擇正確的模型,所謂“對癥下藥”。我覺得有位同行把機器學(xué)習(xí)算法的使用比作醫(yī)生開藥方,是非常不錯的比喻。我們要根據(jù)數(shù)據(jù)的分布和特點,選擇合適的算法。
其次,有了合適的算法,我們還要慎重選擇數(shù)據(jù)集的大小。通常訓(xùn)練數(shù)據(jù)集越大越好,但是當(dāng)大到數(shù)據(jù)集已經(jīng)對整體所有數(shù)據(jù)有了一定的代表性之后,再多的數(shù)據(jù)已經(jīng)不能提升模型的準(zhǔn)確性,反而帶來模型訓(xùn)練的計算量增加。但是,訓(xùn)練數(shù)據(jù)太少的話是一定不好的,這會帶來過擬合的問題,過擬合就是模型復(fù)雜度太高,方差很大,不同的數(shù)據(jù)集訓(xùn)練出來的模型變化非常大

偏差與方差
為什么說bagging是減少variance,而boosting是減少bias?
從機制上講
為什么說bagging是減少variance,而boosting是減少bias
若各子模型獨立,則有$$Var(\frac{\sum X_i}{n})=\frac{Var(X_i)}{n}$$,此時可以顯著降低variance。若各子模型完全相同,則$$Var(\frac{\sum X_i}{n})=Var(X_i)$$
,此時不會降低variance。
Bagging 是 Bootstrap Aggregating 的簡稱,意思就是再取樣 (Bootstrap) 然后在每個樣本上訓(xùn)練出來的模型取平均。

bagging的偏差
,所以從偏差上看沒有降低,但是由于各個子模型是單獨訓(xùn)練的,有一定的獨立性,所以方差降低比較多,提高泛化能力。特別是random forest這種方式,不僅對樣本取樣,還有特征取樣。
boosting從優(yōu)化角度來看,是用forward-stagewise這種貪心法去最小化損失函數(shù),在這個過程中偏差是逐步減小的,而由于各階段分類器之間相關(guān)性較強,方差降低得少。
舉個例子
gbdt是boosting的方式,它的決策樹的深度比較小,模型會欠擬合,剛開始偏差大,后來就慢慢變小了。
為什么把特征組合之后還能提升
反正這些基本都是增強了特征的表達能力,或者說更容易線性可分吧
總體性問題
分類與回歸的區(qū)別
分類和回歸的區(qū)別在于輸出變量的類型。
定量輸出稱為回歸,或者說是連續(xù)變量預(yù)測;
定性輸出稱為分類,或者說是離散變量預(yù)測。
生成模型與判別模型的區(qū)別
有監(jiān)督機器學(xué)習(xí)方法可以分為生成方法和判別方法(常見的生成方法有混合高斯模型、樸素貝葉斯法和隱形馬爾科夫模型等,常見的判別方法有SVM、LR等),生成方法學(xué)習(xí)出的是生成模型,判別方法學(xué)習(xí)出的是判別模型。
監(jiān)督學(xué)習(xí),預(yù)測時,一般都是在求p(Y|X)生成模型: 從數(shù)據(jù)中學(xué)習(xí)聯(lián)合概率分布p(X,Y),然后利用貝葉斯公式求:$$p(Y|X)=\frac{P(X,Y)}{\Sigma P(X,Y_{i} )} $$,比如說樸素貝葉斯
判別模型:直接學(xué)習(xí)P(Y|X), 它直觀輸入什么特征X,就直接預(yù)測出最可能的Y; 典型的模型包括:LR, SVM,CRF,Boosting,Decision tree....
生成方法的特點:生成方法可以還原聯(lián)合概率分布,而判別方法則不能;生成方法的學(xué)習(xí)收斂速度更快,即當(dāng)樣本容量增加的時候,學(xué)習(xí)的模型可以更快的收斂于真實的模型;當(dāng)存在隱變量時,仍可以用生成方法學(xué)習(xí),此時判別方法就不能用。
判別方法的特點:判別方法直接學(xué)習(xí)的是條件概率或者決策函數(shù),直接面對預(yù)測,往往學(xué)習(xí)的準(zhǔn)確率更高;由于直接學(xué)習(xí)或者,可以對數(shù)據(jù)進行各種程度上的抽象、定義特征并使用特征,因此可以簡化學(xué)習(xí)問題。
精確率、召回率、F1 值、ROC、AUC 各自的優(yōu)缺點是什么?

enter description here
精確率(Precision)為TP/(TP+FP)
召回率(Recall)為TP/(TP+FN)
F1值是精確率和召回率的調(diào)和均值,即F1=2PR/(P+R)
ROC曲線(Receiver operating characteristic curve),ROC曲線其實是多個混淆矩陣的結(jié)果組合,如果在上述模型中我們沒有定好閾值,而是將模型預(yù)測結(jié)果從高到低排序,將每個概率值依次作為閾值,那么就有多個混淆矩陣。對于每個混淆矩陣,我們計算兩個指標(biāo)TPR(True positive rate)和FPR(False positive rate),TPR=TP/(TP+FN)=Recall,TPR就是召回率,F(xiàn)PR=FP/(FP+TN)。

enter description here
在畫ROC曲線的過程中,若有一個閾值,高于此閾值的均為壞人,低于此閾值的均為好人,則認(rèn)為此模型已完美的區(qū)分開好壞用戶。此時壞用戶的預(yù)測準(zhǔn)確率(TPR)為1,同時好用戶的預(yù)測錯誤率(FPR)為0,ROC曲線經(jīng)過(0,1)點。AUC(Area Under Curve)的值為ROC曲線下面的面積,若如上所述模型十分準(zhǔn)確,則AUC為1。但現(xiàn)實生活中尤其是工業(yè)界不會有如此完美的模型,一般AUC均在0.5到1之間,AUC越高,模型的區(qū)分能力越好
若AUC=0.5,即與上圖中紅線重合,表示模型的區(qū)分能力與隨機猜測沒有差別。
所以AUC表征的是模型的分類能力。
過擬合
如果一味的去提高訓(xùn)練數(shù)據(jù)的預(yù)測能力,所選模型的復(fù)雜度往往會很高,這種現(xiàn)象稱為過擬合。所表現(xiàn)的就是模型訓(xùn)練時候的誤差很小,但在測試的時候誤差很大。
產(chǎn)生的原因
因為參數(shù)太多,會導(dǎo)致我們的模型復(fù)雜度上升,容易過擬合
權(quán)值學(xué)習(xí)迭代次數(shù)足夠多(Overtraining),擬合了訓(xùn)練數(shù)據(jù)中的噪聲和訓(xùn)練樣例中沒有代表性的特征.
解決方法
交叉驗證法
減少特征
正則化
權(quán)值衰減
驗證數(shù)據(jù)
線性分類器與非線性分類器的區(qū)別以及優(yōu)劣
如果模型是參數(shù)的線性函數(shù),并且存在線性分類面,那么就是線性分類器,否則不是。
常見的線性分類器有:LR,貝葉斯分類,單層感知機、線性回歸
常見的非線性分類器:決策樹、RF、GBDT、多層感知機
SVM兩種都有(看線性核還是高斯核)
線性分類器速度快、編程方便,但是可能擬合效果不會很好
非線性分類器編程復(fù)雜,但是效果擬合能力強
特征比數(shù)據(jù)量還大時,選擇什么樣的分類器?
線性分類器,因為維度高的時候,數(shù)據(jù)一般在維度空間里面會比較稀疏,很有可能線性可分
對于維度很高的特征,你是選擇線性還是非線性分類器?
理由同上
對于維度極低的特征,你是選擇線性還是非線性分類器?
非線性分類器,因為低維空間可能很多特征都跑到一起了,導(dǎo)致線性不可分
樣本不均衡如何解決
主要三個方面,數(shù)據(jù),模型和評估方法。
數(shù)據(jù)上重采樣和欠采樣,使之均衡;
模型上選對樣本不均衡問題不敏感的模型,和算法集成技術(shù),如決策樹,不能用KNN;
評估方法,用查全率,查準(zhǔn)率之類
重采樣(resampling)技術(shù):
(1).隨機欠采樣
隨機欠采樣的目標(biāo)是通過隨機地消除占多數(shù)的類的樣本來平衡類分布。
優(yōu)點
它可以提升運行時間;并且當(dāng)訓(xùn)練數(shù)據(jù)集很大時,可以通過減少樣本數(shù)量來解決存儲問題。
缺點
它會丟棄對構(gòu)建規(guī)則分類器很重要的有價值的潛在信息。
被隨機欠采樣選取的樣本可能具有偏差。它不能準(zhǔn)確代表大多數(shù)。
(2).隨機過采樣(Random Over-Sampling)
過采樣(Over-Sampling)通過隨機復(fù)制少數(shù)類來增加其中的實例數(shù)量,從而可增加樣本中少數(shù)類的代表性。
優(yōu)點
與欠采樣不同,這種方法不會帶來信息損失。
表現(xiàn)優(yōu)于欠采樣。
缺點
由于復(fù)制少數(shù)類事件,它加大了過擬合的可能性。
(3). 信息性過采樣:合成少數(shù)類過采樣技術(shù)
直接復(fù)制少數(shù)類實例并將其添加到主數(shù)據(jù)集時。從少數(shù)類中把一個數(shù)據(jù)子集作為一個實例取走,接著創(chuàng)建相似的新合成的實例。這些合成的實例接著被添加進原來的數(shù)據(jù)集。新數(shù)據(jù)集被用作樣本以訓(xùn)練分類模型。
優(yōu)點
通過隨機采樣生成的合成樣本而非實例的副本,可以緩解過擬合的問題。
不會損失有價值信息。
缺點
當(dāng)生成合成性實例時,SMOTE 并不會把來自其他類的相鄰實例考慮進來。這導(dǎo)致了類重疊的增加,并會引入額外的噪音。
作者:在河之簡
鏈接:http://www.itdecent.cn/p/ace5051d0023
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。