Я реализую Наивный алгоритм Байеса для категоризации текста с лапласовским сглаживанием. У меня проблема в том, что вероятность приближается к нулю, потому что я умножаю много маленьких дробей. Следовательно, вероятность в конечном итоге дает ноль. Это потому, что в документах и учебных наборах есть несколько слов.
Из-за этого я не могу классифицировать тексты. Есть ли способ, которым я могу обойти эту проблему? Я делаю что-то не так в своей реализации?
Ответы:
Обычный трюк, позволяющий избежать этого недостатка, - это вычисление с логарифмами, используя идентификатор То есть вместо использования вероятностей вы используете их логарифмы. Вместо того, чтобы умножать их, вы добавляете их.
Другой подход, который не так распространен, заключается в нормализации продукта вручную. Вместо того, чтобы хранить только одно число плавающей точкой , вы сохраняете число с плавающей точкой (скажем) и отрицательный показатель степени такой что . После каждой операции вы нормализуете полученный номер.p p0∈[1,2) x p=p02x
источник