2016-12-17 13 views
0

Я пишу наивный классификатор заливов для проекта класса, и я просто получил его работу ... вроде. Пока я получаю безошибочный выход, выигрышная метка вывода имела выходную вероятность 3,89 * 10^-85.Классификатор Naive Bays: слишком низкий процент производства

Ничего себе.

У меня есть пара идей о том, что я могу делать неправильно. Во-первых, я не нормализую количество выходных процентов для классов, поэтому все проценты фактически равны нулю. Хотя это даст мне номера, которые выглядят красиво, я не знаю, правильно ли это делать.

Моей второй идеей было уменьшить количество функций. Наши входные данные представляют собой список псевдо-изображений в виде очень длинного текстового файла. В настоящее время наши функции - это всего лишь двоичное значение каждого пикселя изображения, а с изображением 28x28 - множество функций. Если бы я вместо этого расколол изображение на блоки размером, скажем, 7x7, сколько бы это реально улучшило выходные проценты?

Т.Л., др Вот общие вещи, которые я пытаюсь понять, о наивном Байесе:

1), необходимо нормализовать выходные процентов от тестирования каждого класса делать?

2) Сколько эффекта имеет слишком много функций на результатах?

Заранее благодарим за любую помощь, которую вы можете мне дать.

ответ

3

Это может быть нормально. Выход наивных заливов не должен быть реальной вероятностью. То, что он предназначен, - это заказать счет среди конкурирующих классов.

Причина, по которой вероятность настолько низкая, заключается в том, что многие наивные байесовские реализации являются результатом вероятностей всех наблюдаемых особенностей рассматриваемого экземпляра. Если вы классифицируете текст, каждая функция может иметь низкую условную вероятность для каждого класса (пример: ниже 0,01). Если вы умножаете 1000 вероятностей возможностей, вы быстро получаете числа, о которых вы сообщили.

Кроме того, возвращаемые вероятности не являются вероятностями каждого класса, заданного экземпляром, а оценкой вероятностей наблюдения этого набора признаков, учитывая класс. Таким образом, чем больше у вас функций, тем меньше вероятность увидеть эти точные функции. Байесовская теорема используется для изменения argmax_c P(class_c|features) на argmax_c P(class_c)*P(features|class_c), а затем P(features|class_c) дополнительно упрощается путем принятия предположения о независимости, что позволяет изменить это на произведение вероятностей наблюдения каждой отдельной функции, данной классу. Эти предположения не меняют argmax (класс победы).

Если бы я был вами, я бы не волновался о вероятности вывода, вместо этого сосредоточился на точности вашего классификатора и предпринял действия для повышения точности, а не рассчитанных вероятностей.

+0

Я одобрил, но что вы подразумеваете под «реальной вероятностью»? –

+0

Это не реальная вероятность класса, учитывая особенности и предшествующие. Это значение имеет значение только при сортировке результатов. В различных упрощениях и предположениях, сделанных большинством реализаций, значение «вероятность» теряется, и это нормально, поскольку это классификатор, и мы хотим найти лучший класс. –

+1

Тем не менее, если вы хотите иметь более читаемые ценности, вы можете их нормализовать (разделите каждый балл на сумму всех оценок класса). –