Spark二进制分类预测准确性

Posted

技术标签:

【中文标题】Spark二进制分类预测准确性【英文标题】:Spark binary classifications predictions accuracy 【发布时间】:2017-08-21 16:41:59 【问题描述】:

我正在使用 Spark mlib 进行二进制分类。我用 3000 张图片训练了一个模型,可以预测它是男性还是女性 1/0。

final NaiveBayesModel model = NaiveBayes.train(training.rdd(), 1.0);
JavaRDD predictions = test.map(new Function<Vector, Double>() 
            @Override
            public Double call(Vector p) 
                return model.predict(p);
            
        );

我有一个问题,如果图片中没有人怎么办。例如一张花的图片。无论如何,我都会得到一个男性或女性的结果。有没有办法查看当前决策的准确性?例如,如果我们尝试对花卉图片进行预测,这个向量是 30% 的男性。或者我需要使用男性/女性/其他等多类分类?

【问题讨论】:

【参考方案1】:

正如您在问题中所说,如果您目前已经训练您的模型进行二元分类,那么这就是它要做的全部。你至少可以做两件不同的事情:

    按照您的建议训练您的模型以预测三个类别(malefemaleother)。 使用两个二元模型,一个在human present/not present 之间进行预测,然后仅将human present 结果传递给单独的male/female 分类器。

很难预先判断哪个会更有效,但由于您使用的是mllib,所以应该很直接地尝试一下,看看哪一个效果更好。确保使用良好的train/validation/test 拆分进行比较。

【讨论】:

你的意思是训练一个模型来进行二元分类,比如“人类存在/不存在”,然后如果预测是“人类存在”,那么在另一个经过训练的模型上预测“男性/女性”?跨度> @RuslanLomov 是的,这是对选项 2 的正确解释。

以上是关于Spark二进制分类预测准确性的主要内容,如果未能解决你的问题,请参考以下文章

准确率高,预测效果差--CNN与TensorFlow Python的结合。

Spark GBTClassifier 始终以 100% 的准确率进行预测

当测试和训练数据集来自不同来源时,为啥测试准确性保持不变并且不会增加二进制分类

当预测变量不是二进制时,Sklearn 朴素贝叶斯伯努利分类器如何工作?

让我所有的预测都倾向于二进制分类的一侧

二进制分类中的 TensorFlow lite 负预测