python机器学习决策树算法
一、概述:
1、信息熵:
公式:H[x] = -∑p(x)log2p(x)
不確定性越大,信息熵越大
2、決策樹評價:
優(yōu)點:小規(guī)模數(shù)據(jù)集有效
缺點:處理連續(xù)變量不好;類別較多時,錯誤增加的比較快;不能處理大量數(shù)據(jù)
二、決策樹生成算法:
1、ID3算法:
選擇最大化信息增益來對結點進行劃分。
缺點:偏向于具有大量值的屬性,在訓練集中,某個屬性所取的不同值的個數(shù)越多,那么越有可能拿它來作為分裂屬性。
比如一個訓練集有10個元素,按某個屬性(該屬性下有10個類)分類,此時信息增益最大,但是毫無意義。
Ex:14個樣本的電腦購買情況
2、C4.5算法:
信息增益的方法傾向于首先選擇因子數(shù)較多的變量。
信息增益的改進,信息增益率:
信息增益率 = 信息增益 / 分裂信息
Ex:機器學習例題-就業(yè)情況
3、CART算法:
CART用基尼(Gini)系數(shù)最小化準則來進行特征選擇,生成二叉樹;
分別計算它們的Gini系數(shù)增益,取Gini系數(shù)增益值最大的屬性作為決策樹的根節(jié)點屬性
公式如下:
Ex:10個樣本是否拖欠貸款
注意:
由于CART算法構建的是二叉樹,因此對于有多個類的屬性(如婚姻)需要進行預分類;對于類連續(xù)的屬性(如年收入),需要預先指定一個中間值,以滿足二分類的要求,如下:
婚姻狀況:
年收入:
4、剪枝
(1)預剪枝:
在建立決策樹之前,根據(jù)自己的經(jīng)驗,把一些不太重要的屬性去掉
(2)后剪枝:
用所有的屬性構建決策樹之后,再砍掉決策樹的一部分;
作用:在有限度地損失一部分精確度的前提下,明顯地降低決策樹的復雜度,可以抵抗決策樹的過擬合情況。
三、決策樹非線性二分類:
1、非線性二分類存在的問題:
非線性二分類的決策邊界,比線性二分類的決策邊界復雜。
因此在構建決策樹的時候,會發(fā)現(xiàn)此時樹的結構很復雜、不實用;
同時,還很容易出現(xiàn)過擬合的情況(訓練集的結果很完美,但預測集的結果較差)
2、解決方法:剪枝
(1)設置樹的最大深度:max_depth
(2)設置內(nèi)部節(jié)點再劃分所需的最小樣本數(shù):min_samples_split
當某個節(jié)點包含的樣本數(shù)足夠小時,即使該節(jié)點中的樣本并非一類,也不對其再劃分
(3)通過剪枝,雖然可能會損失一些訓練集精度,但是卻明顯降低了樹結構的復雜度;同時也可以抵抗過擬合
四、sklearn生成決策樹的分析:
1、最上面一行0.5的意思是在獨熱矩陣x_data中,各列參數(shù)(如age、student、credit_rating等)的取值都是0(no)或者1(yes),因此0.5就是用來判斷是0還是1;
2、value中兩個值的意思是當前樣本中no和yes分別的個數(shù),因此value中兩值之和總等于當前的sample;
五、相關代碼展示:
這次代碼太多了,就不一個一個貼了,直接上鏈接:
相關代碼
總結
以上是生活随笔為你收集整理的python机器学习决策树算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Numerical Optimizati
- 下一篇: Java:大陆号码,香港号码,澳门号码,