数据挖掘实验报告-决策树程序实验
【摘要】
眾所周知,數據庫技術從20世紀80年代開始,已經得到廣泛的普及和應用。隨著數據庫容量的膨脹,特別是數據倉庫以及web等新型數據源的日益普及,人們面臨的主要問題不再是缺乏足夠的信息可以使用,而是面對浩瀚的數據海洋如何有效地利用這些數據。
從數據中生成分類器的一個特別有效的方法是生成一個決策樹(Decision Tree)。決策樹表示方法是應用最廣泛的邏輯方法之一,它從一組無次序、無規則的事例中推理出決策樹表示形式的分類規則。決策樹分類方法采用自頂向下的遞歸方式,在決策樹的內部結點進行屬性值的比較并根據不同的屬性值判斷從該結點向下的分支,在決策樹的葉結點得到結論。所以從決策樹的根到葉結點的一條路徑就對應著一條合取規則,整棵決策樹就對應著一組析取表達式規則。
決策樹是應用非常廣泛的分類方法,目前有多種決策樹方法,如ID3、CN2、SLIQ、SPRINT等。
關鍵詞:數據挖掘 知識發現?? 決策樹(Decision Tree) ID3算法
一、問題重述
1.1相關信息
決策樹是一個類似于流程圖的樹結構,其中每個內部結點表示在一個屬性上的測試,每個分支代表一個測試輸入,而每個樹葉結點代表類或類分布。數的最頂層結點是根結點。一棵典型的決策樹如圖1所示。它表示概念buys_computer,它預測顧客是否可能購買計算機。內部結點用矩形表示,而樹葉結點用橢圓表示。為了對未知的樣本分類,樣本的屬性值在決策樹上測試。決策樹從根到葉結點的一條路徑就對應著一條合取規則,因此決策樹容易轉化成分類規則。[2]
圖1
ID3算法:
■???? 決策樹中每一個非葉結點對應著一個非類別屬性,樹枝代表這個屬性的值。一個葉結點代表從樹根到葉結點之間的路徑對應的記錄所屬的類別屬性值。
■???? 每一個非葉結點都將與屬性中具有最大信息量的非類別屬性相關聯。
■???? 采用信息增益來選擇能夠最好地將樣本分類的屬性。
信息增益基于信息論中熵的概念。ID3總是選擇具有最高信息增益(或最大熵壓縮)的屬性作為當前結點的測試屬性。該屬性使得對結果劃分中的樣本分類所需的信息量最小,并反映劃分的最小隨機性或“不純性”。
1.2問題重述
1、算法參見第八章分類與預測
2、目標概念為“壽險促銷”
3、計算每個屬性的信息增益
4、確定根節點的測試屬性
模型求解
構造決策樹的方法是采用自上而下的遞歸構造,其思路是:
■???? 以代表訓練樣本的單個結點開始建樹(步驟1)。
■???? 如果樣本都在同一類,則該結點成為樹葉,并用該類標記(步驟2和3)。
■???? 否則,算法使用稱為信息增益的機遇熵的度量為啟發信息,選擇能最好地將樣本分類的屬性(步驟6)。該屬性成為該結點的“測試”或“判定”屬性(步驟7)。值得注意的是,在這類算法中,所有的屬性都是分類的,即取離散值的。連續值的屬性必須離散化。
■???? 對測試屬性的每個已知的值,創建一個分支,并據此劃分樣本(步驟8~10)。
■???? 算法使用同樣的過程,遞歸地形成每個劃分上的樣本決策樹。一旦一個屬性出現在一個結點上,就不必考慮該結點的任何后代(步驟13)。
■???? 遞歸劃分步驟,當下列條件之一成立時停止:
(a)給定結點的所有樣本屬于同一類(步驟2和3)。
(b)沒有剩余屬性可以用來進一步劃分樣本(步驟4)。在此情況下,采用多數表決(步驟5)。這涉及將給定的結點轉換成樹葉,并用samples中的多數所在類別標記它。換一種方式,可以存放結點樣本的類分布。
(c)分支test_attribute=ai 沒有樣本。在這種情況下,以samples中的多數類創建一個樹葉(步驟12)。[2]
算法 Decision_Tree(samples,attribute_list)
輸入 由離散值屬性描述的訓練樣本集samples;
候選屬性集合attribute_list。
輸出 一棵決策樹。
(1) 創建節點N;
(2) If samples 都在同一類C中then
(3) ??????返回N作為葉節點,以類C標記;
(4) If attribute_list為空then
(5) ??????返回N作為葉節點,以samples 中最普遍的類標記;//多數表決
(6) 選擇attribute_list 中具有最高信息增益的屬性test_attribute;
(7) 以test_attribute 標記節點N;
(8) For each test_attribute 的已知值v?? //劃分 samples
(9) ???? 由節點N分出一個對應test_attribute=v的分支;
(10) ?????令Sv為 samples中 test_attribute=v 的樣本集合;//一個劃分塊
(11) ?????If Sv為空 then
(12) ?????加上一個葉節點,以samples中最普遍的類標記;
(13) ?????Else 加入一個由Decision_Tree(Sv,attribute_list-test_attribute)返回節點值。[1]
?
E(S)=(-9/15)log2(9/15)-(6/15)log2(6/15)=0.971
Values(收入范圍)={20-30K,30-40k,40-50K,50-60K}
E(S(20-30K))= (-2/4)log2(2/4)- (2/4)log2(2/4)=1
E(S(30-40K))= (-4/5)log2(4/5)- (1/5)log2(1/5)=0.7219
E(S(40-50K))= (-1/4)log2(1/4)- (3/4)log2(3/4)=0.8113
E(S(50-60K))= (-2/2)log2 (2/2)- (0/2)log2(0/2)=0
所以
E(S,收入范圍)=(4/15) E(S(20-30K)) +(5/15) E(S(30-40K)) +(4/15) E(S(40-50K)) +(2/15) E(S(50-60K))=0.7236
Gain(S,收入范圍)=0.971-0.7236=0.2474
同理:計算“保險”,“性別”,“年齡”的信息增益為:
E(S)=(-9/15)log2(9/15)-(6/15)log2(6/15)=0.971
Insurance(保險)={yes, no}
E(S(yes))= (-3/3)log2 (3/3)- (0/3)log2(0/3)=0
E(S(no))= (-6/12)log2 (6/12)- (6/12)log2(6/12)=1
E(S, 保險)=(3/15) E(S(yes)) +(12/15) E(S(no)) =0.8
Gain(S, 保險)=0.971-0.8=0.171
E(S)=(-9/15)log2(9/15)-(6/15)log2(6/15)=0.971
sex(性別)={male, female}
E(S(male))= (-3/7)log2 (3/7)- (4/7)log2(4/7)=0.9852
E(S(female))= (-6/8)log2 (6/8)- (2/8)log2(2/8)=0.8113
E(S, 性別)=(7/15) E(S(male)) +(8/15) E(S(female)) =0.8925
Gain(S, 性別)=0.971-0.8925=0.0785
E(S)=(-9/15)log2(9/15)-(6/15)log2(6/15)=0.971
age(年齡)={15~40,41 ~60}
E(S(15~40))= (-6/7)log2 (6/7)- (1/7)log2(1/7)=0.5917
E(S(41 ~60))= (-3/8)log2 (3/8)- (5/8)log2(5/8)=0.9544
E(S, 年齡)=(7/15) E(S(15~40)) +(8/15) E(S(41 ~60)) =0.7851
Gain(S, 年齡)=0.971-0.7851=0.1859
三、模型評價
基于決策樹的分類算法的一個最大的優點就是她在學習過程中不需要使用者了解很多背景知識(這同時也是它的最大的缺點),只要訓練例子能夠用屬性-結論式表示出來,就能使用該算法來學習。
在ID3算法的假設空間包含所有的決策樹,它是關于現有屬性的有限離散值函數的一個完整空間。因為每個有限離散值函數可被表示為某個決策樹,所以ID3算法避免了搜索不完整假設空間的一個主要風險:假設空間可能不包含目標函數。
ID3算法只能處理離散值的屬性。首先,學習到的決策樹要預測的目標屬性必須是離散的,其次樹的決策結點的屬性也必須是離散的。[2]
四、參考文獻
[1] 李雄飛 李軍,《數據挖掘與知識發現》,北京:高等教育出版社,2003。
[2] 毛國君 段立娟 王實 石云,《數據挖掘原理與算法》,北京:清華大學出版社,2005。
總結
以上是生活随笔為你收集整理的数据挖掘实验报告-决策树程序实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘讲座:我所知道的一点Data M
- 下一篇: 数据挖掘实验报告-关联规则算法实验