機器學習演算法面試小結

目錄:

  • SVM與LR的區別
    • 從模型解決問題的方式來看
    • 兩者的區別
    • 方法的選擇
    • 應用場景方面不同
    • SVM適合處理什麼樣的數據?
  • 機器學習常見演算法總結
    • 樸素貝葉斯
    • 線性回歸
    • LR回歸
  • 優化問題的求解方法
    • 梯度下降法
      • 優化思想
      • 缺點
      • 批量梯度下降法
      • 隨機梯度下降法
    • 牛頓法
      • 牛頓法比梯度下降法快
      • 擬牛頓法
    • 拉格朗日法
  • 機器學習演算法選擇
    • 貝葉斯
    • K近鄰
      • 三要素:
      • k值的選擇
      • 分類決策規則
      • 優缺點:
    • KD樹
      • 構造KD樹
      • KD樹的搜索
    • 決策樹
    • 隨機森林
      • 基本概念
      • 參數調節
      • RF與傳統bagging的區別
      • RF的優點
      • 缺點
      • RF的學習演算法
    • GBDT
      • 基本概念
      • GBDT與傳統Boosting(AdaBoost)的區別
      • GBDT正則化的方式
      • GBDT的優缺點
      • GBDT預測時每一棵樹是否能並行?
      • GBDT和RF的區別與聯繫
      • XGBOOST相比於GBDT有何不同?XGBOOST為什麼快?XGBOOST如何支持並行?
      • ababoost
  • 集成學習與方差偏差
    • 為什麼說bagging是減少variance,而boosting是減少bias?
    • 為什麼把特徵組合之後還能提升
  • 總體性問題
    • 分類與回歸的區別
    • 生成模型與判別模型的區別
    • 精確率、召回率、F1 值、ROC、AUC 各自的優缺點是什麼?
    • 過擬合
    • 線性分類器與非線性分類器的區別以及優劣
    • 樣本不均衡如何解決
      • 重採樣(resampling)技術:
  • 深度學習方面的問題
    • 深度學習的實質 及其 與淺層學習的區別
    • BP演算法為什麼不能適應於深度學習
    • CNN卷基層和pooling層的作用
    • DNN常用的激活函數有哪些,各有什麼特點
    • 解決relu神經元壞死問題
    • 什麼樣的資料不適合用深度學習?
    • 什麼是共線性,跟過擬合有何關聯?
    • pooling技術有哪些,有什麼作用,有什麼區別
    • pooling的反向傳播
  • 特徵選擇的方法
    • 特徵選擇方法舉例
    • 特徵選擇方法分類
      • Filter過濾法
      • Embedded 集成方法
      • 降維
  • LR相關問題
    • LR與BP
    • LR為什麼使用sigmoid函數
    • 為什麼LR把特徵離散化後效果更好
    • 如何用LR建立一個廣告點擊的模型:
    • LR的過擬合
    • 關於LR的多分類:softmax
  • SVM相關問題
    • SVM的主要特點
    • 缺點:
    • 為什麼要引入對偶問題
    • 樣本失衡的影響
    • 樣本失衡時,如何評價分類器的性能好壞?
    • 樣本沒有規範化對SVM有什麼影響?
    • 數據維度大於數據量的對SVM的影響?
    • 拉格朗日乘子法 和KKT條件
      • 凸函數
      • 等式條件約束
      • 不等式約束與KKT條件
    • SVM的原問題和對偶問題
    • 為什麼要引入對偶演算法
    • SVM解決過擬合的方法
    • SVM優缺點
    • SMO演算法
    • SVM多分類問題
  • reference

機器學習是做NLP和計算機視覺這類應用演算法的基礎,雖然現在深度學習模型大行其道,但是懂一些傳統演算法的原理和它們之間的區別還是很有必要的。可以幫助我們做一些模型選擇。本篇博文就總結一下各種機器學習演算法的特點和應用場景。本文是筆者結合自身面試中遇到的問題和總結網路上的資源得到的,所有引用已給出鏈接,如侵刪。

機器學習

SVM與LR的區別

從模型解決問題的方式來看

Linear SVM直觀上是trade-off兩個量

a large margin,就是兩類之間可以畫多寬的gap ;不妨說是正樣本應該在分界平面向左gap/2(稱正分界),負樣本應該在分解平面向右gap/2(稱負分界)

L1 error penalty,對所有不滿足上述條件的點做L1 penalty

給定一個數據集,一旦完成Linear SVM的求解,所有數據點可以被歸成兩類

一類是落在對應分界平面外並被正確分類的點,比如落在正分界左側的正樣本或落在負分界右側的負樣本

第二類是落在gap里或被錯誤分類的點。

假設一個數據集已經被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的方法

調整正、負樣本在求cost時的權重,比如按比例加大正樣本cost的權重。然而deep learning的訓練過程是on-line的因此你需要按照batch中正、負樣本的比例調整。

做訓練樣本選取:如hard negative mining,只用負樣本中的一部分。

做訓練樣本選取:如通過data augmentation擴大正樣本數量。

過擬合方面

LR容易欠擬合,準確度低。

SVM不太容易過擬合:鬆弛因子+損失函數形式

注意SVM的求解方法叫拉格朗日乘子法,而對於均方誤差的優化方法是最小二乘法。

方法的選擇

在Andrew NG的課里講到過:

如果Feature的數量很大,跟樣本數量差不多,這時候選用LR或者是Linear Kernel的SVM

如果Feature的數量比較小,樣本數量一般,不算大也不算小,選用SVM+Gaussian Kernel

如果Feature的數量比較小,而樣本數量很多,需要手工添加一些feature變成第一種情況

當你的數據非常非常非常非常非常大然後完全跑不動SVM的時候,跑LR。SVM適合於小樣本學習。多大算是非常非常非常非常非常非常大? 比如幾個G,幾萬維特徵,就勉強算大吧...而實際問題上幾萬個參數實在完全不算個事兒,太常見了。隨隨便便就得上spark。讀一遍數據就老半天,一天能訓練出來的模型就叫高效了。所以在新時代,LR其實反而比以前用的多了=. =

應用場景方面不同

擬合程度,樣本量,

距離測度,數據balance

模型簡單易解釋

如果數據特徵維度高,svm要使用核函數來求解

Note:拉格朗日對偶沒有改變最優解,但改變了演算法複雜度:原問題—樣本維度;對偶問題–樣本數量。所以 線性分類&&樣本維度<樣本數量:原問題求解(liblinear默認); 非線性–升維—一般導致 樣本維度>樣本數量:對偶問題求解

SVM適合處理什麼樣的數據?

高維稀疏,樣本少。【參數只與支持向量有關,數量少,所以需要的樣本少,由於參數跟維度沒有關係,所以可以處理高維問題】

機器學習常見演算法總結

機器學習常見演算法個人總結(面試用)

樸素貝葉斯

樸素貝葉斯的優點

對小規模的數據表現很好,適合多分類任務,適合增量式訓練。

缺點

對輸入數據的表達形式很敏感(離散、連續,值極大極小之類的)

線性回歸

線性回歸試圖學得一個線性模型以儘可能準確地預測實值輸出標記。均方誤差是回歸任務中最常用的性能度量,基於均方誤差最小化來進行模型求解的方法成為最小二乘法。在線性回歸中,最小二乘法就是試圖找到一條直線,使得所有樣本到直線上的歐式距離之和最小。這個想法和分類問題是正好相反的,分類問題是找到一個分界面離所有樣本儘可能遠。

優化方法

當x矩陣是列滿秩的時候,可以用最小二乘法,但是求矩陣的逆比較慢

梯度下降法,以最大似然估計的結果對權值求梯度,sigmoid函數也是如此

enter description here

均方無法的概率解釋

假設根據特徵的預測結果與實際結果有誤差∈ (i) ,那麼預測結果θ T x (i) 和真實結果y (i) 滿足下

式:

一般來講,誤差滿足平均值為 0 的高斯分布,也就是正態分布。那麼 x 和 y 的條件概率也就

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

enter description here

LR回歸

enter description here

回歸用來分類 0/1 問題,也就是預測結果屬於 0 或者 1 的二值分類問題

仍然求的是最大似然估計,然後求導,得到迭代公式結果為,梯度下降法:

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值的選擇

k值越小表明模型越複雜,更加容易過擬合

但是k值越大,模型越簡單,如果k=N的時候就表明無論什麼點都是訓練集中類別最多的那個類

所以一般k會取一個較小的值,然後用過交叉驗證來確定

這裡所謂的交叉驗證就是將樣本劃分一部分出來為預測樣本,比如95%訓練,5%預測,然後k分別取1,2,3,4,5之類的,進行預測,計算最後的分類誤差,選擇誤差最小的k

分類決策規則

找到最近的k個實例之後,可以計算平均值作為預測值,也可以給這k個實例加上一個權重再求平均值,這個權重與度量距離成反比(越近權重越大)

優缺點:

優點

思想簡單

可用於非線性分類

訓練時間複雜度為O(n)

準確度高,對outlier不敏感

缺點

計算量大

樣本不平衡問題不適用

需要大量的內存

KD樹

KD樹是一個二叉樹,表示對K維空間的一個劃分,可以進行快速檢索

構造KD樹

在k維的空間上循環找子區域的中位數進行劃分的過程。

假設現在有K維空間的數據集: ,

首先構造根節點,以坐標的中位數b為切分點,將根結點對應的矩形局域劃分為兩個區域,區域1中,區域2中

構造葉子節點,分別以上面兩個區域中的中位數作為切分點,再次將他們兩兩劃分,作為深度1的葉子節點,(如果a2=中位數,則a2的實例落在切分面)

不斷重複2的操作,深度為j的葉子節點劃分的時候,索取的 的,直到兩個子區域沒有實例時停止

KD樹的搜索

首先從根節點開始遞歸往下找到包含x的葉子節點,每一層都是找對應的xi

將這個葉子節點認為是當前的「近似最近點」

遞歸向上回退,如果以x圓心,以「近似最近點」為半徑的球與根節點的另一半子區域邊界相交,則說明另一半子區域中存在與x更近的點,則進入另一個子區域中查找該點並且更新」近似最近點「

重複3的步驟,直到另一子區域與球體不相交或者退回根節點

最後更新的」近似最近點「與x真正的最近點

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

若各子模型獨立,則有

,此時可以顯著降低variance。若各子模型完全相同,則

,此時不會降低variance。

Bagging 是 Bootstrap Aggregating 的簡稱,意思就是再取樣 (Bootstrap) 然後在每個樣本上訓練出來的模型取平均。

,所以從偏差上看沒有降低,但是由於各個子模型是單獨訓練的,有一定的獨立性,所以方差降低比較多,提高泛化能力。特別是random forest這種方式,不僅對樣本取樣,還有特徵取樣。

boosting從優化角度來看,是用forward-stagewise這種貪心法去最小化損失函數,在這個過程中偏差是逐步減小的,而由於各階段分類器之間相關性較強,方差降低得少。

舉個例子

gbdt是boosting的方式,它的決策樹的深度比較小,模型會欠擬合,剛開始偏差大,後來就慢慢變小了。

為什麼把特徵組合之後還能提升

反正這些基本都是增強了特徵的表達能力,或者說更容易線性可分吧

總體性問題

分類與回歸的區別

分類和回歸的區別在於輸出變數的類型。

定量輸出稱為回歸,或者說是連續變數預測;

定性輸出稱為分類,或者說是離散變數預測。

生成模型與判別模型的區別

有監督機器學習方法可以分為生成方法和判別方法(常見的生成方法有混合高斯模型、樸素貝葉斯法和隱形馬爾科夫模型等,常見的判別方法有SVM、LR等),生成方法學習出的是生成模型,判別方法學習出的是判別模型。

監督學習,預測時,一般都是在求p(Y|X)生成模型: 從數據中學習聯合概率分布p(X,Y),然後利用貝葉斯公式求:

,比如說樸素貝葉斯

判別模型:直接學習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兩種都有(看線性核還是高斯核)

線性分類器速度快、編程方便,但是可能擬合效果不會很好

非線性分類器編程複雜,但是效果擬合能力強

特徵比數據量還大時,選擇什麼樣的分類器?

線性分類器,因為維度高的時候,數據一般在維度空間裡面會比較稀疏,很有可能線性可分

對於維度很高的特徵,你是選擇線性還是非線性分類器?

理由同上

對於維度極低的特徵,你是選擇線性還是非線性分類器?

非線性分類器,因為低維空間可能很多特徵都跑到一起了,導致線性不可分

樣本不均衡如何解決

從重採樣到數據合成

主要三個方面,數據,模型和評估方法。

數據上重採樣和欠採樣,使之均衡;

模型上選對樣本不均衡問題不敏感的模型,和演算法集成技術,如決策樹,不能用KNN;

評估方法,用查全率,查准率之類

重採樣(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,收斂快(不容易飽和),求梯度簡單(沒有指數計算,只需要閾值就可以),有稀疏特性。缺點是神經元容易壞死

2行

由於ReLU在x<0時梯度為0,這樣就導致負的梯度在這個ReLU被置零,而且這個神經元有可能再也不會被任何數據激活。如果這個情況發生了,那麼這個神經元之後的梯度就永遠是0了,也就是ReLU神經元壞死了,不再對任何數據有所響應。實際操作中,如果你的learning rate 很大,那麼很有可能你網路中的40%的神經元都壞死了

解決relu神經元壞死問題

當然,如果你設置了一個合適的較小的learning rate,這個問題發生的情況其實也不會太頻繁。

relu的變種 leaky-relu:

這裡的 α 是一個很小的常數。這樣,即修正了數據分布,又保留了一些負軸的值,使得負軸信息不會全部丟失。

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特徵交給邏輯回歸模型,這樣做的優勢有以下幾點:

離散特徵的增加和減少都很容易,易於模型的快速迭代;

稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展;

    1. 離散化後的特徵對異常數據有很強的魯棒性:比如一個特徵是年齡>30是1,否則0。如果特徵沒有離散化,一個異常數據「年齡300歲」會給模型造成很大的干擾;
    1. 邏輯回歸屬於廣義線性模型,表達能力受限;單變數離散化為N個後,每個變數有單獨的權重,相當於為模型引入了非線性,能夠提升模型表達能力,加大擬合;
    1. 離散化後可以進行特徵交叉,由M+N個變數變為M*N個變數,進一步引入非線性,提升表達能力;
    1. 特徵離散化後,模型會更穩定,比如如果對用戶年齡離散化,20-30作為一個區間,不會因為一個用戶年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;
    1. 特徵離散化以後,起到了簡化了邏輯回歸模型的作用,降低了模型過擬合的風險。

李沐曾經說過:模型是使用離散特徵還是連續特徵,其實是一個「海量離散特徵+簡單模型」 同 「少量連續特徵+複雜模型」的權衡。既可以離散化用線性模型,也可以用連續特徵加深度學習。就看是喜歡折騰特徵還是折騰模型了。通常來說,前者容易,而且可以n個人一起並行做,有成功經驗;後者目前看很贊,能走多遠還須拭目以待。

如何用LR建立一個廣告點擊的模型:

特徵提取—>特徵處理(離散化、歸一化、onehot等)—>找出候選集—->模型訓練,得到結果

LR的過擬合

減少feature個數(人工定義留多少個feature、演算法選取這些feature)

正則化(為了方便求解,L2使用較多)

添加正則化後的損失函數變為:

同時w的更新變為:

關於LR的多分類:softmax

這裡會輸出當前樣本下屬於哪一類的概率,並且滿足全部概率加起來=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

或者

對於凸問題,你去求導的話,是不是只有一個極點,那麼他就是最優點,很合理。

等式條件約束

當帶有約束條件的凸函數需要優化的時候,一個帶等式約束的優化問題就通過拉格朗日乘子法完美的解決了。

可以使用

這裡可以看到與α1,α2相乘的部分都為0,根原來的函數是等價的。所以α1,α2的取值為全體實數。現在這個優化目標函數就沒有約束條件了吧。然後求導數。

不等式約束與KKT條件

任何原始問題約束條件無非最多3種,等式約束,大於號約束,小於號約束,而這三種最終通過將約束方程化簡化為兩類:約束方程等於0和約束方程小於0

現在將約束拿到目標函數中去就變成:

其中g是不等式約束,h是等式約束(像上面那個只有不等式約束,也可能有等式約束)。那麼KKT條件就是函數的最優值必定滿足下麵條件:

(1) L對各個x求導為零;

(2) h(x)=0;

(3) ,

第三個式子不好理解,因為我們知道在約束條件變完後,所有的g(x)<=0,且αi≥0,然後求和還要為0,無非就是告訴你,要麼某個不等式gi(x)=0,要麼其對應的αi=0。那麼為什麼KKT的條件是這樣的呢?

SVM的原問題和對偶問題

原問題

原問題

拉格朗日乘子法結果

對偶問題

求導得到

求導得到

代入乘子算式得到

對偶結果

就得到的原問題的對偶問題

對偶問題

為什麼要引入對偶演算法

對偶問題往往更加容易求解(結合拉格朗日和kkt條件)

可以很自然的引用核函數(拉格朗日表達式裡面有內積,而核函數也是通過內積進行映射的)

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個類就需要個svm分類器。

還是以A,B,C,D為例,那麼需要{A,B},{A,C},{A,D},{B,C},{B,D},{C,D}為目標共6個分類器,然後在預測的將測試樣本通過這6個分類器之後進行投票選擇最終結果。(這種方法雖好,但是需要個分類器代價太大,不過有好像使用循環圖來進行改進)

reference

Linear SVM 和 LR 有什麼異同?

SVM和logistic回歸分別在什麼情況下使用?

百度 – 機器學習面試

svmw問題整理

各種機器學習的應用場景分別是什麼?例如,k近鄰,貝葉斯,決策樹,svm,邏輯斯蒂回歸

機器學習面試問題匯總

機器學習面試

如何準備機器學習工程師的面試 ?

天池離線賽 - 移動推薦演算法(四):基於LR, RF, GBDT等模型的預測

機器學習常見演算法個人總結(面試用)

機器學習面試問題匯總

cs229機器學習筆記及代碼

騰訊17屆校招面經合集


推薦閱讀:

TAG:機器學習 | 深度學習DeepLearning | 技術面 |