2016-03-12 3 views
3

Cela semble plus lié à: How to get the probability per instance in classifications models in spark.mllibComment obtenir les probabilités de classification de MultilayerPerceptronClassifier?

Je fais une tâche de classification avec spark ml, en construisant un classificateur MultilayerPerceptron. Une fois que je construis un modèle, je peux obtenir une classe prédite avec un vecteur d'entrée, mais je ne peux pas obtenir la probabilité pour chaque classe de sortie. La liste ci-dessus indique que NaiveBayesModel prend en charge cette fonctionnalité à partir de Spark 1.5.0 (using a predictProbabilities method). Je voudrais obtenir à cette fonctionnalité pour le MLPC. Y a-t-il un moyen de le pirater pour obtenir mes probabilités? Sera-t-il inclus dans 1.6.2?

Répondre

0

Si vous jetez un coup d'oeil à this line in the MLPC source code, vous pouvez voir que le MLPC fonctionne à partir d'un TopologyModel sous-jacent qui fournit la méthodeque je cherche. Le MLPC décode le Vector résultant en une seule étiquette.

Je suis en mesure d'utiliser le modèle MLPC formé pour créer une nouvelle TopologyModel en utilisant ses poids:

MultilayerPerceptronClassifier trainer = new MultilayerPerceptronClassifier()...; 
MultilayerPerceptronClassificationModel model = trainer.fit(trainingData); 
TopologyModel topoModel = FeedForwardTopology.multiLayerPerceptron(model.layers(), true).getInstance(model.weights()); 
+0

La question semble assez simple. Après avoir entraîné votre classificateur, vous vous attendez à obtenir un modèle qui est censé vous donner tout le soutien nécessaire pour faire d'autres classifications – ncaralicea

-1

Je pense que la réponse est Non

Le MultilayerPerceptronClassifier n'est pas probabiliste. Lorsque les poids (et tout biais) sont définis après l'entraînement, la classification pour une entrée donnée sera toujours la même. Ce que vous demandez vraiment, je pense, c'est "si je devais ajuster les poids par certaines perturbations aléatoires d'une ampleur donnée, quelle serait la probabilité que la classification soit la même que sans les réglages?"

Vous pouvez effectuer un calcul de probabilité ad hoc en recyclant le perceptron (avec différentes conditions de départ choisies au hasard) et avoir une idée de la probabilité de diverses classifications.

Mais je ne pense pas que cela fait vraiment partie du comportement attendu d'un MLPC.

+0

Pas tout à fait ce que je suis en train de faire à, mais peut-être mon choix du terme « probabilité » est incorrect. Peut-être que ce que je veux est quelque chose de plus "confiance". Le classificateur a 'n' noeuds de sortie pour chacune des classes de sortie. Les poids provenant des nœuds de couches précédents s'additionnent jusqu'à une certaine valeur dans le nœud de sortie. Le noeud de sortie avec la valeur la plus élevée est la classe de sortie prédite. Avec l'accès à ces valeurs directement, je peux faire la différence entre une classe sélectionnée qui a une confiance très élevée, comparée à celle qui était vraiment proche entre deux classes possibles. – mattwise