决策树-缺失值和连续值处理及属性划分
? ? ? ?決策樹是一個樹結構(可以是二叉樹或非二叉樹),其每個非葉節點表示一個特征屬性上的測試,每個分支代表這個特征屬性在某個值域上的輸出,而每個葉節點存放一個輸出類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特征屬性,并按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。
決策樹學習通常包含這幾個方面:特征選擇、決策樹生成、決策樹剪枝、缺失值/異常值處理、決策樹集成學習。
決策樹-特征屬性選擇劃分
決策樹-缺失值和連續值處理及屬性劃分
決策樹-不同的決策樹模型對比
決策樹-避免過擬合預剪枝和后剪枝對比區別
決策樹-算法小結及常見問題
? ??
到目前為止我們僅討論了基于離散屬性來生成決策樹,現實學習任務中常常遇到連續屬性,以及數據中缺失問題。
目錄
連續值處理
缺失值處理
連續值處理
基本思路:連續屬性離散化,常見做法:二分法(這是C4.5決策樹算法中采用的機制)。
對于連續屬性a,我們可考察包括 n-1 個元素的候選劃分集合(n?個屬性值可形成?n-1 個候選點):
示例1:
示例2:
對于數據集中的屬性“密度”,決策樹開始學習時,根節點包含的17個訓練樣本在該屬性上取值均不同。我們先把“密度”這些值從小到大排序:
 根據上面計算 的公式,可得:
 下面開始計算t 取不同值時的信息增益:
有一點需要注意的是?:與離散屬性不同,若當前結點劃分屬性為連續屬性,該屬性還可作為其后代結點的劃分屬性。**如下圖所示的一顆決策樹,“含糖率”這個屬性在根節點用了一次,后代結點也用了一次,只是兩次劃分點取值不同。
缺失值處理
? ? ? ?現實生活中的數據集中的樣本通常在某系屬性上是缺失的,如果屬性值缺失的樣本數量比較少,我們可以直接簡單粗暴的把不完備的樣本刪除掉,但是如果有大量的樣本都有屬性值的缺失,那么就不能簡單地刪除,因為這樣刪除了大量的樣本,對于機器學習模型而言損失了大量有用的信息,訓練出來的模型性能會受到影響。
在決策樹中處理含有缺失值的樣本的時候,需要解決兩個問題:
- 如何在屬性值缺失的情況下進行劃分屬性的選擇?(比如“色澤”這個屬性有的樣本在該屬性上的值是缺失的,那么該如何計算“色澤”的信息增益?)
- 給定劃分屬性,若樣本在該屬性上的值是缺失的,那么該如何對這個樣本進行劃分?(即到底把這個樣本劃分到哪個結點里?)
?
示例1:
比較發現,“紋理”在所有屬性中的信息增益值最大,因此,“紋理”被選為劃分屬性,用于對根節點進行劃分。劃分結果為:“紋理=稍糊”分支:{7,9,13,14,17},“紋理=清晰”分支:{1,2,3,4,5,6,15},“紋理=模糊”分支:{11,12,16}。如下圖所示: 那么問題來了,編號為{8,10}的樣本在“紋理”這個屬性上是缺失的,該被劃分到哪個分支里?前面講過了,這兩個樣本會同時進入到三個分支里,只不過進入到每個分支后權重會被調整(前面也說過,在剛開始時每個樣本的權重都初始化為1)。編號為8的樣本進入到三個分支里后,權重分別調整為5/15,7/15 和 3/15;編號為10的樣本同樣的操作和權重。因此,經過第一次劃分后的決策樹如下圖所示: 我們都知道構造決策樹的過程是一個遞歸過程,原來不打算繼續介紹遞歸過程了,但是因為權重發生了變化,所以繼續介紹下遞歸過程。接下來,遞歸執行“紋理=稍糊”這個分支,樣本集D = {7,8,9,10,13,14,17},共7個樣本。如下圖所示: 下面來看具體的計算過程:對比能夠發現屬性“敲聲”的星系增益值最大,因此選擇“敲聲”作為劃分屬性,劃分后的決策樹如下圖所示:
 接下來對分支{敲聲 = 沉悶}即結點{9,14,17}進行劃分,根據博客決策樹(一)介紹的三種遞歸返回情形,結點{9,14,17}因為包含的樣本全部屬于同一類別,因此無需劃分,直接把結點{9,14,17}標記為葉結點,如下圖所示:
 根據遞歸過程,接下來對分支“敲聲 = 濁響”即結點{7,8,13}進行劃分,計算過程和上面一樣,雖然我也算過了,但是不再貼出來了,需要注意的是樣本的權重是1/3。計算完比較能夠知道屬性“臍部”的信息增益值最大,因此選擇“臍部”作為劃分屬性,劃分完的決策樹如下圖所示:
 接下來,繼續,對于結點{13},因為就一個樣本了,直接把該結點標記為葉結點,類別為“壞瓜”;遞歸到結點{7,8},因為樣本類別相同,所以也標記為葉結點,類別為“好瓜”;遞歸到結點“臍部=平坦”,因為這個結點不包含任何樣本為空集,因此,把該結點標記為葉結點,類別設置為父節點中多數類的類別,即為“好瓜”。因此“紋理=稍糊”這顆子樹構造完畢,如下圖所示:
 接下來,只需遞歸的重復上述過程即可,即能訓練出一顆完整的決策樹,最終的決策樹如下圖所示(該圖片來自西瓜書):
 ?
?
?
參考鏈接:https://www.imooc.com/article/257743
 參考鏈接:https://blog.csdn.net/leaf_zizi/article/details/83503167
 參考鏈接:https://www.cnblogs.com/lsm-boke/p/12260343.html
 參考鏈接:https://blog.csdn.net/qq_35649945/article/details/96633602
?
總結
以上是生活随笔為你收集整理的决策树-缺失值和连续值处理及属性划分的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 决策树-基于不同算法的决策树模型对比
- 下一篇: HiveSQL运行优化参数配置
