4

这似乎最相关:如何在 spark.mllib 的分类模型中获取每个实例的概率

我正在使用 spark ml 进行分类任务,构建 MultilayerPerceptronClassifier。一旦我建立了一个模型,我可以得到一个给定输入向量的预测类,但我不能得到每个输出类的概率。上面的清单表明 NaiveBayesModel 从 Spark 1.5.0 开始支持此功能(使用 predictProbabilities 方法)。我想了解 MLPC 的这个功能。有没有办法破解它来获得我的概率?它会包含在 1.6.2 中吗?

4

2 回答 2

1

如果您查看MLPC 源代码中的这一行,您可以看到 MLPC 正在从TopologyModel提供.predict我正在寻找的方法的底层工作。MLPC 将结果解码Vector为单个标签。

我可以使用经过训练的 MLPC 模型TopologyModel使用其权重创建一个新模型:

MultilayerPerceptronClassifier trainer = new MultilayerPerceptronClassifier()...;
MultilayerPerceptronClassificationModel model = trainer.fit(trainingData);
TopologyModel topoModel = FeedForwardTopology.multiLayerPerceptron(model.layers(), true).getInstance(model.weights());
于 2016-03-17T15:02:16.577 回答
0

我认为简短的回答是否定的。

MultilayerPerceptronClassifier 不是概率的。在训练后设置权重(和任何偏差)时,给定输入的分类将始终相同。

我认为,您真正要问的是“如果我要通过给定幅度的某些随机干扰来调整权重,那么分类与没有调整的情况有多大可能相同?”

您可以通过重新训练感知器(使用不同的、随机选择的起始条件)来进行临时概率计算,并对各种分类的概率有所了解。

但我不认为这真的是 MLPC 预期行为的一部分。

于 2016-03-15T20:23:26.940 回答