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】:正如您在问题中所说,如果您目前已经训练您的模型进行二元分类,那么这就是它要做的全部。你至少可以做两件不同的事情:
-
按照您的建议训练您的模型以预测三个类别(
male
、female
、other
)。
使用两个二元模型,一个在human present
/not present
之间进行预测,然后仅将human present
结果传递给单独的male
/female
分类器。
很难预先判断哪个会更有效,但由于您使用的是mllib
,所以应该很直接地尝试一下,看看哪一个效果更好。确保使用良好的train/validation/test
拆分进行比较。
【讨论】:
你的意思是训练一个模型来进行二元分类,比如“人类存在/不存在”,然后如果预测是“人类存在”,那么在另一个经过训练的模型上预测“男性/女性”?跨度> @RuslanLomov 是的,这是对选项 2 的正确解释。以上是关于Spark二进制分类预测准确性的主要内容,如果未能解决你的问题,请参考以下文章
准确率高,预测效果差--CNN与TensorFlow Python的结合。
Spark GBTClassifier 始终以 100% 的准确率进行预测
当测试和训练数据集来自不同来源时,为啥测试准确性保持不变并且不会增加二进制分类