1. 程式人生 > >分類演算法

分類演算法

一,分類問題(又叫做預測問題,預測的物件是數值型別)

  訓練集(用來構建模型,擬合模型,可以訓練出很多個模型)——>使用模型:測試集(僅僅一次使用,評估模型泛化的效能),驗證集(進行模型的選擇選擇特徵,調參,防止過擬合,多次使用,以不斷調參),這些都是已知table的

  分類問題的本質是,根據一些屬性去分標籤屬性

  

 

 二,決策樹

  根據輸入,從樹的根最後在樹裡面走一遍到輸出的葉子節點,得到分類結果。分類的目的是讓不確定性消失,使熵下降最快,使子節點的純度最高。

  •   步鄹:(1)將所有資料都放在根節點,

     (2)選擇一個特徵進行分解出子節點

     (3)在子節點上判斷是否不再分裂,如果不再分裂則直接給出這個子節點的分類結果(這個子節點的多數table為這個節點的輸出table),否則繼續選擇一個特徵進行分解(即到第二步)

  •   演算法的核心:最優分裂特徵(節點)的選取;分裂成幾類;什麼時候停止分裂。
  •   分裂特徵的選取:ID3演算法,C4.5演算法(可以用來決定分裂成幾類,即最優分裂值的選取),CART樹

  (1)ID3:使資訊增益最大。(熵下降最快)

  父節點的熵-子節點的熵

  

    InfoA是分類之後的,分別求各子節點的熵,再乘上各子節點概率。

  注意:根節點計算的時候,Info(D)是算沒有任何條件的分類結果的概率

 (2)C4.5:使資訊增益率最大(減弱ID3的缺點,ID3偏向於選擇多分支,因為多分支意味著純度高)

 

分母 是把子節點看成整體,算出分裂成子節點之後的整體的熵。

 例題:

要分類的標籤table:buys_computer:no or yes

選取第一個節點:

Info income(D)=4/14*I(2,2)+6/14*I(3,1)+4/14*i(3,1)

(3)CARt樹

  基尼係數:衡量子節點的純度,基尼係數越小,純度越高(其實和熵的意思差不多)

  分成子節點的GINI係數,是要分別求GINI再對概率的加權求和。

迴歸樹(輸入是連續值):

  先劃分節點,將資料集分裂:在整個區間內取一個點,將區間分為兩部分,使損失函式最小。

  

參考:https://www.cnblogs.com/fionacai/p/5894142.html

https://www.cnblogs.com/wenyi1992/p/7685131.html