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