Klasyfikator tekstu, który wyjaśnia jego decyzje

11

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 ...

Erel Segal-Halevi
źródło
Istotą uczenia maszynowego jest to, że nie obchodzi Cię, co dzieje się pod maską, a jedynie wydajność. Inne podejście zawiodło i dlatego obecnie wszyscy używają tych nieprzejrzystych metod statystycznych - są o wiele lepsze.
Yuval Filmus
2
@Yuval Całkowicie nie zgadzam się, że inne podejścia zawiodły. Nie są optymalne, ale nadal osiągają cel zautomatyzowania zadań klasyfikacyjnych znacznie powyżej tego, co człowiek ma zdolność lub cierpliwość. Nieprzezroczyste czarne skrzynki nie są jedynym sposobem na efektywne uczenie maszynowe, szczególnie w sytuacjach takich jak ta, w których wydajność nie jest jedynym czynnikiem. Bądź nieco bardziej otwarty na różne cele zadań związanych z uczeniem maszynowym.
Richard D,

Odpowiedzi:

7

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.

Richard D.
źródło
1
Dzięki. Dowiedziałem się również, że klasyfikatory online, takie jak perceptron i winnow, są całkiem dobre w tym zadaniu (przynajmniej w moim scenariuszu) i łatwo jest wyjaśnić decyzję, patrząc na wartość bezwzględną, jaką każda funkcja dodaje do wyniku klasyfikacji. Dla każdej próbki sortuję cechy według wartości bezwzględnej (cecha * waga) i pokazuję kilka pierwszych.
Erel Segal-Halevi
3

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),

Emycin jest powłoką systemu eksperckiego , ramą do budowania programów, które rejestrują wiedzę ekspertów domeny i wykorzystują tę wiedzę, aby pomóc użytkownikom niebędącym ekspertami w rozwiązywaniu problemów. Zapewnia interfejs, który pomaga ekspertom definiować typy danych i reguły, algorytm wnioskowania wstecznego (podobny do Prologa, ale z kluczowymi różnicami), mechanizm radzenia sobie z niepewnością oraz funkcje introspekcji, które pozwalają użytkownikom dowiedzieć się, co wie system i co robi .

Pål GD
źródło
2
Jest jednak powód, dla którego systemy eksperckie nie są już tak popularne, trudno jest zakodować wszystkie reguły.
adrianN