R言語に基づく決定木とランダムフォレスト(3)

前のセクションでは、ランダムフォレストのいくつかの簡単な状況と、R言語を使用したバイナリ結果変数のランダムフォレストモデル分析を紹介しました。今日は、連続変数結果変数のランダムフォレストモデル分析を引き続き紹介します。あまり意味がないので、すぐに開始します。使用されるデータは、SPSSに付属する大気オゾンのデータセットであり、主にオゾン濃度と大気のいくつかの関連指標を記述します。一部のデータは非線形であるため、ロジスティック回帰を使用することは適切ではありません。分析のためのランダムフォレストモデル。
randomForest、pROC、lforeign、Metrics、ggplot2パッケージを使用する必要があります。最初にダウンロードする必要があります。データをインポートして、状況を確認しましょう。

library(randomForest)
library(pROC)
library(foreign)
library(Metrics)
library(ggplot2)
bc <- read.spss("E:/r/test/ozone.sav",
                use.value.labels=F, to.data.frame=T)
names(bc)

ここに画像の説明を挿入
ここに画像の説明を挿入
データには7つの変数があり、オゾンの毎日のオゾンレベルは結果変数です。反転ベースの高さ、圧力勾配(mm Hg)圧力勾配(mm Hg)、可視性(マイル)可視性(マイル)、温度(華氏))温度(華氏)、今年の日、vh、とにかく、それが何であるかはわかりません。それはパラメーターであり、ここのすべての変数は連続しています。
2クラスモデルと同様に、最初にトレーニングセットと検証セットを確立します

set.seed(1)
index <- sample(2,nrow(bc),replace = TRUE,prob=c(0.7,0.3))
traindata <- bc[index==1,]
testdata <- bc[index==2,]

ここに画像の説明を挿入
ランダムフォレストモデルを構築する

def_ntree<- randomForest(ozon ~vh+ibh+dpg+vis+temp,data=traindata,
                         ntree=500,important=TRUE,proximity=TRUE)
plot(def_ntree)

ここに画像の説明を挿入
500本の木の後、モデルは比較的安定しており、tuneRF関数を介してmtryを見つけることもできます。

mte<-tuneRF(traindata[,c(1,3:6)],traindata[,2],stepFactor =2)

温度とオゾン濃度の関係を知りたいと思うと、温度が90度に達するとオゾンに大きな影響を与えることがわかります。

partialPlot(def_ntree,traindata,temp,"0",xlab = "temp",ylab = "Variabl effect")

ここに画像の説明を挿入
次に、トレーニングセットと予測セットの確率を生成します

ctree.predict = predict(def_ntree,testdata)
traindata$ctree.predict1 = predict(def_ntree,traindata)

R2、rmse、およびmaeを表示して、モデルの適合度を比較します

r2<-cor(ctree.predict,testdata$ozon)^2
rmse<-rmse(ctree.predict,testdata$ozon)
mae<-mae(ctree.predict,testdata$ozon)

ここに画像の説明を挿入
キャリブレーションされた散布図を生成します。15を超えると、予測パフォーマンスが悪化し、残差誤差が増加することがわかります。

plot(ctree.predict,testdata$ozon,pch=19,col="gray25",xlab = "实际值",ylab="预存值")
abline(0,1,col="red")

ここに画像の説明を挿入
変数の重要性を評価すると、温度と高度がオゾンに影響を与える重要な変数であることがわかります。

varImpPlot(def_ntree)

ここに画像の説明を挿入

ggplot() +
  geom_line(data=traindata,aes(traindata$doy, traindata$ozon,col="red"))+
  geom_line(data=traindata,aes(traindata$doy, traindata$ctree.predict1,col="greed"))+
  theme(legend.background = element_blank(),legend.position = c(0.1,0.8))+
  scale_color_discrete(name = "类别", labels = c("实际值", "预测值"))

ここに画像の説明を挿入
また、任意のデータを取り込んで予測値を求めたり、オゾン濃度を分類して予測したり、検証セットでモデルの予測性能を検証したりすることもできます。ここでは1つずつ説明しません。前の2つの記事。コンテンツ。
よりエキサイティングな記事については、公開番号に注意してください:ゼロベースの科学研究
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/dege857/article/details/114916294