前面的一篇博客:分類算法之決策樹 介紹了決策樹算法,從介紹中可以發現,決策樹有些與生俱來的缺點:
1:分類規則復雜
決策樹算法在產生規則的時候采用局部貪婪法。每次都只選擇一個屬性進行分析構造決策樹,所以再產生的分類規則往往相當復雜。
2:收斂到非全局的局部最優解
ID3算法每次在樹的某個層次進行屬性選擇時,它不再回溯重新考慮這個選擇,所以它容易產生盲人登山中常見的風險,僅僅收斂到非全局的局部最優解。
3:過度擬合
在決策樹學習中,由於分類器過於復雜,它可能會過於適應噪聲,從而導致過度擬合問題。
為了克服以上的缺點,引入了另外一個預測模型-----隨機森林。
一:森林思想
單個的決策樹可以按照一定的精度分類,為了提高精度,一種比較容易想到的方法就是種植一片森林,並讓所有的樹都參加投票,選出投票最多的分類標簽。
下面舉例說明:
我們根據歷史數據建立起了一片由決策樹組成的森林,下面我們要根據某個用戶的特征來分析他是否會購買某件商品,分類標簽只有兩類:yes no。
假設100棵決策樹中有90棵樹給它貼的標簽為yes,10棵給它貼的標簽為no,那我們最后就選擇標簽yes.這樣就避免了一棵樹說了算的局面。
二:隨機思想
隨機森林的隨機體現在它的每棵決策樹的構造過程:
隨機森林的構造方法有很多,下面以bagging方法舉例:
1:假設原始樣本數為N,用bootstrap方法從N樣本中獲取構造每棵決策樹的訓練集。
bootstrap方法的實質就是一種自助法,一種非參數統計的方法:對觀察的信息(這里指原始的樣本)進行N次隨機的可重復的采樣,以此來獲取構造每棵決策樹的訓練集。Bootstrap充分利用了給定的觀測信息,不需要模型、其他假設和增加新的觀測,並有穩定性和效率高的特點。
2:如果樣本信息有M個屬性,每次隨機的從M個屬性中選擇m個屬性來進行建樹(建樹過程跟普通決策樹過程一樣),其中m<<M.
3:這樣每棵樹的葉子節點,要么是無法繼續分裂,要么里面的所有樣本都指向同一個分類標簽。
有了上面的隨機性,這樣建立起來的每一棵決策樹都不會出現過度擬合的現象,也不需要裁枝處理。
小結:這樣每一棵決策樹就是一位精通某一領域(m個features)的專家,在隨機森林中就有了很多精通不同領域的專家,對一個新問題,可以從不同的角度來觀察,最終由各個專家,投票得到結果。
三:隨機森林的特征
1:在現有算法中,隨機森林算法的精度是無可比擬的。
2:隨機森林能夠高效處理大數據集。
3:隨機森林可以處理成千上萬的輸入屬性。
4:隨機森林在分類的應用中可以計算出不同變量屬性的重要性。
5:在構建隨機森林的過程中可以產生一個關於泛化誤差的內部無偏估計。
6:當大量數據缺失的時候,隨機森林有高效的方法來估計缺失的數據並保持着准確率。
7:在不平衡的數據集中,它含有平衡誤差的方法。
8:已經生成的隨機森林可以保存下來方便解決以后的問題。
9:Prototypes的計算可以給出屬性變量本身和分類的相關性。
10:計算樣本實例之間的Proximities,可以用來聚類分析、異常分析、或者數據的其他有趣的視圖。
上述能力可以拓展為無標簽類數據,導出無監督聚類方法及數據視圖和異常點檢測。
隨機森林在機器學習領域中的應用還是很多的,所以接下來得弄清楚,它背后的數學基礎和各個特征的具體實現並用一些數據來感覺下它的強大。
繼續記錄自己的學習過程,方便以后的復習~come on~