【问题标题】:confusionMatrix for a classifier in RR中分类器的confusionMatrix
【发布时间】:2015-11-11 17:03:27
【问题描述】:

我正在使用 R 中插入符号库中的 confusionMatrix 函数来评估两种方法的性能,例如(来自 glmnet 库的弹性网络、来自 kernlib 的高斯处理器、随机森林)在两个类上数据。

我有时可以看到一些方法,我得到了

警告信息:在confusionMatrix.default(pred, truth) 中:参考和数据的级别顺序不同。将数据重构为 匹配。

并且性能是例如 65%;但是,如果我根据“真相”重新标记预测(在上面的示例中为 pred)的级别(更改顺序);性能变为 25%。

我构建了以下玩具数据。

pred = c("a", "a", "a", "b")
pred = as.factor(pred)
levels(pred) = rev(levels(pred)) % given this line, I can either get 25% or 75%.

truth = c("a", "a", "b", "b")
truth = as.factor(truth)

confusionMatrix(pred, truth)

我理解它是直观的,因为它是一个两类数据。但是,我想知道,我这样做是否对我有利;意思是如果性能是 25%(简单地说,接受它为 75%)。

【问题讨论】:

    标签: r classification r-caret glmnet kernlab


    【解决方案1】:

    ?caret::confusionMatrix,具体参数positive

    积极 对应于“正”结果的因子级别的可选字符串(如果这对您的数据有意义)。如果只有两个因子水平,则第一个水平将用作“阳性”结果。

    第二点,除非您的班级人数大约为 50-50,否则您可能应该使用混淆矩阵以外的其他方法来评估您的结果。

    【讨论】:

    • 所以,假设一个人为一个二分类数据做一个分类器,那可以预测30%;非癌症患者来自癌症患者,(s)他不能把它翻过来说,它预测70%的癌症患者!? - 我也喜欢听你的cmets :-)。 - 我要补充一下,我不认为,“正”参数可以在这里工作。
    • 嗯?如果你只有两个班级,那么一个班级的非会员资格是另一个班级会员资格的充分条件。
    • 如果不使用positive == "...",则引用类默认为第一级。因此,当您使用 rev(levels(pred)) 时,您会得到所看到的结果。如果您想使用rev(levels(pred)),那么您必须使用positive == "..." 才能在每种情况下获得相同的结果。
    猜你喜欢
    • 2018-02-12
    • 2021-04-28
    • 2016-09-20
    • 2018-01-28
    • 2011-12-27
    • 2018-02-22
    • 1970-01-01
    • 2016-07-14
    • 2016-10-19
    相关资源
    最近更新 更多