機器學習爬大樹之決策樹(ID3,C4.5)
自己自學機器學習的相關知識,過了一遍西瓜書後準備再刷一遍,後來在看別人打比賽的程式碼時多次用到XGBoost,lightGBM,遂痛下決心認真學習機器學習關於樹的知識,自己學習的初步流程圖為:
決策樹(ID3,C4.5)---->CART----->Boost Tree---->Gradient Boosting Decision Tree(GBDT)----->XGBoost------>lightGBM
後面還會補上,Bagging,RF(Random Forest),那麼機器學習中關於樹的知識算是入門了!
一 決策樹 (ID3演算法基礎)
決策樹模型是是一種描述對例項進行分類 的樹形結構。決策樹由結點(node)和有向邊(directed edge)組成。結點有兩種型別:內部結點(internal node)和葉結點(leaf node)。內部結點表示一個特徵或屬性,葉結點表示一個類(即決策的結論)
下圖是一個決策樹的示例(注意我們僅用了兩個feature就對資料集中的5個記錄實現了準確的分類):
上圖問題我們採用Headache特徵作為根節點劃分,那麼當然我們也可以採用其他特徵如:cough,temperatu等特徵劃分,所以我們要解決的問題是依據什麼特徵對資料集進行劃分最為合理
資訊熵:
熵:源於物理學中度量一個熱力學系統的無序程度。而在資訊學中,熵是對不確定的度量(即混亂程度的度量),1948年,夏農引入了資訊熵的概念
資訊熵:為離散隨機事件出現的概率。一個系統越有序,資訊熵就越低;反之,一系統越是混亂,它的資訊熵就越高。所以資訊熵可以被認為是系統有序化的度量。
假設當前樣本集合D中第k類樣本所佔的比例為(k=1,2,3,...,N),則D的資訊熵定義為:
計算資訊熵時約定:若,則,顯然當N=1時最小;當,,因為資訊熵是衡量一系統不確定(本人喜歡用混亂這個詞)程度,顯然越大,這當前集合的混亂程度越高!
具體計算來看下面的一個簡單的例子,以二分類為例(表示第一類,表示第二類):
現在我們需要一個定量來找到最佳的劃分點
資訊增益(information gain) :
假設離散特徵(如上面的例子中的Headache)有個可能的屬性取值,(如特徵headache的severe,no,mild),若使用離散特徵來對樣本集合進行劃分,則會產生個分支結點,其中第個分支結點包含了集合中所用在特徵中屬性為的樣本,記為,而即屬性為的樣本個數,我們可以根據資訊熵公式算出的資訊熵,再考慮到不同的分支結點所包含的樣本數不同,給分支結點賦予權重,即樣本數越多的分支結點的影響越大,於是便可計算出用特徵對樣本集進行劃分所獲得的“資訊增益(information gain)”:
現在我們用上面的例子依次計算下分別取特徵(headache,Cough,Temperature,Sore)的資訊增益就一目瞭然:
首先要先計算:顯然,這是一個二分類問題,我們要根據特徵來診斷病人是Flu,還是Cold兩類,所以公式中的,當前樣本中的樣本個數為;
分類為Flu的樣本個數為 (即病人編號為p1,p3,p5),則
分類為cold的樣本個數為(即病人編號為p2,p4);則
故
(1) 計算特徵值為Headache的資訊增益
1:特徵headache的屬性值分別為severe,no,mild:
則
2:分別計算:
i):=兩個樣本,所以:
ii):=一個樣本,所以:
Iii):=兩個樣本,所以:
3.計算headache的資訊增益(將上面的值依次帶入公式)
=
(2) 分別計算特徵值為Cough,Temperature,Sore資訊增益,
與上面的求Headache的步驟一樣,在這裡不在詳細寫出
=
=
=
(3)比較每個特徵的資訊增益,選取最大的特徵進行劃分(在這裡Headache與Cough資訊增益相同,我們選取Headache劃分),之後再對每一個劃分後的子集進行相同的步驟(已用的特徵將不再以後的劃分中使用),一般情況下葉子節點的生成滿足以下步驟:
i):當前結點包含的樣本全屬於同一類別,將不再劃分並作為葉子結點,其類別標籤為樣本的類別
ii):當前屬性集為空,或是所有樣本在所有屬性上取值相同,將不再劃分並作為葉子結點,其類別標籤為該結點所含樣本最多的類別
iii):當前結點包含的樣本集合為空,不能劃分並將該結點作為葉子結點,但將其類別設定為其父結點所含樣本最多的類別
(我的理解是:以上例子來說,我們假設先取Headache劃分,則severe中的樣本 為(p1,p5),然後在子集(p1,p5)中,我們假設用Sore的特徵劃分這個子集,那麼在Sore中屬性值為no的樣本是沒有的,這個時候就用它的父結點的樣本最多的類別來做該葉結點(空集)的類別)
實際上,資訊增益準則對可取值數目較多的屬性有所偏好,為減小這種偏好可能帶來的不利影響,下面介紹著名的C4.5演算法
二 C4.5演算法
C4.5演算法採用增益率(Gain ratio)來選擇最優劃分特徵,我們來看看增益率的計算公式:
其中:
稱為特徵A的固有值(intrinsic value),特徵A的可能取值數目越多(即越大),則的值通常會越大,需要注意的是,增益率準則對可取值數目較少的特徵有所偏好,因此,C4.5演算法並不是直接選擇增益率最大的候選劃分特徵,而是使用了一個啟發式:先從候選劃分屬性中找出一個信心增益高於平均水平的特徵,再從中選擇增益率最高的。
連續與缺失值處理:
一 連續值處理:到目前為止我們都是用離散特徵來生成決策樹,但現實學習中有很多連續特徵,因為連續特徵的可取數目不再有限,因此,不能直接根據連續特徵的可取值來對結點進行劃分,在這裡,我們採用的策略是二分法(bi-partition)對連續特徵進行處理。
給定樣本集和連續特徵,假定在上有個不同的取值,其中第個取值記為:
1:將這些值從小到大進行排序,記為;
2:基於劃分點可將樣本集分為子集和,其中包含那些在特徵上取值不大於的樣本,表示其樣本個數;而則包含那些在特徵上取值大於的樣本,則表示取值大於的樣本個數;
3:把區間的中位點作為候選劃分點。因此,對連續特徵,我們可考察包含個元素的候選劃分點集合
4:然後我們可以像離散屬性值一樣來考察這些劃分點,選取最優的劃分點進行樣本集合的劃分,則屬性的資訊增益公式為:
其中是樣本集基於劃分點二分後的資訊增益,於是,我們就可選擇使最大化的劃分點
具體計算參考下面的一個例子即一目瞭然:假設我們有6個樣本,其一個特徵為連續特徵,現計算其特徵的資訊增益,具體步驟與例子如下:
編號 | 1 | 2 | 3 | 4 | 5 | 6 |
0.5 | 0.4 | 0.1 | 0.6 | 0.3 | 0.2 | |
0 | 0 | 1 | 0 | 1 | 0 |
i):對連續特徵從下到大進行排序:
編號 | 3 | 6 | 5 | 2 | 1 | 4 |
0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | |
1 |
0 | 1 | 0 | 0 | 0 |
ii):候選劃分點集合:
劃分點 | 0.15 | 0.25 | 0.35 | 0.45 | 0.55 |
iii):計算每個劃分點對應的:
先計算出
1:取劃分點0.15
則=,=;
;
2:取劃分點0.25
則=,=;
;
3:取劃分點0.35
則=,=;
;
4:取劃分點0.45
則=,=;
;
5:取劃分點0.55
則=,=;
;
iV):比較每個劃分點對應的,取最大的作為劃分點:
顯然 0.35時最大,故取其作為該連續特徵的劃分點。
須知,與離散特徵不同,若當前結點劃分特徵為連續特徵,那麼該特徵還可作為其後代結點的劃分特徵!
注意:其實連續值得處理有一個最優化的方法,不需要逐個計算每個劃分點的,僅考慮位於具有不同類標號的兩個相鄰記錄之間的候選劃分點,最佳劃分點一定是在這些候選劃分點中的一個,例如上面的不同類別劃分點有這3個,因此大大簡化了計算;這是因為資訊增益的目的是找出一個劃分點能最好的劃分將相同的類別放在一起,將不同的類別分開,所以若一個劃分點左邊與右邊的樣本類別相同,但我們將他們分開,顯然是不合理的,所以我們僅需考慮位於不同類別標籤之間的候選劃分點即可!!!
二 缺失值處理:現實任務中常會遇到不完整的樣本,即樣本某些特徵值缺失。如果簡單地放棄不完整樣本,僅使用無缺失值的樣本進行學習,顯然是對資料資訊極大的浪費,下表是我們以前使用的例子,但一些特徵的特徵值已經缺失,如果放棄不完整的樣本,則僅有一個樣本可為我們所用!
所以,我們需要解決兩個問題 :
(1): 如何在特徵值缺失的情況下進行劃分特徵選擇;
(2): 給定劃分特徵,若樣本在該特徵上的值缺失,如何對樣本進行劃分?
對缺失值得處理的核心想法是為每個特徵都附加一個權重,每一個樣本都附加一個權重 ,在決策樹學習開始階段,根結點中各樣本的權重初始化為1
接下來 我們看看如何在特徵值缺失的情況下進行劃分特徵選擇。
(1)特徵值缺失的情況下進行劃分特徵選擇
給定訓練集和特徵,令表示中特徵上沒有缺失值得樣本集合,顯然我們可以僅根據來判斷用特徵劃分時的資訊增益;假設特徵有個可取值,令表示中特徵上取值為樣本子集;表示中屬於第類()的 樣本子集,現假設我們為每個樣本賦予一個權重,直觀地看,對特徵來說,定義以下3個佔比:
(表示無缺失值樣本佔訓練集的比例,即前面提到的特徵的權重,算資訊增益用)
(表示無缺失值樣本中第類樣本的權重之和與無缺失值樣本的權重之和的比例,算資訊熵用)
(表示無缺失值樣本中特徵值為的樣本權重之和與無缺失值樣本的權重之和的比例,算資訊增益用)
基於上述定義,我們可將資訊增益的計算式推廣為如下公式(注意上面幾個引數的用處):
,
其中:
直接看上面的公式有些晦澀難懂,其實跟前面學的資訊增益相差無幾,我們就簡單的以上面的例子計算一下:我們想算出特徵為Headache的資訊增益,其他的類似
訓練集=; =; =; =; 同樣; 為每個樣本賦予權重=1;
接下來我們開始一個一個的根據公式算出引數:
(不是樣本個數比,是權重之和的比值)
萬事俱備只欠帶公式啦:
自己自學機器學習的相關知識,過了一遍西瓜書後準備再刷一遍,後來在看別人打比賽的程式碼時多次用到XGBoost,lightGBM,遂痛下決心認真學習機器學習關於樹的知識,自己學習的初步流程圖為:
決策樹(ID3,C4.5)---->CART-----&
分類與迴歸樹(classification and regression tree,CART)是應用廣泛的決策樹學習方法,同樣由特徵選擇,樹的生成以及剪枝組成,既可以用於分類也可以用於迴歸。CART假設假設決策樹是二叉樹,內部結點特徵
學習資料:《統計學習方法》,《機器學習》(周志華),韓小陽ppt,鄒博ppt。
決策樹是一種樹形結構,對例項進行分類和迴歸的,下面主要說的是用來進行分類,最後說道CART的時候也會說到決策樹用到迴歸問題上。
1、決策樹模型與學習
先給出分類決策樹模型定義:是一種對例項資料進行
決策樹簡介
決策樹算是最好理解的分類器了。決策樹就是一個多層if-else函式,就是對物件屬性進行多層if-else判斷,獲取目標屬性(類標籤)的類別。由於只使用if-else對特徵屬性進行判斷,所以一般特徵屬性為離散值,即使為連續值也會先進行區間離散
演算法簡述
在《統計學習方法》中,作者的if-then的描述,簡單一下子讓人理解了決策樹的基本概念。
決策樹,就是一個if-then的過程。
本文主要學習自《統計學習方法》一書,並努力通過書中數學推導來
上一篇文章講了GBDT的迴歸篇,其實這一篇文章的原理的思想基本與迴歸相同,不同之處在於分類任務需用的損失函式一般為logloss、指數損失函式。
回
整合學習(ensemble learning)想必應該是最為火爆的機器學習演算法了,它通過構建並結合多個學習器來完成學習任務;類似於我們長說的“採百家之長”,目前的整合學習方法
演算法原理
Decision Trees (DTs) 是一種用來 和 regression 的無參監督學習方法。其目的是建立一種模型從資料特徵中學習簡單的決策規則來預測一個目標變數的值。決策樹類似於流程圖的樹結構,分支節點表示對一個特徵進行測試,根據測試結果進行分類,樹節點
決策樹面試知識點最全總結(一)
一:首先明確以下幾個基本問題:
1.決策樹是幹什麼用的?
一種最基本的分類與迴歸方法,因為實際應用中基本上全是用來分類,所以重點討論分類決策樹。
2.決策樹優缺點:
優點:
1)
宣告:參考書目《機器學習實戰》作者: Peter Harrington 出版社: 人民郵電出版社 譯者: 李銳 / 李鵬 / 曲亞東 / 王斌
宣告:參考書目《統計學習方法》作者: 李航 出版社: 清華大學出版社 ISBN: 9787302275954
宣告:參考書目《機器學習實戰》作者: Peter Harrington 出版社: 人民郵電出版社 譯者: 李銳 / 李鵬 / 曲亞東 / 王斌
宣告:參考書目《統計學習方法》作者: 李航 出版社: 清華大學出版社 ISBN: 9787302275954
一、背景及問題
決策樹演算法是為了解決二分類問題出現的,是根據歷史經驗(或訓練集)來做判斷,生成決策結果(或樹狀圖)的過程。
/*請尊重作者勞動成果,轉載請標明原文連結:*/
/* https://www.cnblogs.com/jpcflyer/p/11037256.html 一、概念
KNN主要用來解決分類問題,是監督分類演算法,它通過判斷最近K個點的類別來決定自身類別,所以K值對結果影響很大,雖然它實現比較簡單,但在目標資料集比例分配不平衡時,會造成結果的不準確。而且KNN對資源開銷較大。
二、計算
通過K近鄰進行計算,需要:
1、載入打標好的資料集,然
文章目錄
概念理解
熵:
條件熵:
資訊增益,互資訊:
資訊增益比
基尼指數
ID3演算法描述
C4.5演算法描述
CART (Classification and Regression Tree
決策樹模型在監督學習中非常常見,可用於分類(二分類、多分類)和迴歸。雖然將多棵弱決策樹的Bagging、Random Forest、Boosting等tree ensembel 模型更為常見,但是“完全生長”決策樹因為其簡單直觀,具有很強的解釋性,也有廣泛的應用,而且決策樹是 天氣 次數 format 定義 表示 葉子節點 ast 代碼 wid 一、復習信息熵
為了解決特征選擇問題,找出最優特征,先要介紹一些信息論裏面的概念。
1、熵(entropy)
python3代碼實現:
def calcShannonEnt(
什麼是決策樹?
如何構建決策樹?
ID3
C4.5
CART
決策樹的優缺點及改進
什麼是決策樹?
決策樹是運用於分類的一種樹結構,其本質是一顆由多個判斷節點組成的樹,其中的每個內部節點代表對某一屬性的一次測試,每條邊代表一個測試結果,而葉節點代表某個類或類的分佈。
屬於有監督學習
核心思想:
一、決策樹概述
決策樹是一種樹形結構,其中每個內部節點表示一個屬性上的測試,每個分支代表一個測試輸出,每個葉節點代表一種類別。決策樹是一個預測模型,代表的是物件屬性與物件值之間的一種對映關係。
最初的節點稱為根節點(如圖中的"顏色"),有分支的節點稱為中間節點
目錄
背景
效果圖
整體流程
這裡用詞向量,而不是TF-IDF預處理後的向量
原始碼
背景
最近的專案中,用到了很多機器學習的演算法,每個機器學習的演算法在不同的樣本下的精準率是不同的。為了驗證每個演算法在每種不同樣本數
1、演算法介紹決策樹是一種基本的分類和迴歸方法,決策樹模型呈樹形結構,在分類問題中,表示基於特徵對例項進行分類的過程。決策樹學習通常包括三個步驟:特徵選擇、決策樹的生成和決策樹的修剪。決策樹的本質是從訓練資料集中歸納出一組分類規則。本文主要是對決策樹的ID3演算法的介紹,後文會介紹C4.5和CART演算 相關推薦
機器學習爬大樹之決策樹(ID3,C4.5)
機器學習爬大樹之決策樹(CART與剪枝)
機器學習筆記:決策樹(ID3,C4.5,CART)
python機器學習案例系列教程——決策樹(ID3、C4.5、CART)
決策樹(ID3 C4,5 減枝 CART演算法)以及Python實現
機器學習爬大樹之(GBDT原理)--二分類篇
機器學習爬大樹之(GBDT原理)--迴歸篇
十大機器學習演算法之決策樹(用於信用風險)
機器學習面試知識點之決策樹相關
機器學習實戰——1.2決策樹(2)
機器學習實戰——1.2決策樹(1)
機器學習經典演算法之決策樹
機器學習分類演算法之K近鄰(K-Nearest Neighbor)
機器學習:決策樹及ID3,C4.5,CART演算法描述
決策樹模型 ID3/C4.5/CART演算法比較
機器學習之決策樹(二)
機器學習十大演算法之決策樹(詳細)
機器學習十大經典演算法之決策樹(學習筆記整理)
機器學習 之 決策樹(Decision Tree)文字演算法的精確率
機器學習之決策樹(一)