日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习算法小结与收割offer遇到的问题

發(fā)布時(shí)間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习算法小结与收割offer遇到的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

機(jī)器學(xué)習(xí)是做NLP和計(jì)算機(jī)視覺這類應(yīng)用算法的基礎(chǔ),雖然現(xiàn)在深度學(xué)習(xí)模型大行其道,但是懂一些傳統(tǒng)算法的原理和它們之間的區(qū)別還是很有必要的。可以幫助我們做一些模型選擇。本篇博文就總結(jié)一下各種機(jī)器學(xué)習(xí)算法的特點(diǎn)和應(yīng)用場(chǎng)景。本文是筆者結(jié)合自身面試中遇到的問題和總結(jié)網(wǎng)絡(luò)上的資源得到的,所有引用已給出鏈接,如侵刪。

機(jī)器學(xué)習(xí)

SVM與LR的區(qū)別

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

Linear SVM直觀上是trade-off兩個(gè)量

  • a large margin,就是兩類之間可以畫多寬的gap ;不妨說是正樣本應(yīng)該在分界平面向左gap/2(稱正分界),負(fù)樣本應(yīng)該在分解平面向右gap/2(稱負(fù)分界)
  • L1 error penalty,對(duì)所有不滿足上述條件的點(diǎn)做L1 penalty
  • 給定一個(gè)數(shù)據(jù)集,一旦完成Linear SVM的求解,所有數(shù)據(jù)點(diǎn)可以被歸成兩類

  • 一類是落在對(duì)應(yīng)分界平面外并被正確分類的點(diǎn),比如落在正分界左側(cè)的正樣本或落在負(fù)分界右側(cè)的負(fù)樣本
  • 第二類是落在gap里或被錯(cuò)誤分類的點(diǎn)。
  • 假設(shè)一個(gè)數(shù)據(jù)集已經(jīng)被Linear SVM求解,那么往這個(gè)數(shù)據(jù)集里面增加或者刪除更多的一類點(diǎn)并不會(huì)改變重新求解的Linear SVM平面。不受數(shù)據(jù)分布的影響。

    求解LR模型過程中,每一個(gè)數(shù)據(jù)點(diǎn)對(duì)分類平面都是有影響的,它的影響力遠(yuǎn)離它到分類平面的距離指數(shù)遞減。換句話說,LR的解是受數(shù)據(jù)本身分布影響的。在實(shí)際應(yīng)用中,如果數(shù)據(jù)維度很高,LR模型都會(huì)配合參數(shù)的L1 regularization。

    兩者的區(qū)別

    兩個(gè)模型對(duì)數(shù)據(jù)和參數(shù)的敏感程度不同,Linear SVM比較依賴penalty的系數(shù)和數(shù)據(jù)表達(dá)空間的測(cè)度,而(帶正則項(xiàng)的)LR比較依賴對(duì)參數(shù)做L1 regularization的系數(shù)。但是由于他們或多或少都是線性分類器,所以實(shí)際上對(duì)低維度數(shù)據(jù)overfitting的能力都比較有限,相比之下對(duì)高維度數(shù)據(jù),LR的表現(xiàn)會(huì)更加穩(wěn)定,為什么呢?因?yàn)長inear SVM在計(jì)算margin有多“寬”的時(shí)候是依賴數(shù)據(jù)表達(dá)上的距離測(cè)度的,換句話說如果這個(gè)測(cè)度不好(badly scaled,這種情況在高維數(shù)據(jù)尤為顯著),所求得的所謂Large margin就沒有意義了,這個(gè)問題即使換用kernel trick(比如用Gaussian kernel)也無法完全避免。所以使用Linear SVM之前一般都需要先對(duì)數(shù)據(jù)做normalization,而求解LR(without regularization)時(shí)則不需要或者結(jié)果不敏感。

    Linear SVM和LR都是線性分類器
    Linear SVM不直接依賴數(shù)據(jù)分布,分類平面不受一類點(diǎn)影響;LR則受所有數(shù)據(jù)點(diǎn)的影響,如果數(shù)據(jù)不同類別strongly unbalance一般需要先對(duì)數(shù)據(jù)做balancing
    Linear SVM依賴數(shù)據(jù)表達(dá)的距離測(cè)度,所以需要對(duì)數(shù)據(jù)先做normalization;LR不受其影響
    Linear SVM依賴penalty的系數(shù),實(shí)驗(yàn)中需要做validation
    Linear SVM和LR的performance都會(huì)收到outlier的影響,其敏感程度而言,誰更好很難下明確結(jié)論。

    balance的方法

  • 調(diào)整正、負(fù)樣本在求cost時(shí)的權(quán)重,比如按比例加大正樣本cost的權(quán)重。然而deep learning的訓(xùn)練過程是on-line的因此你需要按照batch中正、負(fù)樣本的比例調(diào)整。
  • 做訓(xùn)練樣本選取:如hard negative mining,只用負(fù)樣本中的一部分。
  • 做訓(xùn)練樣本選取:如通過data augmentation擴(kuò)大正樣本數(shù)量。
  • 過擬合方面

    LR容易欠擬合,準(zhǔn)確度低。

    SVM不太容易過擬合:松弛因子+損失函數(shù)形式

    注意SVM的求解方法叫拉格朗日乘子法,而對(duì)于均方誤差的優(yōu)化方法是最小二乘法。

    方法的選擇

    在Andrew NG的課里講到過:

  • 如果Feature的數(shù)量很大,跟樣本數(shù)量差不多,這時(shí)候選用LR或者是Linear Kernel的SVM
  • 如果Feature的數(shù)量比較小,樣本數(shù)量一般,不算大也不算小,選用SVM+Gaussian Kernel
  • 如果Feature的數(shù)量比較小,而樣本數(shù)量很多,需要手工添加一些feature變成第一種情況
  • 當(dāng)你的數(shù)據(jù)非常非常非常非常非常大然后完全跑不動(dòng)SVM的時(shí)候,跑LR。SVM適合于小樣本學(xué)習(xí)。多大算是非常非常非常非常非常非常大? 比如幾個(gè)G,幾萬維特征,就勉強(qiáng)算大吧...而實(shí)際問題上幾萬個(gè)參數(shù)實(shí)在完全不算個(gè)事兒,太常見了。隨隨便便就得上spark。讀一遍數(shù)據(jù)就老半天,一天能訓(xùn)練出來的模型就叫高效了。所以在新時(shí)代,LR其實(shí)反而比以前用的多了=. =

    應(yīng)用場(chǎng)景方面不同

    擬合程度,樣本量,

    距離測(cè)度,數(shù)據(jù)balance

    模型簡(jiǎn)單易解釋

    如果數(shù)據(jù)特征維度高,svm要使用核函數(shù)來求解

    Note:拉格朗日對(duì)偶沒有改變最優(yōu)解,但改變了算法復(fù)雜度:原問題—樣本維度;對(duì)偶問題–樣本數(shù)量。所以 線性分類&&樣本維度<樣本數(shù)量:原問題求解(liblinear默認(rèn)); 非線性–升維—一般導(dǎo)致 樣本維度>樣本數(shù)量:對(duì)偶問題求解

    SVM適合處理什么樣的數(shù)據(jù)?

    高維稀疏,樣本少。【參數(shù)只與支持向量有關(guān),數(shù)量少,所以需要的樣本少,由于參數(shù)跟維度沒有關(guān)系,所以可以處理高維問題】

    機(jī)器學(xué)習(xí)常見算法總結(jié)

    機(jī)器學(xué)習(xí)常見算法個(gè)人總結(jié)(面試用)

    樸素貝葉斯

    樸素貝葉斯的優(yōu)點(diǎn)
    對(duì)小規(guī)模的數(shù)據(jù)表現(xiàn)很好,適合多分類任務(wù),適合增量式訓(xùn)練。
    缺點(diǎn)
    對(duì)輸入數(shù)據(jù)的表達(dá)形式很敏感(離散、連續(xù),值極大極小之類的)

    線性回歸

    線性回歸試圖學(xué)得一個(gè)線性模型以盡可能準(zhǔn)確地預(yù)測(cè)實(shí)值輸出標(biāo)記。均方誤差是回歸任務(wù)中最常用的性能度量,基于均方誤差最小化來進(jìn)行模型求解的方法成為最小二乘法。在線性回歸中,最小二乘法就是試圖找到一條直線,使得所有樣本到直線上的歐式距離之和最小。這個(gè)想法和分類問題是正好相反的,分類問題是找到一個(gè)分界面離所有樣本盡可能遠(yuǎn)。

    優(yōu)化方法

  • 當(dāng)x矩陣是列滿秩的時(shí)候,可以用最小二乘法,但是求矩陣的逆比較慢


    enter description here

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

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

    enter description here


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

    enter description here

    ?

    用條件概率最大似然估計(jì)法得到:

    enter description here

    LR回歸

    enter description here

    ?

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


    enter description here

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

    enter description here

    優(yōu)化問題的求解方法

    [Math] 常見的幾種最優(yōu)化方法
    大部分的機(jī)器學(xué)習(xí)算法的本質(zhì)都是建立優(yōu)化模型,通過最優(yōu)化方法對(duì)目標(biāo)函數(shù)(或損失函數(shù))進(jìn)行優(yōu)化,從而訓(xù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)前位置的最快下降方向,所以也被稱為是”最速下降法“。最速下降法越接近目標(biāo)值,步長越小,前進(jìn)越慢。

    缺點(diǎn)

    梯度下降法的最大問題就是會(huì)陷入局部最優(yōu),靠近極小值時(shí)收斂速度減慢。

    批量梯度下降法

    最小化所有訓(xùn)練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解,即求解的參數(shù)是使得風(fēng)險(xiǎn)函數(shù)最小,但是對(duì)于大規(guī)模樣本問題效率低下

    隨機(jī)梯度下降法

    最小化每條樣本的損失函數(shù),雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向, 但是大的整體的方向是向全局最優(yōu)解的,最終的結(jié)果往往是在全局最優(yōu)解附近,適用于大規(guī)模訓(xùn)練樣本情況。

    隨機(jī)梯度下降是通過每個(gè)樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),那么可能只用其中幾萬條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對(duì)比上面的批量梯度下降,迭代一次需要用到十幾萬訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。但是,SGD伴隨的一個(gè)問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。

    牛頓法

    牛頓法是一種在實(shí)數(shù)域和復(fù)數(shù)域上近似求解方程的方法。方法使用函數(shù)f (x)的泰勒級(jí)數(shù)的前面幾項(xiàng)來尋找方程f (x) = 0的根。牛頓法最大的特點(diǎn)就在于它的收斂速度很快。

    迭代公式

    牛頓法比梯度下降法快

    牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個(gè)盆地的最底部,梯度下降法每次只從你當(dāng)前所處位置選一個(gè)坡度最大的方向走一步,牛頓法在選擇方向時(shí),不僅會(huì)考慮坡度是否夠大,還會(huì)考慮你走了一步之后,坡度是否會(huì)變得更大。所以,可以說牛頓法比梯度下降法看得更遠(yuǎn)一點(diǎn),能更快地走到最底部。

    但是牛頓法要算hessian矩陣的逆,比較費(fèi)時(shí)間。

    擬牛頓法

    擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡(jiǎn)化了運(yùn)算的復(fù)雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時(shí)知道目標(biāo)函數(shù)的梯度。通過測(cè)量梯度的變化,構(gòu)造一個(gè)目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性。這類方法大大優(yōu)于最速下降法,尤其對(duì)于困難的問題。另外,因?yàn)閿M牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時(shí)比牛頓法更為有效。

    拉格朗日法

    拉格朗日乘數(shù)法

    拉格朗日乘子法主要用于解決約束優(yōu)化問題,它的基本思想就是通過引入拉格朗日乘子來將含有n個(gè)變量和k個(gè)約束條件的約束優(yōu)化問題轉(zhuǎn)化為含有(n+k)個(gè)變量的無約束優(yōu)化問題。拉格朗日乘子背后的數(shù)學(xué)意義是其為約束方程梯度線性組合中每個(gè)向量的系數(shù)。

    通過引入拉格朗日乘子建立極值條件,對(duì)n個(gè)變量分別求偏導(dǎo)對(duì)應(yīng)了n個(gè)方程,然后加上k個(gè)約束條件(對(duì)應(yīng)k個(gè)拉格朗日乘子)一起構(gòu)成包含了(n+k)變量的(n+k)個(gè)方程的方程組問題,這樣就能根據(jù)求方程組的方法對(duì)其進(jìn)行求解。

    機(jī)器學(xué)習(xí)算法選擇

    機(jī)器學(xué)習(xí)算法選擇

    隨機(jī)森林平均來說最強(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è)模型,至今依然被垃圾郵件過濾器使用。

    K近鄰

    典型的例子是KNN,它的思路就是——對(duì)于待判斷的點(diǎn),找到離它最近的幾個(gè)數(shù)據(jù)點(diǎn),根據(jù)它們的類型決定待判斷點(diǎn)的類型。

    它的特點(diǎn)是完全跟著數(shù)據(jù)走,沒有數(shù)學(xué)模型可言。

    三要素:

  • k值的選擇
  • 距離的度量(常見的距離度量有歐式距離,馬氏距離等)
  • 分類決策規(guī)則 (多數(shù)表決規(guī)則)
  • k值的選擇

  • k值越小表明模型越復(fù)雜,更加容易過擬合
  • 但是k值越大,模型越簡(jiǎn)單,如果k=N的時(shí)候就表明無論什么點(diǎn)都是訓(xùn)練集中類別最多的那個(gè)類
  • 所以一般k會(huì)取一個(gè)較小的值,然后用過交叉驗(yàn)證來確定
    這里所謂的交叉驗(yàn)證就是將樣本劃分一部分出來為預(yù)測(cè)樣本,比如95%訓(xùn)練,5%預(yù)測(cè),然后k分別取1,2,3,4,5之類的,進(jìn)行預(yù)測(cè),計(jì)算最后的分類誤差,選擇誤差最小的k

    分類決策規(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)

  • 思想簡(jiǎn)單
  • 可用于非線性分類
  • 訓(xùn)練時(shí)間復(fù)雜度為O(n)
  • 準(zhǔn)確度高,對(duì)outlier不敏感
    缺點(diǎn)
  • 計(jì)算量大
  • 樣本不平衡問題不適用
  • 需要大量的內(nèi)存
  • KD樹

    KD樹是一個(gè)二叉樹,表示對(duì)K維空間的一個(gè)劃分,可以進(jìn)行快速檢索

    構(gòu)造KD樹

    在k維的空間上循環(huán)找子區(qū)域的中位數(shù)進(jìn)行劃分的過程。

    假設(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é)點(diǎn),以坐標(biāo)$a_1$的中位數(shù)b為切分點(diǎn),將根結(jié)點(diǎn)對(duì)應(yīng)的矩形局域劃分為兩個(gè)區(qū)域,區(qū)域1中$a_1 < b$,區(qū)域2中$a_1>b$
  • 構(gòu)造葉子節(jié)點(diǎn),分別以上面兩個(gè)區(qū)域中$a_2$的中位數(shù)作為切分點(diǎn),再次將他們兩兩劃分,作為深度1的葉子節(jié)點(diǎn),(如果a2=中位數(shù),則a2的實(shí)例落在切分面)
  • 不斷重復(fù)2的操作,深度為j的葉子節(jié)點(diǎn)劃分的時(shí)候,索取的$a_i$ 的$i=j % k+1$,直到兩個(gè)子區(qū)域沒有實(shí)例時(shí)停止
  • KD樹的搜索

  • 首先從根節(jié)點(diǎn)開始遞歸往下找到包含x的葉子節(jié)點(diǎn),每一層都是找對(duì)應(yīng)的xi
  • 將這個(gè)葉子節(jié)點(diǎn)認(rèn)為是當(dāng)前的“近似最近點(diǎn)”
  • 遞歸向上回退,如果以x圓心,以“近似最近點(diǎn)”為半徑的球與根節(jié)點(diǎn)的另一半子區(qū)域邊界相交,則說明另一半子區(qū)域中存在與x更近的點(diǎn),則進(jìn)入另一個(gè)子區(qū)域中查找該點(diǎn)并且更新”近似最近點(diǎn)“
  • 重復(fù)3的步驟,直到另一子區(qū)域與球體不相交或者退回根節(jié)點(diǎn)
  • 最后更新的”近似最近點(diǎn)“與x真正的最近點(diǎn)
  • log(n)

    決策樹

    決策樹的特點(diǎn)是它總是在沿著特征做切分。隨著層層遞進(jìn),這個(gè)劃分會(huì)越來越細(xì)。

    因?yàn)樗軌蛏汕逦幕谔卣?feature)選擇不同預(yù)測(cè)結(jié)果的樹狀結(jié)構(gòu)

    隨機(jī)森林

    器學(xué)習(xí)崗位面試問題匯總 之 集成學(xué)習(xí)

    基本概念

    天池離線賽 - 移動(dòng)推薦算法(四):基于LR, RF, GBDT等模型的預(yù)測(cè)

    它首先隨機(jī)選取不同的特征(feature)和訓(xùn)練樣本(training sample)bagging,生成大量的決策樹,然后綜合這些決策樹的結(jié)果來進(jìn)行最終的分類。

    隨機(jī)森林在現(xiàn)實(shí)分析中被大量使用,它相對(duì)于決策樹,在準(zhǔn)確性上有了很大的提升

    適用場(chǎng)景:數(shù)據(jù)維度相對(duì)低(幾十維),同時(shí)對(duì)準(zhǔn)確性有較高要求時(shí)。

    參數(shù)調(diào)節(jié)

    是一種基于決策樹基模型的集成學(xué)習(xí)方法,其核心思想是通過特征采樣來降低訓(xùn)練方差,提高集成泛化能力。

    max_depth 屬于基學(xué)習(xí)器參數(shù),它控制著每個(gè)決策樹的深度,一般來說,決策樹越深,模型擬合的偏差越小,但同時(shí)擬合的開銷也越大。一般地,需要保證足夠的樹深度,但也不宜過大。

    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)防止過擬合
    (4)能夠處理高維特征,且不用做特征選擇,可以給出特征重要性的評(píng)分,訓(xùn)練過程中,可以檢測(cè)到feature的相互影響

    缺點(diǎn)

    ①樹越多,隨機(jī)森林的表現(xiàn)才會(huì)越穩(wěn)定。所以在實(shí)際使用隨機(jī)森林的時(shí)候需要注意如果樹不夠多的時(shí)候,可能會(huì)導(dǎo)致不穩(wěn)定的情況。

    ②不平衡數(shù)據(jù)集。分類結(jié)果會(huì)傾向于樣本多的類別,所以訓(xùn)練樣本中各類別的數(shù)據(jù)必須相同。Breiman在實(shí)際實(shí)現(xiàn)該算法的時(shí)候有考慮到了這個(gè)問題,采取了根據(jù)樣本類別比例對(duì)決策樹的判斷賦予不同權(quán)值的方法

    RF的學(xué)習(xí)算法

    ID3:離散
    C4.5:連續(xù)
    CART:離散或連續(xù)

    GBDT

    基本概念

    GBDT(梯度迭代決策樹)是一種基于決策回歸樹的Boosting模型,其核心思想是將提升過程建立在對(duì)“之前殘差的負(fù)梯度表示”的回歸擬合上,通過不斷的迭代實(shí)現(xiàn)降低偏差的目的。

    GBDT設(shè)置大量基學(xué)習(xí)器的目的是為了集成來降低偏差,所以 n_estimators (基決策器的個(gè)數(shù))一般會(huì)設(shè)置得大一些。

    對(duì)于GBDT模型來說,其每個(gè)基學(xué)習(xí)器是一個(gè)弱學(xué)習(xí)器(欠擬合),決策樹的深度一般設(shè)置得比較小,以此來降低方差(模型復(fù)雜度低),之后在經(jīng)過殘差逼近迭代來降低偏差,從而形成強(qiáng)學(xué)習(xí)器。

    GBDT與傳統(tǒng)Boosting(AdaBoost)的區(qū)別

    Boosting算法,但與傳統(tǒng)boosting有區(qū)別、擬合上一步的殘差,傳統(tǒng)意義上說不能并行,只能用CART回歸樹,降低偏差

    迭代思路不同:傳統(tǒng)boosting對(duì)訓(xùn)練樣本進(jìn)行加權(quán),GBDT則是擬合殘差,下一棵樹沿殘差梯度下降的方向進(jìn)行擬合

    GBDT正則化的方式

    (1)同AdaBoost,通過步長
    (2)CART樹的剪枝
    (3)子抽樣,不放回,SGBT,可以實(shí)現(xiàn)一定程度上的并行

    GBDT的優(yōu)缺點(diǎn)

    優(yōu)點(diǎn):(1)調(diào)參少的情況下,準(zhǔn)確率也高(SVM)
    (2)靈活處理各種數(shù)據(jù),包括連續(xù)和離散,無需歸一化處理(LR)
    (3)模型非線性變換多,特征不用經(jīng)過復(fù)雜處理即可表達(dá)復(fù)雜信息
    (4)從一定程度上可以防止過擬合,小步而非大步擬合
    缺點(diǎn):(1)一般來說傳統(tǒng)的GBDT只能串行,但是也可以通過子采樣比例(0.5~0.8)實(shí)現(xiàn)某種意義上的并行,但一般這就不叫GBDT了。
    (2)對(duì)異常值敏感,但是可以采取一些健壯的損失函數(shù)緩解,如Huber./Quantile損失函數(shù)

    GBDT預(yù)測(cè)時(shí)每一棵樹是否能并行?

    可以,訓(xùn)練需串行,預(yù)測(cè)可并行

    GBDT和RF的區(qū)別與聯(lián)系

    聯(lián)系:多棵樹進(jìn)行訓(xùn)練+多棵樹共同進(jìn)行預(yù)測(cè)
    區(qū)別:(1)取樣方式
    (2)預(yù)測(cè)時(shí),RF多數(shù)投票,GBDT加權(quán)累加
    (3)樣本的關(guān)系—>并行和串行
    (4)學(xué)期器的種類,GBDT只能用CART回歸樹 (因?yàn)橐?jì)算連續(xù)梯度)
    (5)對(duì)異常值的敏感性
    (6)通過減少方差/偏差提高性能

    XGBOOST相比于GBDT有何不同?XGBOOST為什么快?XGBOOST如何支持并行?

    (1)GBDT只能用CART回歸樹,而XGBOOST可以用CART樹(回歸/分類),還可以用用想LR之類的線性模型,相當(dāng)于加入L1、L2正則項(xiàng)的LR或線性回歸
    (2)列抽樣,可以并行,不是樹粒度上的,是特征粒度上的,block塊,并行計(jì)算所有信息增益等信息
    (3)可處理多種特征,且對(duì)缺失值也不用進(jìn)行處理
    (4)GBDT在殘差梯度下降方向擬合,一階導(dǎo);XGBOOST泰勒展開至二階導(dǎo)
    (5)近似直方圖算法,高效生產(chǎn)候選分割點(diǎn)
    (6)shrink,縮減,葉子節(jié)點(diǎn)同時(shí)乘,防止過擬合
    (7)可以自己定義評(píng)價(jià)函數(shù)
    (8)代價(jià)函數(shù)含正則化項(xiàng),防止過擬合

    ababoost

    daBoost的優(yōu)缺點(diǎn)
    優(yōu)點(diǎn):(1)容易理解、實(shí)現(xiàn)簡(jiǎn)單
    (2)易編碼
    (3)分類精度高
    (4)可以使用各種回歸模型構(gòu)建基分類器,非常靈活
    (5)作為二元分類器是,構(gòu)造簡(jiǎn)單、結(jié)果可理解、少參數(shù)
    (6)相對(duì)來說,不宜過擬合
    缺點(diǎn):(1)只能串行
    (2)對(duì)異常值敏感 boosting對(duì)異常值敏感

    集成學(xué)習(xí)與方差偏差

    我覺得,避免偏差的話,首先我們需要盡量選擇正確的模型,所謂“對(duì)癥下藥”。我覺得有位同行把機(jī)器學(xué)習(xí)算法的使用比作醫(yī)生開藥方,是非常不錯(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)確性,反而帶來模型訓(xùn)練的計(jì)算量增加。但是,訓(xùn)練數(shù)據(jù)太少的話是一定不好的,這會(huì)帶來過擬合的問題,過擬合就是模型復(fù)雜度太高,方差很大,不同的數(shù)據(jù)集訓(xùn)練出來的模型變化非常大

    偏差與方差

    從集成學(xué)習(xí)到模型的偏差和方差的理解

    使用sklearn進(jìn)行集成學(xué)習(xí)——理論

    GBDT算法特征重要程度計(jì)算

    機(jī)器學(xué)習(xí)中,有哪些特征選擇的工程方法?

    為什么說bagging是減少variance,而boosting是減少bias?

    從機(jī)制上講
    為什么說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)稱,意思就是再取樣 (Bootstrap) 然后在每個(gè)樣本上訓(xùn)練出來的模型取平均。

    bagging的偏差

    ,所以從偏差上看沒有降低,但是由于各個(gè)子模型是單獨(dú)訓(xùn)練的,有一定的獨(dú)立性,所以方差降低比較多,提高泛化能力。特別是random forest這種方式,不僅對(duì)樣本取樣,還有特征取樣。

    ?

    boosting從優(yōu)化角度來看,是用forward-stagewise這種貪心法去最小化損失函數(shù),在這個(gè)過程中偏差是逐步減小的,而由于各階段分類器之間相關(guān)性較強(qiáng),方差降低得少。

    舉個(gè)例子
    gbdt是boosting的方式,它的決策樹的深度比較小,模型會(huì)欠擬合,剛開始偏差大,后來就慢慢變小了。

    為什么把特征組合之后還能提升

    反正這些基本都是增強(qiáng)了特征的表達(dá)能力,或者說更容易線性可分吧

    總體性問題

    分類與回歸的區(qū)別

    分類和回歸的區(qū)別在于輸出變量的類型。

    定量輸出稱為回歸,或者說是連續(xù)變量預(yù)測(cè);
    定性輸出稱為分類,或者說是離散變量預(yù)測(cè)。

    生成模型與判別模型的區(qū)別

    有監(jiān)督機(jī)器學(xué)習(xí)方法可以分為生成方法和判別方法(常見的生成方法有混合高斯模型、樸素貝葉斯法和隱形馬爾科夫模型等,常見的判別方法有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} )} $$,比如說樸素貝葉斯

    判別模型:直接學(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í)問題

    精確率、召回率、F1 值、ROC、AUC 各自的優(yōu)缺點(diǎn)是什么?

    enter description here

    精確率(Precision)為TP/(TP+FP)

    召回率(Recall)為TP/(TP+FN)

    F1值是精確率和召回率的調(diào)和均值,即F1=2PR/(P+R)

    ROC曲線(Receiver operating characteristic curve),ROC曲線其實(shí)是多個(gè)混淆矩陣的結(jié)果組合,如果在上述模型中我們沒有定好閾值,而是將模型預(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

    ?

    在畫ROC曲線的過程中,若有一個(gè)閾值,高于此閾值的均為壞人,低于此閾值的均為好人,則認(rèn)為此模型已完美的區(qū)分開好壞用戶。此時(shí)壞用戶的預(yù)測(cè)準(zhǔn)確率(TPR)為1,同時(shí)好用戶的預(yù)測(cè)錯(cuò)誤率(FPR)為0,ROC曲線經(jīng)過(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è)沒有差別。

    所以AUC表征的是模型的分類能力。

    過擬合

    如果一味的去提高訓(xùn)練數(shù)據(jù)的預(yù)測(cè)能力,所選模型的復(fù)雜度往往會(huì)很高,這種現(xiàn)象稱為過擬合。所表現(xiàn)的就是模型訓(xùn)練時(shí)候的誤差很小,但在測(cè)試的時(shí)候誤差很大。

    產(chǎn)生的原因
    因?yàn)閰?shù)太多,會(huì)導(dǎo)致我們的模型復(fù)雜度上升,容易過擬合

    權(quán)值學(xué)習(xí)迭代次數(shù)足夠多(Overtraining),擬合了訓(xùn)練數(shù)據(jù)中的噪聲和訓(xùn)練樣例中沒有代表性的特征.

    解決方法

    交叉驗(yàn)證法
    減少特征
    正則化
    權(quán)值衰減
    驗(yàn)證數(shù)據(jù)

    線性分類器與非線性分類器的區(qū)別以及優(yōu)劣

    如果模型是參數(shù)的線性函數(shù),并且存在線性分類面,那么就是線性分類器,否則不是。
    常見的線性分類器有:LR,貝葉斯分類,單層感知機(jī)、線性回歸
    常見的非線性分類器:決策樹、RF、GBDT、多層感知機(jī)
    SVM兩種都有(看線性核還是高斯核)

    線性分類器速度快、編程方便,但是可能擬合效果不會(huì)很好
    非線性分類器編程復(fù)雜,但是效果擬合能力強(qiáng)

    特征比數(shù)據(jù)量還大時(shí),選擇什么樣的分類器?
    線性分類器,因?yàn)榫S度高的時(shí)候,數(shù)據(jù)一般在維度空間里面會(huì)比較稀疏,很有可能線性可分
    對(duì)于維度很高的特征,你是選擇線性還是非線性分類器?
    理由同上
    對(duì)于維度極低的特征,你是選擇線性還是非線性分類器?
    非線性分類器,因?yàn)榈途S空間可能很多特征都跑到一起了,導(dǎo)致線性不可分

    樣本不均衡如何解決

    從重采樣到數(shù)據(jù)合成

    主要三個(gè)方面,數(shù)據(jù),模型和評(píng)估方法。

  • 數(shù)據(jù)上重采樣和欠采樣,使之均衡;
  • 模型上選對(duì)樣本不均衡問題不敏感的模型,和算法集成技術(shù),如決策樹,不能用KNN;
  • 評(píng)估方法,用查全率,查準(zhǔn)率之類
  • 重采樣(resampling)技術(shù):

    (1). 隨機(jī)欠采樣
    隨機(jī)欠采樣的目標(biāo)是通過隨機(jī)地消除占多數(shù)的類的樣本來平衡類分布。
    優(yōu)點(diǎn)
    它可以提升運(yùn)行時(shí)間;并且當(dāng)訓(xùn)練數(shù)據(jù)集很大時(shí),可以通過減少樣本數(shù)量來解決存儲(chǔ)問題。
    缺點(diǎn)
    它會(huì)丟棄對(duì)構(gòu)建規(guī)則分類器很重要的有價(jià)值的潛在信息。
    被隨機(jī)欠采樣選取的樣本可能具有偏差。它不能準(zhǔn)確代表大多數(shù)。

    (2). 隨機(jī)過采樣(Random Over-Sampling)
    過采樣(Over-Sampling)通過隨機(jī)復(fù)制少數(shù)類來增加其中的實(shí)例數(shù)量,從而可增加樣本中少數(shù)類的代表性。
    優(yōu)點(diǎn)
    與欠采樣不同,這種方法不會(huì)帶來信息損失。
    表現(xiàn)優(yōu)于欠采樣。
    缺點(diǎn)
    由于復(fù)制少數(shù)類事件,它加大了過擬合的可能性。

    (3). 信息性過采樣:合成少數(shù)類過采樣技術(shù)
    直接復(fù)制少數(shù)類實(shí)例并將其添加到主數(shù)據(jù)集時(shí)。從少數(shù)類中把一個(gè)數(shù)據(jù)子集作為一個(gè)實(shí)例取走,接著創(chuàng)建相似的新合成的實(shí)例。這些合成的實(shí)例接著被添加進(jìn)原來的數(shù)據(jù)集。新數(shù)據(jù)集被用作樣本以訓(xùn)練分類模型。
    優(yōu)點(diǎn)
    通過隨機(jī)采樣生成的合成樣本而非實(shí)例的副本,可以緩解過擬合的問題。
    不會(huì)損失有價(jià)值信息。
    缺點(diǎn)
    當(dāng)生成合成性實(shí)例時(shí),SMOTE 并不會(huì)把來自其他類的相鄰實(shí)例考慮進(jìn)來。這導(dǎo)致了類重疊的增加,并會(huì)引入額外的噪音。

    深度學(xué)習(xí)方面的問題

    機(jī)器學(xué)習(xí)崗位面試問題匯總 之 深度學(xué)習(xí)

    深度學(xué)習(xí)的實(shí)質(zhì) 及其 與淺層學(xué)習(xí)的區(qū)別

    深度學(xué)習(xí)實(shí)質(zhì):多隱層+海量數(shù)據(jù)——>學(xué)習(xí)有用特征—–>提高分類或預(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層
    問題:(1)梯度越來越稀疏(梯度擴(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)單(沒有指數(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)元壞死問題

    當(dāng)然,如果你設(shè)置了一個(gè)合適的較小的learning rate,這個(gè)問題發(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 中的α,通常都是通過先驗(yàn)知識(shí)人工賦值的。
    然而可以觀察到,損失函數(shù)對(duì)α的導(dǎo)數(shù)我們是可以求得的,可不可以將它作為一個(gè)參數(shù)進(jìn)行訓(xùn)練呢

    Randomized ReLU:
    Randomized Leaky ReLU是 leaky ReLU 的random 版本 ,核心思想就是,在訓(xùn)練過程中,α 是從一個(gè)高斯分布 U(l,u) 中 隨機(jī)出來的,然后再測(cè)試過程中進(jìn)行修正(有點(diǎn)像dropout的用法)

    什么樣的資料不適合用深度學(xué)習(xí)?

    (1)數(shù)據(jù)量小 (2)沒有局部相關(guān)性

    什么是共線性,跟過擬合有何關(guān)聯(lián)?

    共線性:高度相關(guān)—>冗余——>過擬合
    解決:排除相關(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)理論,特征提取的誤差主要來自兩個(gè)方面:(1)鄰域大小受限造成的估計(jì)值方差增大;(2)卷積層參數(shù)誤差造成估計(jì)均值的偏移。一般來說,mean-pooling能減小第一種誤差,更多的保留圖像的背景信息max-pooling能減小第二種誤差,更多的保留紋理信息。Stochastic-pooling則介于兩者之間,通過對(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í)出來

    使用Pooling的目的之一是獲取一定的特征不變性,目前用的比較多的是Max Pooling
    max pooling是DCNN的非線性來源之一,然后在現(xiàn)代的深度神經(jīng)網(wǎng)絡(luò)中,最大的非線性來源是ReLU類的激活函數(shù)。
    因此,目前對(duì)使用Pooling也存在一定的爭(zhēng)議,一些最新的工作已經(jīng)不在網(wǎng)絡(luò)的中間層使用pooling層了(或者只在最后一層使用average pooling,比如說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í)中,有哪些特征選擇的工程方法?

    特征選擇是特征工程中的重要問題(另一個(gè)重要的問題是特征提取),坊間常說:數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已。由此可見,特征工程尤其是特征選擇在機(jī)器學(xué)習(xí)中占有相當(dāng)重要的地位。

    特征選擇方法舉例

  • 計(jì)算每一個(gè)特征與響應(yīng)變量的相關(guān)性:工程上常用的手段有計(jì)算皮爾遜系數(shù)和互信息系數(shù),皮爾遜系數(shù)只能衡量線性相關(guān)性而互信息系數(shù)能夠很好地度量各種相關(guān)性

  • 構(gòu)建單個(gè)特征的模型,通過模型的準(zhǔn)確性為特征排序,借此來選擇特征

  • 通過L1正則項(xiàng)來選擇特征:L1正則方法具有稀疏解的特性,因此天然具備特征選擇的特性,但是要注意,L1沒有選到的特征不代表不重要,原因是兩個(gè)具有高相關(guān)性的特征可能只保留了一個(gè),如果要確定哪個(gè)特征重要應(yīng)再通過L2正則方法交叉檢驗(yàn);

  • 訓(xùn)練能夠對(duì)特征打分的預(yù)選模型:RandomForest和Logistic Regression等都能對(duì)模型的特征打分,通過打分獲得相關(guān)性后再訓(xùn)練最終模型;

  • 通過深度學(xué)習(xí)來進(jìn)行特征選擇:目前這種手段正在隨著深度學(xué)習(xí)的流行而成為一種手段,尤其是在計(jì)算機(jī)視覺領(lǐng)域,原因是深度學(xué)習(xí)具有自動(dòng)學(xué)習(xí)特征的能力.

  • 特征選擇方法分類

    特征選擇思維導(dǎo)圖

  • Filter:過濾法,按照發(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ù)從大到小選擇特征。類似于Filter方法,但是是通過訓(xùn)練來確定特征的優(yōu)劣。

  • 降維:PCA LDA等。

  • Filter過濾法

  • 方差選擇法
  • 使用方差選擇法,先要計(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 集成方法

  • 基于懲罰項(xiàng)的特征選擇法
    L1懲罰項(xiàng)降維的原理在于保留多個(gè)對(duì)目標(biāo)值具有同等相關(guān)性的特征中的一個(gè)
  • 基于樹模型的特征選擇法
    樹模型中GBDT也可用來作為基模型進(jìn)行特征選擇
  • 深度學(xué)習(xí)方法
  • 降維

    將原始的樣本映射到維度更低的樣本空間中。

    PCA是為了讓映射后的樣本具有最大的發(fā)散性;而LDA是為了讓映射后的樣本有最好的分類性能。所以說PCA是一種無監(jiān)督的降維方法,而LDA是一種有監(jiān)督的降維方法。

    LR相關(guān)問題

    LR與BP

    BP神經(jīng)網(wǎng)絡(luò)是否優(yōu)于logistic回歸?

    首先,神經(jīng)網(wǎng)絡(luò)的最后一層,也就是輸出層,是一個(gè) Logistic Regression (或者 Softmax Regression ),也就是一個(gè)線性分類器,中間的隱含層起到特征提取的作用,把隱含層的輸出當(dāng)作特征,然后再將它送入下一個(gè) Logistic Regression,一層層變換。

    神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,實(shí)際上就是同時(shí)訓(xùn)練特征提取算法以及最后的 Logistic Regression的參數(shù)。為什么要特征提取呢,因?yàn)?Logistic Regression 本身是一個(gè)線性分類器,所以,通過特征提取,我們可以把原本線性不可分的數(shù)據(jù)變得線性可分。要如何訓(xùn)練呢,最簡(jiǎn)單的方法是(隨機(jī),Mini batch)梯度下降法

    LR為什么使用sigmoid函數(shù)

    源于sigmoid,或者說exponential family所具有的最佳性質(zhì),即maximum entropy的性質(zhì)。maximum entropy給了logistic regression一個(gè)很好的數(shù)學(xué)解釋。為什么maximum entropy好呢?entropy翻譯過來就是熵,所以maximum entropy也就是最大熵。熵用在概率分布上可以表示這個(gè)分布中所包含的不確定度,熵越大不確定度越大。均勻分布熵最大,因?yàn)榛拘聰?shù)據(jù)是任何值的概率都均等。而我們現(xiàn)在關(guān)心的是,給定某些假設(shè)之后,熵最大的分布。也就是說這個(gè)分布應(yīng)該在滿足我假設(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)。接下來我們就只需要知道 f 是什么就行了。而我們可以通過最大熵原則推出的這個(gè) f,就是sigmoid。

    面試問了如何在海量數(shù)據(jù)中查找給定部分?jǐn)?shù)據(jù)最相似的top200向量,向量的維度也很高. 因?yàn)橹傲私膺^其他面螞蟻金服的朋友,也有問到這個(gè)題目的
    所以反應(yīng)比較快,直接就說可以用KD樹,聚類,hash,
    一天之內(nèi)兩連面,還是問了很多機(jī)器學(xué)習(xí)算法的東西 為什么LR需要?dú)w一化或者取對(duì)數(shù),為什么LR把特征離散化后效果更好 為什么把特征組合之后還能提升,反正這些基本都是增強(qiáng)了特征的表達(dá)能力,或者更容易線性可分吧

    在logistic regression (LR)中,這個(gè)目標(biāo)是什么呢?最大化條件似然度。考慮一個(gè)二值分類問題,訓(xùn)練數(shù)據(jù)是一堆(特征,標(biāo)記)組合,(x1,y1), (x2,y2), .... 其中x是特征向量,y是類標(biāo)記(y=1表示正類,y=0表示反類)。LR首先定義一個(gè)條件概率p(y|x;w)。 p(y|x;w)表示給定特征x,類標(biāo)記y的概率分布,其中w是LR的模型參數(shù)(一個(gè)超平面)。有了這個(gè)條件概率,就可以在訓(xùn)練數(shù)據(jù)上定義一個(gè)似然函數(shù),然后通過最大似然來學(xué)習(xí)w。這是LR模型的基本原理。

    為什么LR把特征離散化后效果更好

    邏輯回歸屬于廣義線性模型,表達(dá)能力受限;單變量離散化為N個(gè)后,每個(gè)變量有單獨(dú)的權(quán)重,相當(dāng)于為模型引入了非線性,能夠提升模型表達(dá)能力,加大擬合;(啞變量)
    特征離散化以后,起到了簡(jiǎn)化了邏輯回歸模型的作用,降低了模型過擬合的風(fēng)險(xiǎn)。

    連續(xù)特征的離散化:在什么情況下將連續(xù)的特征離散化之后可以獲得更好的效果?

    在工業(yè)界,很少直接將連續(xù)值作為邏輯回歸模型的特征輸入,而是將連續(xù)特征離散化為一系列0、1特征交給邏輯回歸模型,這樣做的優(yōu)勢(shì)有以下幾點(diǎn):

  • 離散特征的增加和減少都很容易,易于模型的快速迭代;
  • 稀疏向量?jī)?nèi)積乘法運(yùn)算速度快,計(jì)算結(jié)果方便存儲(chǔ),容易擴(kuò)展;
  • 離散化后的特征對(duì)異常數(shù)據(jù)有很強(qiáng)的魯棒性:比如一個(gè)特征是年齡>30是1,否則0。如果特征沒有離散化,一個(gè)異常數(shù)據(jù)“年齡300歲”會(huì)給模型造成很大的干擾;
  • 邏輯回歸屬于廣義線性模型,表達(dá)能力受限;單變量離散化為N個(gè)后,每個(gè)變量有單獨(dú)的權(quán)重,相當(dāng)于為模型引入了非線性,能夠提升模型表達(dá)能力,加大擬合;
  • 離散化后可以進(jìn)行特征交叉,由M+N個(gè)變量變?yōu)镸*N個(gè)變量,進(jìn)一步引入非線性,提升表達(dá)能力;
  • 特征離散化后,模型會(huì)更穩(wěn)定,比如如果對(duì)用戶年齡離散化,20-30作為一個(gè)區(qū)間,不會(huì)因?yàn)橐粋€(gè)用戶年齡長了一歲就變成一個(gè)完全不同的人。當(dāng)然處于區(qū)間相鄰處的樣本會(huì)剛好相反,所以怎么劃分區(qū)間是門學(xué)問;
  • 特征離散化以后,起到了簡(jiǎn)化了邏輯回歸模型的作用,降低了模型過擬合的風(fēng)險(xiǎn)。
  • 李沐曾經(jīng)說過:模型是使用離散特征還是連續(xù)特征,其實(shí)是一個(gè)“海量離散特征+簡(jiǎn)單模型” 同 “少量連續(xù)特征+復(fù)雜模型”的權(quán)衡。既可以離散化用線性模型,也可以用連續(xù)特征加深度學(xué)習(xí)。就看是喜歡折騰特征還是折騰模型了。通常來說,前者容易,而且可以n個(gè)人一起并行做,有成功經(jīng)驗(yàn);后者目前看很贊,能走多遠(yuǎn)還須拭目以待。

    如何用LR建立一個(gè)廣告點(diǎn)擊的模型:

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

    LR的過擬合

  • 減少feature個(gè)數(shù)(人工定義留多少個(gè)feature、算法選取這些feature)
  • 正則化(為了方便求解,L2使用較多)
  • 添加正則化后的損失函數(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的多分類:softmax

    $$P(Y=a|x)=\frac{exp(w_ax)}{(\sum_{i=1}^k(wix))} ; 1 < a < k$$

    這里會(huì)輸出當(dāng)前樣本下屬于哪一類的概率,并且滿足全部概率加起來=1

    關(guān)于softmax和k個(gè)LR的選擇

    如果類別之間是否互斥(比如音樂只能屬于古典音樂、鄉(xiāng)村音樂、搖滾月的一種)就用softmax
    否則類別之前有聯(lián)系(比如一首歌曲可能有影視原聲,也可能包含人聲,或者是舞曲),這個(gè)時(shí)候使用k個(gè)LR更為合適
    Logistic回歸優(yōu)點(diǎn)
    實(shí)現(xiàn)簡(jiǎn)單;
    分類時(shí)計(jì)算量非常小,速度很快,存儲(chǔ)資源低;
    缺點(diǎn)
    容易欠擬合,一般準(zhǔn)確度不太高
    只能處理兩分類問題

    SVM相關(guān)問題

    解密SVM系列(一):關(guān)于拉格朗日乘子法和KKT條件

    svmw問題整理

    SVM的主要特點(diǎn)

    (1)非線性映射-理論基礎(chǔ)
    (2)最大化分類邊界-方法核心
    (3)支持向量-計(jì)算結(jié)果
    (4)小樣本學(xué)習(xí)方法 ,最終的決策函數(shù)只有少量支持向量決定,避免了“維數(shù)災(zāi)難” ,少數(shù)支持向量決定最終結(jié)果—->可“剔除”大量冗余樣本+算法簡(jiǎn)單+具有魯棒性
    (7)學(xué)習(xí)問題可表示為凸優(yōu)化問題—->全局最小值
    (8)可自動(dòng)通過最大化邊界控制模型,但需要用戶指定核函數(shù)類型和引入松弛變量
    (9)適合于小樣本,優(yōu)秀泛化能力(因?yàn)榻Y(jié)構(gòu)風(fēng)險(xiǎn)最小)
    (10)泛化錯(cuò)誤率低,分類速度快,結(jié)果易解釋

    缺點(diǎn):

    (1)大規(guī)模訓(xùn)練樣本(m階矩陣計(jì)算)
    (2)傳統(tǒng)的不適合多分類
    (3)對(duì)缺失數(shù)據(jù)、參數(shù)、核函數(shù)敏感

    為什么要引入對(duì)偶問題

    (1)容易求解 (2)核函數(shù)
    Note:拉格朗日對(duì)偶沒有改變最優(yōu)解,但改變了算法復(fù)雜度:原問題—樣本維度;對(duì)偶問題–樣本數(shù)量。所以 線性分類&&樣本維度<樣本數(shù)量:原問題求解(liblinear默認(rèn));

    非線性–升維—一般導(dǎo)致 樣本維度>樣本數(shù)量:對(duì)偶問題求解

    樣本失衡的影響

    超平面會(huì)靠近樣本少的類別。因?yàn)槭褂玫氖擒涢g隔分類,而如果對(duì)所有類別都是使用同樣的懲罰系數(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à)分類器的性能好壞?

    使用ROC曲線

    樣本沒有規(guī)范化對(duì)SVM有什么影響?

    對(duì)偶問題的優(yōu)化目標(biāo)函數(shù)中有向量的內(nèi)積計(jì)算(優(yōu)化過程中也會(huì)有內(nèi)積計(jì)算的,見SMO),徑向基核函數(shù)中有向量的距離計(jì)算,存在值域小的變量會(huì)被忽略的問題,影響算法的精度。參考

    數(shù)據(jù)維度大于數(shù)據(jù)量的對(duì)SVM的影響?

    這種情況下一般采用線性核(即無核),因?yàn)榇藭r(shí)特征夠用了(很大可能是線性問題),沒必要映射到更高維的特征空間。

    拉格朗日乘子法 和KKT條件

    凸函數(shù)

    前提條件凸函數(shù):下圖左側(cè)是凸函數(shù)。

    左側(cè)是凸函數(shù)

    凸的就是開口朝一個(gè)方向(向上或向下)。更準(zhǔn)確的數(shù)學(xué)關(guān)系就是:

    enter description here

    ?

    或者


    enter description here

    對(duì)于凸問題,你去求導(dǎo)的話,是不是只有一個(gè)極點(diǎn),那么他就是最優(yōu)點(diǎn),很合理。

    等式條件約束

    當(dāng)帶有約束條件的凸函數(shù)需要優(yōu)化的時(shí)候,一個(gè)帶等式約束的優(yōu)化問題就通過拉格朗日乘子法完美的解決了。

    $$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,根原來的函數(shù)是等價(jià)的。所以α1,α2的取值為全體實(shí)數(shù)。現(xiàn)在這個(gè)優(yōu)化目標(biāo)函數(shù)就沒有約束條件了吧。然后求導(dǎo)數(shù)。

    不等式約束與KKT條件

    任何原始問題約束條件無非最多3種,等式約束,大于號(hào)約束,小于號(hào)約束,而這三種最終通過將約束方程化簡(jiǎn)化為兩類:約束方程等于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)值必定滿足下面條件:

    (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,無非就是告訴你,要么某個(gè)不等式gi(x)=0,要么其對(duì)應(yīng)的αi=0。那么為什么KKT的條件是這樣的呢?

    SVM的原問題和對(duì)偶問題

    原問題

    原問題

    拉格朗日乘子法結(jié)果

    對(duì)偶問題

    求導(dǎo)得到

    求導(dǎo)得到

    代入乘子算式得到

    對(duì)偶結(jié)果

    就得到的原問題的對(duì)偶問題

    對(duì)偶問題

    為什么要引入對(duì)偶算法

  • 對(duì)偶問題往往更加容易求解(結(jié)合拉格朗日和kkt條件)
  • 可以很自然的引用核函數(shù)(拉格朗日表達(dá)式里面有內(nèi)積,而核函數(shù)也是通過內(nèi)積進(jìn)行映射的)
  • SVM解決過擬合的方法

    決定SVM最優(yōu)分類超平面的恰恰是那些占少數(shù)的支持向量,如果支持向量中碰巧存在異常點(diǎn)就會(huì)過擬合,解決的方法是加入松弛變量。

    另一方面從損失函數(shù)角度看,引入了L2正則。

    為什么要把原問題轉(zhuǎn)換為對(duì)偶問題?

    因?yàn)樵瓎栴}是凸二次規(guī)劃問題,轉(zhuǎn)換為對(duì)偶問題更加高效。

    為什么求解對(duì)偶問題更加高效?

    因?yàn)橹挥们蠼鈇lpha系數(shù),而alpha系數(shù)只有支持向量才非0,其他全部為0.

    alpha系數(shù)有多少個(gè)?

    樣本點(diǎn)的個(gè)數(shù)

    L1還可以用來選擇特征

    A 為什么L1可以用來選擇特征

    B 因?yàn)長1的話會(huì)把某些不重要的特征壓縮為0

    A 為什么L1可以把某些特征壓縮為0

    B 因?yàn)?#xff08;畫圖)L1約束是正方形的,經(jīng)驗(yàn)損失最有可能和L1的正方形的頂點(diǎn)相交,L1比較有棱角。所以可以把某些特征壓縮為0

    SVM優(yōu)缺點(diǎn)

    優(yōu)點(diǎn)

  • 使用核函數(shù)可以向高維空間進(jìn)行映射
  • 使用核函數(shù)可以解決非線性的分類
  • 分類思想很簡(jiǎn)單,就是將樣本與決策面的間隔最大化
  • 分類效果較好
  • 缺點(diǎn)

  • 對(duì)大規(guī)模數(shù)據(jù)訓(xùn)練比較困難
  • 無法直接支持多分類,但是可以使用間接的方法來做
  • SMO算法

    SMO
    SMO是用于快速求解SVM的
    它選擇凸二次規(guī)劃的兩個(gè)變量,其他的變量保持不變,然后根據(jù)這兩個(gè)變量構(gòu)建一個(gè)二次規(guī)劃問題,這個(gè)二次規(guī)劃關(guān)于這兩個(gè)變量解會(huì)更加的接近原始二次規(guī)劃的解,通過這樣的子問題劃分可以大大增加整個(gè)算法的計(jì)算速度

    SVM多分類問題

    間接法
    一對(duì)多

    其中某個(gè)類為一類,其余n-1個(gè)類為另一個(gè)類,比如A,B,C,D四個(gè)類,第一次A為一個(gè)類,{B,C,D}為一個(gè)類訓(xùn)練一個(gè)分類器,第二次B為一個(gè)類,{A,C,D}為另一個(gè)類,按這方式共需要訓(xùn)練4個(gè)分類器,最后在測(cè)試的時(shí)候?qū)y(cè)試樣本經(jīng)過這4個(gè)分類器f1(x),f2(x),f3(x)和f4(x),取其最大值為分類器(這種方式由于是1對(duì)M分類,會(huì)存在偏置,很不實(shí)用)

    一對(duì)一(libsvm實(shí)現(xiàn)的方式)

    任意兩個(gè)類都訓(xùn)練一個(gè)分類器,那么n個(gè)類就需要$n*(n-1)/2$個(gè)svm分類器。

    還是以A,B,C,D為例,那么需要{A,B},{A,C},{A,D},{B,C},{B,D},{C,D}為目標(biāo)共6個(gè)分類器,然后在預(yù)測(cè)的將測(cè)試樣本通過這6個(gè)分類器之后進(jìn)行投票選擇最終結(jié)果。(這種方法雖好,但是需要$n*(n-1)/2$個(gè)分類器代價(jià)太大,不過有好像使用循環(huán)圖來進(jìn)行改進(jìn))

    reference

    Linear SVM 和 LR 有什么異同?

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

    百度 – 機(jī)器學(xué)習(xí)面試

    svmw問題整理

    各種機(jī)器學(xué)習(xí)的應(yīng)用場(chǎng)景分別是什么?例如,k近鄰,貝葉斯,決策樹,svm,邏輯斯蒂回歸

    機(jī)器學(xué)習(xí)面試問題匯總

    機(jī)器學(xué)習(xí)面試

    如何準(zhǔn)備機(jī)器學(xué)習(xí)工程師的面試 ?

    天池離線賽 - 移動(dòng)推薦算法(四):基于LR, RF, GBDT等模型的預(yù)測(cè)

    機(jī)器學(xué)習(xí)常見算法個(gè)人總結(jié)(面試用)

    機(jī)器學(xué)習(xí)面試問題匯總

    cs229機(jī)器學(xué)習(xí)筆記及代碼

    騰訊17屆校招面經(jīng)合集



    作者:在河之簡(jiǎn)
    鏈接:https://www.jianshu.com/p/ace5051d0023

    總結(jié)

    以上是生活随笔為你收集整理的机器学习算法小结与收割offer遇到的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。