机器学习D14——随机森林
生活随笔
收集整理的這篇文章主要介紹了
机器学习D14——随机森林
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
隨機森林:是bagging裝袋法的代表。弱學習器只可以是決策樹
-
簡介:
- 隨機森林是一種有監督學習算法,是以決策樹為基學習器的集成學習算法。隨機森林非常簡單,易于實現,計算開銷也很小,在分類和回歸上表現出非常驚人的性能,因此,隨機森林被譽為“代表集成學習技術水平的方法”。
-
隨機森林的隨機性體現在兩個芳年
- 1.數據集的隨機選擇
- 從原始數據集中采取《有放回的抽樣bagging》,構造子數據集,子數據集的數據量是和原始數據集相同的。不同子數據集的元素可以重復,同一個子數據集中的元素也可以重復。
- 2.待選特征的隨機選取
- 隨機森林中的子樹的每一個分裂過程并未用到所有的待選特征,而是從所有的待選特征中隨機選取一定的特征,之后再隨機選取的特征中選取最優的特征。
- 1.數據集的隨機選擇
-
隨機森林的重要作用:
- 可以用于分類問題,也可以用于回歸問題
- 可以解決模型過擬合的問題,對于隨機森林來說,如果隨機森林中的樹足夠多,那么分類器就不會出現過擬合
- 可以檢測出特征的重要性,從而選取好的特征
-
隨機森林的構建過程
- 1.從原始訓練集中隨機有放回采樣取出m個樣本,生成m個訓練集
- 2.對m個訓練集,我們分別訓練m個決策樹模型
- 3.對于單個決策樹模型,假設訓練樣本特征的個數為n,那么每次分裂時根據信息增益/信息增益比/基尼指數 選擇最好的特征進行分裂
- 4.將生成的多顆決策樹組成隨機森林。對于分類問題,按照多棵樹分類器投票決定最終分類結果;對于回歸問題,由多顆樹預測值的均值決定最終預測結果
-
優點
- 1.由于采用了集成算法,本身精度比大多數單個算法要好,所以準確性高
- 2.由于兩個隨機性的引入,使得隨機森林不容易陷入過擬合(樣本隨機,特征隨機)
- 3.在工業上,由于兩個隨機性的引入,使得隨機森林具有一定的抗噪聲能力,對比其他算法具有一定優勢
- 4.它能夠處理很高維度(feature很多)的數據,并且不用做特征選擇,對數據集的適應能力強:既能處理離散型數據,也能處理連續型數據
- 5.在訓練過程中,能夠檢測到feature間的互相影響,且可以得出feature的重要性,具有一定參考意義
-
缺點
- 1.當隨機森林中的決策樹個數很多時,訓練時需要的空間和時間會比較大
-
在sklearn.ensemble庫中,我們可以找到Random Forest分類和回歸的實現:
- RandomForestClassifier
- RandomForestRegression
控制弱評估器的參數
n_estimators
- 這是森林中樹木的數量,即基評估器的數量。這個參數對隨機森林模型的精確性影響是單調的,n_estimators越大,模型的效果往往越好。但是相應的,任何模型都有決策邊界,n_estimators達到一定的程度之后,隨機森林的 精確性往往不在上升或開始波動,并且,n_estimators越大,需要的計算量和內存也越大,訓練的時間也會越來越 長。對于這個參數,我們是渴望在訓練難度和模型效果之間取得平衡。
- n_estimators的默認值在現有版本的sklearn中是10,但是在即將更新的0.22版本中,這個默認值會被修正為 100。這個修正顯示出了使用者的調參傾向:要更大的n_estimators。
建立森林
- 樹模型的優點是簡單易懂,可視化之后的樹人人都能夠看懂,可惜隨機森林是無法被可視化的。所以為了更加直觀地讓大家體會隨機森林的效果,我們來進行一個隨機森林和單個決策樹效益的對比。我們依然使用紅酒數據集。
random_state
- 隨機森林中的random_state控制的是生成森林的模式,類似決策樹中的random_state,用來固定森林中樹的隨機性。當random_state固定時,隨機森林中生成是一組固定的樹。
bootstrap & oob_score
- bootstrap:
- 裝袋法是通過有放回的隨機抽樣技術來形成不同的訓練數據,bootstrap就是用來控制抽樣技術的參數。我們進行樣本的隨機采樣,每次采樣一個樣本,并在抽取下一個樣本之前將該樣本 放回原始訓練集,也就是說下次采樣時這個樣本依然可能被采集到。bootstrap參數默認True,代表采用這種有放回的隨機抽樣技術。通常,這個參數不會被我們設置為False。
- oob_score:
- 然而有放回抽樣也會有自己的問題。由于是有放回,一些樣本可能會被采集多次,而其他一些樣本卻可能被忽略,一次都未被采集到。那么這些被忽略或者一次都沒被采集到的樣本叫做oob袋外數據。
- 也就是說,在使用隨機森林時,我們可以不劃分測試集和訓練集,只需要用袋外數據來測試我們的模型即可。
- 如果希望用袋外數據來測試,則需要在實例化時就將oob_score這個參數調整為True,訓練完畢之后,我們可以用隨機森林的另一個重要屬性:oob_score_來查看我們的在袋外數據上測試的結果:
回歸隨機森林RandomForestRegressor
- 所有的參數,屬性與接口,全部和隨機森林分類器一致。僅有的不同就是回歸樹與分類樹的不同,不純度的指標, 參數Criterion不一致。
- Criterion參數:
- 回歸樹衡量分枝質量的指標,支持的標準有三種:
- 輸入"mse"使用均方誤差mean squared error(MSE),父節點和葉子節點之間的均方誤差的差額將被用來作為特征選擇的標準,這種方法通過使用葉子節點的均值來最小化L2損失
- 輸入“friedman_mse”使用費爾德曼均方誤差,這種指標使用弗里德曼針對潛在分枝中的問題改進后的均方誤差
- 輸入"mae"使用絕對平均誤差MAE(mean absolute error),這種指標使用葉節點的中值來最小化L1損失
- 回歸樹衡量分枝質量的指標,支持的標準有三種:
總結
以上是生活随笔為你收集整理的机器学习D14——随机森林的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初级调色转档CameraRaw
- 下一篇: 全角半角的转换