sklearn 决策树例子_机器学习|决策树的生成过程是怎样?(一)
本文筆者將用具體例子講述決策樹的構(gòu)建過程,分析:決策樹生成過程中有什么樣的問題?
一、基本概念
決策樹的定義:
首先,決策樹是一種有監(jiān)督的分類算法——即給定X,Y值,構(gòu)建X,Y的映射關系。
不同于線性回歸等是多項式,決策樹是一種樹形的結(jié)構(gòu),一般由根節(jié)點、父節(jié)點、子節(jié)點、葉子節(jié)點構(gòu)成如圖所示。
父節(jié)點和子節(jié)點是相對的,子節(jié)點可以由父節(jié)點分裂而來,而子節(jié)點還能作為新的父節(jié)點繼續(xù)分裂;根節(jié)點是沒有父節(jié)點,即初始分裂節(jié)點,葉子節(jié)點是沒有子節(jié)點的節(jié)點,為終節(jié)點。
每一個分支代表著一個判斷,每個葉子節(jié)點代表一種結(jié)果。
這是在已知各種情況的發(fā)生的概率的基礎上,通過構(gòu)建決策樹來進行分析的一種方式。
預測方式:
- 根據(jù)輸入的樣本X的特征屬性和決策樹的取值,將輸入的X樣本分配到某一個葉子節(jié)點中。
- 將葉子節(jié)點中出現(xiàn)最多的Y值,作為輸入的X樣本的預測類別。
目的:
最優(yōu)的模型應該是:葉子節(jié)點中只包含一個類別的數(shù)據(jù)。
但是,事實是不可能將數(shù)據(jù)分的那么的純,因此,需要“貪心”策略,力爭在每次分割時都比上一次好一些,分的更純一些。
二、決策樹構(gòu)建過程
步驟一:將所有的特征看成一個一個的節(jié)點,eg(擁有房產(chǎn)、婚姻狀態(tài)、年收入這些特征,我們可以看成一個一個的節(jié)點。)
步驟二:遍歷當前特征的每一種分割方式,找到最好的分割點eg(婚姻狀態(tài)這個特征,我們可以按照單身、已婚、離婚進行劃分;也可以按照結(jié)過婚、沒有結(jié)過婚進行劃分);將數(shù)據(jù)劃分為不同的子節(jié)點,eg: N1、 N2….Nm;計算劃分之后所有子節(jié)點的“純度”信息
步驟三:使用第二步遍歷所有特征,選擇出最優(yōu)的特征,以及該特征的最優(yōu)的劃分方式,得出最終的子節(jié)點N1、 N2….Nm
步驟四:對子節(jié)點N1、N2….Nm分別繼續(xù)執(zhí)行2-3步,直到每個最終的子節(jié)點都足夠“純”。
從上述步驟可以看出,決策生成過程中有兩個重要的問題:
1. 對數(shù)據(jù)進行分割
根據(jù)屬性值的類型進行劃分:
如果值為離散型,且不生成二叉決策樹,則此時一個屬性就是可以一個分支,比如:上圖數(shù)據(jù)顯示,婚姻狀態(tài)為一個屬性,而下面有三個值,單身、已婚、離婚,則這三個值都可以作為一個分類。
如果值為離散型,且生成二叉決策樹,可以按照 “屬于此子集”和“不屬于此子集”分成兩個分支。還是像上面的婚姻狀態(tài),這可以按照已婚,和非婚,形成兩個分支。
如果值為連續(xù)性,可以確定一個值作為分裂點,按照大于分割點,小于或等于分割點生成兩個分支,如上圖數(shù)據(jù),我可以按照6千元的點劃分成:大于6千元和小于6千元。
2. 找到最好的分裂特征
決策樹算法是一種“貪心”算法策略——只考慮在當前數(shù)據(jù)特征情況下的最好分割方式。
在某種意義上的局部最優(yōu)解,也就是說我只保證在當分裂的時候,能夠保證數(shù)據(jù)最純就好。
對于整體的數(shù)據(jù)集而言:按照所有的特征屬性進行劃分操作,對所有劃分操作的結(jié)果集的“純度”進行比較,選擇“純度”越高的特征屬性作為當前需要分割的數(shù)據(jù)集進行分割操作。
決策樹使用信息增益作為選擇特征的依據(jù),公式如下:
H(D)為:分割前的純度。
H(D|A)為:在給定條件A下的純度,兩者之差為信息增益度。如果信息增益度越大,則H(D|A)越小,則代表結(jié)果集的數(shù)據(jù)越純。
計算純度的度量方式:Gini、信息熵、錯誤率。
一般情況下,選擇信息熵和Gini系數(shù),這三者的值越大,表示越“不純”。
Gini:
信息熵:
錯誤率:
3. 什么時候停止分裂
一般情況有兩種停止條件:
方式一可能會使樹的節(jié)點過多,導致過擬合(Overfiting)等問題。所以,比較常用的方式是使用方式二作為停止條件。
三、舉例
數(shù)據(jù)集如下:
1. 對數(shù)據(jù)特征進行分割
- 擁有房產(chǎn)(是、否)
- 婚姻狀態(tài)(單身、已婚、離婚)
- 年收入(80、97.5)
2. 通過信息增益找到分割特征
首先,計算按照擁有房產(chǎn)這個特征進行劃分的信息增益,使用錯誤率進行純度的計算:
計算原始數(shù)據(jù)的純度:
計算按擁有房產(chǎn)劃分后的結(jié)果集數(shù)據(jù)純度H(D|A):
H(D| X=有房產(chǎn)) 的計算方式:
H(D| X=無房產(chǎn)) 的計算方式:
計算信息增益度Gain(房產(chǎn)):
同理,可以計算:婚姻狀態(tài) 年收入=97.5
Gain(婚姻) = 0.205
Gain(婚姻) =0.395
按照Gain越大,分割后的純度越高,因此第一個分割屬性為收入,并按照97.5進行劃分。
左子樹的結(jié)果集夠純,因此不需要繼續(xù)劃分。
接下來,對右子樹年收入大于97.5的數(shù)據(jù),繼續(xù)選擇特征進行劃分,且不再考慮收入這個特征,方法如上,可以得到如圖:
四、常見算法
ID3:
優(yōu)點:決策樹構(gòu)建速度快;實現(xiàn)簡單
缺點:
- 計算依賴于特征數(shù)目較多的特征,而屬性值最多的屬性并不一定最優(yōu) 。
- ID3算法不是遞增算法,ID3算法是單變量決策樹,對于特征屬性之間的關系不會考慮。
- 抗噪性差。
- 只適合小規(guī)模數(shù)據(jù)集,需要將數(shù)據(jù)放到內(nèi)存中。
C4.5:
在ID3算法的基礎上,進行算法優(yōu)化提出的一種算法(C4.5),使用信息增益率來取代ID3中的信息增益。
CART(Classification And Regression Tree):
五、總結(jié)
本文由 @SincerityY 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
總結(jié)
以上是生活随笔為你收集整理的sklearn 决策树例子_机器学习|决策树的生成过程是怎样?(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女生地摊套玩具熊拆开发现摄像头 已在卧室
- 下一篇: 华为Mate X3供不应求 很多网友抢着