我與機器學習 - [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