小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 happywise 2016-05-15

來自:Kubi Code'Blog

作者:kubiCode

原文鏈接:http:///2015/08/16/Machine%20Learning/Algorithm-Summary-for-Interview/

備注:文章公式較多,如果有疑義的地方,請自行訪問上面的原文鏈接查閱。


樸素貝葉斯


參考[1]


事件A和B同時發(fā)生的概率為在A發(fā)生的情況下發(fā)生B或者在B發(fā)生的情況下發(fā)生A


P(A∩B)=P(A)?P(B|A)=P(B)?P(A|B)


所以有:


P(A|B)=P(B|A)?P(A)P(B)


對于給出的待分類項,求解在此項出現(xiàn)的條件下各個目標類別出現(xiàn)的概率,哪個最大,就認為此待分類項屬于哪個類別


工作原理


1、假設(shè)現(xiàn)在有樣本x=(a1,a2,a3,…an)這個待分類項(并認為x里面的特征獨立)

2、再假設(shè)現(xiàn)在有分類目標Y={y1,y2,y3,y4..yn}

3、那么max(P(y1|x),P(y2|x),P(y3|x)..P(yn|x))就是最終的分類類別

4、而P(yi|x)=p(x|yi)?P(yi)P(x)

5、因為x對于每個分類目標來說都一樣,所以就是求max(P(x|yi)?p(yi))

6、P(x|yi)?p(yi)=p(yi)?∏i(P(ai|yi))

7、而具體的p(ai|yi)和p(yi)都是能從訓(xùn)練樣本中統(tǒng)計出來

  • p(ai|yi)表示該類別下該特征出現(xiàn)的概率

  • p(yi)表示全部類別中這個這個類別出現(xiàn)的概率

8、好的,就是這么工作的^_^


工作流程


1、準備階段


確定特征屬性,并對每個特征屬性進行適當劃分,然后由人工對一部分待分類項進行分類,形成訓(xùn)練樣本。


2、訓(xùn)練階段


計算每個類別在訓(xùn)練樣本中的出現(xiàn)頻率及每個特征屬性劃分對每個類別的條件概率估計


3、應(yīng)用階段


使用分類器進行分類,輸入是分類器和待分類樣本,輸出是樣本屬于的分類類別


屬性特征


1、特征為離散值時直接統(tǒng)計即可(表示統(tǒng)計概率)

2、特征為連續(xù)值的時候假定特征符合高斯分布:g(x,n,u)

那么p(ak|yi)=g(xk,ni,ui)


Laplace校準(拉普拉斯校驗)


當某個類別下某個特征劃分沒有出現(xiàn)時,會有P(a|y)=0,就是導(dǎo)致分類器質(zhì)量降低,所以此時引入Laplace校驗,就是對沒類別下所有劃分的計數(shù)加1。


遇到特征之間不獨立問題


參考改進的貝葉斯網(wǎng)絡(luò),使用DAG來進行概率圖的描述


優(yōu)缺點


樸素貝葉斯的優(yōu)點:


對小規(guī)模的數(shù)據(jù)表現(xiàn)很好,適合多分類任務(wù),適合增量式訓(xùn)練。


缺點:


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


邏輯回歸和線性回歸


LR回歸是一個線性的二分類模型,主要是計算在某個樣本特征下事件發(fā)生的概率,比如根據(jù)用戶的瀏覽購買情況作為特征來計算它是否會購買這個商品,抑或是它是否會點擊這個商品。然后LR的最終值是根據(jù)一個線性和函數(shù)再通過一個sigmod函數(shù)來求得,這個線性和函數(shù)權(quán)重與特征值的累加以及加上偏置求出來的,所以在訓(xùn)練LR時也就是在訓(xùn)練線性和函數(shù)的各個權(quán)重值w。


hw(x)=11 e?(wTx b)


關(guān)于這個權(quán)重值w一般使用最大似然法來估計,假設(shè)現(xiàn)在有樣本{xi,yi},其中xi表示樣本的特征,yi∈{0,1}表示樣本的分類真實值,yi=1的概率是pi,則yi=0的概率是1?pi,那么觀測概率為:

p(yi)=pyii?(1?pi)1?yi


則最大似然函數(shù)為:

∏(hw(xi)yi?(1?hw(xi))1?yi)


對這個似然函數(shù)取對數(shù)之后就會得到的表達式

L(w)=∑i(yi?loghw(xi)?(1?yi)?log(1?hw(xi)))=∑i(yi?(wTxi)?log(1 ewTxi))


估計這個L(w)的極大值就可以得到w的估計值。


實際操作中一般會加個負號 改為求最小


所以求解問題就變成了這個最大似然函數(shù)的最優(yōu)化問題,這里通常會采樣隨機梯度下降法和擬牛頓迭代法來進行優(yōu)化


梯度下降法


LR的損失函數(shù)為:

J(w)=?1NN∑i=1(yi?log(hw(xi)) (1?yi)?log(1?hw(xi)))


這樣就變成了求min(J(w))


其更新w的過程為

w:=w?α?▽J(w)w:=w?α?1N?N∑i=1(hw(xi)?yi)?xi)


其中α為步長,直到J(w)不能再小時停止


梯度下降法的最大問題就是會陷入局部最優(yōu),并且每次在對當前樣本計算cost的時候都需要去遍歷全部樣本才能得到cost值,這樣計算速度就會慢很多(雖然在計算的時候可以轉(zhuǎn)為矩陣乘法去更新整個w值)


所以現(xiàn)在好多框架(mahout)中一般使用隨機梯度下降法,它在計算cost的時候只計算當前的代價,最終cost是在全部樣本迭代一遍之求和得出,還有他在更新當前的參數(shù)w的時候并不是依次遍歷樣本,而是從所有的樣本中隨機選擇一條進行計算,它方法收斂速度快(一般是使用最大迭代次數(shù)),并且還可以避免局部最優(yōu),并且還很容易并行(使用參數(shù)服務(wù)器的方式進行并行)

w:=w?α?(hw(xj)?yj)?xi);j∈1 Nandrandomly


這里SGD可以改進的地方就是使用動態(tài)的步長

α=0.04?(1.0 n i) r


其他優(yōu)化方法


  • 擬牛頓法(記得是需要使用Hessian矩陣和cholesky分解)

  • BFGS

  • L-BFGS


優(yōu)缺點:無需選擇學(xué)習(xí)率α,更快,但是更復(fù)雜


關(guān)于LR的過擬合問題:


如果我們有很多的特性,在訓(xùn)練集上擬合得很好,但是在預(yù)測集上卻達不到這種效果


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

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

  • 添加正則化之后的損失函數(shù)為: J(w)=?1N∑Ni=1(yi?log(hw(xi)) (1?yi)?log(1?hw(xi))) λ||w||2

  • 同時w的更新變?yōu)閣:=w?α?(hw(xj)?yj)?xi)?2α?wj

  • 注意:這里的w0不受正則化影響


關(guān)于LR的多分類:softmax


假設(shè)離散型隨機變量Y的取值集合是{1,2,..,k},則多分類的LR為

P(Y=a|x)=exp(wa?x)(∑ki=1(wi?x));1<a<k


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


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


如果類別之間是否互斥(比如音樂只能屬于古典音樂、鄉(xiāng)村音樂、搖滾月的一種)就用softmax


否則類別之前有聯(lián)系(比如一首歌曲可能有影視原聲,也可能包含人聲,或者是舞曲),這個時候使用k個LR更為合適


優(yōu)缺點:


Logistic回歸優(yōu)點:


1、實現(xiàn)簡單;

2、分類時計算量非常小,速度很快,存儲資源低;


缺點:


1、容易欠擬合,一般準確度不太高

2、只能處理兩分類問題(在此基礎(chǔ)上衍生出來的softmax可以用于多分類),且必須線性可分;


ps 另外LR還可以參考這篇以及多分類可以看這篇


KNN算法


給一個訓(xùn)練數(shù)據(jù)集和一個新的實例,在訓(xùn)練數(shù)據(jù)集中找出與這個新實例最近的k個訓(xùn)練實例,然后統(tǒng)計最近的k個訓(xùn)練實例中所屬類別計數(shù)最多的那個類,就是新實例的類


三要素:


1、k值的選擇

2、距離的度量(常見的距離度量有歐式距離,馬氏距離等)

3、分類決策規(guī)則 (多數(shù)表決規(guī)則)


k值的選擇


1、k值越小表明模型越復(fù)雜,更加容易過擬合

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


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

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


KNN的回歸


在找到最近的k個實例之后,可以計算這k個實例的平均值作為預(yù)測值。或者還可以給這k個實例添加一個權(quán)重再求平均值,這個權(quán)重與度量距離成反比(越近權(quán)重越大)。


優(yōu)缺點:


KNN算法的優(yōu)點:


1、思想簡單,理論成熟,既可以用來做分類也可以用來做回歸;

2、可用于非線性分類;

3、訓(xùn)練時間復(fù)雜度為O(n);

4、準確度高,對數(shù)據(jù)沒有假設(shè),對outlier不敏感;


缺點:


1、計算量大;

2、樣本不平衡問題(即有些類別的樣本數(shù)量很多,而其它樣本的數(shù)量很少);

3、需要大量的內(nèi)存;


KD樹


KD樹是一個二叉樹,表示對K維空間的一個劃分,可以進行快速檢索(那KNN計算的時候不需要對全樣本進行距離的計算了)


構(gòu)造KD樹


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


假設(shè)現(xiàn)在有K維空間的數(shù)據(jù)集T={x1,x2,x3,…xn},xi={a1,a2,a3..ak}


1、首先構(gòu)造根節(jié)點,以坐標a1的中位數(shù)b為切分點,將根結(jié)點對應(yīng)的矩形局域劃分為兩個區(qū)域,區(qū)域1中a1<b,區(qū)域2中a1>b


2、構(gòu)造葉子節(jié)點,分別以上面兩個區(qū)域中a2的中位數(shù)作為切分點,再次將他們兩兩劃分,作為深度1的葉子節(jié)點,(如果a2=中位數(shù),則a2的實例落在切分面)


3、不斷重復(fù)2的操作,深度為j的葉子節(jié)點劃分的時候,索取的ai 的i=j%k 1,直到兩個子區(qū)域沒有實例時停止


KD樹的搜索


1、首先從根節(jié)點開始遞歸往下找到包含x的葉子節(jié)點,每一層都是找對應(yīng)的xi


2將這個葉子節(jié)點認為是當前的“近似最近點”


3、遞歸向上回退,如果以x圓心,以“近似最近點”為半徑的球與根節(jié)點的另一半子區(qū)域邊界相交,則說明另一半子區(qū)域中存在與x更近的點,則進入另一個子區(qū)域中查找該點并且更新”近似最近點“


4、重復(fù)3的步驟,直到另一子區(qū)域與球體不相交或者退回根節(jié)點

5、最后更新的”近似最近點“與x真正的最近點


KD樹進行KNN查找


通過KD樹的搜索找到與搜索目標最近的點,這樣KNN的搜索就可以被限制在空間的局部區(qū)域上了,可以大大增加效率。


KD樹搜索的復(fù)雜度


當實例隨機分布的時候,搜索的復(fù)雜度為log(N),N為實例的個數(shù),KD樹更加適用于實例數(shù)量遠大于空間維度的KNN搜索,如果實例的空間維度與實例個數(shù)差不多時,它的效率基于等于線性掃描。


后來自己有實現(xiàn)過KD樹,可以看KNN算法中KD樹的應(yīng)用


SVM、SMO


對于樣本點(xi,yi)以及svm的超平面:wTxi b=0


  • 函數(shù)間隔:yi(wTxi b)

  • 幾何間隔:yi(wTxi b)||w||,其中||w||為w的L2范數(shù),幾何間隔不會因為參數(shù)比例的改變而改變


svm的基本想法就是求解能正確劃分訓(xùn)練樣本并且其幾何間隔最大化的超平面。


線性SVM問題


先來看svm的問題:

argmaxw,bγst.yi(wTxi b)||w||≥γ


那么假設(shè)?γ=γ?||w||


則將問題轉(zhuǎn)為:

argmaxw,b?γ||w||st.yi(wTxi b)≥1


由于?γ的成比例增減不會影響實際間距,所以這里的取?γ=1,又因為max(1||w||)=min(12?||w||2)


所以最終的問題就變?yōu)榱?/p>

argminw,b12?||w||2st.yi(wTxi b)≥1


這樣就變成了一個凸的二次規(guī)劃化,可以將其轉(zhuǎn)換為拉格朗日函數(shù),然后使用對偶算法來求解


對偶求解


引進拉格朗日乘子α={α1,α2..αn},定義拉格朗日函數(shù):

L(w,b,a)=12?||w||2?∑i=1N(αi?yi(wTxi b)) ∑(αi)


根據(jù)對偶性質(zhì) 原始問題就是求對偶問題的極大極小

maxαminw,bL(w,b,α)


先求L對w,b的極小,再求對α的極大。


求minw,bL(w,b,α),也就是相當于對w,b求偏導(dǎo)并且另其等于0

▽wL(w,b,α)=w?∑i=1N(αiyixi)=0▽bL(w,b,α)=∑i=1N(aiyi)=0


代入后可得

minw,bL(w,b,α)=?12?N∑i=1N∑j=1(αiαjyiyj(xi?xj)) N∑i=1αi


求minw,bL(w,b,α)對α的極大,即是對偶問題:

maxα?12?N∑i=1N∑j=1(αiαjyiyj(xi?xj)) N∑i=1αist.∑i=1N(aiyi)=0α≥0,i=1,2,3…N


將求最大轉(zhuǎn)為求最小,得到等價的式子為:

minα12?N∑i=1N∑j=1(αiαjyiyj(xi?xj))?N∑i=1αist.∑i=1N(aiyi)=0α≥0,i=1,2,3…N


假如求解出來的α為α?=(α?1,α?2,…α?n)

則得到最優(yōu)的w,b分別為

w?=N∑i=1(α?iyixi)b?=yj?N∑i=1(α?iyi(xi?xj))


所以,最終的決策分類面為

f(x)=sign(N∑i=1(α?iyi(x?xi) b?)


也就是說,分類決策函數(shù)只依賴于輸入x與訓(xùn)練樣本的輸入的內(nèi)積


ps:上面介紹的是SVM的硬間距最大化,還有一種是軟間距最大化,引用了松弛變量ζ,則次svm問題變?yōu)?

argminw,b12?||w||2 CN∑i=1ζist.yi(wTxi b)≥1?ζiζi≥0,i=1,2…N

其余解決是與硬間距的一致~

還有:與分離超平面最近的樣本點稱為支持向量


損失函數(shù)


損失函數(shù)為(優(yōu)化目標):

N∑i=1[1?yi(wTxi b)] λ||w||2


其中[1?yi(wTxi b)] 稱為折頁損失函數(shù),因為:

[1?yi(wTxi b)] ={0if1?yi(wTxi b)≤01?yi(wTxi b)otherwise


為什么要引入對偶算法


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

2、可以很自然的引用核函數(shù)(拉格朗日表達式里面有內(nèi)積,而核函數(shù)也是通過內(nèi)積進行映射的)


核函數(shù)


將輸入特征x(線性不可分)映射到高維特征R空間,可以在R空間上讓SVM進

行線性可以變,這就是核函數(shù)的作用


  • 多項式核函數(shù):K(x,z)=(x?z 1)p

  • 高斯核函數(shù):K(x,z)=exp(?(x?z)2σ2)

  • 字符串核函數(shù):貌似用于字符串處理等


SVM優(yōu)缺點


優(yōu)點:


1、使用核函數(shù)可以向高維空間進行映射

2、使用核函數(shù)可以解決非線性的分類

3、分類思想很簡單,就是將樣本與決策面的間隔最大化

4、分類效果較好


缺點:


1、對大規(guī)模數(shù)據(jù)訓(xùn)練比較困難

2、無法直接支持多分類,但是可以使用間接的方法來做


SMO


SMO是用于快速求解SVM的


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


1、其中一個是嚴重違反KKT條件的一個變量

2、另一個變量是根據(jù)自由約束確定,好像是求剩余變量的最大化來確定的。


SVM多分類問題


1、直接法


直接在目標函數(shù)上進行修改,將多個分類面的參數(shù)求解合并到一個最優(yōu)化問題中,通過求解該優(yōu)化就可以實現(xiàn)多分類(計算復(fù)雜度很高,實現(xiàn)起來較為困難)


2、間接法


  • 一對多

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


  • 一對一(libsvm實現(xiàn)的方式)

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

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


決策樹


決策樹是一顆依托決策而建立起來的樹。


ID3


1、首先是針對當前的集合,計算每個特征的信息增益

2、然后選擇信息增益最大的特征作為當前節(jié)點的決策決策特征

3、根據(jù)特征不同的類別劃分到不同的子節(jié)點(比如年齡特征有青年,中年,老年,則劃分到3顆子樹)

4、然后繼續(xù)對子節(jié)點進行遞歸,直到所有特征都被劃分


S(C,ai)=?∑i(pi?log(pi))


一個屬性中某個類別的熵 pi=P(yi|ai), pi表示ai情況下發(fā)生yi的概率,也即是統(tǒng)計概率。


S(C,A)=∑i(P(A=ai)?S(ai))


整個屬性的熵,為各個類別的比例與各自熵的加權(quán)求和。


Gain(C,A)=S(C)?S(C,A)


增益表示分類目標的熵減去當前屬性的熵,增益越大,分類能力越強

(這里前者叫做經(jīng)驗熵,表示數(shù)據(jù)集分類C的不確定性,后者就是經(jīng)驗條件熵,表示在給定A的條件下對數(shù)據(jù)集分類C的不確定性,兩者相減叫做互信息,決策樹的增益等價于互信息)。


比如說當前屬性是是否擁有房產(chǎn),分類是是否能償還債務(wù)


現(xiàn)在:


  • 有用房產(chǎn)為7個,4個能償還債務(wù),3個無法償還債務(wù)

  • 然后無房產(chǎn)為3個,其中1個能償還債務(wù),2個無法償還債務(wù)


然后


有房子的熵:S(have_house)=?(47?log47 37?log37)

無房子的熵:S(no_house)=?(13?log13 23?log23)

分類的熵:S(classifier)=?(510?log510 510?log510)

最終的增益=S(classifier)?(710?S(have_house) 310?S(no_house)) 最大越好


關(guān)于損失函數(shù)


設(shè)樹的葉子節(jié)點個數(shù)為T,t為其中一個葉子節(jié)點,該葉子節(jié)點有Nt個樣本,其中k類的樣本有Ntk個,H(t)為葉子節(jié)點上的經(jīng)驗熵,則損失函數(shù)定義為

Ct(T)=∑(Nt?H(t)) λ|T|


其中

H(t)=∑(NtkNt?log(NtkNt))


代入可以得到

Ct(T)=∑(∑(Ntk?log(Ntk/Nt))) λ|T|


λ|T|為正則化項,λ是用于調(diào)節(jié)比率

決策樹的生成只考慮了信息增益


C4.5


它是ID3的一個改進算法,使用信息增益率來進行屬性的選擇

splitInformation(S,A)=?∑i(|Si||S|?log2(|Si||S|))GainRatio(S,A)=Gain(S,A)splitInformation(S,A)


優(yōu)缺點:


準確率高,但是子構(gòu)造樹的過程中需要進行多次的掃描和排序,所以它的運算效率較低


Cart


分類回歸樹(Classification And Regression Tree)是一個決策二叉樹,在通過遞歸的方式建立,每個節(jié)點在分裂的時候都是希望通過最好的方式將剩余的樣本劃分成兩類,這里的分類指標:


1、分類樹:基尼指數(shù)最小化(gini_index)

2、回歸樹:平方誤差最小化


分類樹:


1、首先是根據(jù)當前特征計算他們的基尼增益

2、選擇基尼增益最小的特征作為劃分特征

3、從該特征中查找基尼指數(shù)最小的分類類別作為最優(yōu)劃分點

4、將當前樣本劃分成兩類,一類是劃分特征的類別等于最優(yōu)劃分點,另一類就是不等于

5、針對這兩類遞歸進行上述的劃分工作,直達所有葉子指向同一樣本目標或者葉子個數(shù)小于一定的閾值


gini用來度量分布不均勻性(或者說不純),總體的類別越雜亂,GINI指數(shù)就越大(跟熵的概念很相似)

gini(ai)=1?∑i(p2i)


pi當前數(shù)據(jù)集中第i類樣本的比例


gini越小,表示樣本分布越均勻(0的時候就表示只有一類了),越大越不均勻

基尼增益

gini_gain=∑i(NiN?gini(ai))


表示當前屬性的一個混亂 NiN表示當前類別占所有類別的概率


最終Cart選擇GiniGain最小的特征作為劃分特征


以ID3中的貸款的那棵樹為樣例:


基尼指數(shù)有房產(chǎn):gini(have_house)=1?((37)2 (47)2)

基尼指數(shù)無房產(chǎn)gini(no_house)=1?((13)2 (23)2)

基尼增益為gini_gain=710?gini(have_house) 310?gini(no_house)


回歸樹:


回歸樹是以平方誤差最小化的準則劃分為兩塊區(qū)域


1、遍歷特征計算最優(yōu)的劃分點s,

使其最小化的平方誤差是:min{min(R1.sigma((yi?c1)2)) min(R2.sigma((yi?c2)2))}

計算根據(jù)s劃分到左側(cè)和右側(cè)子樹的目標值與預(yù)測值之差的平方和最小,這里的預(yù)測值是兩個子樹上輸入xi樣本對應(yīng)yi的均值


2、找到最小的劃分特征j以及其最優(yōu)的劃分點s,根據(jù)特征j以及劃分點s將現(xiàn)有的樣本劃分為兩個區(qū)域,一個是在特征j上小于等于s,另一個在在特征j上大于s

R1(j)={x|x(j)≤s}R2(j)={x|x(j)>s}


3、進入兩個子區(qū)域按上述方法繼續(xù)劃分,直到到達停止條件


這里面的最小化我記得可以使用最小二乘法來求


關(guān)于剪枝:用獨立的驗證數(shù)據(jù)集對訓(xùn)練集生長的樹進行剪枝(事后剪枝)。


停止條件


1、直到每個葉子節(jié)點都只有一種類型的記錄時停止,(這種方式很容易過擬合)

2、另一種時當葉子節(jié)點的記錄樹小于一定的閾值或者節(jié)點的信息增益小于一定的閾值時停止


關(guān)于特征與目標值


1、特征離散 目標值離散:可以使用ID3,cart

2、特征連續(xù) 目標值離散:將連續(xù)的特征離散化 可以使用ID3,cart

3、特征離散 目標值連續(xù)


決策樹的分類與回歸


  • 分類樹

輸出葉子節(jié)點中所屬類別最多的那一類


  • 回歸樹

輸出葉子節(jié)點中各個樣本值的平均值


理想的決策樹


1、葉子節(jié)點數(shù)盡量少

2、葉子節(jié)點的深度盡量小(太深可能會過擬合)


解決決策樹的過擬合


1、剪枝

  • 前置剪枝:在分裂節(jié)點的時候設(shè)計比較苛刻的條件,如不滿足則直接停止分裂(這樣干決策樹無法到最優(yōu),也無法得到比較好的效果)

  • 后置剪枝:在樹建立完之后,用單個節(jié)點代替子樹,節(jié)點的分類采用子樹中主要的分類(這種方法比較浪費前面的建立過程)

2、交叉驗證

3、隨機森林


優(yōu)缺點


優(yōu)點:


1、計算量簡單,可解釋性強,比較適合處理有缺失屬性值的樣本,能夠處理不相關(guān)的特征;


缺點:

1、單顆決策樹分類能力弱,并且對連續(xù)值變量難以處理;

2、容易過擬合(后續(xù)出現(xiàn)了隨機森林,減小了過擬合現(xiàn)象);


隨機森林RF


隨機森林是有很多隨機得決策樹構(gòu)成,它們之間沒有關(guān)聯(lián)。得到RF以后,在預(yù)測時分別對每一個決策樹進行判斷,最后使用Bagging的思想進行結(jié)果的輸出(也就是投票的思想)


學(xué)習(xí)過程


1、現(xiàn)在有N個訓(xùn)練樣本,每個樣本的特征為M個,需要建K顆樹

2、從N個訓(xùn)練樣本中有放回的取N個樣本作為一組訓(xùn)練集(其余未取到的樣本作為預(yù)測分類,評估其誤差)

3、從M個特征中取m個特征左右子集特征(m<<M)

4、對采樣的數(shù)據(jù)使用完全分裂的方式來建立決策樹,這樣的決策樹每個節(jié)點要么無法分裂,要么所有的樣本都指向同一個分類

5、重復(fù)2的過程K次,即可建立森林


預(yù)測過程


1、將預(yù)測樣本輸入到K顆樹分別進行預(yù)測

2、如果是分類問題,直接使用投票的方式選擇分類頻次最高的類別

3、如果是回歸問題,使用分類之后的均值作為結(jié)果


參數(shù)問題


1、這里的一般取m=sqrt(M)

2、關(guān)于樹的個數(shù)K,一般都需要成百上千,但是也有具體的樣本有關(guān)(比如特征數(shù)量)

3、樹的最大深度,(太深可能可能導(dǎo)致過擬合??)

4、節(jié)點上的最小樣本數(shù)、最小信息增益


泛化誤差估計


使用oob(out-of-bag)進行泛化誤差的估計,將各個樹的未采樣樣本作為預(yù)測樣本(大約有36.8%),使用已經(jīng)建立好的森林對各個預(yù)測樣本進行預(yù)測,預(yù)測完之后最后統(tǒng)計誤分得個數(shù)占總預(yù)測樣本的比率作為RF的oob誤分率。


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


ID3算法:處理離散值的量

C45算法:處理連續(xù)值的量

Cart算法:離散和連續(xù) 兩者都合適?


關(guān)于CART


Cart可以通過特征的選擇迭代建立一顆分類樹,使得每次的分類平面能最好的將剩余數(shù)據(jù)分為兩類


gini=1?∑(p2i),表示每個類別出現(xiàn)的概率和與1的差值,


分類問題:argmax(Gini?GiniLeft?GiniRight)

回歸問題:argmax(Var?VarLeft?VarRight)


查找最佳特征f已經(jīng)最佳屬性閾值th 小于th的在左邊,大于th的在右邊子樹


優(yōu)缺點


1、能夠處理大量特征的分類,并且還不用做特征選擇

2、在訓(xùn)練完成之后能給出哪些feature的比較重要

1、訓(xùn)練速度很快

1、很容易并行

1、實現(xiàn)相對來說較為簡單


GBDT


GBDT的精髓在于訓(xùn)練的時候都是以上一顆樹的殘差為目標,這個殘差就是上一個樹的預(yù)測值與真實值的差值。


比如,當前樣本年齡是18歲,那么第一顆會去按18歲來訓(xùn)練,但是訓(xùn)練完之后預(yù)測的年齡為12歲,差值為6,


所以第二顆樹的會以6歲來進行訓(xùn)練,假如訓(xùn)練完之后預(yù)測出來的結(jié)果為6,那么兩棵樹累加起來就是真實年齡了,


但是假如第二顆樹預(yù)測出來的結(jié)果是5,那么剩余的殘差1就會交給第三個樹去訓(xùn)練。


Boosting的好處就是每一步的參加就是變相了增加了分錯instance的權(quán)重,而對已經(jīng)對的instance趨向于0,這樣后面的樹就可以更加關(guān)注錯分的instance的訓(xùn)練了


Shrinkage


Shrinkage認為,每次走一小步逐步逼近的結(jié)果要比每次邁一大步逼近結(jié)果更加容易避免過擬合。


y(1~i)=y(1~i?1) step?yi


就像我們做互聯(lián)網(wǎng),總是先解決60%用戶的需求湊合著,再解決35%用戶的需求,最后才關(guān)注那5%人的需求,這樣就能逐漸把產(chǎn)品做好.


調(diào)參


1、樹的個數(shù) 100~10000

2、葉子的深度 3~8

3、學(xué)習(xí)速率 0.01~1

4、葉子上最大節(jié)點樹 20

5、訓(xùn)練采樣比例 0.5~1

6、訓(xùn)練特征采樣比例 sqrt(num)


優(yōu)缺點:


優(yōu)點:


1、精度高

2、能處理非線性數(shù)據(jù)

3、能處理多特征類型

4、適合低維稠密數(shù)據(jù)


缺點:


5、并行麻煩(因為上下兩顆樹有聯(lián)系)

6、多分類的時候 復(fù)雜度很大


BP


最小二乘法


最小二乘法是一種數(shù)學(xué)的優(yōu)化技術(shù),通過求最小化平方誤差來尋找最佳的函數(shù)匹配


假設(shè)現(xiàn)在有二維的觀測數(shù)據(jù)(x1,y1),(x2,y2)…(xn,yn),求y=a bx的擬合。


現(xiàn)設(shè)yi=a b?xi ki 如果有a,b能得到∑Ni=1(|ki|)最小,則該線比較理想

所以先變?yōu)榍髆in(∑Ni=1(ki)) ,這個與min(∑Ni=1(k2i))等價

而ki=yi?(a b?xi)


那么現(xiàn)設(shè)f=∑i=1N((yi?(a b?xi))2)求其最小即可


上述就是最小二乘原則,估計a,b的方法稱為最小二乘法


先求f對a,b的偏導(dǎo):

▽af=?2?N∑i=1(yi?(a b?xi))=0

▽bf=?2?xi?N∑i=1(yi?(a b?xi))=0


現(xiàn)設(shè):

X=∑Ni=1xiNY=∑Ni=1yiN


則代入上述偏導(dǎo):

a?N b?N?X=N?Ya?N?X b?N∑i=1(x2i)=N∑i=1(xi?yi)


求該行列式:

|NN?XN?X∑Ni=1x2i|=N?N∑i=1((xi?X))!=0


所以有唯一解


最后記:

l(xx)=N∑i=1(xi?X)2l(yy)=N∑i=1(yi?Y)2l(xy)=N∑i=1((xi?X)(yi?Y))




b=l(xy)l(xx)a=Y?b?X


EM


EM用于隱含變量的概率模型的極大似然估計,它一般分為兩步:第一步求期望(E),第二步求極大(M),


如果概率模型的變量都是觀測變量,那么給定數(shù)據(jù)之后就可以直接使用極大似然法或者貝葉斯估計模型參數(shù)。


但是當模型含有隱含變量的時候就不能簡單的用這些方法來估計,EM就是一種含有隱含變量的概率模型參數(shù)的極大似然估計法。


應(yīng)用到的地方:混合高斯模型、混合樸素貝葉斯模型、因子分析模型


Bagging


1、從N樣本中有放回的采樣N個樣本

2、對這N個樣本在全屬性上建立分類器(CART,SVM)

3、重復(fù)上面的步驟,建立m個分類器

4、預(yù)測的時候使用投票的方法得到結(jié)果


Boosting


boosting在訓(xùn)練的時候會給樣本加一個權(quán)重,然后使loss function盡量去考慮那些分錯類的樣本(比如給分錯類的樣本的權(quán)重值加大)


凸優(yōu)化


在機器學(xué)習(xí)中往往是最終要求解某個函數(shù)的最優(yōu)值,但是一般情況下,任意一個函數(shù)的最優(yōu)值求解比較困難,但是對于凸函數(shù)來說就可以有效的求解出全局最優(yōu)值。


凸集


一個集合C是,當前僅當任意x,y屬于C且0≤Θ≤1,都有Θ?x (1?Θ)?y屬于C

用通俗的話來說C集合線段上的任意兩點也在C集合中


凸函數(shù)


一個函數(shù)f其定義域(D(f))是凸集,并且對任意x,y屬于D(f)和0≤Θ≤1都有

f(Θ?x (1?Θ)?y)≤Θ?f(x) (1?Θ)?f(y)


用通俗的話來說就是曲線上任意兩點的割線都在曲線的上方


常見的凸函數(shù)有:


  • 指數(shù)函數(shù)f(x)=ax;a>1

  • 負對數(shù)函數(shù)?logax;a>1,x>0

  • 開口向上的二次函數(shù)等


凸函數(shù)的判定:


1、如果f是一階可導(dǎo),對于任意數(shù)據(jù)域內(nèi)的x,y滿足f(y)≥f(x) f′(x)(y?x)

2、如果f是二階可導(dǎo),


凸優(yōu)化應(yīng)用舉例


  • SVM:其中由max|w| 轉(zhuǎn)向min(12?|w|2)

  • 最小二乘法?

  • LR的損失函數(shù)∑(yi?log(hw(xi)) (1?yi)?(log(1?hw(xi))))


參考


[1]. http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html

[2]. http://www.cnblogs.com/biyeymyhjob/archive/2012/07/18/2595410.html

[3]. http://blog.csdn.net/abcjennifer/article/details/7716281

[4]. http://ufldl./wiki/index.php/Softmax%E5%9B%9E%E5%BD%92

[5]. 《統(tǒng)計學(xué)習(xí)方法》.李航


備注


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多