【数据挖掘】决策树 分类 ( 抽取分类规则 | 过拟合 | 剪枝 | 先剪 | 后剪 | 连续数值离散化 | 最优化分点 | 增益率选择划分属性 )
文章目錄
- I . 決策樹 分類規則抽取
- II . 決策樹 過擬合 與 剪枝
- III . 決策樹 剪枝 先剪 與 后剪 對比
- IV . 連續屬性 離散化處理 ( 二分法 | 最優劃分點 )
- V . 根據 增益率 選擇劃分屬性
- VI . 根據 增益率 選擇劃分屬性 計算案例
- VII . 決策樹 作用 及 優勢
I . 決策樹 分類規則抽取
1 . 決策樹規則表示形式 : 決策樹 中蘊含的 規則可以使用 IF-THEN 形式表示 ;
2 . 決策樹規則數量 : 從決策樹根節點 , 到葉子節點 , 每條路徑都對應一條規則 , 規則數量就是葉子節點的數量 ;
3 . 中間內部節點表示 : 使用 AND 將多個屬性判定組個在一起 , 相當于 邏輯與 運算 ;
4 . 葉子節點表示 : 葉子節點構成 THEN 部分 , 表達其分類結果 ;
5 . IF-THEN 示例 : 下圖的決策樹 , 有 5 個葉子節點 , 可以抽取出 5 條規則 , 下面列舉這 5 條路徑 :
① 下圖中的紅色路徑 : 該條路徑表示 , 如果年齡在 30 歲以下 , 是學生 , 就會購買商品 ;
IF age = "<=30" AND isStudent = "yes" THEN isBuy = "yes"② 下圖中的藍色路徑 : 該條路徑表示 , 如果年齡在 30 歲以下 , 不是學生 , 就不會購買商品 ;
IF age = "<=30" AND isStudent = "no" THEN isBuy = "no"③ 下圖中的紫色路徑 : 該條路徑表示 , 31 ~ 39 歲的 , 會購買商品 ;
IF age = ">= 31 && <= 39>" isBuy = "yes"④ 下圖中的綠色路徑 : 該條路徑表示 , 在 40 歲以上 , 信用好的 , 會購買商品 ;
IF age = ">=40" AND credit= "good" THEN isBuy = "yes"⑤ 下圖中的黑色路徑 : 該條路徑表示 , 在 40 歲以上 , 信用一般的 , 不會購買商品 ;
IF age = ">=40" AND credit= "normal" THEN isBuy = "no"II . 決策樹 過擬合 與 剪枝
1 . 決策樹過擬合問題 :
① 完全服從 : 生成的決策樹 , 完全服從與訓練集 ;
② 分支太多 : 這種過擬合的決策樹 , 出現很多類型的分支 , 有些分支出現次數很少 , 甚至在實際使用中從來不用 , 分支不具有代表性 ;
③ 消極結果 : 過擬合會導致模型準確度很低 ;
2 . 解決過擬合問題 : 剪枝方法 ; 通過進行剪紙 , 將部分分支路徑刪除 ;
① 先剪 : 在建立 決策樹 模型時 , 訓練模型過程中 , 如果該數據樣本分支很少 , 就不創建這個分支 ;
② 后剪 : 先將 完整的 決策樹模型 創建出來 , 然后將樣本少的路徑直接剪除 ;
III . 決策樹 剪枝 先剪 與 后剪 對比
1 . 時間消耗分析 :
① 先剪 : 訓練模型時剪枝 , 訓練時間會減少 , 相對于沒有剪枝的情況 , 測試的時間也會的減少 ;
② 后剪 : 在模型創建后剪枝 , 要生成完整的樹 , 訓練時間會增加 , 訓練完之后剪枝 , 相對于沒有剪枝的情況 , 測試的時間會減少 ;
2 . 擬合風險 : 這里分為 過擬合 ( 擬合過度 ) 和 欠擬合 ( 擬合度不夠 ) ;
① 先剪 : 不會過擬合 , 但是 有可能欠擬合 ;
② 后剪 : 不會過擬合 , 欠擬合風險不變 ;
3 . 最佳實踐 : 推薦使用 后剪 剪枝策略 ;
IV . 連續屬性 離散化處理 ( 二分法 | 最優劃分點 )
1 . 連續值屬性 :
① 連續屬性離散化 : 決策樹要基于一個離散的值進行分類 , 連續的值 , 無法根據屬性值劃分數據集 , 需要將連續屬性值離散化 , 再使用決策樹分析 ;
② 示例 : 如學生成績 , 0 ~ 100 分 , 60 分以上劃分為 及格 , 60 分以下劃分為 不及格 ;
2 . 二分法處理連續屬性值 :
① 連續屬性 DDD : 數據集中的 DDD 屬性 , 其取值是連續的數值 ;
② 屬性值排序 : 將 DDD 屬性的 nnn 個不同的連續取值從小到大排序 {a1,a2,?,an}\{ a_1 , a_2, \cdots , a_n \}{a1?,a2?,?,an?} ;
③ 劃分點 ttt : 劃分點 ttt 是 DDD 屬性的一個取值 , 將 DDD 屬性的值分為 子集 Dt?D_t^-Dt?? 和 Dt+D_t^+Dt+? ;
④ Dt?D_t^-Dt?? 子集 : 該子集中的屬性值 , 小于等于 ttt ;
⑤ Dt+D_t^+Dt+? 子集 : 該子集中的屬性值 , 大于 ttt ;
3 . 最優劃分點 :
① 候選劃分點 : DDD 屬性有 nnn 個取值 , 可以有 n?1n-1n?1 個候選劃分點 ;
② 某兩個屬性值之間的劃分點確定 : {a1,a2,?,an}\{ a_1 , a_2, \cdots , a_n \}{a1?,a2?,?,an?} 取值集合中 , 將兩個數值之間的中點 , 作為劃分點 ;
③ 最優化分點確定 : 需要選擇最優的劃分點 , 以達到最終決策樹分類的目的 ;
V . 根據 增益率 選擇劃分屬性
1 . 信息增益弊端 : 如果數據集中 , 某個屬性有很多值 , 其信息增益比較大 , 很容易將分支多的屬性放在樹根 ;
示例說明 : 如 人的性別 , 其取值只有 男 和 女 兩種 , 其只有兩項 , 人的年齡 有 130 種取值范圍 , 其計算出來信息增益比較大 ;
2 . 增益率引入 : ID3 使用信息增益確定樹根屬性 , C4.5 使用增益率確定樹根屬性 ;
3 . 增益率 ( Gain Ratio ) 計算公式 :
① AAA 表示屬性類型 ;
② DDD 表示樣本的總個數 ;
③ vvv 表示當前的 AAA 屬性不同取值個數 , 取值集合為 {a1,a2,?,av}\{a_1, a_2 , \cdots , a_v\}{a1?,a2?,?,av?}
④ DjD_jDj? 表示樣本取值 aja_jaj? 的樣本個數 ;
SplitInfoA(D)=?∑j=1vDjDlog2DjDSplitInfo_A(D) = - \sum_{j=1}^{v} \frac{D_j}{D} log_2 \frac{D_j}{D}SplitInfoA?(D)=?j=1∑v?DDj??log2?DDj??
增益率公式 :
GainRatio(A)=Gain(A)/SplitInfo(A)GainRatio ( A ) = Gain(A) / SplitInfo(A)GainRatio(A)=Gain(A)/SplitInfo(A)
VI . 根據 增益率 選擇劃分屬性 計算案例
1 . 計算案例 :
參考之前的 信息增益計算案例 : 信息增益計算 案例
2 . 信息增益計算結果 : 依次計算 各個屬性的 信息增益 :
① 年齡 屬性的信息增益 : Gain(年齡)=0.246Gain ( 年齡 ) = 0.246Gain(年齡)=0.246
② 收入 屬性的信息增益 : Gain(收入)=0.029Gain ( 收入 ) = 0.029Gain(收入)=0.029
③ 是否是學生 屬性的信息增益 : Gain(是否是學生)=0.151Gain ( 是否是學生 ) = 0.151Gain(是否是學生)=0.151
④ 信用等級 屬性的信息增益 : Gain(信用等級)=0.048Gain ( 信用等級 ) = 0.048Gain(信用等級)=0.048
⑤ 樹根 屬性選擇: 年齡屬性的 信息增益 最大 , 選擇年齡屬性作為樹根 ;
3 . 這里計算收入 屬性的增益率 : 14 個樣本中, 4 個高收入 , 6 個中等收入 , 4 個低收入 ;
SplitInfoA(D)=?∑j=1vDjDlog2DjD==?414log2414?614log2614?414log2414=0.926\begin{array}{lcl} SplitInfo_A(D) &=& - \sum_{j=1}^{v} \frac{D_j}{D} log_2 \frac{D_j}{D} \\\\ &=& = - \frac{4}{14} log_2 \frac{4}{14} - \frac{6}{14} log_2 \frac{6}{14} - \frac{4}{14} log_2 \frac{4}{14} \\\\ &=& 0.926 \end{array}SplitInfoA?(D)?===??∑j=1v?DDj??log2?DDj??=?144?log2?144??146?log2?146??144?log2?144?0.926?
GainRatio(A)=Gain(A)/SplitInfo(A)=0.0290.926=0.031GainRatio ( A ) = Gain(A) / SplitInfo(A) = \frac{0.029}{0.926} = 0.031GainRatio(A)=Gain(A)/SplitInfo(A)=0.9260.029?=0.031
4 . 樹根選擇 : 同樣增益率最大的屬性 , 會被設置為 劃分屬性 ;
VII . 決策樹 作用 及 優勢
1 . 大數據分類 : 在大數據分類中 , 要求快速的對幾百萬的樣本 , 涉及幾十上百的屬性進行分類 ;
2 . 決策樹 算法優勢 :
① 可伸縮性 : 隨著數據量增大 , 復雜度線性增長 , 不是指數級增長 ;
② 學習速度快 : 學習速度比其它分類方法快 ;
③ 規則轉化 : 可以抽取轉化分類規則 ;
④ 數據庫結合 : 可以使用 SQL 查詢數據庫中的數據 ;
⑤ 準確性高 : 使用決策樹分類 , 準確性有保障 ;
總結
以上是生活随笔為你收集整理的【数据挖掘】决策树 分类 ( 抽取分类规则 | 过拟合 | 剪枝 | 先剪 | 后剪 | 连续数值离散化 | 最优化分点 | 增益率选择划分属性 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据挖掘】决策树算法简介 ( 决策树模
- 下一篇: 【数据挖掘】数据挖掘建模 ( 预测建模