Buduję kategoryzator tekstowy dla krótkich zdań. Oprócz poinformowania użytkownika, że „kategoria wpisanego tekstu to C”, chcę móc wyjaśnić, dlaczego podjąłem tę decyzję, w krótki i zrozumiały sposób. Na przykład nie chcę powiedzieć użytkownikowi: „Umieściłem zdanie w złożonej trójwarstwowej sieci neuronowej i to jest odpowiedź, która uzyskała najlepszy wynik”; Chcę wyjaśnień, takich jak „Twoje zdanie zawiera słowa U, V i W, które są charakterystyczne dla tej kategorii, ze względu na zdania takie jak X, Y i Z, które pojawiły się w danych treningowych”.
Moje pytanie brzmi: jakie algorytmy klasyfikacji najlepiej nadają się do takiej aplikacji?
k-najbliżsi sąsiedzi wydają się dobrym kandydatem, ponieważ mogę powiedzieć użytkownikowi „Twoje zdanie ma kategorię C, ponieważ jest podobne do zdań X, Y i Z, które mają tę samą kategorię. być biednym. Szukam klasyki, która równoważy wydajność z umiejętnością wyjaśniania.
EDYCJA: Po spędzeniu dużo czasu na poszukiwaniu takiego klasyfikatora zacząłem budować bibliotekę uczenia maszynowego o nazwie limdu , która pozwala klasyfikatorom wyjaśniać swoje decyzje. Wciąż jest w fazie rozwoju, ale już pomogło mi wyjaśnić sobie i moim kolegom, dlaczego tak często zawodzą nasi klasyfikatorzy ...
źródło
Odpowiedzi:
Chociaż słabo sprawdza się w zadaniach klasyfikacji tekstu, jeśli chcesz uzyskać jasne wyjaśnienie uzasadnienia klasyfikacji, najlepszym wyborem będzie drzewo decyzyjne, ponieważ zapewnia jasne zasady klasyfikacji instancji. Śledzenie drzewa zapewniłoby wartości determinujące, a analizując instancje w pobliżu węzła głównego, można nawet określić, które atrybuty są bardziej istotne w klasyfikacji.
Inną opcją byłoby użycie naiwnego klasyfikatora Bayesa , który lepiej sprawdza się w zadaniach eksploracji tekstu i dałby zrozumiały schemat oceny oparty na prawdopodobieństwach, które można wykorzystać do wygenerowania „dlaczego”, którego szukasz, a nawet wskazanie które wartości atrybutów były ważniejsze niż inne przy ustalaniu.
Maszyny wektorów wsparcia , a konkretnie sekwencyjna optymalizacja minimalna (SMO), wydają się dobrze współpracować z tymi zadaniami, a także zapewniają wskazanie wartości użytych do dokonania klasyfikacji w postaci wag atrybutów i wektorów wsparcia, ale myślę, że możesz mieć trudniejszy czas wyjaśnienie, w jaki sposób te wagi i wektory wpłynęły na ogólną decyzję dotyczącą klasyfikacji.
Powodzenia w projekcie! Brzmi bardzo interesująco.
źródło
Przypominam sobie niejasno, że Peter Norvig miał implementację MYCIN , eksperckiego systemu diagnostyki medycznej , napisanego w LISP w swojej książce Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp , która właśnie to zrobiła.
Może to dobre miejsce na rozpoczęcie badań. Znajdziesz kod źródłowy online, wraz z bazą reguł , jednak zdecydowanie zalecamy przeczytanie tekstu i nie próbowanie go rozumieć z samego kodu źródłowego.
Możesz także przejść bezpośrednio do strony Emycin (moje podkreślenie),
źródło