2011-02-01 8 views
8

Zastanawiam się, czy klasyfikator Bayesa ma sens w przypadku aplikacji, w której to samo wyrażenie "podawane na zimno" (na przykład) jest "dobre", gdy powiązane są pewne rzeczy (piwo, napój gazowany), ale "złe", gdy są powiązane z innymi rzeczami (stek, pizza, burger)?zastanawiasz się, czy klasyfikator Bayesa jest właściwym podejściem?

Zastanawiam się, czy szkolenie klasyfikatora Bayesa ("zimne piwo" i "zimne napoje gazowane" są "dobre") anuluje szkolenie, że "stek podawany na zimno" i "burger podany na zimno" są "złe" ").

Czy można nauczyć Bayesa, że ​​"podawane na zimno" może być "dobre" lub "złe" w zależności od tego, z czym jest związane?

Znalazłem wiele dobrych informacji na temat Bayesa, tutaj i gdzie indziej, ale nie byłem w stanie określić, czy jest odpowiedni dla tego typu aplikacji, w których odpowiedź na frazę jest dobra lub zła, "zależy od"?

+0

w naszej aplikacji, btw, mamy stosunkowo niewielką liczbę rzeczowników (poniżej 100) oraz stosunkowo niewielka liczba przymiotników (50), więc mogliśmy z radością wstępnie zdefiniować dość kompletną strukturę dobrych/złych kombinacji ... ale nie jesteśmy pewni, jaki rodzaj alternatywnego "silnika punktującego" pozwoli na uzyskanie krótkich msg. – jpwynn

Odpowiedz

6

A Naive Bayes classifier zakłada niezależność między atrybutami. Na przykład załóżmy, że masz następujące dane:

owoców jabłoni czerwone BAD
jabłko owoc BAD
banan owoc żółty DOBRY
pomidor czerwony DOBRY

Niezależność oznacza, że ​​atrybuty (nazwa, owoce, kolor) są niezależne; na przykład, że "jabłko" może być "owocem" lub "warzywem". W tym przypadku atrybuty "nazwa" i "owoc" są zależne, więc klasyfikator Naive Bayes jest zbyt naiwny (najprawdopodobniej klasyfikowałby "żółty owoc jabłoni" jako ZŁY, ponieważ jest to jabłko I to jest owoc - ale nie wszystkie jabłka owoce?).

Aby odpowiedzieć na twoje pierwotne pytanie, Klasyfikator Naive Bayes zakłada, że ​​klasa (DOBRA lub ZŁA) zależy od każdego atrybutu niezależnie, co nie jest prawdą - Lubię moją pizzę gorącą i moją zimną wodę.

EDYCJA: Jeśli szukasz klasyfikatora, który ma pewną użyteczność, ale teoretycznie może mieć wiele błędów typu I i typu II, Naive Bayes jest takim klasyfikatorem. Naive Bayes jest lepszy niż nic, ale przy użyciu mniej naiwnego klasyfikatora jest wymierna wartość.

+0

świetne wyjaśnienie i odpowiedź! Dziękuję Ci!!! – jpwynn

+1

Przepraszam, ale przegrałem. podczas gdy prawdą jest, że naiwne bayes zakłada niezależność pomiędzy atrybutami (stąd naiwność), w praktyce nie jest to prawdziwy problem. wielkim przykładem są filtry antyspamowe, które działają doskonale, mimo że słowa w wiadomościach e-mail są w dużym stopniu zależne od siebie. –

+0

Dzięki za opinie. Odrzucam Naive Bayes, ponieważ spowoduje to więcej błędów typu I i typu II niż podejść, które uważam za odpowiednie. – Daniel

2

Nie odrzuciłbym Bayesa tak szybko, jak sugerował Daniel. Jakość (wydajność w matematyce) Bayesa zależy przede wszystkim od ilości i jakości danych treningowych, a także od założeń przy tworzeniu algorytmu.

Aby podać krótki przykład, jeśli dodasz do niego tylko {"zimne piwo" => dobre, "zimne pizze" =>: złe} słowo "zimny" nie wpłynie na klasyfikację. Po prostu zdecyduje, że wszystkie piwa są dobre, a wszystkie pizze są złe (zobacz, jak sprytnie jest? :))

W każdym razie odpowiedź jest zbyt krótka, aby wyjaśnić to szczegółowo, polecam przeczytanie eseju Paula Grahama opracował swój filtr antyspamowy - zauważ, że stworzył własny algorytm oparty na Bayesie, a nie na zwykłym klasyfikatorze. W moim (do tej pory krótkim) doświadczeniu wydaje się, że lepiej podążać za nim w opracowywaniu konkretnej wersji algorytmu dla konkretnego problemu, aby mieć kontrolę nad różnymi założeniami specyficznymi dla danej domeny.

Możesz śledzić moje próby (w Ruby) tutaj, jeśli jesteś zainteresowany: http://arubyguy.com/2011/03/03/bayes-classification-update/

Powiązane problemy