1. 程式人生 > >我與機器學習 - [Today is RF] - [隨機森林]

我與機器學習 - [Today is RF] - [隨機森林]

條件熵:

H(X,Y) - H(X) : (X,Y)發生所包含的熵,減去X單獨發生包含的熵,即在X發生的前提下,Y發生新帶來的熵。

該式子定義為X發生前提下,Y的熵  H(Y|X)

推導:

 即:

即:1 * H(Y|X) 所以 H(X,Y) - H(X) = H(Y|X)

資訊增益:

當熵和條件熵中的概率是由資料估計(極大似然估計)得到的,則稱對應的熵和條件熵為經驗熵和經驗條件熵 。

資訊增益表示得知特徵A的資訊而使得類X的資訊不確定性減少的程度

定義特徵A對訓練資料集D的資訊增益g(D,A),定義為集合D的經驗熵H(D)與特徵A給定條件下D的經驗條件熵H(D|A)之差,即g(D,A) = H(D) - H(D|A),顯然這就是訓練資料集D和特徵A的互資訊

Gini係數:

 複習決策樹:

決策樹是以例項為基礎的歸納學習

決策樹學習採用的是自頂向下的遞迴方法,其基本思想是以資訊熵為度量構造一棵熵值下降最快的樹,到葉子節點處的熵值為0,此時每個葉節點都屬於同一類別

決策樹學習演算法的最大優點就是,他可以自學習。在學習過程中,不需要使用者瞭解過多背景知識,只需要對訓練資料進行良好的標註就可以進行學習。

因為有標註資訊因此屬於有監督學習

選擇最佳特徵的數學思想:

      資料集D的經驗熵為:H(D)

      計算特徵A對資料集D的經驗條件熵:H(D|A)

      計算特徵A的資訊增益:g(D,A) = H(D) - H(D|A)

      選擇資訊增益最大的特徵作為當前分裂的特徵

損失函式:

當某個葉節點上的類別數目等於1,則稱該葉節點為純節點,純節點的熵等於0

當某個葉節點的上類別數目等於總類別數目,則成該葉節點為均節點,均節點的熵等於LnK

對所有葉節點的熵求和,該值越小說明對樣本的分類越精確。

由於各個葉節點包含的樣本數目不同,可使用樣本數目加權求熵和

評價函式:

過擬合:

決策數對訓練有很好的分類能力,但對未知的測試資料未必有好的分類能力,泛化能力弱,即可能發生過擬合的現象

可以通過剪枝來避免

Bagging的策略:

從樣本集中重取樣(有重複的)選出n個樣本,在所有屬性上,對這n個樣本建立分類器(ID3,ID4.5, CART,SVM)等等

重複建立m個分類器,將資料放在這m個分類器上,最後根據這m個分類器的選擇,決定資料屬於哪一分類。

隨機森林:

隨機森林在bagging的基礎上做了修改。步驟為:

      1.從樣本集中用Bootstrap取樣選出n個樣本

      2.從所有屬性中隨機選擇k個屬性,選擇最佳分割屬性作為節點建立cart決策數

      3.重複以上步驟m次,即建立了m棵cart決策樹

      4.這m個cart樹形成了隨機森林,通過投票表決結果,決定資料屬於哪一類。

當然可以使用決策樹作為基本分類器,也可以使用SVM,logistic迴歸等其他分類器作為基本分類器,習慣上這些分類器所組成的總分類器,仍然叫做隨機森林。

樣本不均衡的常用處理方法:

假定樣本數目A類比B類多,且嚴重不均衡,可以採用:

      1.A類欠取樣

            隨機欠取樣

            A類分成若干子類,分別與B類進行訓練

            基於聚類對A進行分類後,與B進行訓練

      2.B類過取樣

            隨機插值得到新樣本

            SMOTE

      3.代價敏感學習

            降低A類的權值,提高B類的權值

使用隨機森林建立樣本間相似度的計算:

      原理:若兩樣本同時出現在相同的葉節點的次數越多,則二者越相似

      演算法過程:記樣本數目為N,初始化一個N x N的零矩陣S,S[i,j]表示樣本i與樣本j的相似程度,對於有m棵決策樹的隨機森            林,遍歷所有決策樹的所有葉節點,若樣本i和j同時出現在該葉節點上,則樣本i和j同時出現在同一葉節點的數目加1,S[i,j]            += 1。遍歷結束後,S即為樣本間相似度矩陣。

專案程式碼:https://github.com/HanGaaaaa/MLAPractice/tree/master/RandomForest