随机森林中的“方差解释”和XGBoost中的“merror”之间有什么区别

问题描述 投票:0回答:1

我一直想知道题目中写的主题。

实际上,我尝试了两个库来预测并得到了结果,但我不知道两个分数是否相同。

这是一个结果样本..

XGBoost>>
train-merror:0.718701   

据我所知,merror是假预测分数。所以,真正的预测分数是1 - 0.718701 = 0.281299

这意味着我制作的这个模型可以预测28%的正确结果

Random Forest>>
variance explained : 0.301

如上所述,可以解释RF的预测分数是否优于XGBoost结果?

事实上,我希望知道variance explainedmerror是否相同。

r random-forest xgboost
1个回答
1
投票

Variance explained和XGBoost的merror不一样。它们涉及非常不同的统计概念。

  1. merror是多类分类错误率。它被计算为(#个错误的情况)/(#所有情况),参见例如XGBoost R package manual。在二元分类问题中,分子然后对应于假阳性和假阴性的数量之和,即模型的I型和II型错误的数量之和。
  2. 解释的方差恰恰是:模型解释的响应中的方差分数。这是简单线性模型中的R ^ 2值,其等于平方相关系数。

对于两个多类分类模型,手动计算和比较merror中的分类错误率(xgboost)可能是有用的。在这里,我们选择iris数据集,并使用随机森林和XGBoost分类模型来预测Species ~ .。以下是一个可重复的例子。

我们首先加载必要的库

library(xgboost)
library(randomForest)

我们现在在完整的iris数据上训练两个模型并显示各自的混淆矩阵。

# Model: Random forest
model.rf <- randomForest(
    Species ~ ., data = iris)
cm.rf <- model.rf$confusion
cm.rf
#           setosa versicolor virginica class.error
#setosa         50          0         0        0.00
#versicolor      0         47         3        0.06
#virginica       0          3        47        0.06

# Model: XGBoost
model.xg <- xgboost(
    data = as.matrix(iris[, 1:4]),
    label = as.factor(iris[, 5]),
    nrounds = 10,
    eval.metric = "merror",
    num_class = 4) 
pred <- levels(iris[, 5])[as.integer(predict(model.xg, as.matrix(iris[, 1:4])))]
cm.xg <- table(pred, as.factor(iris[, 5]))
cm.xg
#
#pred         setosa versicolor virginica
#  setosa         50          0         0
#  versicolor      0         48         0
#  virginica       0          2        50

我们现在可以定义一个便利函数来计算分类错误,如上所述。

merror <- function(cm)
    sum(setdiff(as.integer(cm), diag(cm))) / sum(as.integer(cm))

然后是两种模型的分类错误

    # Model: Random forest
    merror.rf <- merror(cm.rf[, 1:3])
    merror.rf
    #[1] 0.02

    # Model: XGBoost
    merror.xg <- merror(cm.xg)
    merror.xg
    #[1] 0.01333333

注意merror.xg的值与XGBoost模型的evaluation_log中的最终迭代的值相同

model.xg$evaluation_log
#    iter train_merror
# 1:    1     0.026667
# 2:    2     0.020000
# 3:    3     0.020000
# 4:    4     0.020000
# 5:    5     0.020000
# 6:    6     0.020000
# 7:    7     0.013333
# 8:    8     0.013333
# 9:    9     0.013333
#10:   10     0.013333
© www.soinside.com 2019 - 2024. All rights reserved.