Algorytm generowania reguł klasyfikacji

11

Mamy więc potencjał aplikacji do uczenia maszynowego, która dość dobrze wpasowuje się w tradycyjną domenę problemową rozwiązaną przez klasyfikatorów, tj. Mamy zestaw atrybutów opisujących przedmiot i „wiadro”, w którym się kończą. Zamiast tworzyć modele prawdopodobieństw, takich jak w Naive Bayes lub podobnych klasyfikatorach, chcemy, aby nasze dane wyjściowe były zbiorem reguł w przybliżeniu czytelnych dla człowieka, które mogą być przeglądane i modyfikowane przez użytkownika końcowego.

Uczenie się reguł asocjacyjnych wygląda jak rodzina algorytmów, które rozwiązują ten typ problemu, ale wydaje się, że algorytmy te koncentrują się na identyfikowaniu typowych kombinacji cech i nie obejmują koncepcji ostatecznego segmentu, na który te cechy mogą wskazywać. Na przykład nasz zestaw danych wygląda mniej więcej tak:

Item A { 4-door, small, steel } => { sedan }
Item B { 2-door, big,   steel } => { truck }
Item C { 2-door, small, steel } => { coupe }

Chcę tylko zasad, które mówią „jeśli jest duży i 2-drzwiowy, to ciężarówka”, a nie zasad, które mówią „jeśli to 4-drzwiowe, to także małe”.

Jednym z obejść, które mogę wymyślić, jest po prostu użycie algorytmów uczenia się reguł asocjacyjnych i zignorowanie reguł, które nie obejmują segmentu końcowego, ale wydaje się to nieco pospolite. Czy przegapiłem jakąś rodzinę algorytmów? A może na początek podchodzę do problemu nieprawidłowo?

super_seabass
źródło

Odpowiedzi:

9

C45 wykonane przez Quinlan jest w stanie stworzyć regułę przewidywania. Sprawdź tę stronę w Wikipedii . Wiem to w Weka nazywa się J48. Nie mam pojęcia, które są implementacjami w języku R lub Python. W każdym razie z tego rodzaju drzewa decyzyjnego powinieneś być w stanie wywnioskować reguły przewidywania.

Później edytuj

Możesz być także zainteresowany algorytmami do bezpośredniego wnioskowania reguł klasyfikacji. RIPPER to taki, który ponownie w Wece otrzymał inną nazwę JRip. Zobacz oryginalny artykuł do gry RIPPER: Fast Effective Rule Induction, WW Cohen 1995

rapaio
źródło
Eksperymentowałem z C45 / J48 w poprzednim projekcie. Nie zdawałem sobie sprawy, że istnieją zasady, które mogę z niego odzyskać. Sprawdzę również RIPPER. Dzięki!
super_seabass
Zobacz także pakiet C50 w R.
nfmcclure
Chcieliśmy dostarczyć aktualizację dla tego pytania / odpowiedzi: używamy JRip z pewnym sukcesem, ale naszym nowym wiodącym kandydatem jest FURIA ( cs.uni-paderborn.de/fileadmin/Informatik/eim-i-is/PDFs/... ). Generuje najlepsze reguły do ​​przeglądania / używania przez ludzi, ponieważ próbuje wygenerować wyczerpujący zestaw reguł. JRip tworzy fajne reguły, ale ma „domyślną” regułę klasyfikacji, gdy nie mają zastosowania inne reguły. Domyślne segmenty nie działają dobrze w kontekście biznesowym naszego projektu, potrzebujemy wyczerpujących zasad.
super_seabass
7

To jest nawet jeszcze prostsze, z tego, co opisujesz --- szukasz podstawowego algorytmu drzewa klasyfikacji (więc nie potrzebujesz nieco bardziej złożonych wariantów, takich jak C4.5, które są zoptymalizowane pod kątem dokładności prognozowania). Tekst kanoniczny to:

http://www.amazon.com/Classification-Regression-Wadsworth-Statistics-Probability/dp/0412048418

Jest to łatwo zaimplementowane w R:

http://cran.r-project.org/web/packages/tree/tree.pdf

i Python:

http://scikit-learn.org/stable/modules/tree.html

Therriault
źródło
Nie zgadzam się, że drzewa są tu pomocne. Jest to kwestia reguł filtrowania, które można osiągnąć dzięki pakietowi arules w R.
adesantos
1

Powinieneś wypróbować pakiet arules w R. Pozwala on tworzyć nie tylko reguły asocjacji, ale także określać długość każdej reguły, ważność każdej reguły, a także możesz je filtrować, czyli tego, czego szukasz (wypróbuj komenda rhs () tego pakietu).

adesantos
źródło