2017-10-07 97 views
0

我使用了两种方法来计算randomForest上训练集的AUC,但我得到了非常不同的结果。这两种方法如下:计算车组的AUC的用两种不同的方式计算randomforest训练集的AUC给我不同的结果?

`rf_p_train <- predict(rfmodel, type="prob",newdata = train)[,'yes'] 
rf_pr_train <- prediction(rf_p_train, train$y) 
r_auc_train[i] <- performance(rf_pr_train, measure = "auc")@y.values[[1]] ` 

方式二:计算车组的AUC的

rfmodel <- randomForest(y~., data=train, importance=TRUE, ntree=1000) 

路1
rf_p_train <- as.vector(rfmodel$votes[,2]) rf_pr_train <- prediction(rf_p_train, train$y) r_auc_train[i] <- performance(rf_pr_train, measure = "auc")@y.values[[1]]

路1给我AUC大约为1,但方式2使AUC在0.65附近。我想知道为什么这两个结果差异如此之大。任何人都可以帮助我吗?真的很感激它。对于这些数据,我很抱歉,我不能在这里分享它。这是我第一次在这里提问。如果有什么不清楚的地方,请原谅我。非常感谢!

回答

0

我不确定你使用的是什么数据。最好如果你提供一个可重复的例子,但我认为我能够一块拼成一块

library(randomForest) 
#install.packages("ModelMetrics") 
library(ModelMetrics) 

# prep training to binary outcome 
train <- iris[iris$Species %in% c('virginica', 'versicolor'),] 
train$Species <- droplevels(train$Species) 

# build model 
rfmodel <- randomForest(Species~., data=train, importance=TRUE, ntree=2) 

# generate predictions 
preds <- predict(rfmodel, type="prob",newdata = train)[,2] 

# Calculate AUC 
auc(train$Species, preds) 

# Calculate LogLoss 
logLoss(train$Species, preds) 
+0

谢谢!但是我的问题还没有解决。你可以尝试用以下两种方法来计算训练数据的AUC吗? 1.'rf_p_train < - predict(rfmodel,type =“prob”,newdata = train)[,2]; rf_pr_train < - 预测(rf_p_train,train $物种); (rf_pr_train,measure =“auc”)@ y.values [[1]]'2. rf_p_train < - as.vector(rfmodel $ votes [,2]); rf_pr_train < - 预测(rf_p_train,train $物种); r_auc_train [i] < - performance(rf_pr_train,measure =“auc”)@ y.values [[1]]' 他们会给我们两种不同的AUC,第一种高于第二种。 – annadai

+0

对不起,我不熟悉如何使用堆栈溢出,真的需要帮助。非常感谢! – annadai

相关问题