【问题标题】:Quantifying performance of machine learning methods量化机器学习方法的性能
【发布时间】:2018-03-06 09:19:18
【问题描述】:

我是机器学习的新手,我刚刚完成了我的第一个方法 (Random Forests)。现在我想分析一下这种方法实际上有多准确。我使用的第一个性能指标是使用以下公式计算做出了多少正确预测:

accuracy = correct predictions / total predictions * 100

现在,我想预测一个值为10 的变量。我的大部分预测都在10(0.85, 0.45, 0.95 etc..) 之间的范围内,因此这些不被认为是正确的预测 - 使用上述公式导致0.42% 的准确性。我知道我在做一些非常愚蠢和错误的事情。是否应该将预测值四舍五入到最接近的整数,然后计算指标?

另外,我进行了AUC 测试,结果准确度为81%

【问题讨论】:

    标签: python performance machine-learning random-forest


    【解决方案1】:

    验证模型准确性的一种好方法是运行验证集方法(正如您似乎正在做的那样)或交叉验证(K-Folds),更多信息请点击此处:

    https://en.wikipedia.org/wiki/Cross-validation_(statistics) https://en.wikipedia.org/wiki/Training,_test,_and_validation_sets

    至于变量,这似乎是一个分类问题(您的输出变量可以是 0 或 1)。

    因此,一个好的方法是使用返回 0 或 1(而不是中间值)的分类器。如果您确实为分类设置了随机森林,那么它不应该给您这样的结果。

    但是,您也可以根据需要使用不同的值(0.5 ? 0.8 ?)设置阈值(您可以使用 ROC 曲线来帮助您确定最佳分类器)。

    【讨论】:

    • 非常感谢您的回答。我为回归建立了一个随机森林(导入了错误的类——我很傻)。也感谢您的链接,我也会尝试实施交叉验证。
    【解决方案2】:

    是的,为了准确起见,您应该将阈值设为 0.5。 IE。任何 >= 0.5 的预测变为 1,任何

    class_predictions = np.where(prob_predictions >= 0.5, 1, 0)
    

    这将返回一个整数数组 1 或 0。

    【讨论】:

    • 好吧,我是这么想的,但是,如果这是一个大不,我很困惑!什么可以被认为是一个好的阈值? 0.5 是不是太宽泛了?
    • 普遍的共识是简单地选择概率最高的类。这是“最佳”选择,因此,由于您最终需要做出一个选择(如果您想要单个类标签作为输出),不妨选择“最佳”选择。对于两个类,最高概率输出是 > 0.5(因为另一个类随后自动
    • 正如我所说(以及另一个答案提到的),对于两个类,您原则上可以选择您喜欢的任何阈值(不是 0.5 的阈值可能会更好)。
    • 感谢您的详细解释。这非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2012-03-16
    • 2018-09-05
    • 2011-08-19
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多