決策樹建模


模型:
          樹形結構:根節點為null,枝節點為判斷條件,葉子節點為分類
 
算法的步驟:
          1.選取分類的屬性
                    用每個屬性依次對群組進行分類,根據分類的結果
                    a.基尼不純度:
                         對每個小群組,統計map(class,num)以及class的在此分類中的概率,遍歷map,求一個class與其他所有class的概率的乘積,然后疊加起來,得到此群組的基尼不純度,選取基尼不純度最小的分類屬性,對群組進行分類
                    b.熵:
                         計算兩個小群組的Entrop=H(x)=-∑P(x)logP(x),然后根據每個分組中 元素總數占分組前的比例,對兩個熵加權平均,用原群組的熵減去此加權值,得到信息增益,選取信息增益最大的元素進行分組;當所有分組的信息增益為負時(越混雜熵越高),分組結束
          2.剪枝:
                    使用訓練集得到的決策樹會過度擬合於訓練集,分類群組的熵要比實際情況的低,所以要進行剪枝
                    先構建決策樹,然后將父節點下的兩個葉子節點合並,合並前后熵的減少量小於某一個閥值時,將兩個葉子節點合並
 
應用模型時的缺失值處理:
          兩邊分支都走,根據最后的分類結果,統計每個分支分類結果的次數,根據次數求兩邊分支的權重,再根據true分支分類結果*true分支權重+fasle分支*false分支權重(只計算出現在true分支分類中的分類),遞歸考慮多個缺失值的情況
 
樹的結構:
               a.本次檢查用到的模型數據的那一列的標識col
               b.使判斷為true時的匹配值value(值為數值型instance,則>=為判斷條件,為字符串型時,用"=="判斷)
               c.判斷結果為true、false時的子樹tb、fb
               d.當前分支的分類結果result(為一個字典),除葉子節點外,其它節點值為None;
 

1.分類方法的一種

     用途:商務分析、醫療決策、政策制定、金融風險分析、輔助診斷、交通預測
 
2.模型數據准備
     來源網站     位置     是否閱讀過FAQ     瀏覽網頁數     選擇服務類型
 
3.構建模型:
     i.決策樹的創建:
          樹類(decision tree)中的變量聲明:
               a.本次檢查用到的模型數據的那一列的標識col
               b.使判斷為true時的匹配值value(值為數值型instance,則>=為判斷條件,為字符串型時,用"=="判斷)
               c.判斷結果為true、false時的子樹tb、fb
               d.當前分支的分類結果result(為一個字典),除葉子節點外,其它節點值為None;
 
     ii.以遞歸的方式構建決策樹:
          先用每個屬性可能的取值對群組進行拆分,然后計算新群組的混雜程度,更具混雜程度來決定此次拆分使用哪個屬性最為合適,然后對新群組再次進行拆分,直到新的群組混雜程序為0( 一般的原理,熵的過程見其具體的步驟
          a.基尼不純度
               先將數據依次按列進行分組,得到很多集合sets
               計算每個集合set的基尼不純度:
                    先用每行數據最后一列的分類結果,格式化為res[class,num]
        
                    再求此集合中每行數據的分類出現於錯誤分類的概率
                    
                    每一項結果出現的次數除以總行數,然后將這些概率的乘機累加,得到 某一行數據被隨機分配到錯誤結果的概率,即基尼不純度(越小標識拆分的結果越理想)
                選取基尼不純度最小的集合,確定此次拆分的列
   
          b.熵
               含義:代表的是集合的無序程度——集合的混雜程度
               計算公式:Entrop=H(x)=-∑P(x)logP(x),其中x∈X ;熵越大,代表群組的混雜度越高
                熵到達峰值的過程相對慢些,其對混亂集合的判罰更重,人們對熵的使用更為普遍些
          具體的步驟:先計算整個群組的熵,然后根據 每個屬性的可能取值(每個屬性、每個屬性的值兩個維度進行分組熵的度量)對群組進行拆分,並求出兩個新群組的熵,根據新分組元素個數占分組前群組的比例,對兩個熵進行加權平均,而整個群組的熵與新群組加權平均熵的差值作為信息增益(information gain),根據信息增益 最大的屬性進行本次拆分;當由熵值最低的一對子集求得的加權平均熵比分組前集合的熵要大時(即所有的信息增益為負時),拆分過程結束
 
     iii.結果展示:
          樹形、文本顯示
 
     iv.對新的觀測數據進行分類
          遞歸過程:用observation按照構建的決策樹進行分類,判斷其應走哪條分支,然后用分支對其再次分組,直到葉子節點
 
4.模型的修改:
     用訓練數據得到的決策樹可能會變得過度擬合,即只能針對訓練數據進行分類;訓練數據分組的熵值會比 實際情況(實際情況群組更加混雜)低,所以過度擬合的決策樹得到的分類比實際情況更具特殊性,因此需要對模型進行調整:
           上面的在構建決策樹的過程中,會直到熵無法降低時停止,所以一種解決辦法是, 當熵的減小量小於某個值時,就停止分支的創建:具體的步驟是先按上述方法創建好決策樹,然后對其進行剪枝,避免因為過早停止對分類造成的影響
 
     剪枝的過程:對具有相同父節點的 一組葉子節點進行檢查,如果將其合並,熵的變化量是否會小於某個指定的閥值,如果是,則將兩個節點進行合並,合並后的新節點包含了所有可能的結果值,合並的新葉節點也可能成為刪除的對象或者合並的對象
   
5.模型應用:處理缺省值
     如果observation的某個屬性有缺失值,則在決策樹上此判斷條件下,先求兩邊分支上此屬性的值占兩個分支所有值上比重值,再求左右分支上所有此屬性的值與其比重值的乘積之和,來代替:
          

 

 
6.適用范圍:
     a.對於只有幾個可能結果的問題而言,算法處理會非常有效
     b.只能用大於(小於)、是(不是)作為判斷條件,對於分類情況較多的因素,不太適合
     c.最合適處理帶分界點、由大量分類數據、數值數據共同構成的數據集
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM