决策树Decision Tree 和随机森林RandomForest基本概念(一)
文章目錄
- 一、決策樹介紹
- 1.1 什么是決策樹
- 1.2 決策樹種類
- 1.3 決策樹學習過程
- 1.4 Entropy(熵)
- 1.5 information gain(信息增益)
- 1.6 信息論
- 1.8 Gini系數
- 1.9 bagging method 和 random forests
- 1.10 剪枝算法
- 1.11 每個節點的位置如何確定?
- 1.12 每個節點在哪個值上做劃分,確定分支結構呢?
- 1.13 信息增益 vs 信息增益比
- 1.13 Gini 指數 vs 熵
- 二、決策樹算法
- 2.0 決策樹算法Hunt
- 2.1 ID3
- 2.2 C4.5
- 2.2 C5.0
- 2.3 CART
- 2.4 CART與ID3和C4.5的區別
- 2.5 決策樹與這些算法框架進行結合所得到的新的算法:
- 2.6 ID3,C4.5決策樹的生成
- 三、決策樹優缺點
- 3.1 優點
- 3.2 缺點
- 四 隨機森林基礎概念
- 4.1 隨機森林介紹
- 4.2 隨機森林的生成過程
- 4.3 隨機森林的評價指標--袋外誤差(oob error)
- 4.4 隨機森林的特點
- 五、Bagging和Boosting的概念與區別
- 5.1 Bagging算法(套袋法):
- 5.2 Boosting(提升法)
- 5.3 Bagging,Boosting的主要區別
- 有趣的事,Python永遠不會缺席
- 證書說明
一、決策樹介紹
1.1 什么是決策樹
??類決策樹模型是一種描述對實例進行分類的樹形結構. 決策樹由結點和有向邊組成. 結點有兩種類型: 內部結點和葉節點. 內部節點表示一個特征或屬性, 葉節點表示一個類.
??決策樹(Decision Tree),又稱為判定樹, 是一種以樹結構(包括二叉樹和多叉樹)形式表達的預測分析模型.
- 通過把實例從根節點排列到某個葉子節點來分類實例
- 葉子節點為實例所屬的分類
- 樹上每個節點說明了對實例的某個屬性的測試, 節點的每個后繼分支對應于該屬性的一個可能值
1.2 決策樹種類
- 分類樹–對離散變量做決策樹
- 回歸樹–對連續變量做決策樹
1.3 決策樹學習過程
- 特征選擇
- 決策樹生成: 遞歸結構, 對應于模型的局部最優
- 決策樹剪枝: 縮小樹結構規模, 緩解過擬合, 對應于模型的全局選擇
1.4 Entropy(熵)
??給定包含關于某個目標概念的正反樣例的樣例集S, 那么S相對這個布爾型分類的熵為:
??在信息論里面,信息熵衡量信息量的大小,也就是對隨機變量不確定度的一個衡量。熵越大,不確定性越大;
1.5 information gain(信息增益)
??假設隨機變量(X,Y), 其聯合分布概率為P(X=xi,Y=yi)=Pij, i=1,2,…,n;j=1,2,…,m
??則條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性, 其定義為X在給定條件下Y的條件概率分布的熵對X的數學期望
1.6 信息論
??若一事假有k種結果, 對應概率為P_i, 則此事件發生后所得到的信息量I為:
1.8 Gini系數
??Gini系數:
1.9 bagging method 和 random forests
??bagging method 和random forests 一般都是應用在決策樹中。
- bagging method 的思想: 假設一個數據集L,通過Boostrap(自助抽樣)有放回的抽樣n次,那么產生了n個樣本數據集,記為n個train集。
1) 第一步:我們將這n個train集進行訓練,因此產生了n個基分類器,也可以說是n個決策樹
2) 第二步:利用這n個基分類器對測試集進行預測,因此會得到n個結果。
3) 第三步:采取多數投票(majorty vote):將n個預測的結果出現頻率最高的類作為總體預測。 - random forests 我們稱為隨機森林,其實隨機森林是對裝袋法的一種改進,隨機森林也需要對自助抽樣訓練集建立一系列的決策樹,這和決策樹類似。
??隨機森林在建立樹的時候,不和裝袋法一樣,裝袋法建樹的時候是將所有預測變量都考慮進去,而隨機森林則是考慮每一個分裂點時,都是從所有的預測變量p中隨機選取m個預測變量,分裂點所用的預測變量只能從這m個變量中選擇。在每個分裂點處都重新進行抽樣,選出m個預測變量,通常m≈√p,對每一個分裂點來說,這個算法將大部分可用預測變量排除在外,雖然聽起來crazy,但是這個原理是很巧妙的。
??其實當隨機森林中的m=p時,隨機森林和裝袋法是一樣的。隨機森林考慮每個分裂點的子集相對來說比裝袋法少很多。這樣得到的樹的平均值有更小的方差,因而樹的可信度相對來說比較高。
1.10 剪枝算法
??決策樹算法很容易過擬合(overfitting),剪枝算法就是用來防止決策樹過擬合,提高泛華性能的方法。
??剪枝分為預剪枝與后剪枝
- 預剪枝是指在決策樹的生成過程中,對每個節點在劃分前先進行評估,若當前的劃分不能帶來泛化性能的提升,則停止劃分,并將當前節點標記為葉節點。
- 后剪枝是指先從訓練集生成一顆完整的決策樹,然后自底向上對非葉節點進行考察,若將該節點對應的子樹替換為葉節點,能帶來泛化性能的提升,則將該子樹替換為葉節點。
??那么怎么來判斷是否帶來泛化性能的提升那?
- 最簡單的就是留出法,即預留一部分數據作為驗證集來進行性能評估。
1.11 每個節點的位置如何確定?
??特征的選擇:每次選入的特征作為分裂的標準,都是使得決策樹在這個節點的根據你自己選擇的標準(信息熵最小、信息增益最大、gini系數最小).
1.12 每個節點在哪個值上做劃分,確定分支結構呢?
??遍歷劃分的節點的分界值操作來解決這個問題
1.13 信息增益 vs 信息增益比
??之所以引入了信息增益比,是由于信息增益的一個缺點。那就是:信息增益總是偏向于選擇取值較多的屬性。信息增益比在此基礎上增加了一個罰項,解決了這個問題。
1.13 Gini 指數 vs 熵
??既然這兩個都可以表示數據的不確定性,不純度。那么這兩個有什么區別那?
- Gini 指數的計算不需要對數運算,更加高效;
- Gini 指數更偏向于連續屬性,熵更偏向于離散屬性。
二、決策樹算法
??決策樹學習的算法通常是一個遞歸地選擇最優特征, 并根據該特征對訓練數據進行分割, 使得各個子數據集有一個最好的分類的過程。
??在決策樹算法中,ID3基于信息增益作為屬性選擇的度量, C4.5基于信息增益作為屬性選擇的度量, C5.0 是決策樹C4.5的商用算法,在內存管理等方面,給出了改進。比如在商用軟件SPSS中,就有該算法,CART基于基尼指數作為屬性選擇的度量。
2.0 決策樹算法Hunt
??在Hunt算法中, 通過遞歸的方式建立決策樹.
- 如果數據集D種所有的數據都屬于一個類, 那么將該節點標記為節點。
- 如果數據集D中包含屬于多個類的訓練數據, 那么選擇一個屬性將訓練數據劃分為較小的子集, 對于測試條件的每個輸出, 創建一個子節點, 并根據測試結果將D種的記錄分布到子節點中, 然后對每一個子節點重復1,2過程, 對子節點的子節點依然是遞歸地調用該算法, 直至最后停止.
2.1 ID3
??ID3基于信息增益作為屬性選擇的度量,屬性只能是枚舉型的(離散的),當然屬性值可以是連續的數值型,但是需要對這些數據進行預處理,變為離散型的。
??熵表示的是數據中包含的信息量大小。熵越小,數據的純度越高,也就是說數據越趨于一致,這是我們希望的劃分之后每個子節點的樣子。
??信息增益 = 劃分前熵 - 劃分后熵。信息增益越大,則意味著使用屬性 a 來進行劃分所獲得的 “純度提升” 越大 。也就是說,用屬性 a 來劃分訓練集,得到的結果中純度比較高。
??ID3 僅僅適用于二分類問題。ID3 僅僅能夠處理離散屬性。
ID3算法不足
- 使用ID3算法構建決策樹時, 若出現各屬性值取值數分布偏差大的情況, 分類精度會大打折扣
- ID3算法本身并未給出處理連續數據的方法
- ID3算法不能處理帶有缺失值的數據集, 故在算法挖掘之前需要對數據集中的缺失值進行預處理
- ID3算法只有樹的生成, 所以該算法生成的樹容易產生過擬合
2.2 C4.5
??C4.5基于信息增益作為屬性選擇的度量,能夠處理屬性是連續型的。而且,在C4.5算法中,又提出了兩個新的概念:
- 分離信息(Split Information)
- 信息增益率(Information gain ratio)
??C4.5 克服了 ID3 僅僅能夠處理離散屬性的問題,以及信息增益偏向選擇取值較多特征的問題,使用信息增益比來選擇特征。信息增益比 = 信息增益 / 劃分前熵 ,選擇信息增益比最大的作為最優特征。
??C4.5 處理連續特征是先將特征取值排序,以連續兩個值中間值作為劃分標準。嘗試每一種劃分,并計算修正后的信息增益,選擇信息增益最大的分裂點作為該屬性的分裂點。
2.2 C5.0
??C5.0 是決策樹C4.5的商用算法,在內存管理等方面,給出了改進。比如在商用軟件SPSS中,就有該算法。
2.3 CART
??注意: 上述三個算法只能做分類,不能做回歸,下一篇博文CART類似于C4.5,但可以做回歸。
??CART 的全稱是分類與回歸樹。從這個名字中就應該知道,CART 既可以用于分類問題,也可以用于回歸問題。
??CART基于基尼指數作為屬性選擇的度量.
??CART 與 ID3,C4.5 不同之處在于 CART 生成的樹必須是二叉樹。也就是說,無論是回歸還是分類問題,無論特征是離散的還是連續的,無論屬性取值有多個還是兩個,內部節點只能根據屬性值進行二分。
2.4 CART與ID3和C4.5的區別
- CART樹是二叉樹,而ID3和C4.5可以是多叉樹
- CART在生成子樹時,選擇一個特征一個取值作為切分點,生成兩個子樹
- 選擇特征和切分點的依據是Gini指數,選擇Gini指數最小的特征及切分點生成子樹
2.5 決策樹與這些算法框架進行結合所得到的新的算法:
??Bagging + 決策樹=隨機森林
??Boosting + 決策樹=提升樹
??Gradient Boosting+決策樹=GBDT總結
2.6 ID3,C4.5決策樹的生成
??輸入:訓練集D,特征集A,閾值eps 輸出:決策樹
??若D中所有樣本屬于同一類Ck,則T為單節點樹,將類Ck作為該節點的類標記,返回T
??若A為空集,即沒有特征作為劃分依據,則T為單節點樹,并將D中實例數最大的類Ck作為該節點的類標記,返回T
??否則,計算A中各特征對D的信息增益(ID3)/信息增益比(C4.5),選擇信息增益最大的特征Ag
??若Ag的信息增益(比)小于閾值eps,則置T為單節點樹,并將D中實例數最大的類Ck作為該節點的類標記,返回T
??否則,依照特征Ag將D劃分為若干非空子集Di,將Di中實例數最大的類作為標記,構建子節點,由節點及其子節點構成樹T,返回T
??對第i個子節點,以Di為訓練集,以A-{Ag}為特征集,遞歸地調用1~5,得到子樹Ti,返回Ti
三、決策樹優缺點
3.1 優點
(1) 速度快: 計算量相對較小, 且容易轉化成分類規則. 只要沿著樹根向下一直走到葉, 沿途的分裂條件就能夠唯一確定一條分類的謂詞.
(2) 準確性高: 挖掘出來的分類規則準確性高, 便于理解, 決策樹可以清晰的顯示哪些字段比較重要, 即可以生成可以理解的規則.
(3) 可以處理連續和種類字段
(4) 不需要任何領域知識和參數假設
(5) 適合高維數據
3.2 缺點
(1) 對于各類別樣本數量不一致的數據, 信息增益偏向于那些更多數值的特征
(2) 容易過擬合
(3) 忽略屬性之間的相關性
四 隨機森林基礎概念
??
4.1 隨機森林介紹
??隨機森林就是通過集成學習的思想將多棵樹集成的一種算法,它的基本單元是決策樹,而它的本質屬于機器學習的一大分支–集成學習(Ensemble Learning)方法。
??從直觀角度來解釋,每棵樹都是一個分類器(假設現在為分類問題),那么對于一個輸入樣本,N棵樹會有N個分類結果。而隨機森林集成了所有的分類投票結果,將投票次數最多的類別指定為最終的輸出,這就是一種最簡單的Bagging思想。
4.2 隨機森林的生成過程
- 從原始訓練集中使用Bootstraping方法隨機有放回采用選出m個樣本,共進行n_tree次采樣,生成n_tree個訓練集
- 對于n_tree個訓練集,分別訓練n_tree個決策樹模型
- 對于單個決策樹模型,假設訓練樣本特征的個數為n,那么每次分裂時根據信息增益/信息增益比/Gini指數選擇最好的特征進行分裂
- 每棵樹都一直這樣分裂下去,直到該節點的所有訓練樣例都屬于同一類。在決策樹的分裂過程中不需要剪枝
- 將生成的多棵決策樹組成隨機森林。對于分類問題,按多棵樹分類器投票決定最終分類結果;對于回歸問題,由多棵樹預測的均值決定最終預測結果。
4.3 隨機森林的評價指標–袋外誤差(oob error)
??隨機森林的關鍵問題是如何選擇最優的m(特征個數),要解決這個問題主要依據袋外誤差率oob error(out-of-bag error)
??隨機森林一個重要的優點是,沒有必要進行交叉驗證或者用一個獨立的測試集來獲得誤差的一個無偏估計。它可以在內部進行評估,也就是說在生成的過程中就可以對誤差建立一個無偏估計。
??在構建每棵樹時,對訓練集使用了不同的bootstrap sample(隨機有放回的抽取)。所以對每棵樹而言(假設對第K棵樹),大約有1/3的訓練實例沒有參與第K棵樹的生成,它們成為第K棵樹的oob樣本。
oob估計的計算方法如下:
- 對每個樣本,計算它作為oob樣本的樹對它的分類情況(約1/3的樹)
- 然后以簡單多數投票作為該樣本的分類結果
- 最后用誤分個數占樣本總數的比率作為隨機森林的oob誤分率。
注意:oob誤分率是隨機森林泛化誤差的一個無偏估計,它的結構近似于需要大量計算的k折交叉驗證。
4.4 隨機森林的特點
優點
- 在當前所有算法中,具有極高的準確率
- 隨機性的引入,使得隨機森林不容易過擬合
- 隨機性的引入,使得隨機森林有很好的抗噪聲能力
- 能夠有效的運行在大數據集上
-能夠評估各個特征在分類問題上的重要性 - 能夠處理具有高維特征的輸入樣本,而不需要降維,并且不用做特征選擇
- 既能處理離散型數據,也能處理連續型數據,數據集無需規范化
- 訓練速度快,可以得到變量重要性排序
- 容易實現并行化
- 在生成過程中,能夠獲取到內部生成誤差的一種無偏估計
- 對于缺省值問題也能夠獲得很好的結果
缺點
- 當隨機森林中的決策樹個數很多時,訓練需要的空間和時間會較大
- 隨機森林模型有許多不好解釋的地方,算個黑盒模型
五、Bagging和Boosting的概念與區別
??隨機森林屬于集成學習(Ensemble Learning)中的bagging算法。在集成學習中,主要分為bagging算法和boosting算法。
5.1 Bagging算法(套袋法):
Bagging的算法過程如下:
??從原始樣本集中使用Bootstrap方法隨機抽取n個訓練樣本,共進行k輪抽取,得到k個訓練集。(k個訓練集之間相互獨立,元素可以有重復)
??對于k個訓練集,我們訓練k個模型(這個k個模型可以選擇決策樹,knn等)
??對于分類問題:由投票表決產生分類結構;對于回歸問題:有k個模型預測結果的均值作為最后預測結構(所有模型的重要性相同)
5.2 Boosting(提升法)
boosting的算法過程如下:
??對于訓練集的每個樣本建立權值wi,增大被誤分類的樣本的權值
??進行迭代的過程中,每一步迭代都是一個弱分類器,需要用某種策略將其組合,作為最終模型。(例如AdaBoost給每個弱分類器一個權值,將其線性組合為最終分類器。誤差越小的弱分類器,權值越大)
5.3 Bagging,Boosting的主要區別
- 樣本選擇上:Bagging采用的是Bootstrap隨機有放回抽樣;而Boosting每一輪的訓練集是不變的,改變的只是每一個樣本的權重。
- 樣本權重:Bagging使用的是均勻取樣,每個樣本權重相等;Boosting根據錯誤率調整樣本權重,錯誤率越大的樣本權重越大。
- 預測函數:Bagging所有的預測函數的權重相等;Boosting中誤差越小的預測函數(分類器)權重越大
- 并行計算:Bagging各個預測函數可以并行生成;Boosting各個預測函數(分類器)必須按照順序迭代生成,就是不能并行計算
有趣的事,Python永遠不會缺席
歡迎關注小婷兒的博客
??文章內容來源于小婷兒的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解!!!
??如需轉發,請注明出處:小婷兒的博客python????https://blog.csdn.net/u010986753
??CSDN https://blog.csdn.net/u010986753
??博客園 https://www.cnblogs.com/xxtalhr/
有問題請在博客下留言或加作者:
??微信:tinghai87605025 聯系我加微信群
??QQ :87605025
??QQ交流群:py_data 483766429
??公眾號:DB寶
證書說明
??OCP證書說明連接 https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
??OCM證書說明連接 https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
?? 小婷兒的python正在成長中,其中還有很多不足之處,隨著學習和工作的深入,會對以往的博客內容逐步改進和完善噠。重要的事多說幾遍。。。。。。
總結
以上是生活随笔為你收集整理的决策树Decision Tree 和随机森林RandomForest基本概念(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机软件大赛作品,2015年大赛软件服
- 下一篇: 能够作图的软件都有哪些