基于随机森林的分类与回归
一、隨機森林基本概念
隨機森林(Random forest) 是一種組成式的有監督學習方法。在隨機森林中,我們同時生成多個預測模型,并將模型的結果匯總以提升預測模型的準確率。
隨機森林算法(預測和回歸)主要包括一下三個方面:
1.從原始數據隨機有放回的抽取N個樣本單元,生成決策或者回歸樹。
2.在每一個節點隨機抽取m<M個變量,將其作為分割節點的候選變量。每一個節點處變量數應該一致。
3.最終對每一顆決策或者回歸樹的結果進行整合,生成預測值。
二、隨機森林的優勢
1.在沒有驗證數據集的時候,可以計算袋外預測誤差(生成樹時沒有用到的樣本點所對應的類別可由生成的樹估計,與其真實類別比較即可得到袋外預測)。
2.隨機森林可以計算變量的重要性。
3.計算不同數據點之間的距離,從而進行非監督分類。
三、隨機森林R語言實例
如果數據集的響應變量為類別型,則隨機森林根據預測變量預測一個分類結果;如果數據集的響應變量為連續型,則隨機森林根據預測變量進行回歸。
1.利用隨機森林預測一個分類結果
加載程序包
library(randomForest)
library(MASS)
加載數據
data(fgl)
str(fgl)
為保證結果大家運算結果一致 設定隨機種子
set.seed(17)
構建隨機森林模型 mtry參數表征默認在每個節點抽取的變量數
fgl.rf<- randomForest(type ~ .,data=fgl, mtry=2, importance=TRUE,
? ?do.trace=100)
fgl.rf
混淆矩陣結果可以看出隨機森林對各類別的分類效果。
采用十折交叉驗證對比隨機森林與支持向量機的誤差。十折交叉驗證:用來測試精度。是常用的精度測試方法。將數據集分成十分,輪流將其中9份做訓練1份做測試,10次的結果的均值作為對算法精度的估計,一般還需要進行多次10倍交叉驗證求均值,例如10次10倍交叉驗證,更精確一點。
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)
從結果中可以看出隨機森林的誤差要小于支持向量機模型
查看變量重要性
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”)
}
由上圖可以看出不同變量在預測不同類別時的重要性
2.基于隨機森林回歸分析
首先,我們先注意一下隨機森林回歸和隨機森林分類的差別:(1)默認mtry是p/3而不是p1/2,其中p表示預測變量數(2)默認節點大小為5而不是1(3)只有一個測量變量的重要性。
data(Boston)
set.seed(1341)
BH.rf<- randomForest(medv ~ ., Boston)
BH.rf
由上圖可以看出隨機森林回歸模型結果的方差解釋量
對比隨機森林預測結果、多元回歸預測結果和實際值的差異
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= “lm.png”, width = 900, height = 500)
scatterplotMatrix(data)
dev.off()
由上圖可以看出隨機森林結果要優于多元回歸模型。
3.隨機森林中需要注意的地方:
3.1合理確定決策樹的數量。
3.2合理確定每個節點隨機抽取的變量數
3.3決策樹數量越多,結果越穩定。
作者:吳健 中國科學院大學 R語言、統計學愛好者,尤其擅長R語言和Arcgis在生態領域的應用分享
個人公眾號:統計與編程語言?
∑編輯?|?Gemini
來源 | 網絡
算法數學之美微信公眾號歡迎賜稿
稿件涉及數學、物理、算法、計算機、編程等相關領域,經采用我們將奉上稿酬。
投稿郵箱:math_alg@163.com
總結
以上是生活随笔為你收集整理的基于随机森林的分类与回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书,是成本最低的投资,却是一生的高贵
- 下一篇: 【AI独角兽招聘】这里有一个梦,我们一同