如何从多层感知器分类器获取分类概率



这似乎与以下方面最相关:如何在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预期行为的一部分。

最新更新