Czy istnieje sposób na wyjaśnienie prognozy z losowego modelu lasu?


11

Powiedzmy, że mam predykcyjny model klasyfikacji oparty na losowym lesie (używając pakietu randomForest w R). Chciałbym to skonfigurować, aby użytkownicy końcowi mogli określić element, dla którego ma zostać wygenerowana prognoza, i wyświetli prawdopodobieństwo klasyfikacji. Jak dotąd nie ma problemu.

Byłoby jednak użyteczne / fajne, aby móc wygenerować coś w rodzaju wykresu o zmiennej ważności, ale dla konkretnego przewidywanego elementu, a nie dla zestawu treningowego. Coś jak:

Przewiduje się, że pozycja X będzie psem (prawdopodobnie 73%),
ponieważ:
nogi = 4
oddech = złe
futro = krótkie
jedzenie = paskudne

Dostajesz punkt. Czy istnieje standardowy lub przynajmniej uzasadniony sposób wydobywania tych informacji z wyszkolonego losowego lasu? Jeśli tak, to czy ktoś ma kod, który zrobi to dla pakietu randomForest?


Pewna złożoność ... Można sobie wyobrazić, ile razy zmienna Legs była częścią ścieżki decyzyjnej. Ale czy zrobiłbyś to po prostu dla drzew, które przewidywały odpowiedź większości, czy wszystkich? Czy różnica?
Harlan,

A zmienianie wszystkich mpredyktorów jeden po drugim i sprawdzanie, jak las inaczej przewiduje, wydaje się trochę drogie. Musi być lepszy sposób.
Harlan,

moją pierwszą myślą było zastanowienie się, jak to, co chcesz zrobić, różni się od zmiennego znaczenia danych treningowych? Czy chcesz powiedzieć, że biorąc pod uwagę inne wartości, jakie były, jaka była wrażliwość prognozy na nogi = 4 kontra nogi = 2 lub nogi = 0? Czy spojrzałeś na funkcję częściowego wydruku w pakiecie randomforest?
B_Miner

Zmienna ważność jest zwykle definiowana w zależności od całego zestawu treningów (lub założonej populacji lub czegoś takiego). Ale to, czego chcę, to zmienne znaczenie dla pojedynczego przewidywanego elementu. Wyobraź sobie przypadek, w którym las składa się z bardzo krzywych drzew decyzyjnych. Wystąpienie testowe 1 można wyjaśnić 1 lub bardzo małą liczbą węzłów decyzyjnych, natomiast wystąpienie testowe 2 można wyjaśnić znacznie większym zestawem węzłów decyzyjnych. Chcę bardzo prostej, zrozumiałej dla człowieka, wersji, takiej jak szereg decyzji, których piątkę mogę przedstawić. Dla jednego drzewa decyzyjnego po prostu je odczytałbym.
Harlan,

Odpowiedzi:


3

Pierwszym pomysłem jest po prostu naśladowanie strategii nokautu ze zmiennego znaczenia i po prostu przetestowanie, w jaki sposób mieszanie każdego atrybutu pogorszy zaufanie lasu do klasyfikacji obiektów (w przypadku OOB i oczywiście z niektórymi powtórzeniami). Wymaga to trochę kodowania, ale z pewnością jest osiągalne.

Uważam jednak, że jest to po prostu zły pomysł - wynik będzie prawdopodobnie zmienny jak diabli (bez stabilizacji wpływu uśredniania na obiekty), hałaśliwy (w przypadku niezbyt pewnych siebie atrybuty nonsensowne mogą mieć duży wpływ) i trudne do interpretować (dwie lub więcej reguł współpracy atrybutów prawdopodobnie spowoduje losowy wpływ każdego atrybutu)

Nie pozostawiając wam negatywnej odpowiedzi, wolę raczej spojrzeć na macierz bliskości i możliwe archetypy, które może ona ujawnić - wydaje się to znacznie bardziej stabilne i proste.


Zasady współpracy / skorelowane predyktory stanowią doskonałą krytykę. Aby to zadziałało, może być konieczne wyszkolenie RF na jakimś rodzaju wstępnie zredukowanego zestawu zmiennych lub zastosowanie pewnego rodzaju strategii karania, aby RF skupił się na podzbiorze predyktorów.
Harlan

0

Spróbowałbym z ramą wapna .

Działa z wieloma modelami (w tym z losowym lasem). Może być używany do interpretacji lokalnej (to znaczy wyjaśniania pojedynczej prognozy) lub do interpretacji globalnej (to znaczy wyjaśniania całego modelu).

Cytowanie z wyciągu

W tej pracy proponujemy LIME, nowatorską technikę wyjaśniania, która wyjaśnia prognozy dowolnego klasyfikatora w sposób możliwy do interpretacji i wierny, poprzez nauczenie się modelu interpretacyjnego lokalnie wokół prognozy. Proponujemy również metodę wyjaśniania modeli poprzez przedstawianie reprezentatywnych indywidualnych prognoz i ich objaśnień w sposób niepotrzebny, określając zadanie jako problem optymalizacji podmodularnej.

Zawiera pakiety zarówno dla R, jak i Pythona , i wiele przykładów, jeśli google go.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.