机器学习算法小结与收割offer遇到的问题
機(jī)器學(xué)習(xí)是做NLP和計(jì)算機(jī)視覺(jué)這類(lèi)應(yīng)用算法的基礎(chǔ),雖然現(xiàn)在深度學(xué)習(xí)模型大行其道,但是懂一些傳統(tǒng)算法的原理和它們之間的區(qū)別還是很有必要的。可以幫助我們做一些模型選擇。本篇博文就總結(jié)一下各種機(jī)器學(xué)習(xí)算法的特點(diǎn)和應(yīng)用場(chǎng)景。本文是筆者結(jié)合自身面試中遇到的問(wèn)題和總結(jié)網(wǎng)絡(luò)上的資源得到的,所有引用已給出鏈接,如侵刪。
機(jī)器學(xué)習(xí)
SVM與LR的區(qū)別
從模型解決問(wèn)題的方式來(lái)看
Linear SVM直觀上是trade-off兩個(gè)量
給定一個(gè)數(shù)據(jù)集,一旦完成Linear SVM的求解,所有數(shù)據(jù)點(diǎn)可以被歸成兩類(lèi)
假設(shè)一個(gè)數(shù)據(jù)集已經(jīng)被Linear SVM求解,那么往這個(gè)數(shù)據(jù)集里面增加或者刪除更多的一類(lèi)點(diǎn)并不會(huì)改變重新求解的Linear SVM平面。不受數(shù)據(jù)分布的影響。
求解LR模型過(guò)程中,每一個(gè)數(shù)據(jù)點(diǎn)對(duì)分類(lèi)平面都是有影響的,它的影響力遠(yuǎn)離它到分類(lèi)平面的距離指數(shù)遞減。換句話(huà)說(shuō),LR的解是受數(shù)據(jù)本身分布影響的。在實(shí)際應(yīng)用中,如果數(shù)據(jù)維度很高,LR模型都會(huì)配合參數(shù)的L1 regularization。
兩者的區(qū)別
兩個(gè)模型對(duì)數(shù)據(jù)和參數(shù)的敏感程度不同,Linear SVM比較依賴(lài)penalty的系數(shù)和數(shù)據(jù)表達(dá)空間的測(cè)度,而(帶正則項(xiàng)的)LR比較依賴(lài)對(duì)參數(shù)做L1 regularization的系數(shù)。但是由于他們或多或少都是線性分類(lèi)器,所以實(shí)際上對(duì)低維度數(shù)據(jù)overfitting的能力都比較有限,相比之下對(duì)高維度數(shù)據(jù),LR的表現(xiàn)會(huì)更加穩(wěn)定,為什么呢?因?yàn)長(zhǎng)inear SVM在計(jì)算margin有多“寬”的時(shí)候是依賴(lài)數(shù)據(jù)表達(dá)上的距離測(cè)度的,換句話(huà)說(shuō)如果這個(gè)測(cè)度不好(badly scaled,這種情況在高維數(shù)據(jù)尤為顯著),所求得的所謂Large margin就沒(méi)有意義了,這個(gè)問(wèn)題即使換用kernel trick(比如用Gaussian kernel)也無(wú)法完全避免。所以使用Linear SVM之前一般都需要先對(duì)數(shù)據(jù)做normalization,而求解LR(without regularization)時(shí)則不需要或者結(jié)果不敏感。
Linear SVM和LR都是線性分類(lèi)器
Linear SVM不直接依賴(lài)數(shù)據(jù)分布,分類(lèi)平面不受一類(lèi)點(diǎn)影響;LR則受所有數(shù)據(jù)點(diǎn)的影響,如果數(shù)據(jù)不同類(lèi)別strongly unbalance一般需要先對(duì)數(shù)據(jù)做balancing。
Linear SVM依賴(lài)數(shù)據(jù)表達(dá)的距離測(cè)度,所以需要對(duì)數(shù)據(jù)先做normalization;LR不受其影響
Linear SVM依賴(lài)penalty的系數(shù),實(shí)驗(yàn)中需要做validation
Linear SVM和LR的performance都會(huì)收到outlier的影響,其敏感程度而言,誰(shuí)更好很難下明確結(jié)論。
balance的方法
過(guò)擬合方面
LR容易欠擬合,準(zhǔn)確度低。
SVM不太容易過(guò)擬合:松弛因子+損失函數(shù)形式
注意SVM的求解方法叫拉格朗日乘子法,而對(duì)于均方誤差的優(yōu)化方法是最小二乘法。
方法的選擇
在Andrew NG的課里講到過(guò):
當(dāng)你的數(shù)據(jù)非常非常非常非常非常大然后完全跑不動(dòng)SVM的時(shí)候,跑LR。SVM適合于小樣本學(xué)習(xí)。多大算是非常非常非常非常非常非常大? 比如幾個(gè)G,幾萬(wàn)維特征,就勉強(qiáng)算大吧...而實(shí)際問(wèn)題上幾萬(wàn)個(gè)參數(shù)實(shí)在完全不算個(gè)事兒,太常見(jiàn)了。隨隨便便就得上spark。讀一遍數(shù)據(jù)就老半天,一天能訓(xùn)練出來(lái)的模型就叫高效了。所以在新時(shí)代,LR其實(shí)反而比以前用的多了=. =
應(yīng)用場(chǎng)景方面不同
擬合程度,樣本量,
距離測(cè)度,數(shù)據(jù)balance
模型簡(jiǎn)單易解釋
如果數(shù)據(jù)特征維度高,svm要使用核函數(shù)來(lái)求解
Note:拉格朗日對(duì)偶沒(méi)有改變最優(yōu)解,但改變了算法復(fù)雜度:原問(wèn)題—樣本維度;對(duì)偶問(wèn)題–樣本數(shù)量。所以 線性分類(lèi)&&樣本維度<樣本數(shù)量:原問(wèn)題求解(liblinear默認(rèn)); 非線性–升維—一般導(dǎo)致 樣本維度>樣本數(shù)量:對(duì)偶問(wèn)題求解
SVM適合處理什么樣的數(shù)據(jù)?
高維稀疏,樣本少。【參數(shù)只與支持向量有關(guān),數(shù)量少,所以需要的樣本少,由于參數(shù)跟維度沒(méi)有關(guān)系,所以可以處理高維問(wèn)題】
機(jī)器學(xué)習(xí)常見(jiàn)算法總結(jié)
機(jī)器學(xué)習(xí)常見(jiàn)算法個(gè)人總結(jié)(面試用)
樸素貝葉斯
樸素貝葉斯的優(yōu)點(diǎn):
對(duì)小規(guī)模的數(shù)據(jù)表現(xiàn)很好,適合多分類(lèi)任務(wù),適合增量式訓(xùn)練。
缺點(diǎn):
對(duì)輸入數(shù)據(jù)的表達(dá)形式很敏感(離散、連續(xù),值極大極小之類(lèi)的)
線性回歸
線性回歸試圖學(xué)得一個(gè)線性模型以盡可能準(zhǔn)確地預(yù)測(cè)實(shí)值輸出標(biāo)記。均方誤差是回歸任務(wù)中最常用的性能度量,基于均方誤差最小化來(lái)進(jìn)行模型求解的方法成為最小二乘法。在線性回歸中,最小二乘法就是試圖找到一條直線,使得所有樣本到直線上的歐式距離之和最小。這個(gè)想法和分類(lèi)問(wèn)題是正好相反的,分類(lèi)問(wèn)題是找到一個(gè)分界面離所有樣本盡可能遠(yuǎn)。
優(yōu)化方法
當(dāng)x矩陣是列滿(mǎn)秩的時(shí)候,可以用最小二乘法,但是求矩陣的逆比較慢
enter description here
enter description here
均方無(wú)法的概率解釋
假設(shè)根據(jù)特征的預(yù)測(cè)結(jié)果與實(shí)際結(jié)果有誤差∈ (i) ,那么預(yù)測(cè)結(jié)果θ T x (i) 和真實(shí)結(jié)果y (i) 滿(mǎn)足下
式:
enter description here
一般來(lái)講,誤差滿(mǎn)足平均值為 0 的高斯分布,也就是正態(tài)分布。那么 x 和 y 的條件概率也就
是
enter description here
?
用條件概率最大似然估計(jì)法得到:
enter description here
LR回歸
enter description here
?
回歸用來(lái)分類(lèi) 0/1 問(wèn)題,也就是預(yù)測(cè)結(jié)果屬于 0 或者 1 的二值分類(lèi)問(wèn)題
enter description here
仍然求的是最大似然估計(jì),然后求導(dǎo),得到迭代公式結(jié)果為,梯度下降法:
enter description here
優(yōu)化問(wèn)題的求解方法
[Math] 常見(jiàn)的幾種最優(yōu)化方法
大部分的機(jī)器學(xué)習(xí)算法的本質(zhì)都是建立優(yōu)化模型,通過(guò)最優(yōu)化方法對(duì)目標(biāo)函數(shù)(或損失函數(shù))進(jìn)行優(yōu)化,從而訓(xùn)練出最好的模型。常見(jiàn)的最優(yōu)化方法有梯度下降法、牛頓法和擬牛頓法、共軛梯度法等等。
梯度下降法
優(yōu)化思想
當(dāng)目標(biāo)函數(shù)是凸函數(shù)時(shí),梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度下降法的速度也未必是最快的。梯度下降法的優(yōu)化思想是用當(dāng)前位置負(fù)梯度方向作為搜索方向,因?yàn)樵摲较驗(yàn)楫?dāng)前位置的最快下降方向,所以也被稱(chēng)為是”最速下降法“。最速下降法越接近目標(biāo)值,步長(zhǎng)越小,前進(jìn)越慢。
缺點(diǎn)
梯度下降法的最大問(wèn)題就是會(huì)陷入局部最優(yōu),靠近極小值時(shí)收斂速度減慢。
批量梯度下降法
最小化所有訓(xùn)練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解,即求解的參數(shù)是使得風(fēng)險(xiǎn)函數(shù)最小,但是對(duì)于大規(guī)模樣本問(wèn)題效率低下。
隨機(jī)梯度下降法
最小化每條樣本的損失函數(shù),雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向, 但是大的整體的方向是向全局最優(yōu)解的,最終的結(jié)果往往是在全局最優(yōu)解附近,適用于大規(guī)模訓(xùn)練樣本情況。
隨機(jī)梯度下降是通過(guò)每個(gè)樣本來(lái)迭代更新一次,如果樣本量很大的情況(例如幾十萬(wàn)),那么可能只用其中幾萬(wàn)條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對(duì)比上面的批量梯度下降,迭代一次需要用到十幾萬(wàn)訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話(huà)就需要遍歷訓(xùn)練樣本10次。但是,SGD伴隨的一個(gè)問(wèn)題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
牛頓法
牛頓法是一種在實(shí)數(shù)域和復(fù)數(shù)域上近似求解方程的方法。方法使用函數(shù)f (x)的泰勒級(jí)數(shù)的前面幾項(xiàng)來(lái)尋找方程f (x) = 0的根。牛頓法最大的特點(diǎn)就在于它的收斂速度很快。
迭代公式
牛頓法比梯度下降法快
牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說(shuō)的話(huà),比如你想找一條最短的路徑走到一個(gè)盆地的最底部,梯度下降法每次只從你當(dāng)前所處位置選一個(gè)坡度最大的方向走一步,牛頓法在選擇方向時(shí),不僅會(huì)考慮坡度是否夠大,還會(huì)考慮你走了一步之后,坡度是否會(huì)變得更大。所以,可以說(shuō)牛頓法比梯度下降法看得更遠(yuǎn)一點(diǎn),能更快地走到最底部。
但是牛頓法要算hessian矩陣的逆,比較費(fèi)時(shí)間。
擬牛頓法
擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來(lái)近似Hessian矩陣的逆,從而簡(jiǎn)化了運(yùn)算的復(fù)雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時(shí)知道目標(biāo)函數(shù)的梯度。通過(guò)測(cè)量梯度的變化,構(gòu)造一個(gè)目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類(lèi)方法大大優(yōu)于最速下降法,尤其對(duì)于困難的問(wèn)題。另外,因?yàn)閿M牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時(shí)比牛頓法更為有效。
拉格朗日法
拉格朗日乘數(shù)法
拉格朗日乘子法主要用于解決約束優(yōu)化問(wèn)題,它的基本思想就是通過(guò)引入拉格朗日乘子來(lái)將含有n個(gè)變量和k個(gè)約束條件的約束優(yōu)化問(wèn)題轉(zhuǎn)化為含有(n+k)個(gè)變量的無(wú)約束優(yōu)化問(wèn)題。拉格朗日乘子背后的數(shù)學(xué)意義是其為約束方程梯度線性組合中每個(gè)向量的系數(shù)。
通過(guò)引入拉格朗日乘子建立極值條件,對(duì)n個(gè)變量分別求偏導(dǎo)對(duì)應(yīng)了n個(gè)方程,然后加上k個(gè)約束條件(對(duì)應(yīng)k個(gè)拉格朗日乘子)一起構(gòu)成包含了(n+k)變量的(n+k)個(gè)方程的方程組問(wèn)題,這樣就能根據(jù)求方程組的方法對(duì)其進(jìn)行求解。
機(jī)器學(xué)習(xí)算法選擇
機(jī)器學(xué)習(xí)算法選擇
隨機(jī)森林平均來(lái)說(shuō)最強(qiáng),但也只在9.9%的數(shù)據(jù)集上拿到了第一,優(yōu)點(diǎn)是鮮有短板。SVM的平均水平緊隨其后,在10.7%的數(shù)據(jù)集上拿到第一。神經(jīng)網(wǎng)絡(luò)(13.2%)和boosting(~9%)表現(xiàn)不錯(cuò)。數(shù)據(jù)維度越高,隨機(jī)森林就比AdaBoost強(qiáng)越多,但是整體不及SVM2。數(shù)據(jù)量越大,神經(jīng)網(wǎng)絡(luò)就越強(qiáng)。
貝葉斯
是相對(duì)容易理解的一個(gè)模型,至今依然被垃圾郵件過(guò)濾器使用。
K近鄰
典型的例子是KNN,它的思路就是——對(duì)于待判斷的點(diǎn),找到離它最近的幾個(gè)數(shù)據(jù)點(diǎn),根據(jù)它們的類(lèi)型決定待判斷點(diǎn)的類(lèi)型。
它的特點(diǎn)是完全跟著數(shù)據(jù)走,沒(méi)有數(shù)學(xué)模型可言。
三要素:
k值的選擇
所以一般k會(huì)取一個(gè)較小的值,然后用過(guò)交叉驗(yàn)證來(lái)確定
這里所謂的交叉驗(yàn)證就是將樣本劃分一部分出來(lái)為預(yù)測(cè)樣本,比如95%訓(xùn)練,5%預(yù)測(cè),然后k分別取1,2,3,4,5之類(lèi)的,進(jìn)行預(yù)測(cè),計(jì)算最后的分類(lèi)誤差,選擇誤差最小的k
分類(lèi)決策規(guī)則
找到最近的k個(gè)實(shí)例之后,可以計(jì)算平均值作為預(yù)測(cè)值,也可以給這k個(gè)實(shí)例加上一個(gè)權(quán)重再求平均值,這個(gè)權(quán)重與度量距離成反比(越近權(quán)重越大)
優(yōu)缺點(diǎn):
優(yōu)點(diǎn)
缺點(diǎn)
KD樹(shù)
KD樹(shù)是一個(gè)二叉樹(shù),表示對(duì)K維空間的一個(gè)劃分,可以進(jìn)行快速檢索
構(gòu)造KD樹(shù)
在k維的空間上循環(huán)找子區(qū)域的中位數(shù)進(jìn)行劃分的過(guò)程。
假設(shè)現(xiàn)在有K維空間的數(shù)據(jù)集: $T={x_1,x_2,x_3,…x_n}$, $xi={a_1,a_2,a_3..a_k}$
KD樹(shù)的搜索
log(n)
決策樹(shù)
決策樹(shù)的特點(diǎn)是它總是在沿著特征做切分。隨著層層遞進(jìn),這個(gè)劃分會(huì)越來(lái)越細(xì)。
因?yàn)樗軌蛏汕逦幕谔卣?feature)選擇不同預(yù)測(cè)結(jié)果的樹(shù)狀結(jié)構(gòu)
隨機(jī)森林
器學(xué)習(xí)崗位面試問(wèn)題匯總 之 集成學(xué)習(xí)
基本概念
天池離線賽 - 移動(dòng)推薦算法(四):基于LR, RF, GBDT等模型的預(yù)測(cè)
它首先隨機(jī)選取不同的特征(feature)和訓(xùn)練樣本(training sample)bagging,生成大量的決策樹(shù),然后綜合這些決策樹(shù)的結(jié)果來(lái)進(jìn)行最終的分類(lèi)。
隨機(jī)森林在現(xiàn)實(shí)分析中被大量使用,它相對(duì)于決策樹(shù),在準(zhǔn)確性上有了很大的提升
適用場(chǎng)景:數(shù)據(jù)維度相對(duì)低(幾十維),同時(shí)對(duì)準(zhǔn)確性有較高要求時(shí)。
參數(shù)調(diào)節(jié)
是一種基于決策樹(shù)基模型的集成學(xué)習(xí)方法,其核心思想是通過(guò)特征采樣來(lái)降低訓(xùn)練方差,提高集成泛化能力。
max_depth 屬于基學(xué)習(xí)器參數(shù),它控制著每個(gè)決策樹(shù)的深度,一般來(lái)說(shuō),決策樹(shù)越深,模型擬合的偏差越小,但同時(shí)擬合的開(kāi)銷(xiāo)也越大。一般地,需要保證足夠的樹(shù)深度,但也不宜過(guò)大。
RF與傳統(tǒng)bagging的區(qū)別
(1)樣本采樣:RF有放回選取和整體樣本數(shù)目相同的樣本,一般bagging用的樣本<總體樣本數(shù)
(2)特征采樣:RF對(duì)特征進(jìn)行采樣,BAGGING用全部特征
RF的優(yōu)點(diǎn)
(1)在數(shù)據(jù)集上表現(xiàn)良好,在當(dāng)先很多數(shù)據(jù)集上要優(yōu)于現(xiàn)有的很多算法
(2)可以并行,且不是對(duì)所有屬性進(jìn)行訓(xùn)練,訓(xùn)練速度相對(duì)較快
(3)防止過(guò)擬合
(4)能夠處理高維特征,且不用做特征選擇,可以給出特征重要性的評(píng)分,訓(xùn)練過(guò)程中,可以檢測(cè)到feature的相互影響
缺點(diǎn)
①樹(shù)越多,隨機(jī)森林的表現(xiàn)才會(huì)越穩(wěn)定。所以在實(shí)際使用隨機(jī)森林的時(shí)候需要注意如果樹(shù)不夠多的時(shí)候,可能會(huì)導(dǎo)致不穩(wěn)定的情況。
②不平衡數(shù)據(jù)集。分類(lèi)結(jié)果會(huì)傾向于樣本多的類(lèi)別,所以訓(xùn)練樣本中各類(lèi)別的數(shù)據(jù)必須相同。Breiman在實(shí)際實(shí)現(xiàn)該算法的時(shí)候有考慮到了這個(gè)問(wèn)題,采取了根據(jù)樣本類(lèi)別比例對(duì)決策樹(shù)的判斷賦予不同權(quán)值的方法
RF的學(xué)習(xí)算法
ID3:離散
C4.5:連續(xù)
CART:離散或連續(xù)
GBDT
基本概念
GBDT(梯度迭代決策樹(shù))是一種基于決策回歸樹(shù)的Boosting模型,其核心思想是將提升過(guò)程建立在對(duì)“之前殘差的負(fù)梯度表示”的回歸擬合上,通過(guò)不斷的迭代實(shí)現(xiàn)降低偏差的目的。
GBDT設(shè)置大量基學(xué)習(xí)器的目的是為了集成來(lái)降低偏差,所以 n_estimators (基決策器的個(gè)數(shù))一般會(huì)設(shè)置得大一些。
對(duì)于GBDT模型來(lái)說(shuō),其每個(gè)基學(xué)習(xí)器是一個(gè)弱學(xué)習(xí)器(欠擬合),決策樹(shù)的深度一般設(shè)置得比較小,以此來(lái)降低方差(模型復(fù)雜度低),之后在經(jīng)過(guò)殘差逼近迭代來(lái)降低偏差,從而形成強(qiáng)學(xué)習(xí)器。
GBDT與傳統(tǒng)Boosting(AdaBoost)的區(qū)別
Boosting算法,但與傳統(tǒng)boosting有區(qū)別、擬合上一步的殘差,傳統(tǒng)意義上說(shuō)不能并行,只能用CART回歸樹(shù),降低偏差
迭代思路不同:傳統(tǒng)boosting對(duì)訓(xùn)練樣本進(jìn)行加權(quán),GBDT則是擬合殘差,下一棵樹(shù)沿殘差梯度下降的方向進(jìn)行擬合
GBDT正則化的方式
(1)同AdaBoost,通過(guò)步長(zhǎng)
(2)CART樹(shù)的剪枝
(3)子抽樣,不放回,SGBT,可以實(shí)現(xiàn)一定程度上的并行
GBDT的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):(1)調(diào)參少的情況下,準(zhǔn)確率也高(SVM)
(2)靈活處理各種數(shù)據(jù),包括連續(xù)和離散,無(wú)需歸一化處理(LR)
(3)模型非線性變換多,特征不用經(jīng)過(guò)復(fù)雜處理即可表達(dá)復(fù)雜信息
(4)從一定程度上可以防止過(guò)擬合,小步而非大步擬合
缺點(diǎn):(1)一般來(lái)說(shuō)傳統(tǒng)的GBDT只能串行,但是也可以通過(guò)子采樣比例(0.5~0.8)實(shí)現(xiàn)某種意義上的并行,但一般這就不叫GBDT了。
(2)對(duì)異常值敏感,但是可以采取一些健壯的損失函數(shù)緩解,如Huber./Quantile損失函數(shù)
GBDT預(yù)測(cè)時(shí)每一棵樹(shù)是否能并行?
可以,訓(xùn)練需串行,預(yù)測(cè)可并行
GBDT和RF的區(qū)別與聯(lián)系
聯(lián)系:多棵樹(shù)進(jìn)行訓(xùn)練+多棵樹(shù)共同進(jìn)行預(yù)測(cè)
區(qū)別:(1)取樣方式
(2)預(yù)測(cè)時(shí),RF多數(shù)投票,GBDT加權(quán)累加
(3)樣本的關(guān)系—>并行和串行
(4)學(xué)期器的種類(lèi),GBDT只能用CART回歸樹(shù) (因?yàn)橐?jì)算連續(xù)梯度)
(5)對(duì)異常值的敏感性
(6)通過(guò)減少方差/偏差提高性能
XGBOOST相比于GBDT有何不同?XGBOOST為什么快?XGBOOST如何支持并行?
(1)GBDT只能用CART回歸樹(shù),而XGBOOST可以用CART樹(shù)(回歸/分類(lèi)),還可以用用想LR之類(lèi)的線性模型,相當(dāng)于加入L1、L2正則項(xiàng)的LR或線性回歸
(2)列抽樣,可以并行,不是樹(shù)粒度上的,是特征粒度上的,block塊,并行計(jì)算所有信息增益等信息
(3)可處理多種特征,且對(duì)缺失值也不用進(jìn)行處理
(4)GBDT在殘差梯度下降方向擬合,一階導(dǎo);XGBOOST泰勒展開(kāi)至二階導(dǎo)
(5)近似直方圖算法,高效生產(chǎn)候選分割點(diǎn)
(6)shrink,縮減,葉子節(jié)點(diǎn)同時(shí)乘,防止過(guò)擬合
(7)可以自己定義評(píng)價(jià)函數(shù)
(8)代價(jià)函數(shù)含正則化項(xiàng),防止過(guò)擬合
ababoost
daBoost的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):(1)容易理解、實(shí)現(xiàn)簡(jiǎn)單
(2)易編碼
(3)分類(lèi)精度高
(4)可以使用各種回歸模型構(gòu)建基分類(lèi)器,非常靈活
(5)作為二元分類(lèi)器是,構(gòu)造簡(jiǎn)單、結(jié)果可理解、少參數(shù)
(6)相對(duì)來(lái)說(shuō),不宜過(guò)擬合
缺點(diǎn):(1)只能串行
(2)對(duì)異常值敏感 boosting對(duì)異常值敏感
集成學(xué)習(xí)與方差偏差
我覺(jué)得,避免偏差的話(huà),首先我們需要盡量選擇正確的模型,所謂“對(duì)癥下藥”。我覺(jué)得有位同行把機(jī)器學(xué)習(xí)算法的使用比作醫(yī)生開(kāi)藥方,是非常不錯(cuò)的比喻。我們要根據(jù)數(shù)據(jù)的分布和特點(diǎn),選擇合適的算法。
其次,有了合適的算法,我們還要慎重選擇數(shù)據(jù)集的大小。通常訓(xùn)練數(shù)據(jù)集越大越好,但是當(dāng)大到數(shù)據(jù)集已經(jīng)對(duì)整體所有數(shù)據(jù)有了一定的代表性之后,再多的數(shù)據(jù)已經(jīng)不能提升模型的準(zhǔn)確性,反而帶來(lái)模型訓(xùn)練的計(jì)算量增加。但是,訓(xùn)練數(shù)據(jù)太少的話(huà)是一定不好的,這會(huì)帶來(lái)過(guò)擬合的問(wèn)題,過(guò)擬合就是模型復(fù)雜度太高,方差很大,不同的數(shù)據(jù)集訓(xùn)練出來(lái)的模型變化非常大
偏差與方差
從集成學(xué)習(xí)到模型的偏差和方差的理解
使用sklearn進(jìn)行集成學(xué)習(xí)——理論
GBDT算法特征重要程度計(jì)算
機(jī)器學(xué)習(xí)中,有哪些特征選擇的工程方法?
為什么說(shuō)bagging是減少variance,而boosting是減少bias?
從機(jī)制上講
為什么說(shuō)bagging是減少variance,而boosting是減少bias
若各子模型獨(dú)立,則有$$Var(\frac{\sum X_i}{n})=\frac{Var(X_i)}{n}$$,此時(shí)可以顯著降低variance。若各子模型完全相同,則$$Var(\frac{\sum X_i}{n})=Var(X_i)$$
,此時(shí)不會(huì)降低variance。
Bagging 是 Bootstrap Aggregating 的簡(jiǎn)稱(chēng),意思就是再取樣 (Bootstrap) 然后在每個(gè)樣本上訓(xùn)練出來(lái)的模型取平均。
bagging的偏差
,所以從偏差上看沒(méi)有降低,但是由于各個(gè)子模型是單獨(dú)訓(xùn)練的,有一定的獨(dú)立性,所以方差降低比較多,提高泛化能力。特別是random forest這種方式,不僅對(duì)樣本取樣,還有特征取樣。
?
boosting從優(yōu)化角度來(lái)看,是用forward-stagewise這種貪心法去最小化損失函數(shù),在這個(gè)過(guò)程中偏差是逐步減小的,而由于各階段分類(lèi)器之間相關(guān)性較強(qiáng),方差降低得少。
舉個(gè)例子
gbdt是boosting的方式,它的決策樹(shù)的深度比較小,模型會(huì)欠擬合,剛開(kāi)始偏差大,后來(lái)就慢慢變小了。
為什么把特征組合之后還能提升
反正這些基本都是增強(qiáng)了特征的表達(dá)能力,或者說(shuō)更容易線性可分吧
總體性問(wèn)題
分類(lèi)與回歸的區(qū)別
分類(lèi)和回歸的區(qū)別在于輸出變量的類(lèi)型。
定量輸出稱(chēng)為回歸,或者說(shuō)是連續(xù)變量預(yù)測(cè);
定性輸出稱(chēng)為分類(lèi),或者說(shuō)是離散變量預(yù)測(cè)。
生成模型與判別模型的區(qū)別
有監(jiān)督機(jī)器學(xué)習(xí)方法可以分為生成方法和判別方法(常見(jiàn)的生成方法有混合高斯模型、樸素貝葉斯法和隱形馬爾科夫模型等,常見(jiàn)的判別方法有SVM、LR等),生成方法學(xué)習(xí)出的是生成模型,判別方法學(xué)習(xí)出的是判別模型。
監(jiān)督學(xué)習(xí),預(yù)測(cè)時(shí),一般都是在求p(Y|X)生成模型: 從數(shù)據(jù)中學(xué)習(xí)聯(lián)合概率分布p(X,Y),然后利用貝葉斯公式求:$$p(Y|X)=\frac{P(X,Y)}{\Sigma P(X,Y_{i} )} $$,比如說(shuō)樸素貝葉斯
判別模型:直接學(xué)習(xí)P(Y|X), 它直觀輸入什么特征X,就直接預(yù)測(cè)出最可能的Y; 典型的模型包括:LR, SVM,CRF,Boosting,Decision tree....
生成方法的特點(diǎn):生成方法可以還原聯(lián)合概率分布,而判別方法則不能;生成方法的學(xué)習(xí)收斂速度更快,即當(dāng)樣本容量增加的時(shí)候,學(xué)習(xí)的模型可以更快的收斂于真實(shí)的模型;當(dāng)存在隱變量時(shí),仍可以用生成方法學(xué)習(xí),此時(shí)判別方法就不能用。
判別方法的特點(diǎn):判別方法直接學(xué)習(xí)的是條件概率或者決策函數(shù),直接面對(duì)預(yù)測(cè),往往學(xué)習(xí)的準(zhǔn)確率更高;由于直接學(xué)習(xí)或者,可以對(duì)數(shù)據(jù)進(jìn)行各種程度上的抽象、定義特征并使用特征,因此可以簡(jiǎn)化學(xué)習(xí)問(wèn)題。
精確率、召回率、F1 值、ROC、AUC 各自的優(yōu)缺點(diǎn)是什么?
enter description here
精確率(Precision)為T(mén)P/(TP+FP)
召回率(Recall)為T(mén)P/(TP+FN)
F1值是精確率和召回率的調(diào)和均值,即F1=2PR/(P+R)
ROC曲線(Receiver operating characteristic curve),ROC曲線其實(shí)是多個(gè)混淆矩陣的結(jié)果組合,如果在上述模型中我們沒(méi)有定好閾值,而是將模型預(yù)測(cè)結(jié)果從高到低排序,將每個(gè)概率值依次作為閾值,那么就有多個(gè)混淆矩陣。對(duì)于每個(gè)混淆矩陣,我們計(jì)算兩個(gè)指標(biāo)TPR(True positive rate)和FPR(False positive rate),TPR=TP/(TP+FN)=Recall,TPR就是召回率,FPR=FP/(FP+TN)。
enter description here
?
在畫(huà)ROC曲線的過(guò)程中,若有一個(gè)閾值,高于此閾值的均為壞人,低于此閾值的均為好人,則認(rèn)為此模型已完美的區(qū)分開(kāi)好壞用戶(hù)。此時(shí)壞用戶(hù)的預(yù)測(cè)準(zhǔn)確率(TPR)為1,同時(shí)好用戶(hù)的預(yù)測(cè)錯(cuò)誤率(FPR)為0,ROC曲線經(jīng)過(guò)(0,1)點(diǎn)。AUC(Area Under Curve)的值為ROC曲線下面的面積,若如上所述模型十分準(zhǔn)確,則AUC為1。但現(xiàn)實(shí)生活中尤其是工業(yè)界不會(huì)有如此完美的模型,一般AUC均在0.5到1之間,AUC越高,模型的區(qū)分能力越好
若AUC=0.5,即與上圖中紅線重合,表示模型的區(qū)分能力與隨機(jī)猜測(cè)沒(méi)有差別。
所以AUC表征的是模型的分類(lèi)能力。
過(guò)擬合
如果一味的去提高訓(xùn)練數(shù)據(jù)的預(yù)測(cè)能力,所選模型的復(fù)雜度往往會(huì)很高,這種現(xiàn)象稱(chēng)為過(guò)擬合。所表現(xiàn)的就是模型訓(xùn)練時(shí)候的誤差很小,但在測(cè)試的時(shí)候誤差很大。
產(chǎn)生的原因
因?yàn)閰?shù)太多,會(huì)導(dǎo)致我們的模型復(fù)雜度上升,容易過(guò)擬合
權(quán)值學(xué)習(xí)迭代次數(shù)足夠多(Overtraining),擬合了訓(xùn)練數(shù)據(jù)中的噪聲和訓(xùn)練樣例中沒(méi)有代表性的特征.
解決方法
交叉驗(yàn)證法
減少特征
正則化
權(quán)值衰減
驗(yàn)證數(shù)據(jù)
線性分類(lèi)器與非線性分類(lèi)器的區(qū)別以及優(yōu)劣
如果模型是參數(shù)的線性函數(shù),并且存在線性分類(lèi)面,那么就是線性分類(lèi)器,否則不是。
常見(jiàn)的線性分類(lèi)器有:LR,貝葉斯分類(lèi),單層感知機(jī)、線性回歸
常見(jiàn)的非線性分類(lèi)器:決策樹(shù)、RF、GBDT、多層感知機(jī)
SVM兩種都有(看線性核還是高斯核)
線性分類(lèi)器速度快、編程方便,但是可能擬合效果不會(huì)很好
非線性分類(lèi)器編程復(fù)雜,但是效果擬合能力強(qiáng)
特征比數(shù)據(jù)量還大時(shí),選擇什么樣的分類(lèi)器?
線性分類(lèi)器,因?yàn)榫S度高的時(shí)候,數(shù)據(jù)一般在維度空間里面會(huì)比較稀疏,很有可能線性可分
對(duì)于維度很高的特征,你是選擇線性還是非線性分類(lèi)器?
理由同上
對(duì)于維度極低的特征,你是選擇線性還是非線性分類(lèi)器?
非線性分類(lèi)器,因?yàn)榈途S空間可能很多特征都跑到一起了,導(dǎo)致線性不可分
樣本不均衡如何解決
從重采樣到數(shù)據(jù)合成
主要三個(gè)方面,數(shù)據(jù),模型和評(píng)估方法。
重采樣(resampling)技術(shù):
(1). 隨機(jī)欠采樣
隨機(jī)欠采樣的目標(biāo)是通過(guò)隨機(jī)地消除占多數(shù)的類(lèi)的樣本來(lái)平衡類(lèi)分布。
優(yōu)點(diǎn)
它可以提升運(yùn)行時(shí)間;并且當(dāng)訓(xùn)練數(shù)據(jù)集很大時(shí),可以通過(guò)減少樣本數(shù)量來(lái)解決存儲(chǔ)問(wèn)題。
缺點(diǎn)
它會(huì)丟棄對(duì)構(gòu)建規(guī)則分類(lèi)器很重要的有價(jià)值的潛在信息。
被隨機(jī)欠采樣選取的樣本可能具有偏差。它不能準(zhǔn)確代表大多數(shù)。
(2). 隨機(jī)過(guò)采樣(Random Over-Sampling)
過(guò)采樣(Over-Sampling)通過(guò)隨機(jī)復(fù)制少數(shù)類(lèi)來(lái)增加其中的實(shí)例數(shù)量,從而可增加樣本中少數(shù)類(lèi)的代表性。
優(yōu)點(diǎn)
與欠采樣不同,這種方法不會(huì)帶來(lái)信息損失。
表現(xiàn)優(yōu)于欠采樣。
缺點(diǎn)
由于復(fù)制少數(shù)類(lèi)事件,它加大了過(guò)擬合的可能性。
(3). 信息性過(guò)采樣:合成少數(shù)類(lèi)過(guò)采樣技術(shù)
直接復(fù)制少數(shù)類(lèi)實(shí)例并將其添加到主數(shù)據(jù)集時(shí)。從少數(shù)類(lèi)中把一個(gè)數(shù)據(jù)子集作為一個(gè)實(shí)例取走,接著創(chuàng)建相似的新合成的實(shí)例。這些合成的實(shí)例接著被添加進(jìn)原來(lái)的數(shù)據(jù)集。新數(shù)據(jù)集被用作樣本以訓(xùn)練分類(lèi)模型。
優(yōu)點(diǎn)
通過(guò)隨機(jī)采樣生成的合成樣本而非實(shí)例的副本,可以緩解過(guò)擬合的問(wèn)題。
不會(huì)損失有價(jià)值信息。
缺點(diǎn)
當(dāng)生成合成性實(shí)例時(shí),SMOTE 并不會(huì)把來(lái)自其他類(lèi)的相鄰實(shí)例考慮進(jìn)來(lái)。這導(dǎo)致了類(lèi)重疊的增加,并會(huì)引入額外的噪音。
深度學(xué)習(xí)方面的問(wèn)題
機(jī)器學(xué)習(xí)崗位面試問(wèn)題匯總 之 深度學(xué)習(xí)
深度學(xué)習(xí)的實(shí)質(zhì) 及其 與淺層學(xué)習(xí)的區(qū)別
深度學(xué)習(xí)實(shí)質(zhì):多隱層+海量數(shù)據(jù)——>學(xué)習(xí)有用特征—–>提高分類(lèi)或預(yù)測(cè)準(zhǔn)確性
區(qū)別:(1)DL強(qiáng)調(diào)模型深度
(2)DL突出特征學(xué)習(xí)的重要性:特征變換+非人工
BP算法為什么不能適應(yīng)于深度學(xué)習(xí)
BP為傳統(tǒng)多層感知機(jī)的訓(xùn)練方法,<=5層
問(wèn)題:(1)梯度越來(lái)越稀疏(梯度擴(kuò)散<—-非凸目標(biāo)函數(shù))
(2)局部最小
(3)一般,有標(biāo)簽
NOTE:解決其中局部最小值的方法:(1)多組不同隨機(jī)參數(shù),取最好參數(shù) (2)啟發(fā)式優(yōu)化算法:模擬退火 或 遺傳 (3)隨機(jī)梯度下降
CNN卷基層和pooling層的作用
卷積層:特征提取
子采樣層/池化層:縮減輸入數(shù)據(jù)的規(guī)模
DNN常用的激活函數(shù)有哪些,各有什么特點(diǎn)
(1)sigmoid:易飽和(梯度消失),非0均值 (2)tanh,改進(jìn)了sigmoid的第二個(gè)缺點(diǎn),即它是0均值的 (3)ReLU,收斂快(不容易飽和),求梯度簡(jiǎn)單(沒(méi)有指數(shù)計(jì)算,只需要閾值就可以),有稀疏特性。缺點(diǎn)是神經(jīng)元容易壞死。
由于ReLU在x<0時(shí)梯度為0,這樣就導(dǎo)致負(fù)的梯度在這個(gè)ReLU被置零,而且這個(gè)神經(jīng)元有可能再也不會(huì)被任何數(shù)據(jù)激活。如果這個(gè)情況發(fā)生了,那么這個(gè)神經(jīng)元之后的梯度就永遠(yuǎn)是0了,也就是ReLU神經(jīng)元壞死了,不再對(duì)任何數(shù)據(jù)有所響應(yīng)。實(shí)際操作中,如果你的learning rate 很大,那么很有可能你網(wǎng)絡(luò)中的40%的神經(jīng)元都?jí)乃懒?解決relu神經(jīng)元壞死問(wèn)題
當(dāng)然,如果你設(shè)置了一個(gè)合適的較小的learning rate,這個(gè)問(wèn)題發(fā)生的情況其實(shí)也不會(huì)太頻繁。
relu的變種
leaky-relu:
$$f(x)=\alpha x,(x < 0)$$
$$f(x)=x,(x>=0)$$
這里的 α 是一個(gè)很小的常數(shù)。這樣,即修正了數(shù)據(jù)分布,又保留了一些負(fù)軸的值,使得負(fù)軸信息不會(huì)全部丟失。
Parametric ReLU: 對(duì)于 Leaky ReLU 中的α,通常都是通過(guò)先驗(yàn)知識(shí)人工賦值的。
然而可以觀察到,損失函數(shù)對(duì)α的導(dǎo)數(shù)我們是可以求得的,可不可以將它作為一個(gè)參數(shù)進(jìn)行訓(xùn)練呢
Randomized ReLU:
Randomized Leaky ReLU是 leaky ReLU 的random 版本 ,核心思想就是,在訓(xùn)練過(guò)程中,α 是從一個(gè)高斯分布 U(l,u) 中 隨機(jī)出來(lái)的,然后再測(cè)試過(guò)程中進(jìn)行修正(有點(diǎn)像dropout的用法)
什么樣的資料不適合用深度學(xué)習(xí)?
(1)數(shù)據(jù)量小 (2)沒(méi)有局部相關(guān)性
什么是共線性,跟過(guò)擬合有何關(guān)聯(lián)?
共線性:高度相關(guān)—>冗余——>過(guò)擬合
解決:排除相關(guān)、加入權(quán)重正則
pooling技術(shù)有哪些,有什么作用,有什么區(qū)別
pooling的結(jié)果是使得特征減少,參數(shù)減少,但pooling的目的并不僅在于此。pooling目的是為了保持某種不變性(平移),常用的有mean-pooling,max-pooling和Stochastic-pooling三種。
mean-pooling,即對(duì)鄰域內(nèi)特征點(diǎn)只求平均,max-pooling,即對(duì)鄰域內(nèi)特征點(diǎn)取最大。根據(jù)相關(guān)理論,特征提取的誤差主要來(lái)自?xún)蓚€(gè)方面:(1)鄰域大小受限造成的估計(jì)值方差增大;(2)卷積層參數(shù)誤差造成估計(jì)均值的偏移。一般來(lái)說(shuō),mean-pooling能減小第一種誤差,更多的保留圖像的背景信息,max-pooling能減小第二種誤差,更多的保留紋理信息。Stochastic-pooling則介于兩者之間,通過(guò)對(duì)像素點(diǎn)按照數(shù)值大小賦予概率,再按照概率進(jìn)行亞采樣,在平均意義上,與mean-pooling近似,在局部意義上,則服從max-pooling的準(zhǔn)則。
LeCun的“Learning Mid-Level Features For Recognition”對(duì)前兩種pooling方法有比較詳細(xì)的分析對(duì)比,如果有需要可以看下這篇論文。
其實(shí)pooling的目的就是為了使參數(shù)量減少,因?yàn)楦静恍枰敲炊鄥?shù)。pooling也只能做到在極小范圍內(nèi)的平移不變性,旋轉(zhuǎn)和 伸縮是做不到的。其實(shí)不變性都是特征工程時(shí)代的概念了,現(xiàn)在在數(shù)據(jù)量極大的情況下,樣本覆蓋了足夠多的variance,dnn自動(dòng)就會(huì)把各種不變性學(xué)習(xí)出來(lái)
使用Pooling的目的之一是獲取一定的特征不變性,目前用的比較多的是Max Pooling。
max pooling是DCNN的非線性來(lái)源之一,然后在現(xiàn)代的深度神經(jīng)網(wǎng)絡(luò)中,最大的非線性來(lái)源是ReLU類(lèi)的激活函數(shù)。
因此,目前對(duì)使用Pooling也存在一定的爭(zhēng)議,一些最新的工作已經(jīng)不在網(wǎng)絡(luò)的中間層使用pooling層了(或者只在最后一層使用average pooling,比如說(shuō)network in network)。
缺點(diǎn)在于會(huì)丟失信息。
pooling的反向傳播
對(duì)于mean pooling,真的是好簡(jiǎn)單:假設(shè)pooling的窗大小是2x2, 在forward的時(shí)候啊,就是在前面卷積完的輸出上依次不重合的取2x2的窗平均,得到一個(gè)值就是當(dāng)前mean pooling之后的值。backward的時(shí)候,把一個(gè)值分成四等分放到前面2x2的格子里面就好了。如下
forward: [1 3; 2 2] -> 2
backward: 2 -> [0.5 0.5; 0.5 0.5]
max pooling就稍微復(fù)雜一點(diǎn),forward的時(shí)候你只需要把2x2窗子里面那個(gè)最大的拿走就好了,backward的時(shí)候你要把當(dāng)前的值放到之前那個(gè)最大的位置,其他的三個(gè)位置都弄成0。如下
forward: [1 3; 2 2] -> 3
backward: 3 -> [0 3; 0 0]
特征選擇的方法
機(jī)器學(xué)習(xí)中,有哪些特征選擇的工程方法?
特征選擇是特征工程中的重要問(wèn)題(另一個(gè)重要的問(wèn)題是特征提取),坊間常說(shuō):數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已。由此可見(jiàn),特征工程尤其是特征選擇在機(jī)器學(xué)習(xí)中占有相當(dāng)重要的地位。
特征選擇方法舉例
計(jì)算每一個(gè)特征與響應(yīng)變量的相關(guān)性:工程上常用的手段有計(jì)算皮爾遜系數(shù)和互信息系數(shù),皮爾遜系數(shù)只能衡量線性相關(guān)性而互信息系數(shù)能夠很好地度量各種相關(guān)性
構(gòu)建單個(gè)特征的模型,通過(guò)模型的準(zhǔn)確性為特征排序,借此來(lái)選擇特征
通過(guò)L1正則項(xiàng)來(lái)選擇特征:L1正則方法具有稀疏解的特性,因此天然具備特征選擇的特性,但是要注意,L1沒(méi)有選到的特征不代表不重要,原因是兩個(gè)具有高相關(guān)性的特征可能只保留了一個(gè),如果要確定哪個(gè)特征重要應(yīng)再通過(guò)L2正則方法交叉檢驗(yàn);
訓(xùn)練能夠對(duì)特征打分的預(yù)選模型:RandomForest和Logistic Regression等都能對(duì)模型的特征打分,通過(guò)打分獲得相關(guān)性后再訓(xùn)練最終模型;
通過(guò)深度學(xué)習(xí)來(lái)進(jìn)行特征選擇:目前這種手段正在隨著深度學(xué)習(xí)的流行而成為一種手段,尤其是在計(jì)算機(jī)視覺(jué)領(lǐng)域,原因是深度學(xué)習(xí)具有自動(dòng)學(xué)習(xí)特征的能力.
特征選擇方法分類(lèi)
特征選擇思維導(dǎo)圖
Filter:過(guò)濾法,按照發(fā)散性或者相關(guān)性對(duì)各個(gè)特征進(jìn)行評(píng)分,設(shè)定閾值或者待選擇閾值的個(gè)數(shù),選擇特征。
Wrapper:包裝法,根據(jù)目標(biāo)函數(shù)(通常是預(yù)測(cè)效果評(píng)分),每次選擇若干特征,或者排除若干特征。
Embedded:集成方法,先使用某些機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個(gè)特征的權(quán)值系數(shù),根據(jù)系數(shù)從大到小選擇特征。類(lèi)似于Filter方法,但是是通過(guò)訓(xùn)練來(lái)確定特征的優(yōu)劣。
降維:PCA LDA等。
Filter過(guò)濾法
使用方差選擇法,先要計(jì)算各個(gè)特征的方差,然后根據(jù)閾值,選擇方差大于閾值的特征
相關(guān)系數(shù)法
使用相關(guān)系數(shù)法,先要計(jì)算各個(gè)特征對(duì)目標(biāo)值的相關(guān)系數(shù)以及相關(guān)系數(shù)的P值
卡方檢驗(yàn)
經(jīng)典的卡方檢驗(yàn)是檢驗(yàn)定性自變量對(duì)定性因變量的相關(guān)性
互信息法
經(jīng)典的互信息也是評(píng)價(jià)定性自變量對(duì)定性因變量的相關(guān)性的
Embedded 集成方法
L1懲罰項(xiàng)降維的原理在于保留多個(gè)對(duì)目標(biāo)值具有同等相關(guān)性的特征中的一個(gè)
樹(shù)模型中GBDT也可用來(lái)作為基模型進(jìn)行特征選擇
降維
將原始的樣本映射到維度更低的樣本空間中。
PCA是為了讓映射后的樣本具有最大的發(fā)散性;而LDA是為了讓映射后的樣本有最好的分類(lèi)性能。所以說(shuō)PCA是一種無(wú)監(jiān)督的降維方法,而LDA是一種有監(jiān)督的降維方法。
LR相關(guān)問(wèn)題
LR與BP
BP神經(jīng)網(wǎng)絡(luò)是否優(yōu)于logistic回歸?
首先,神經(jīng)網(wǎng)絡(luò)的最后一層,也就是輸出層,是一個(gè) Logistic Regression (或者 Softmax Regression ),也就是一個(gè)線性分類(lèi)器,中間的隱含層起到特征提取的作用,把隱含層的輸出當(dāng)作特征,然后再將它送入下一個(gè) Logistic Regression,一層層變換。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,實(shí)際上就是同時(shí)訓(xùn)練特征提取算法以及最后的 Logistic Regression的參數(shù)。為什么要特征提取呢,因?yàn)?Logistic Regression 本身是一個(gè)線性分類(lèi)器,所以,通過(guò)特征提取,我們可以把原本線性不可分的數(shù)據(jù)變得線性可分。要如何訓(xùn)練呢,最簡(jiǎn)單的方法是(隨機(jī),Mini batch)梯度下降法
LR為什么使用sigmoid函數(shù)
源于sigmoid,或者說(shuō)exponential family所具有的最佳性質(zhì),即maximum entropy的性質(zhì)。maximum entropy給了logistic regression一個(gè)很好的數(shù)學(xué)解釋。為什么maximum entropy好呢?entropy翻譯過(guò)來(lái)就是熵,所以maximum entropy也就是最大熵。熵用在概率分布上可以表示這個(gè)分布中所包含的不確定度,熵越大不確定度越大。均勻分布熵最大,因?yàn)榛拘聰?shù)據(jù)是任何值的概率都均等。而我們現(xiàn)在關(guān)心的是,給定某些假設(shè)之后,熵最大的分布。也就是說(shuō)這個(gè)分布應(yīng)該在滿(mǎn)足我假設(shè)的前提下越均勻越好。比如大家熟知的正態(tài)分布,正是假設(shè)已知mean和variance后熵最大的分布。首先,我們?cè)诮nA(yù)測(cè) Y|X,并認(rèn)為 Y|X 服從bernoulli distribution,所以我們只需要知道 P(Y|X);其次我們需要一個(gè)線性模型,所以 P(Y|X) = f(wx)。接下來(lái)我們就只需要知道 f 是什么就行了。而我們可以通過(guò)最大熵原則推出的這個(gè) f,就是sigmoid。
面試問(wèn)了如何在海量數(shù)據(jù)中查找給定部分?jǐn)?shù)據(jù)最相似的top200向量,向量的維度也很高. 因?yàn)橹傲私膺^(guò)其他面螞蟻金服的朋友,也有問(wèn)到這個(gè)題目的
所以反應(yīng)比較快,直接就說(shuō)可以用KD樹(shù),聚類(lèi),hash,
一天之內(nèi)兩連面,還是問(wèn)了很多機(jī)器學(xué)習(xí)算法的東西 為什么LR需要?dú)w一化或者取對(duì)數(shù),為什么LR把特征離散化后效果更好 為什么把特征組合之后還能提升,反正這些基本都是增強(qiáng)了特征的表達(dá)能力,或者更容易線性可分吧
在logistic regression (LR)中,這個(gè)目標(biāo)是什么呢?最大化條件似然度。考慮一個(gè)二值分類(lèi)問(wèn)題,訓(xùn)練數(shù)據(jù)是一堆(特征,標(biāo)記)組合,(x1,y1), (x2,y2), .... 其中x是特征向量,y是類(lèi)標(biāo)記(y=1表示正類(lèi),y=0表示反類(lèi))。LR首先定義一個(gè)條件概率p(y|x;w)。 p(y|x;w)表示給定特征x,類(lèi)標(biāo)記y的概率分布,其中w是LR的模型參數(shù)(一個(gè)超平面)。有了這個(gè)條件概率,就可以在訓(xùn)練數(shù)據(jù)上定義一個(gè)似然函數(shù),然后通過(guò)最大似然來(lái)學(xué)習(xí)w。這是LR模型的基本原理。
為什么LR把特征離散化后效果更好
邏輯回歸屬于廣義線性模型,表達(dá)能力受限;單變量離散化為N個(gè)后,每個(gè)變量有單獨(dú)的權(quán)重,相當(dāng)于為模型引入了非線性,能夠提升模型表達(dá)能力,加大擬合;(啞變量)
特征離散化以后,起到了簡(jiǎn)化了邏輯回歸模型的作用,降低了模型過(guò)擬合的風(fēng)險(xiǎn)。
連續(xù)特征的離散化:在什么情況下將連續(xù)的特征離散化之后可以獲得更好的效果?
在工業(yè)界,很少直接將連續(xù)值作為邏輯回歸模型的特征輸入,而是將連續(xù)特征離散化為一系列0、1特征交給邏輯回歸模型,這樣做的優(yōu)勢(shì)有以下幾點(diǎn):
李沐曾經(jīng)說(shuō)過(guò):模型是使用離散特征還是連續(xù)特征,其實(shí)是一個(gè)“海量離散特征+簡(jiǎn)單模型” 同 “少量連續(xù)特征+復(fù)雜模型”的權(quán)衡。既可以離散化用線性模型,也可以用連續(xù)特征加深度學(xué)習(xí)。就看是喜歡折騰特征還是折騰模型了。通常來(lái)說(shuō),前者容易,而且可以n個(gè)人一起并行做,有成功經(jīng)驗(yàn);后者目前看很贊,能走多遠(yuǎn)還須拭目以待。
如何用LR建立一個(gè)廣告點(diǎn)擊的模型:
特征提取—>特征處理(離散化、歸一化、onehot等)—>找出候選集—->模型訓(xùn)練,得到結(jié)果
LR的過(guò)擬合
添加正則化后的損失函數(shù)變?yōu)?#xff1a; $$J(w)=-\frac{1}{N} \sum_{i=1}^N{\left(y_ilog(h_w(x_i))+(1-y_i)log(1-h_w(x_i))\right)} + \lambda ||w||_2$$
同時(shí)w的更新變?yōu)?#xff1a; $$w:=w-\alpha * \left(h_w(x_j)-y_j) x_i\right) -2\alphaw_j$$
關(guān)于LR的多分類(lèi):softmax
$$P(Y=a|x)=\frac{exp(w_ax)}{(\sum_{i=1}^k(wix))} ; 1 < a < k$$
這里會(huì)輸出當(dāng)前樣本下屬于哪一類(lèi)的概率,并且滿(mǎn)足全部概率加起來(lái)=1
關(guān)于softmax和k個(gè)LR的選擇
如果類(lèi)別之間是否互斥(比如音樂(lè)只能屬于古典音樂(lè)、鄉(xiāng)村音樂(lè)、搖滾月的一種)就用softmax
否則類(lèi)別之前有聯(lián)系(比如一首歌曲可能有影視原聲,也可能包含人聲,或者是舞曲),這個(gè)時(shí)候使用k個(gè)LR更為合適
Logistic回歸優(yōu)點(diǎn):
實(shí)現(xiàn)簡(jiǎn)單;
分類(lèi)時(shí)計(jì)算量非常小,速度很快,存儲(chǔ)資源低;
缺點(diǎn):
容易欠擬合,一般準(zhǔn)確度不太高
只能處理兩分類(lèi)問(wèn)題
SVM相關(guān)問(wèn)題
解密SVM系列(一):關(guān)于拉格朗日乘子法和KKT條件
svmw問(wèn)題整理
SVM的主要特點(diǎn)
(1)非線性映射-理論基礎(chǔ)
(2)最大化分類(lèi)邊界-方法核心
(3)支持向量-計(jì)算結(jié)果
(4)小樣本學(xué)習(xí)方法 ,最終的決策函數(shù)只有少量支持向量決定,避免了“維數(shù)災(zāi)難” ,少數(shù)支持向量決定最終結(jié)果—->可“剔除”大量冗余樣本+算法簡(jiǎn)單+具有魯棒性
(7)學(xué)習(xí)問(wèn)題可表示為凸優(yōu)化問(wèn)題—->全局最小值
(8)可自動(dòng)通過(guò)最大化邊界控制模型,但需要用戶(hù)指定核函數(shù)類(lèi)型和引入松弛變量
(9)適合于小樣本,優(yōu)秀泛化能力(因?yàn)榻Y(jié)構(gòu)風(fēng)險(xiǎn)最小)
(10)泛化錯(cuò)誤率低,分類(lèi)速度快,結(jié)果易解釋
缺點(diǎn):
(1)大規(guī)模訓(xùn)練樣本(m階矩陣計(jì)算)
(2)傳統(tǒng)的不適合多分類(lèi)
(3)對(duì)缺失數(shù)據(jù)、參數(shù)、核函數(shù)敏感
為什么要引入對(duì)偶問(wèn)題
(1)容易求解 (2)核函數(shù)
Note:拉格朗日對(duì)偶沒(méi)有改變最優(yōu)解,但改變了算法復(fù)雜度:原問(wèn)題—樣本維度;對(duì)偶問(wèn)題–樣本數(shù)量。所以 線性分類(lèi)&&樣本維度<樣本數(shù)量:原問(wèn)題求解(liblinear默認(rèn));
非線性–升維—一般導(dǎo)致 樣本維度>樣本數(shù)量:對(duì)偶問(wèn)題求解
樣本失衡的影響
超平面會(huì)靠近樣本少的類(lèi)別。因?yàn)槭褂玫氖擒涢g隔分類(lèi),而如果對(duì)所有類(lèi)別都是使用同樣的懲罰系數(shù),則由于優(yōu)化目標(biāo)里面有最小化懲罰量,所以靠近少數(shù)樣本時(shí),其懲罰量會(huì)少一些。
對(duì)正例和負(fù)例賦予不同的C值,例如正例遠(yuǎn)少于負(fù)例,則正例的C值取得較大,這種方法的缺點(diǎn)是可能會(huì)偏離原始數(shù)據(jù)的概率分布;
對(duì)訓(xùn)練集的數(shù)據(jù)進(jìn)行預(yù)處理即對(duì)數(shù)量少的樣本以某種策略進(jìn)行采樣,增加其數(shù)量或者減少數(shù)量多的樣本
樣本失衡時(shí),如何評(píng)價(jià)分類(lèi)器的性能好壞?
使用ROC曲線
樣本沒(méi)有規(guī)范化對(duì)SVM有什么影響?
對(duì)偶問(wèn)題的優(yōu)化目標(biāo)函數(shù)中有向量的內(nèi)積計(jì)算(優(yōu)化過(guò)程中也會(huì)有內(nèi)積計(jì)算的,見(jiàn)SMO),徑向基核函數(shù)中有向量的距離計(jì)算,存在值域小的變量會(huì)被忽略的問(wèn)題,影響算法的精度。參考
數(shù)據(jù)維度大于數(shù)據(jù)量的對(duì)SVM的影響?
這種情況下一般采用線性核(即無(wú)核),因?yàn)榇藭r(shí)特征夠用了(很大可能是線性問(wèn)題),沒(méi)必要映射到更高維的特征空間。
拉格朗日乘子法 和KKT條件
凸函數(shù)
前提條件凸函數(shù):下圖左側(cè)是凸函數(shù)。
左側(cè)是凸函數(shù)
凸的就是開(kāi)口朝一個(gè)方向(向上或向下)。更準(zhǔn)確的數(shù)學(xué)關(guān)系就是:
enter description here
?
或者
enter description here
對(duì)于凸問(wèn)題,你去求導(dǎo)的話(huà),是不是只有一個(gè)極點(diǎn),那么他就是最優(yōu)點(diǎn),很合理。
等式條件約束
當(dāng)帶有約束條件的凸函數(shù)需要優(yōu)化的時(shí)候,一個(gè)帶等式約束的優(yōu)化問(wèn)題就通過(guò)拉格朗日乘子法完美的解決了。
$$min \quad f = 2x_12+3x_22+7x_3^2 \s.t. \quad 2x_1+x_2 = 1 \ \quad \quad \quad 2x_2+3x_3 = 2$$
可以使用
$$min \quad f = 2x_12+3x_22+7x_3^2 +\alpha _1(2x_1+x_2- 1)+\alpha _2(2x_2+3x_3 - 2)$$
這里可以看到與α1,α2相乘的部分都為0,根原來(lái)的函數(shù)是等價(jià)的。所以α1,α2的取值為全體實(shí)數(shù)。現(xiàn)在這個(gè)優(yōu)化目標(biāo)函數(shù)就沒(méi)有約束條件了吧。然后求導(dǎo)數(shù)。
不等式約束與KKT條件
任何原始問(wèn)題約束條件無(wú)非最多3種,等式約束,大于號(hào)約束,小于號(hào)約束,而這三種最終通過(guò)將約束方程化簡(jiǎn)化為兩類(lèi):約束方程等于0和約束方程小于0。
$$min \quad f = x_12-2x_1+1+x_22+4x_2+4 \s.t. \quad x_1+10x_2 > 10 \ \quad \quad \quad 10 x_1-10x_2 < 10$$
現(xiàn)在將約束拿到目標(biāo)函數(shù)中去就變成:
$$L(x,\alpha) = f(x) + \alpha_1g1(x)+\alpha_2g2(x)\ =x_12-2x_1+1+x_22+4x_2+4+ \alpha_1(10-x_1-10x_2 ) +\\alpha_2(10x_1-x_2 - 10)$$
其中g(shù)是不等式約束,h是等式約束(像上面那個(gè)只有不等式約束,也可能有等式約束)。那么KKT條件就是函數(shù)的最優(yōu)值必定滿(mǎn)足下面條件:
(1) L對(duì)各個(gè)x求導(dǎo)為零;
(2) h(x)=0;
(3) $\sum\alpha_ig_i(x)=0,\alpha_i\ge0$
第三個(gè)式子不好理解,因?yàn)槲覀冎涝诩s束條件變完后,所有的g(x)<=0,且αi≥0,然后求和還要為0,無(wú)非就是告訴你,要么某個(gè)不等式gi(x)=0,要么其對(duì)應(yīng)的αi=0。那么為什么KKT的條件是這樣的呢?
SVM的原問(wèn)題和對(duì)偶問(wèn)題
原問(wèn)題
原問(wèn)題
拉格朗日乘子法結(jié)果
對(duì)偶問(wèn)題
求導(dǎo)得到
求導(dǎo)得到
代入乘子算式得到
對(duì)偶結(jié)果
就得到的原問(wèn)題的對(duì)偶問(wèn)題
對(duì)偶問(wèn)題
為什么要引入對(duì)偶算法
SVM解決過(guò)擬合的方法
決定SVM最優(yōu)分類(lèi)超平面的恰恰是那些占少數(shù)的支持向量,如果支持向量中碰巧存在異常點(diǎn)就會(huì)過(guò)擬合,解決的方法是加入松弛變量。
另一方面從損失函數(shù)角度看,引入了L2正則。
為什么要把原問(wèn)題轉(zhuǎn)換為對(duì)偶問(wèn)題?
因?yàn)樵瓎?wèn)題是凸二次規(guī)劃問(wèn)題,轉(zhuǎn)換為對(duì)偶問(wèn)題更加高效。
為什么求解對(duì)偶問(wèn)題更加高效?
因?yàn)橹挥们蠼鈇lpha系數(shù),而alpha系數(shù)只有支持向量才非0,其他全部為0.
alpha系數(shù)有多少個(gè)?
樣本點(diǎn)的個(gè)數(shù)
L1還可以用來(lái)選擇特征
A 為什么L1可以用來(lái)選擇特征
B 因?yàn)長(zhǎng)1的話(huà)會(huì)把某些不重要的特征壓縮為0
A 為什么L1可以把某些特征壓縮為0
B 因?yàn)?#xff08;畫(huà)圖)L1約束是正方形的,經(jīng)驗(yàn)損失最有可能和L1的正方形的頂點(diǎn)相交,L1比較有棱角。所以可以把某些特征壓縮為0
SVM優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
缺點(diǎn):
SMO算法
SMO
SMO是用于快速求解SVM的
它選擇凸二次規(guī)劃的兩個(gè)變量,其他的變量保持不變,然后根據(jù)這兩個(gè)變量構(gòu)建一個(gè)二次規(guī)劃問(wèn)題,這個(gè)二次規(guī)劃關(guān)于這兩個(gè)變量解會(huì)更加的接近原始二次規(guī)劃的解,通過(guò)這樣的子問(wèn)題劃分可以大大增加整個(gè)算法的計(jì)算速度
SVM多分類(lèi)問(wèn)題
間接法
一對(duì)多
其中某個(gè)類(lèi)為一類(lèi),其余n-1個(gè)類(lèi)為另一個(gè)類(lèi),比如A,B,C,D四個(gè)類(lèi),第一次A為一個(gè)類(lèi),{B,C,D}為一個(gè)類(lèi)訓(xùn)練一個(gè)分類(lèi)器,第二次B為一個(gè)類(lèi),{A,C,D}為另一個(gè)類(lèi),按這方式共需要訓(xùn)練4個(gè)分類(lèi)器,最后在測(cè)試的時(shí)候?qū)y(cè)試樣本經(jīng)過(guò)這4個(gè)分類(lèi)器f1(x),f2(x),f3(x)和f4(x),取其最大值為分類(lèi)器(這種方式由于是1對(duì)M分類(lèi),會(huì)存在偏置,很不實(shí)用)
一對(duì)一(libsvm實(shí)現(xiàn)的方式)
任意兩個(gè)類(lèi)都訓(xùn)練一個(gè)分類(lèi)器,那么n個(gè)類(lèi)就需要$n*(n-1)/2$個(gè)svm分類(lèi)器。
還是以A,B,C,D為例,那么需要{A,B},{A,C},{A,D},{B,C},{B,D},{C,D}為目標(biāo)共6個(gè)分類(lèi)器,然后在預(yù)測(cè)的將測(cè)試樣本通過(guò)這6個(gè)分類(lèi)器之后進(jìn)行投票選擇最終結(jié)果。(這種方法雖好,但是需要$n*(n-1)/2$個(gè)分類(lèi)器代價(jià)太大,不過(guò)有好像使用循環(huán)圖來(lái)進(jìn)行改進(jìn))
reference
Linear SVM 和 LR 有什么異同?
SVM和logistic回歸分別在什么情況下使用?
百度 – 機(jī)器學(xué)習(xí)面試
svmw問(wèn)題整理
各種機(jī)器學(xué)習(xí)的應(yīng)用場(chǎng)景分別是什么?例如,k近鄰,貝葉斯,決策樹(shù),svm,邏輯斯蒂回歸
機(jī)器學(xué)習(xí)面試問(wèn)題匯總
機(jī)器學(xué)習(xí)面試
如何準(zhǔn)備機(jī)器學(xué)習(xí)工程師的面試 ?
天池離線賽 - 移動(dòng)推薦算法(四):基于LR, RF, GBDT等模型的預(yù)測(cè)
機(jī)器學(xué)習(xí)常見(jiàn)算法個(gè)人總結(jié)(面試用)
機(jī)器學(xué)習(xí)面試問(wèn)題匯總
cs229機(jī)器學(xué)習(xí)筆記及代碼
騰訊17屆校招面經(jīng)合集
作者:在河之簡(jiǎn)
鏈接:https://www.jianshu.com/p/ace5051d0023
總結(jié)
以上是生活随笔為你收集整理的机器学习算法小结与收割offer遇到的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 几何间隔、函数间隔和||W||
- 下一篇: 对于这些机器学习算法 数学不好你还真看不