日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RF模型(随机森林模型)详解

發(fā)布時(shí)間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RF模型(随机森林模型)详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

入門(mén)小菜鳥(niǎo),希望像做筆記記錄自己學(xué)的東西,也希望能幫助到同樣入門(mén)的人,更希望大佬們幫忙糾錯(cuò)啦~侵權(quán)立刪。

目錄

一、RF背景——集成學(xué)習(xí)中的bagging流派

1、集成學(xué)習(xí)簡(jiǎn)介

2、bagging流派算法簡(jiǎn)介

(1)算法結(jié)構(gòu)圖

(2)算法步驟

(3)OOB(袋外數(shù)據(jù))& 泛化能力

二、RF模型算法原理

1、RF Vs bagging

2、算法步驟

三、RF模型的優(yōu)缺點(diǎn)

1、優(yōu)點(diǎn)

2、缺點(diǎn)

四、RF的變式——extra trees?

五、代碼實(shí)現(xiàn)RF模型


一、RF背景——集成學(xué)習(xí)中的bagging流派

RF模型屬于集成學(xué)習(xí)中的bagging流派,可以說(shuō)是bagging的進(jìn)化版

1、集成學(xué)習(xí)簡(jiǎn)介

集成學(xué)習(xí)分為2派:

(1)boosting:它組合多個(gè)弱學(xué)習(xí)器形成一個(gè)強(qiáng)學(xué)習(xí)器,且各個(gè)弱學(xué)習(xí)器之間有依賴(lài)關(guān)系。

(2)bagging:同樣的,它也是組合多個(gè)弱學(xué)習(xí)器形成一個(gè)強(qiáng)學(xué)習(xí)器,但它各個(gè)弱學(xué)習(xí)器之間沒(méi)有依賴(lài)關(guān)系,而且可以并行擬合。

2、bagging流派算法簡(jiǎn)介

(1)算法結(jié)構(gòu)圖

(2)算法步驟

🌳從原始樣本集(包含M個(gè)樣本)中抽取k個(gè)采樣集

每個(gè)采樣集的生成是使用隨機(jī)采樣(bootsrap)的方法抽取M個(gè)訓(xùn)練樣本(有放回的抽樣:所以可能被重復(fù)抽取)

進(jìn)行k輪抽取,得到k個(gè)采樣集。(k個(gè)采樣集之間是相互獨(dú)立的)

🌳分別對(duì)這k個(gè)采樣集進(jìn)行訓(xùn)練形成對(duì)應(yīng)的k個(gè)弱學(xué)習(xí)器

🌳將這k個(gè)弱學(xué)習(xí)器模型輸出通過(guò)結(jié)合策略得到最終的模型輸出

結(jié)合策略:

對(duì)于分類(lèi)問(wèn)題:通常使用簡(jiǎn)單投票法,得到最多票數(shù)的類(lèi)別或者類(lèi)別之一為最終的模型輸出。

對(duì)于回歸問(wèn)題:通常使用簡(jiǎn)單平均法,對(duì)k個(gè)弱學(xué)習(xí)器得到的回歸結(jié)果進(jìn)行算術(shù)平均得到最終的模型輸出。

(3)OOB(袋外數(shù)據(jù))& 泛化能力

🌳OOB:即Out of Bag(袋外數(shù)據(jù))

上面我們提到“每個(gè)采樣集的生成是使用隨機(jī)采樣(bootsrap)的方法抽取M個(gè)訓(xùn)練樣本”。

那么原始數(shù)據(jù)集中任意一個(gè)樣本被抽取出來(lái)的概率是1/M,沒(méi)被抽取出來(lái)的概率為1-1/M。

那么M次采樣都沒(méi)抽中的概率就為

當(dāng)m→∞時(shí),p→1/e,約等于0.368

那么在每輪采樣集的生成中大約有36.8%的數(shù)據(jù)沒(méi)有被采樣集采集中,這部分?jǐn)?shù)據(jù)被稱(chēng)為袋外數(shù)據(jù)。

🌳OOB的作用

因?yàn)檫@些數(shù)據(jù)沒(méi)有參與采樣集模型的擬合,所以可以用來(lái)檢測(cè)模型的泛化能力

🌳泛化能力

由于Bagging算法每次都進(jìn)行采樣來(lái)訓(xùn)練模型,因此泛化能力很強(qiáng),對(duì)降低模型的方差很有效。當(dāng)然對(duì)于訓(xùn)練集(采樣集)的擬合程度就會(huì)差一些,也就是模型的偏差會(huì)大一些。


二、RF模型算法原理

1、RF Vs bagging

RF用了改進(jìn)的CART決策樹(shù)來(lái)作為弱學(xué)習(xí)器

(1)CART決策樹(shù)

CART決策樹(shù)是在給定輸入隨機(jī)變量X的條件下輸出隨機(jī)變量Y的條件概率分布的學(xué)習(xí)方法

CART假設(shè)決策樹(shù)全是二叉樹(shù)(即其結(jié)點(diǎn)只有兩種選擇:“是” or “否”):決策樹(shù)遞歸二分每個(gè)特征,最終得到?jīng)Q策樹(shù),通過(guò)不斷的劃分,將特征空間劃分為有限個(gè)單元,并在這些單元上確定預(yù)測(cè)的概率分布

因此CART就是遞歸構(gòu)建二叉樹(shù),但是對(duì)于分類(lèi)和回歸問(wèn)題使用的策略是不一樣的:

對(duì)于回歸樹(shù)使用的是平方誤差最小;而對(duì)于分類(lèi)樹(shù)使用的是基尼指數(shù)最小化準(zhǔn)則()

(2)RF中的CART決策樹(shù)

普通決策樹(shù):在節(jié)點(diǎn)上所有的n個(gè)樣本特征中選擇一個(gè)最優(yōu)特征來(lái)作為決策樹(shù)的左右子樹(shù)劃分

RF:隨機(jī)選擇節(jié)點(diǎn)上的一部分樣本特征,假設(shè)為t個(gè)特征(t<n),然后在這些隨機(jī)選擇樣本特征中,選擇一個(gè)最優(yōu)的特征來(lái)作為決策樹(shù)的左右子樹(shù)劃分,這樣進(jìn)一步增強(qiáng)了模型的泛化能力

t越小——模型越穩(wěn)定(模型方差變小),但對(duì)于訓(xùn)練集的擬合程度會(huì)變差(偏差變大)

所以在實(shí)際案例中,一般會(huì)通過(guò)交叉驗(yàn)證調(diào)參獲取一個(gè)合適的t

注:分類(lèi)問(wèn)題中,t默認(rèn)取;回歸問(wèn)題中,默認(rèn)取M/3

2、算法步驟

(1)從原始樣本集(包含M個(gè)樣本)中抽取k個(gè)采樣集

每個(gè)采樣集的生成是使用隨機(jī)采樣(bootsrap)的方法抽取M個(gè)訓(xùn)練樣本(有放回的抽樣:所以可能被重復(fù)抽取)

進(jìn)行k輪抽取,得到k個(gè)采樣集。(k個(gè)采樣集之間是相互獨(dú)立的)

(2)分別對(duì)這k個(gè)采樣集進(jìn)行訓(xùn)練形成對(duì)應(yīng)的k個(gè)弱學(xué)習(xí)器

在訓(xùn)練決策樹(shù)模型的節(jié)點(diǎn)的時(shí)候, 在節(jié)點(diǎn)上所有樣本特征中選擇一部分樣本特征(選中了就不放回了),在這部分樣本特征中選擇一個(gè)最優(yōu)的特征來(lái)作為決策樹(shù)的左右子樹(shù)劃分

判斷特征的重要性:

🎈對(duì)整個(gè)隨機(jī)森林,得到相應(yīng)OOB,然后計(jì)算OOB誤差,記為errOOB1

🎈隨機(jī)對(duì)OOB所有樣本的特征X加入噪聲干擾(即可以隨機(jī)改變樣本在特征X處的值),再次計(jì)算袋外數(shù)據(jù)誤差,記為errOOB2

🎈假設(shè)森林中有N棵樹(shù),則特征X的重要性 = (∑errOOB2?errOOB1)/N

(3)將這k個(gè)弱學(xué)習(xí)器模型輸出通過(guò)結(jié)合策略得到最終的模型輸出

結(jié)合策略:

對(duì)于分類(lèi)問(wèn)題:通常使用簡(jiǎn)單投票法,得到最多票數(shù)的類(lèi)別或者類(lèi)別之一為最終的模型輸出。(RF通常處理的是分類(lèi)問(wèn)題)

對(duì)于回歸問(wèn)題:通常使用簡(jiǎn)單平均法,對(duì)k個(gè)弱學(xué)習(xí)器得到的回歸結(jié)果進(jìn)行算術(shù)平均得到最終的模型輸出。

剛剛不是說(shuō)有OOB嘛~派上用場(chǎng)啦

🌳對(duì)OOB樣本中的每個(gè)樣本,計(jì)算對(duì)應(yīng)決策樹(shù)對(duì)它的分類(lèi)情況;

🌳然后以簡(jiǎn)單多數(shù)投票作為該樣本的分類(lèi)結(jié)果;

🌳最后用誤分個(gè)數(shù)占樣本總數(shù)的比率作為隨機(jī)森林的oob誤分率。


三、RF模型的優(yōu)缺點(diǎn)

1、優(yōu)點(diǎn)

RF善于處理高維數(shù)據(jù),特征遺失數(shù)據(jù),和不平衡數(shù)據(jù)

(1)訓(xùn)練可以并行化,速度快

(2)對(duì)高維數(shù)據(jù)集的處理能力強(qiáng),它可以處理成千上萬(wàn)的輸入變量,并確定最重要的變量,因此被認(rèn)為是一個(gè)不錯(cuò)的降維方法。

(3)在訓(xùn)練集缺失數(shù)據(jù)時(shí)依舊能保持較好的精度(原因:RF隨機(jī)選取樣本和特征;RF可以繼承決策樹(shù)對(duì)缺失數(shù)據(jù)的處理方式)

(4)泛化能力強(qiáng),因?yàn)殡S機(jī)

2、缺點(diǎn)

(1)在解決回歸問(wèn)題時(shí)效果不是很好

RF不能給出一個(gè)連續(xù)的輸出,而且RF不能做出超越訓(xùn)練集數(shù)據(jù)范圍的預(yù)測(cè),這可能會(huì)導(dǎo)致在訓(xùn)練含有某些特定噪聲的數(shù)據(jù)時(shí)出現(xiàn)過(guò)擬合

(2)對(duì)特征數(shù)比較少的數(shù)據(jù),它的隨機(jī)性不好發(fā)揮,效果不太好


四、RF的變式——extra trees?

改進(jìn)點(diǎn):

1、extra trees的每個(gè)決策樹(shù)采用原始訓(xùn)練集

2、extra trees隨機(jī)選擇一個(gè)特征值來(lái)劃分決策樹(shù)


五、代碼實(shí)現(xiàn)RF模型

我們可以調(diào)用sklearn里面現(xiàn)成的RF模型來(lái)實(shí)現(xiàn)

🌳首先導(dǎo)入所需要的庫(kù)

import numpy as np import pandas as pd from sklearn.ensemble import RandomForestClassifier #導(dǎo)入隨機(jī)森林模型 from sklearn.datasets import load_boston #讓我們利用sklearn里現(xiàn)有的boston數(shù)據(jù) from sklearn.model_selection import train_test_split#用來(lái)進(jìn)行訓(xùn)練集和測(cè)試集的自動(dòng)分配

🌳我們這里使用sklearn里的boston數(shù)據(jù)

boston = load_boston()#導(dǎo)入boston數(shù)據(jù)

🌳我們把數(shù)據(jù)變成DataFrame類(lèi)型,這樣比較好處理,我們看起來(lái)也比較清晰

bos = pd.DataFrame(boston.data, columns = boston.feature_names) bos['MEDV'] = boston.target print(bos) print(bos.columns)

數(shù)據(jù)變成這樣

🌳讓我們把數(shù)據(jù)變?yōu)閚umpy類(lèi)型再送進(jìn)train_test_split進(jìn)行訓(xùn)練集和測(cè)試集的分配

y = np.array(bos['MEDV']) #目標(biāo) x = bos.drop(['MEDV'], axis=1)#去除目標(biāo)后的所有數(shù)據(jù)作為輸入 x = np.array(x) x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)#分成80%訓(xùn)練,20%測(cè)試

?🌳模型配置并訓(xùn)練

rf = RandomForestClassifier(n_estimators=10000, random_state=0, n_jobs=-1)#RF模型設(shè)置 rf.fit(x_train, y_train.astype('int'))#把數(shù)據(jù)送進(jìn)去訓(xùn)練

🎈RandomForestClassifier函數(shù)

n_estimators?:森林里決策樹(shù)的數(shù)目,默認(rèn)是10

random_state:隨機(jī)數(shù)生成器使用的種子

n_jobs:用于擬合和預(yù)測(cè)的并行運(yùn)行的工作數(shù)量。如果值為-1,那么工作數(shù)量被設(shè)置為核的數(shù)量

🌳輸出預(yù)測(cè)后的每個(gè)特征對(duì)于MEDV的重要性

a = rf.feature_importances_ print(boston.feature_names) print("重要性:",a)

預(yù)測(cè)結(jié)果


歡迎大家在評(píng)論區(qū)批評(píng)指正,謝謝大家~

總結(jié)

以上是生活随笔為你收集整理的RF模型(随机森林模型)详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。