Как получить вероятность для каждого экземпляра в классификационных моделях в spark.mllib
Я использую spark.mllib.classification.{LogisticRegressionModel, LogisticRegressionWithSGD} и spark.mllib.tree.RandomForest для классификации. Используя эти пакеты, я создаю классификационные модели. Только эти модели предсказывают определенный класс для каждого экземпляра. В Weka мы можем получить точную вероятность для каждого экземпляра каждого класса. Как мы можем сделать это с помощью этих пакетов?
В LogisticRegressionModel мы можем установить порог. Поэтому я создал функцию, которая проверяет результаты для каждой точки на другом пороге. Но это не может быть сделано для RandomForest (см. Как установить отсечение при обучении данных в Random Forest в Spark)
1 ответ
К сожалению, с MLLIb вы не можете получить вероятности для каждого экземпляра для моделей классификации до версии 1.4.1.
Есть проблемы JIRA ( SPARK-4362 и SPARK-6885), касающиеся именно этой темы, которая находится в ПРОЦЕССЕ, поскольку я сейчас пишу ответ. Тем не менее, проблема, кажется, приостановлена с ноября 2014 года
В настоящее время нет способа получить апостериорную вероятность прогноза с помощью модели Наивного Бая во время прогнозирования. Это должно быть доступно вместе с этикеткой.
А вот заметка @sean-owen в списке рассылки на похожую тему, касающуюся алгоритма наивной байесовской классификации:
Это недавно обсуждалось в этом списке рассылки. Вы не можете сразу получить вероятности, но вы можете немного взломать, чтобы получить внутренние структуры данных NaiveBayesModel и вычислить их оттуда.
Ссылка: источник.
ОСНОВНОЕ РЕДАКТИРОВАНИЕ: Эта проблема была решена с помощью Spark 1.5.0. Пожалуйста, обратитесь к вопросу JIRA для более подробной информации.