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