随機森林算法的應用
本人在做kaggle的house prices題目時用到了随機森林回歸的算法,遇到了一些問題,現在記錄下來。
- 随機森立對于線性相關的特征是否有影響?
- 特征簡化後效果會變好,為什麼?
随機森林算法原理見http://www.zilhua.com/629.html。
一、線性相關性
随機森林對多元共線性不敏感,結果對缺失資料和非平衡的資料比較穩健,可以很好地預測多達幾千個解釋變量的作用(Breiman 2001b),被譽為目前最好的算法之一(Iverson et al. 2008)。
在做實驗室的時候會發現當有線性相關的特征時,選其中一個特征和同時選擇兩個特征的效果是一樣的,即随機森林對多元共線不敏感。
在回歸分析中,當自變量之間出現多重共線性現象時,常會嚴重影響到參數估計,擴大模型誤差,并破壞模型的穩健性,是以消除多重共線性成為回歸分析中參數估計的一個重要環節。現在常用的解決多元線性回歸中多重共線性的回歸模型有嶺回歸(Ridge Regression)、主成分回歸(Principal Component Regression簡記為PCR)和偏最小二乘回歸(Partial Least Square Regression簡記為PLS)。
邏輯斯蒂回歸對自變量的多元共線性非常敏感,要求自變量之間互相獨立。随機森林則完全不需要這個前提條件。
原因分析:随機森林為什麼對多元共線不敏感?
個人猜想:因為随機森林算法對特征進行了采樣,可能線性相關的特征并沒有在同一棵樹中。
二、某個特征的取值減少後,效果會變好??
例如:feature1 原始的取值為1-10的10個取值,現在把feature1 特征簡化為(1,2,3) 3個取值;則應用feature2的效果要更好一些。應用feature1和feature2一起,則和隻應用feature2的效果一樣(這是因為随機森林對多元共線不敏感)。
原因分析:
沒有找到合理的解釋,可能隻是在這個資料集中有了這樣的結果。不過特征簡化後,可以達到減少計算量的效果。
三、随機森林總結
1.随機森林的優點是:
- 它的學習過程很快。在處理很大的資料時,它依舊非常高效。
- 随機森林可以處理大量的多達幾千個的自變量(Breiman,2001)。
- 現有的随機森林算法評估所有變量的重要性,而不需要顧慮一般回歸問題面臨的多元共線性的問題。
- 它包含估計缺失值的算法,如果有一部分的資料遺失,仍可以維持一定的準确度。
-
随機森林中分類樹的算法自然地包括了變量的互動作用(interaction)(Cutler, et
al.,2007),即X1的變化導緻X2對Y的作用發生改變。互動作用在其他模型中(如邏輯斯蒂回歸)因其複雜性經常被忽略。
- 随機森林對離群值不敏感,在随機幹擾較多的情況下表現穩健。
-
随機森林不易産生對資料的過度拟合(overfit)(Breiman,2001),然而這點尚有争議(Elith and
Graham,2009)。
随機森林通過袋外誤差(out-of-bag error)估計模型的誤差。對于分類問題,誤差是分類的錯誤率;對于回歸問題,誤差是殘差的方差。随機森林的每棵分類樹,都是對原始記錄進行有放回的重抽樣後生成的。每次重抽樣大約1/3的記錄沒有被抽取(Liaw,2012)。沒有被抽取的自然形成一個對照資料集。是以随機森林不需要另外預留部分資料做交叉驗證,其本身的算法類似交叉驗證,而且袋外誤差是對預測誤差的無偏估計(Breiman,2001)。
2.随機森林的缺點:
- 随機森林在解決回歸問題時并沒有像它在分類中表現的那麼好,這是因為它并不能給出一個連續型的輸出。當進行回歸時,随機森林不能夠作出超越訓練集資料範圍的預測,這可能導緻在對某些還有特定噪聲的資料進行模組化時出現過度拟合。
- 對于許多統計模組化者來說,随機森林給人的感覺像是一個黑盒子——你幾乎無法控制模型内部的運作,隻能在不同的參數和随機種子之間進行嘗試。
- 是它的算法傾向于觀測值較多的類别(如果昆蟲B的記錄較多,而且昆蟲A、B和C間的差距不大,預測值會傾向于B)。
-
另外,**随機森林中水準較多的分類屬性的自變量(如土地利用類型 >
20個類别)比水準較少的分類屬性的自變量(氣候區類型<10個類别)對模型的影響大**(Deng et
al.,2011)。總之,随機森林功能強大而又簡單易用,相信它會對各行各業的資料分析産生積極的推動作用。