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

前のセクションでは、決定木について説明しました。今日は、ランダムフォレストについて説明します。ランダムフォレストアルゴリズムは、過去2年間で非常に人気がありました。文献を確認したところです。ランダムフォレストが含まれている限り、次のことができます。 BBのいくつかの単語を送ってください。中国のコアまたはデュアルコアの紙の場合、あなたは今ランダムフォレストに従事したほうがよいでしょう。時間が待っていないので、あなたは何を待っていますか?
ランダムフォレストは、2001年にブレイマンによって提案されました。ロジスティック回帰の共線性の問題を解決します。欠落値を推定するためのアルゴリズムが含まれています。データの一部が欠落している場合でも、ある程度の精度を維持できます。ランダムフォレストの分類木のアルゴリズムには、当然、変数の相互作用が含まれているため、変数の相互作用と非線形性が重要であるかどうかを確認する必要はありません。ほとんどの場合、モデルパラメータのデフォルト設定により、最適またはほぼ最適な結果が得られます。
ランダムフォレストは、分類投票による多くの決定数として簡単に理解できます。原理はおおまかに次のとおりです。トレーニングセットのランダムサンプリングは置換を使用して実行され、取得された複数のサンプルが新しいトレーニングセットとしてトレーニングセットのサブセットを形成します。次に、生成された新しいトレーニングセットからトレーニングセットのp個の特徴をランダムに抽出してサブセットを形成し、サブセットを使用して、決定木を剪定せずにトレーニングします。n個の決定木がトレーニングされるまでこのプロセスを繰り返し、各決定木に対して分類されるテストサンプルを分類し、各決定木の分類結果をカウントし、最も多くの決定木によって認識されたカテゴリを最終的な分類結果として使用します。
ランダムフォレストには引き続き最後のデータを使用します。randomForest、pROC、外部パッケージが必要です。最初にデータをインポートして変数を表示します。

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

ここに画像の説明を挿入
ここに画像の説明を挿入
冗長変数
bc <-bc [、c(-1:-3、-13:-15、-5)]の一部を削除
て、次のデータ取得します。
年齢、雇用者の雇用年数、この場所に住んでいる住所、収入収入、債務の債務所得比率、信用債務のクレジットカード債務、その他の債務、最後のデフォルトは、私たちの結果指標、つまり、それが高リスクの顧客であるかどうかです。
ここに画像の説明を挿入
データをトレーニングセットと予測セット(つまり、モデリングと検証)に分割し、再現性があるようにシードを最初に設定する必要があります

###设置训练和预测集
set.seed(1)
index <- sample(2,nrow(bc),replace = TRUE,prob=c(0.7,0.3))
traindata <- bc[index==1,]
testdata <- bc[index==2,]
###拟合随机森林模型,默认的mtry的值是自变量除以3
def_ntree<- randomForest(default ~age+employ+address+income+debtinc+creddebt
                         +othdebt,data=traindata,
                         ntree=500,important=TRUE,proximity=TRUE)

モデルエラーはまだかなり大きい気がします
ここに画像の説明を挿入

plot(def_ntree)##画图

ここに画像の説明を挿入
写真は500本の木の枝に到達し、エラーはほとんど変化していないことを示しています。次のコードを使用してエラーが最小のツリーを見つけることもできますが、写真を見る方が信頼性が高いと思います。

which.min(def_ntree $err.rate[,1])### 最小误差的树

ランダムシミュレーションにより顧客データを作成し、システムを判断します

newdata1<-data.frame(age=30,employ=5,address=2,income=100,
                     debtinc=5.2,creddebt=0.3,othdebt=0.2)
predict(def_ntree,newdata1)

ここに画像の説明を挿入
このシステムは、リスクの高い顧客と見なされます。3つのカテゴリの結果指標である場合は、次の文法を使用して確率分析と投票を行うこともできます。

predict(def_ntree,newdata1,type = "prob")

モデルに関連する重要な指標を確認し、スコアリングと図を使用してモデルに影響を与える最も重要な指標を取得します。デシジョンツリーと同じように、負債と収益の比率が最も重要であることがわかります。判定。

importance(def_ntree)
varImpPlot(def_ntree)

ここに画像の説明を挿入
ここに画像の説明を挿入
最も影響力のある債務対所得比率指標が結果指標に与える影響を知りたい場合、右下の図は、30を超える債務所得はリスクの高い顧客として簡単に判断できることを示しています。

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

ここに画像の説明を挿入
最後に、検証セットを使用してモデルを検証します

def_pred<-predict(def_ntree, newdata=testdata)##生成概率
roc<-multiclass.roc (as.ordered(testdata$default) ,as.ordered(def_pred))#拟合ROC
roc1<-roc(as.ordered(testdata$default) ,as.ordered(def_pred))
round(auc(roc1),3)##AUC
round(ci(roc1),3)##95%CI
plot(roc1)
plot(roc1,print.auc=T, auc.polygon=T, grid=c(0.1, 0.2), grid.col=c("green","red"), 
     max.auc.polygon=T, auc.polygon.col="skyblue",print.thres=T)


ここに画像の説明を挿入
このように描くこともできます

plot(1-roc1$specificities,roc1$sensitivities,col="red",
     lty=1,lwd=2,type = "l",xlab = "specificities",ylab = "sensitivities")
abline(0,1)
legend(0.7,0.3,c("AUC=0.82"),lty=c(1),lwd=c(2),col="red",bty = "n")

ここに画像の説明を挿入
参照:

  1. RのrandomForestの説明
  2. Tang Dawei。ランダムフォレストに基づく毎日の流出予測モデルとそのR言語での実装に関する研究[J]。HeilongjiangWaterConservancyScience and Technology、2019(12)。
  3. Zheng Zhiwei、Qiu Jialing、Yang Qingling、Gong Xiaochun、Guo Shanqing、Jia Zhongwei、HaoChun。テキスト感情分析へのランダムフォレストの適用とRソフトウェアの実装[J] .ModernPreventive Medicine、2018,45(8) :1345-1348,1353。
  4. LiXinhai。分類および回帰分析におけるランダムフォレストモデルの適用[J] .ActaApplied Entomology、2013,50(4):1190-1197。
    よりエキサイティングな記事については、公開番号:Zero- BasicResearchに注意してください
    ここに画像の説明を挿入

おすすめ

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