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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习之决策树算法详解

發布時間:2024/3/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习之决策树算法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1-1 基本流程

決策樹是一個有監督分類與回歸算法。
決策樹的生成只考慮局部最優,相對的,決策樹剪枝則考慮全局最優。

一、概念:

決策樹:是一種樹形結構,其中每個內部節點表示一個屬性上的判斷,每個分支代表一個判斷結果的輸出,最后每個葉節點代表一種分類結果,本質是一顆由多個判斷節點組成的樹。

二、劃分依據:

①熵

物理學上,熵 Entropy 是“混亂” 程度的量度。
系統越有序,熵值越低;系統越混亂或者分散,熵值越高
信息理論
1、當系統的有序狀態一致時,數據越集中的地方熵值越小,數據越分散的地方熵值越大。這是從信息的完整性上進行的描述。
2、當數據量一致時,系統越有序,熵值越低;系統越混亂或者分散,熵值越高。這是從信息的有序性上進行的描述。

假如事件A的分類劃分是(A1,A2,…,An),每部分發生的概率是(p1,p2,…,pn),那信息熵定義為公式如下:
Ent(A)=?∑k=1npklog2pkEnt(A)=-\sum_{k=1}^np_klog_2p_k Ent(A)=?k=1n?pk?log2?pk?
二分法:
如果有32個球隊,準確的信息量應該是:
H = -(p1 * logp1 + p2 * logp2 + … + p32 * logp32),其中 p1, …, p32 分
別是這 32 支球隊奪冠的概率。當每支球隊奪冠概率相等都是 1/32 的時:H = -(32 * 1/32 * log1/32) = 5 每個事件概率相同時,熵最大,這件事越不確定。

②特征選擇–信息增益及增益率

信息增益:以某特征劃分數據集前后的熵的差值。熵可以表示樣本集合的不確定性,熵越大,樣本的不確定性就越大。因此可以使用劃分前后集合熵的差值來衡量使用當前特征對于樣本集合D劃分效果的好壞。
信息增益 = entroy(前) - entroy(后)
信息增益公式如下:
D:為樣本集
Ent(D):整體熵
a:離散型屬性
v: 是a屬性里可能的取值節點
D^v:第v個分支節點包含了D中所有在屬性a上取值為a^v的樣本

信息增益越大,熵被消除,不確定性越小,應作為最優特征
Gain(D,a)=Ent(D)?∑v=1vDvDEnt(Dv)Gain(D,a) = Ent(D) - \sum_{v=1}^v\frac{D^v}{D}Ent(D^v) Gain(D,a)=Ent(D)?v=1v?DDv?Ent(Dv)
增益率:增益比率度量是用前面的增益度量Gain(S,A)和所分離信息度量SplitInformation(如上例的性別,活躍度等)的比值來共同定義的。

公式如下:
GainRatio(SA,A)=Gain(SA,A)SplitInformation(SA,A)GainRatio(S_A,A)= \frac{Gain(S_A,A)}{SplitInformation(S_A,A)} GainRatio(SA?,A)=SplitInformation(SA?,A)Gain(SA?,A)?
SplitInformation(SA,A)=?∑m∈M∣SAm∣∣SA∣logSAmSASplitInformation(S_A,A) = -\sum_{m\in M}\frac{|S_{Am}|}{|S_A|}log\frac{S_Am}{S_A} SplitInformation(SA?,A)=?mM?SA?SAm??logSA?SA?m?

例子:
如下圖,第一列為論壇號碼,第二列為性別,第三列為活躍度,最后一列用戶是否流失

其中Positive為正樣本( 已流失) , Negative為負樣本
( 未流失) , 下面的數值為不同劃分下對應的人數。可得到三個熵:
整體熵:
E(S)=?515log2(515)?1015log2(1015)=0.9182E(S) = -\frac{5}{15}log_2(\frac{5}{15}) - \frac{10}{15}log_2(\frac{10}{15}) =0.9182 E(S)=?155?log2?(155?)?1510?log2?(1510?)=0.9182
性別熵:
E(g1)=?38log2(38)?58log2(58)=0.9543E(g_1) = -\frac{3}{8}log_2(\frac{3}{8}) - \frac{5}{8}log_2(\frac{5}{8}) =0.9543 E(g1?)=?83?log2?(83?)?85?log2?(85?)=0.9543
E(g2)=?27log2(27)?57log2(57)=0.8631E(g_2) = -\frac{2}{7}log_2(\frac{2}{7}) - \frac{5}{7}log_2(\frac{5}{7}) =0.8631 E(g2?)=?72?log2?(72?)?75?log2?(75?)=0.8631
性別信息增益:
IGain(S,g)=E(s)?815E(g1)?715E(g2)=0.0064IGain(S,g) =E(s) -\frac{8}{15}E(g_1) - \frac{7}{15}E(g_2) =0.0064 IGain(S,g)=E(s)?158?E(g1?)?157?E(g2?)=0.0064
活躍度熵:
E(a1) = 0
E(a2) = 0.7219
E(a3) = 0

活躍度信息增益:
IGain(S,g)=E(s)?615E(a1)?515E(a2)?415E(a3)=0.6776IGain(S,g) =E(s) -\frac{6}{15}E(a_1) - \frac{5}{15}E(a_2)- \frac{4}{15}E(a_3) =0.6776 IGain(S,g)=E(s)?156?E(a1?)?155?E(a2?)?154?E(a3?)=0.6776
活躍度的信息增益比性別的信息增益大,也就是說,活躍度對用戶流失的影響比性別大。
在做特征選擇或者數據分析的時候, 我們應該重點考察活躍度這個指標。

③基尼值和基尼指數

基尼值Gini(D):從數據集D中隨機抽取兩個樣本,起類別標記不一致的概率,故,Gini
(D)值越小,數據集D的純度越高。
基尼系數公式如下:
Gini(D)=1?∑k=1∣y∣pk2Gini(D) = 1-\sum_{k=1}^{|y|}p_k^2 Gini(D)=1?k=1y?pk2?
基尼指數Gini_index(D):一般,選擇使劃分后基尼系數最小的屬性作為最優化分屬性
基尼指數公式如下:
Gini_index(D,a)=∑v=1v∣Dv∣∣D∣Gini(Dv)Gini\_index(D,a) = \sum_{v=1}^v\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1v?DDv?Gini(Dv)
基尼增益:
Gini(D,a)=Gini(D)?∑v=1v∣Dv∣∣D∣Gini(Dv)Gini(D,a) = Gini(D) - \sum_{v=1}^v\frac{|D^v|}{|D|}Gini(D^v) Gini(D,a)=Gini(D)?v=1v?DDv?Gini(Dv)
例題:

總結如下:

類型拖欠不拖欠匯總
整體3710
有房033
沒房347
單身224
結婚044
離婚112

1,對數據集非類標號屬性{是否有房,婚姻狀況,年收入}分別計算它們的Gini系數增益,取Gini系數增益值最大的屬性作為決策樹的根節點屬性。

2、根節點的Gini系數為:
Gini(是否拖欠貸款)
Gini(D)=1?(310)2?(710)2=0.42Gini(D)=1-(\frac{3}{10})^2-(\frac{7}{10})^2=0.42 Gini(D)=1?(103?)2?(107?)2=0.42
3, 當根據是否有房來進行劃分時, Gini系數增益計算過程為 :
Gini(左子節點)=
Gini(y)=1?(03)2?(33)2=0Gini(y)=1-(\frac{0}{3})^2-(\frac{3}{3})^2=0 Gini(y)=1?(30?)2?(33?)2=0
Gini(右子節點)=
Gini(n)=1?(37)2?(47)2=0.4898Gini(n)=1-(\frac{3}{7})^2-(\frac{4}{7})^2=0.4898 Gini(n)=1?(73?)2?(74?)2=0.4898
{ 是否有房}=
Gini(D)?310Gini(y)?710Gini(n)=0.42?310?0?710?0.4898=0.077Gini(D)-\frac{3}{10}Gini(y)-\frac{7}{10}Gini(n)=0.42-\frac{3}{10}*0-\frac{7}{10}*0.4898=0.077 Gini(D)?103?Gini(y)?107?Gini(n)=0.42?103??0?107??0.4898=0.077
4, 若按婚姻狀況屬性來劃分, 屬性婚姻狀況有三個可能的取值{married,
single, divorced}, 分別計算劃分后的Gini系數增益。
分組為{married} | {single,divorced}時

類型拖欠不拖欠匯總
整體3710
有房033
沒房347
結婚044
單身,離婚336

{ 婚姻狀況}=
0.42?410?0?610?[1?(36)2?(36)2]=0.120.42-\frac{4}{10}*0-\frac{6}{10}*[1-(\frac{3}{6})^2-(\frac{3}{6})^2] = 0.12 0.42?104??0?106??[1?(63?)2?(63?)2]=0.12
當分組為{single} | {married,divorced}時

類型拖欠不拖欠匯總
整體3710
有房033
沒房347
單身224
離婚,結婚156

{ 婚姻狀況}=
0.42?410?0.5?610?[1?(16)2?(56)2]=0.0530.42-\frac{4}{10}*0.5-\frac{6}{10}*[1-(\frac{1}{6})^2-(\frac{5}{6})^2] = 0.053 0.42?104??0.5?106??[1?(61?)2?(65?)2]=0.053
當分組為{divorced} | {single,married}時

類型拖欠不拖欠匯總
整體3710
有房033
沒房347
離婚112
單身,結婚268

{ 婚姻狀況}= 0.42?210?0.5?810?[1?(28)2?(68)2]=0.0530.42-\frac{2}{10}*0.5-\frac{8}{10}*[1-(\frac{2}{8})^2-(\frac{6}{8})^2] = 0.0530.42?102??0.5?108??[1?(82?)2?(86?)2]=0.053
對比計算結果,根據婚姻狀況屬性來劃分根節點時取Gini系數增益最大的分組作為劃分結果即
{married} | {single,divorced}

小結:
決策樹的生成:通常使用信息增益最大,信息增益比最大和基尼指數最小作為最優特征,從根節點開始,遞歸的產生決策樹。相當于用信息增益或其他準則不斷地選取局部最優的特征,或將訓練集分割為能夠基本正確分了的子集

一,決策樹構建的基本步驟如下:

  • 開始講所有記錄看作一個節點
  • 遍歷每個變量的每一種分割方式,找到最好的分割點
  • 分割成兩個節點N1和N2
  • 對N1和N2分別繼續執行2-3步,直到每個節點足夠“純”為止。
    [Source]https://www.cnblogs.com/bourneli/archive/2013/03/15/2961568.html
  • 二,決策樹的變量可以有兩種:
    1) 數字型(Numeric):變量類型是整數或浮點數,如前面例子中的“年收入”。用“>=”,
    “>”,“<”或“<=”作為分割條件(排序后,利用已有的分割情況,可以優化分割算法的時間復雜度)。
    2) 名稱型(Nominal):類似編程語言中的枚舉類型,變量只能重有限的選項中選取,比如前面例子中的“婚姻情況”,只能是“單身”,“已婚”或“離婚”,使用“=”來分割。

    三,如何評估分割點的好壞?
    如果一個分割點可以將當前的所有節點分為兩類,使得每一類都很“純”,也就是同一類的記錄較多,那么就是一個好分割點。
    比如上面的例子,“擁有房產”,可以將記錄分成了兩類,“是”的節點全部都可以償還債務,非常
    “純”;“否”的節點,可以償還貸款和無法償還貸款的人都有,不是很“純”,但是兩個節點加起來的純度之和與原始節點的純度之差最大,所以按照這種方法分割。構建決策樹采用貪心算法,只考慮當前純度差最大的情況作為分割點。

    常見的決策樹類型:

    1-2 常見決策樹類型及剪枝

    1為什么要剪枝

    • 隨著樹的增長, 在訓練樣集上的精度是單調上升的,然而在獨立的測試樣例上測出的精度先上升后下降。
    • 原因1: 噪聲、 樣本沖突, 即錯誤的樣本數據。
    • 原因2: 特征即屬性不能完全作為分類標準。
    • 原因3: 巧合的規律性, 數據量不夠大。

    2常用的剪枝方法

    1.1 預剪枝:
    (1)每一個結點所包含的最小樣本數目,例如10,則該結點總樣本數小于10時,則不
    再分;
    (2)指定樹的高度或者深度,例如樹的最大深度為4;
    (3)指定結點的熵小于某個值,不再劃分。隨著樹的增長, 在訓練樣集上的精度是調上升的, 然而在獨立的測試樣例上測出的精度先上升后下降。

    1.2 后剪枝:
    后剪枝,在已生成過擬合決策樹上進行剪枝,可以得到簡化版的剪枝決策樹。
    主要有四種:
    (1)REP-錯誤率降低剪枝
    (2)PEP-悲觀剪枝
    (3)CCP-代價復雜度剪枝
    (4)MEP-最小錯誤剪枝

    結論:
    決策樹的剪枝,由于生成的決策樹存在過擬合問題,需要對它進行剪枝,以簡化學到的決策樹。決策樹的剪枝,往往從已生成的樹上剪掉一些葉節點或葉節點以上的子樹,并將其父節點或根節點作為新的葉節點,從而簡化生成的決策樹模型。

    ID3不能剪枝
    C4.5和CRAT都可以剪枝

    總結

    以上是生活随笔為你收集整理的机器学习之决策树算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。