隨機森林是一個樹形分類器的集合。隨機森林是通過自助法重複抽樣技術,從原始樣本訓練集中有放回地隨機抽取k個樣本生成新的訓練集樣本集合,然後根據自助樣本集生成k個決策樹組成的隨機森林,最後根據所有決策樹的預測結果來最終確定樣本的預測結果。
1 在R軟體中,用來實現隨機森林的是randomForest軟體包。
首先,安裝並加載軟體包。
install.packages("randomForest") #安裝軟體包
library(randomForest) #加載軟體包
gyyz_data=read.csv("gyyz.csv",head=T)
gyyz_data$is_rise=as.factor(gyyz_data$is_rise)#將目標變量轉換成分類數據
head(gyyz_data);dim(gyyz_data)#查看數據維度
str(gyyz_data)#查看數據集中各變量的屬性
n=dim(gyyz_data)[1]
samp=sample(n,0.9*n)#隨機抽取90%的樣本
#建立隨機森林模型
gyyz_rf=randomForest(is_rise~.,data=gyyz_data,ntree=500,importance=TRUE,proximity=TRUE,type=classification,suset=samp)
randomForest函數中主要有參數formula,這裡用class~.形式。data表示數據集;subset用於抽取樣本數據中的部分樣本作為訓練集;ntree表示森林中樹的數目;importance表示輸出各變量在模型中的重要值;proximity用來決定計是否計算模型的臨近矩陣;type用來選擇建模類別,主要有「回歸,分類,或無監督」。
4 查看模型結果。
print(gyyz_rf)#展示隨機森林模型
importance(gyyz_rf,type=1)#查看各個變量的貢獻程度
從結果中可以看到模型的錯誤率、預測結果的混淆矩陣,以及各個變量在模型中的重要值。
5 繪製隨機森林模型的坐標圖。
MDSplot(gyyz_rf,gyyz_data$is_rise,palette=1:2,
pch=as.numeric(gyyz_data$is_rise))
從圖形中可以看出各類樣本比較分散,模型分類結果較差。
6 可視化。
#查看隨機森林中每一棵樹的節點個數
hist(treesize(gyyz_rf))
#繪製模型誤差與決策樹關係圖
plot(gyyz_rf)
Long-press QR code to transfer me a reward
As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.