Ⅰ 什麼是ID3演算法
ID3演算法是由Quinlan首先提出的。該演算法是以資訊理論為基礎,以信息熵和信息增益度為衡量標准,從而實現對數據的歸納分類。以下是一些資訊理論的基本概念:
定義1:若存在n個相同概率的消息,則每個消息的概率p是1/n,一個消息傳遞的信息量為-Log2(1/n)
定義2:若有n個消息,其給定概率分布為P=(p1,p2…pn),則由該分布傳遞的信息量稱為P的熵,記為
。
定義3:若一個記錄集合T根據類別屬性的值被分成互相獨立的類C1C2..Ck,則識別T的一個元素所屬哪個類所需要的信息量為Info(T)=I(p),其中P為C1C2…Ck的概率分布,即P=(|C1|/|T|,…..|Ck|/|T|)
定義4:若我們先根據非類別屬性X的值將T分成集合T1,T2…Tn,則確定T中一個元素類的信息量可通過確定Ti的加權平均值來得到,即Info(Ti)的加權平均值為:
Info(X, T)=(i=1 to n 求和)((|Ti|/|T|)Info(Ti))
定義5:信息增益度是兩個信息量之間的差值,其中一個信息量是需確定T的一個元素的信息量,另一個信息量是在已得到的屬性X的值後需確定的T一個元素的信息量,信息增益度公式為:
Gain(X, T)=Info(T)-Info(X, T)
ID3演算法計算每個屬性的信息增益,並選取具有最高增益的屬性作為給定集合的測試屬性。對被選取的測試屬性創建一個節點,並以該節點的屬性標記,對該屬性的每個值創建一個分支據此劃分樣本.
數據描述
所使用的樣本數據有一定的要求,ID3是:
描述-屬性-值相同的屬性必須描述每個例子和有固定數量的價值觀。
預定義類-實例的屬性必須已經定義的,也就是說,他們不是學習的ID3。
離散類-類必須是尖銳的鮮明。連續類分解成模糊范疇(如金屬被「努力,很困難的,靈活的,溫柔的,很軟」都是不可信的。
足夠的例子——因為歸納概括用於(即不可查明)必須選擇足夠多的測試用例來區分有效模式並消除特殊巧合因素的影響。
屬性選擇
ID3決定哪些屬性如何是最好的。一個統計特性,被稱為信息增益,使用熵得到給定屬性衡量培訓例子帶入目標類分開。信息增益最高的信息(信息是最有益的分類)被選擇。為了明確增益,我們首先從資訊理論借用一個定義,叫做熵。每個屬性都有一個熵。
Ⅱ 5.10 決策樹與ID3演算法
https://blog.csdn.net/dorisi_h_n_q/article/details/82787295
決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。決策過程是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。
決策樹的關鍵步驟是分裂屬性。就是在某節點處按某一特徵屬性的不同劃分構造不同的分支,目標是讓各個分裂子集盡可能地「純」。即讓一個分裂子集中待分類項屬於同一類別。
簡而言之,決策樹的劃分原則就是:將無序的數據變得更加有序
分裂屬性分為三種不同的情況 :
構造決策樹的關鍵性內容是進行屬性選擇度量,屬性選擇度量(找一種計算方式來衡量怎麼劃分更劃算)是一種選擇分裂准則,它決定了拓撲結構及分裂點split_point的選擇。
屬性選擇度量演算法有很多,一般使用自頂向下遞歸分治法,並採用不回溯的貪心策略。這里介紹常用的ID3演算法。
貪心演算法(又稱貪婪演算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,所做出的是在某種意義上的局部最優解。
此概念最早起源於物理學,是用來度量一個熱力學系統的無序程度。
而在信息學裡面,熵是對不確定性的度量。
在1948年,香農引入了信息熵,將其定義為離散隨機事件出現的概率,一個系統越是有序,信息熵就越低,反之一個系統越是混亂,它的信息熵就越高。所以信息熵可以被認為是系統有序化程度的一個度量。
熵定義為信息的期望值,在明晰這個概念之前,我們必須知道信息的定義。如果待分類的事務可能劃分在多個分類之中,則符號x的信息定義為:
在劃分數據集之前之後信息發生的變化稱為信息增益。
知道如何計算信息增益,就可計算每個特徵值劃分數據集獲得的信息增益,獲得信息增益最高的特徵就是最好的選擇。
條件熵 表示在已知隨機變數的條件下隨機變數的不確定性,隨機變數X給定的條件下隨機變數Y的條
件熵(conditional entropy) ,定義X給定條件下Y的條件概率分布的熵對X的數學期望:
根據上面公式,我們假設將訓練集D按屬性A進行劃分,則A對D劃分的期望信息為
則信息增益為如下兩者的差值
ID3演算法就是在每次需要分裂時,計算每個屬性的增益率,然後選擇增益率最大的屬性進行分裂
步驟:1. 對當前樣本集合,計算所有屬性的信息增益;
是最原始的決策樹分類演算法,基本流程是,從一棵空數出發,不斷的從決策表選取屬性加入數的生長過程中,直到決策樹可以滿足分類要求為止。CLS演算法存在的主要問題是在新增屬性選取時有很大的隨機性。ID3演算法是對CLS演算法的改進,主要是摒棄了屬性選擇的隨機性。
基於ID3演算法的改進,主要包括:使用信息增益比替換了信息增益下降度作為屬性選擇的標准;在決策樹構造的同時進行剪枝操作;避免了樹的過度擬合情況;可以對不完整屬性和連續型數據進行處理;使用k交叉驗證降低了計算復雜度;針對數據構成形式,提升了演算法的普適性。
信息增益值的大小相對於訓練數據集而言的,並沒有絕對意義,在分類問題困難時,也就是說在訓練數據集經驗熵大的時候,信息增益值會偏大,反之信息增益值會偏小,使用信息增益比可以對這個問題進行校正,這是特徵選擇
的另一個標准。
特徵對訓練數據集的信息增益比定義為其信息增益gR( D,A) 與訓練數據集的經驗熵g(D,A)之比 :
gR(D,A) = g(D,A) / H(D)
sklearn的決策樹模型就是一個CART樹。是一種二分遞歸分割技術,把當前樣本劃分為兩個子樣本,使得生成的每個非葉子節點都有兩個分支,因此,CART演算法生成的決策樹是結構簡潔的二叉樹。
分類回歸樹演算法(Classification and Regression Trees,簡稱CART演算法)是一種基於二分遞歸分割技術的演算法。該演算法是將當前的樣本集,分為兩個樣本子集,這樣做就使得每一個非葉子節點最多隻有兩個分支。因此,使用CART
演算法所建立的決策樹是一棵二叉樹,樹的結構簡單,與其它決策樹演算法相比,由該演算法生成的決策樹模型分類規則較少。
CART分類演算法的基本思想是:對訓練樣本集進行遞歸劃分自變數空間,並依次建立決策樹模型,然後採用驗證數據的方法進行樹枝修剪,從而得到一顆符合要求的決策樹分類模型。
CART分類演算法和C4.5演算法一樣既可以處理離散型數據,也可以處理連續型數據。CART分類演算法是根據基尼(gini)系
數來選擇測試屬性,gini系數的值越小,劃分效果越好。設樣本集合為T,則T的gini系數值可由下式計算:
CART演算法優點:除了具有一般決策樹的高准確性、高效性、模式簡單等特點外,還具有一些自身的特點。
如,CART演算法對目標變數和預測變數在概率分布上沒有要求,這樣就避免了因目標變數與預測變數概率分布的不同造成的結果;CART演算法能夠處理空缺值,這樣就避免了因空缺值造成的偏差;CART演算法能夠處理孤立的葉子結點,這樣可以避免因為數據集中與其它數據集具有不同的屬性的數據對進一步分支產生影響;CART演算法使用的是二元分支,能夠充分地運用數據集中的全部數據,進而發現全部樹的結構;比其它模型更容易理解,從模型中得到的規則能獲得非常直觀的解釋。
CART演算法缺點:CART演算法是一種大容量樣本集挖掘演算法,當樣本集比較小時不夠穩定;要求被選擇的屬性只能產生兩個子結點,當類別過多時,錯誤可能增加得比較快。
sklearn.tree.DecisionTreeClassifier
1.安裝graphviz.msi , 一路next即可
ID3演算法就是在每次需要分裂時,計算每個屬性的增益率,然後選擇增益率最大的屬性進行分裂
按照好友密度劃分的信息增益:
按照是否使用真實頭像H劃分的信息增益
**所以,按先按好友密度劃分的信息增益比按真實頭像劃分的大。應先按好友密度劃分。
Ⅲ 簡述ID3演算法基本原理和步驟
1.基本原理:
以信息增益/信息熵為度量,用於決策樹結點的屬性選擇的標准,每次優先選取信息量最多(信息增益最大)的屬性,即信息熵值最小的屬性,以構造一顆熵值下降最快的決策樹,到葉子節點處的熵值為0。(信息熵 無條件熵 條件熵 信息增益 請查找其他資料理解)
決策樹將停止生長條件及葉子結點的類別取值:
①數據子集的每一條數據均已經歸類到每一類,此時,葉子結點取當前樣本類別值。
②數據子集類別仍有混亂,但已經找不到新的屬性進行結點分解,此時,葉子結點按當前樣本中少數服從多數的原則進行類別取值。
③數據子集為空,則按整個樣本中少數服從多數的原則進行類別取值。
步驟:
理解了上述停止增長條件以及信息熵,步驟就很簡單
Ⅳ 決策樹演算法基礎 ID3與C4.5
決策樹演算法基礎:ID3與C4.5
設X是一個取有限個值得離散隨機變數,其概率分布為P(X=xi)=pi, i=1,2,…,n。則隨機變數X的信息熵為
條件熵H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性。H(Y|X)的計算公式為
所以決策樹分支後信息總熵H(D|A)=P1*H1+P2*H2+...+Pn*Hn,(特徵A條件下D的經驗條件熵)
所以信息增益ΔH=H(D)-H(D|A)
H(D|A)越小,ΔH越大,該特徵A越適合作為當前的決策節點。
選取最佳特徵偽代碼:
計算信息總熵H(D)
遍歷每一個特徵下的關於D的經驗條件熵H(D|A)
計算每一個特徵的信息增益ΔH
將信息增益ΔH最大的特徵作為最佳特徵選為當前決策節點
ID3演算法偽代碼:
如果第一個標簽的數量等於所有的標簽數量,說明這是一個單節點樹,返回這個標簽作為該節點類
如果特徵只有一個,說明這是一個單節點樹,用多數表決法投票選出標簽返回作為該節點類
否則,按信息增益最大的特徵A作為當前決策節點,即決策樹父節點
如果該特徵的信息增益ΔH小於閾值,則用多數表決法投票選出標簽返回作為該節點類
否則,對於該特徵A的每一個可能值ai,將原空間D分割為若干個子空間Di
對於若干個非空子集Di,將每個Di中實例數最大的類作為標記,構建子節點
以Di為訓練空間,遞歸調用上述步驟
由於信息增益存在偏向於選擇取值較多的特徵的問題,而C4.5演算法中,將ID3演算法里的信息增益換成信息增益比,較好地解決了這個問題。
決策樹的優點在於計算量簡單,適合有缺失屬性值的樣本,適合處理不相關的特徵。而缺點是容易過擬合,可以通過剪枝來簡化模型,另外隨機森林也解決了這個問題。
Ⅳ 5. 決策樹演算法原理以及ID3演算法代碼實現
決策樹演算法是一種強大的機器學習工具,其通過樹狀結構直觀地表示決策過程。ID3演算法是決策樹演算法的一種實踐應用,本文將深入解析其原理並提供代碼實現。
決策樹構建基於特徵選擇和分割,通過自上而下的遞歸過程,將數據集劃分為更小、更純凈的子集。ID3演算法依據信息增益來決定最佳分割特徵,而C4.5演算法改進了這一點,引入增益率以平衡特徵選擇的傾向性。信息增益和增益率分別衡量了特徵對分類的貢獻,選擇信息量最大的特徵進行分割。
以下是ID3演算法的核心代碼實現:首先,熵函數計算類別分布的不確定性;decide_feature方法則選擇具有最小信息熵的特徵;build_tree函數遞歸構建決策樹,根據信息增益劃分節點;predict方法則用於測試集預測。
在本文實例中,我們創建了一個數據集,並展示了使用ID3演算法訓練決策樹並進行預測的過程。通過這個過程,讀者可以理解決策樹如何通過特徵分割和信息增益選擇來構建分類模型。
欲了解更多關於決策樹演算法,如CART演算法的實現,可以關注我的GitHub項目 QYHcrossover/ML-numpy,那裡有詳細的機器學習演算法numpy實現,期待您的star⭐。