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

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

生活随笔

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

编程问答

基于随机森林的分类与回归

發(fā)布時(shí)間:2024/8/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于随机森林的分类与回归 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、隨機(jī)森林基本概念

隨機(jī)森林(Random forest) 是一種組成式的有監(jiān)督學(xué)習(xí)方法。在隨機(jī)森林中,我們同時(shí)生成多個(gè)預(yù)測(cè)模型,并將模型的結(jié)果匯總以提升預(yù)測(cè)模型的準(zhǔn)確率。

隨機(jī)森林算法(預(yù)測(cè)和回歸)主要包括一下三個(gè)方面:
1.從原始數(shù)據(jù)隨機(jī)有放回的抽取N個(gè)樣本單元,生成決策或者回歸樹(shù)。

2.在每一個(gè)節(jié)點(diǎn)隨機(jī)抽取m<M個(gè)變量,將其作為分割節(jié)點(diǎn)的候選變量。每一個(gè)節(jié)點(diǎn)處變量數(shù)應(yīng)該一致。

3.最終對(duì)每一顆決策或者回歸樹(shù)的結(jié)果進(jìn)行整合,生成預(yù)測(cè)值。


二、隨機(jī)森林的優(yōu)勢(shì)

1.在沒(méi)有驗(yàn)證數(shù)據(jù)集的時(shí)候,可以計(jì)算袋外預(yù)測(cè)誤差(生成樹(shù)時(shí)沒(méi)有用到的樣本點(diǎn)所對(duì)應(yīng)的類(lèi)別可由生成的樹(shù)估計(jì),與其真實(shí)類(lèi)別比較即可得到袋外預(yù)測(cè))。

2.隨機(jī)森林可以計(jì)算變量的重要性。

3.計(jì)算不同數(shù)據(jù)點(diǎn)之間的距離,從而進(jìn)行非監(jiān)督分類(lèi)。


三、隨機(jī)森林R語(yǔ)言實(shí)例

如果數(shù)據(jù)集的響應(yīng)變量為類(lèi)別型,則隨機(jī)森林根據(jù)預(yù)測(cè)變量預(yù)測(cè)一個(gè)分類(lèi)結(jié)果;如果數(shù)據(jù)集的響應(yīng)變量為連續(xù)型,則隨機(jī)森林根據(jù)預(yù)測(cè)變量進(jìn)行回歸。

1.利用隨機(jī)森林預(yù)測(cè)一個(gè)分類(lèi)結(jié)果

加載程序包

library(randomForest)
library(MASS)

加載數(shù)據(jù)

data(fgl)
str(fgl)

為保證結(jié)果大家運(yùn)算結(jié)果一致 設(shè)定隨機(jī)種子

set.seed(17)

構(gòu)建隨機(jī)森林模型 mtry參數(shù)表征默認(rèn)在每個(gè)節(jié)點(diǎn)抽取的變量數(shù)

fgl.rf<- randomForest(type ~ .,data=fgl, mtry=2, importance=TRUE,
? ?do.trace=100)
fgl.rf

混淆矩陣結(jié)果可以看出隨機(jī)森林對(duì)各類(lèi)別的分類(lèi)效果。

采用十折交叉驗(yàn)證對(duì)比隨機(jī)森林與支持向量機(jī)的誤差。十折交叉驗(yàn)證:用來(lái)測(cè)試精度。是常用的精度測(cè)試方法。將數(shù)據(jù)集分成十分,輪流將其中9份做訓(xùn)練1份做測(cè)試,10次的結(jié)果的均值作為對(duì)算法精度的估計(jì),一般還需要進(jìn)行多次10倍交叉驗(yàn)證求均值,例如10次10倍交叉驗(yàn)證,更精確一點(diǎn)。

library(ipred)
set.seed(131)
error.RF<- numeric(10)
for(iin 1:10) error.RF[i] <-
? ?errorest(type ~ ., data = fgl,
? ?model = randomForest, mtry = 2)$error
summary(error.RF)

library(e1071)
set.seed(563)
error.SVM<- numeric(10)
for(i in 1:10) error.SVM[i] <-
? ?errorest(type ~ ., data = fgl,
? ?model = svm, cost = 10, gamma = 1.5)$error
summary(error.SVM)

從結(jié)果中可以看出隨機(jī)森林的誤差要小于支持向量機(jī)模型

查看變量重要性

imp<- as.data.frame(fgl.rf$importance)
head(imp)
attach(imp)
par(mfrow= c(2, 2))
for(i in 1:4){
? ?data <-imp[order(imp[,i],decreasing=T),]
? ?plot(data[,i],type = “h”, main =paste(“Measure”, i), ylab=””, xaxt=”n”)
? text(data[,i],rownames(data),cex=0.6,pos=4,col=”red”)
}

由上圖可以看出不同變量在預(yù)測(cè)不同類(lèi)別時(shí)的重要性


2.基于隨機(jī)森林回歸分析

首先,我們先注意一下隨機(jī)森林回歸和隨機(jī)森林分類(lèi)的差別:(1)默認(rèn)mtry是p/3而不是p1/2,其中p表示預(yù)測(cè)變量數(shù)(2)默認(rèn)節(jié)點(diǎn)大小為5而不是1(3)只有一個(gè)測(cè)量變量的重要性。

data(Boston)
set.seed(1341)
BH.rf<- randomForest(medv ~ ., Boston)
BH.rf


由上圖可以看出隨機(jī)森林回歸模型結(jié)果的方差解釋量

對(duì)比隨機(jī)森林預(yù)測(cè)結(jié)果、多元回歸預(yù)測(cè)結(jié)果和實(shí)際值的差異

forest.pred<- predict(BH.rf, Boston)
fit<- lm(medv ~ ., Boston)
lm.pred<-predict(fit,Boston)
data<- data.frame(Boston$medv, forest.pred1, lm.pred1)
head(data)
library(car)
png(filename= “l(fā)m.png”, width = 900, height = 500)
scatterplotMatrix(data)
dev.off()

由上圖可以看出隨機(jī)森林結(jié)果要優(yōu)于多元回歸模型。

3.隨機(jī)森林中需要注意的地方:

3.1合理確定決策樹(shù)的數(shù)量。

3.2合理確定每個(gè)節(jié)點(diǎn)隨機(jī)抽取的變量數(shù)

3.3決策樹(shù)數(shù)量越多,結(jié)果越穩(wěn)定。

作者:吳健 中國(guó)科學(xué)院大學(xué) R語(yǔ)言、統(tǒng)計(jì)學(xué)愛(ài)好者,尤其擅長(zhǎng)R語(yǔ)言和Arcgis在生態(tài)領(lǐng)域的應(yīng)用分享

個(gè)人公眾號(hào):統(tǒng)計(jì)與編程語(yǔ)言?


∑編輯?|?Gemini

來(lái)源 | 網(wǎng)絡(luò)


算法數(shù)學(xué)之美微信公眾號(hào)歡迎賜稿

稿件涉及數(shù)學(xué)、物理、算法、計(jì)算機(jī)、編程等相關(guān)領(lǐng)域,經(jīng)采用我們將奉上稿酬。

投稿郵箱:math_alg@163.com

總結(jié)

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

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