这似乎与以下方面最相关:如何在spark.mllib中获取分类模型中每个实例的概率
我正在使用 spark ml 执行分类任务,构建一个多层感知器分类器。 构建模型后,我可以在给定输入向量的情况下获得预测类,但无法获得每个输出类的概率。 上面的列表表明 NaiveBayesModel 从 Spark 1.5.0 开始支持此功能(使用预测概率方法)。 我想为MLPC获得此功能。 有没有办法破解它来获得我的概率? 它会包含在 1.6.2 中吗?
如果您查看 MLPC 源代码中的这一行,您会发现 MLPC 正在从提供我正在寻找的.predict
方法的底层TopologyModel
工作。 MLPC 将生成的Vector
解码为单个标签。
我能够使用经过训练的 MLPC 模型使用其权重创建新TopologyModel
:
MultilayerPerceptronClassifier trainer = new MultilayerPerceptronClassifier()...;
MultilayerPerceptronClassificationModel model = trainer.fit(trainingData);
TopologyModel topoModel = FeedForwardTopology.multiLayerPerceptron(model.layers(), true).getInstance(model.weights());
我认为简短的答案是否定的。
多层感知器分类器不是概率性的。当在训练后设置权重(和任何偏差)时,给定输入的分类将始终相同。
我认为,你真正要问的是,"如果我通过给定幅度的某些随机扰动来调整权重,分类与没有调整的可能性有多大?
您可以通过重新训练感知器(使用不同的随机选择的起始条件)来进行临时概率计算,并了解各种分类的概率。
但我不认为这真的是MLPC预期行为的一部分。