Jak poradzić sobie z zerowym współczynnikiem w obliczeniach Naive Bayes Classifier?

14

Jeśli mam zestaw danych treningowych i trenuję na nim klasyfikator Naive Bayes i mam wartość atrybutu, która ma prawdopodobieństwo zerowe. Jak sobie z tym poradzić, jeśli chcę później przewidzieć klasyfikację nowych danych? Problem polega na tym, że jeśli w obliczeniach jest zero, cały produkt staje się zerowy, bez względu na to, ile innych wartości mam, które mogłyby znaleźć inne rozwiązanie.

Przykład:

P(x|spam=yes)=P(TimeZone=US|spam=yes)P(GeoLocation=EU|spam=yes) ... =0.004

P(x|spam=no)=P(TimeZone=US|spam=no)P(GeoLocation=EU|spam=no) ... =0

Cały produkt staje się ponieważ w danych treningowych atrybut TimeZone US ma zawsze wartość Tak w naszym małym zestawie danych treningowych. Jak sobie z tym poradzić? Czy powinienem użyć większego zestawu danych treningowych, czy też istnieje inna możliwość rozwiązania tego problemu?0

delikatny
źródło
Jeśli wystąpi dyskretna wartość atrybutu, jej prawdopodobieństwo z definicji nie może wynosić zero.
Paul
dlaczego dodajemy problem z częstotliwością 1 w 0, co jest logiką, dlaczego nie dodajemy kolejnego numeru.
Aftab Hussaiin

Odpowiedzi:

13

Podejściem do przezwyciężenia tego „problemu zerowej częstotliwości” w ustawieniu Bayesa jest dodanie jednego do liczby dla każdej kombinacji wartość-klasa atrybutu, gdy wartość atrybutu nie występuje z każdą wartością klasy. Powiedzmy na przykład, że twoje dane treningowe wyglądały tak:

Spam=yesSpam=noTimeZone=US105TimeZone=EU00

P(TimeZone=US|Spam=yes)=1010=1

P(TimeZone=EU|Spam=yes)=010=0

Następnie powinieneś dodać jedną do każdej wartości w tej tabeli, gdy używasz jej do obliczania prawdopodobieństw:

Spam=yesSpam=noTimeZone=US116TimeZone=EU11

P(TimeZone=US|Spam=yes)=1112

P(TimeZone=EU|Spam=yes)=112

wykres czasu
źródło
4
W rzeczy samej. Pamiętaj, że czasami możesz dodać wartości inne niż jedna. Aby uzyskać szczegółowe informacje, patrz en.wikipedia.org/wiki/Additive_smoothing
DaL