Jak mogę wyobrazić sobie znaczenie różnych danych wejściowych dla prognozy dla nieliniowego modelu czarnej skrzynki?

9

Buduję interaktywne narzędzie prognostyczne (w języku python) jako pomoc w prognozowaniu wykonywanym w mojej organizacji. Do tej pory proces prognozowania był w dużej mierze sterowany przez człowieka, a prognostycy asymilowali dane w swoich naturalnych sieciach neuronowych i wykorzystując swoje wyuczone wyczucie jelit do dokonywania prognoz. Z przeprowadzonej przeze mnie długoterminowej weryfikacji prognozy i badania modelowania predykcyjnego znalazłem, czego możesz się spodziewać; różni prognostycy wykazują różne uprzedzenia, efekty niektórych predyktorów wydają się zawyżone, a inne ważne wydają się być ignorowane, a na ogół wyniki prognozy są mierne w porównaniu ze stosunkowo prostymi modelami empirycznymi.

Prognozy będą nadal ręczne, ale staram się zbudować przydatne narzędzie, aby zapewnić prognostykom lepszą kwantyfikację względnych efektów predyktorów. Istnieją również ważne efekty, takie jak wpływy sezonowe, które są często pomijane, a ja chciałbym, aby narzędzie wyróżniło użytkownika. Oczekuję odejścia i sceptycyzmu co do procesu modelowania od niektórych bardziej „doświadczonych” prognostów (z których wielu ma niewielką formalną wiedzę statystyczną), więc komunikacja jest co najmniej tak samo ważna, a sama wydajność modelu pod względem osiągnięcie wymiernej poprawy dokładności prognoz.

Modele, które opracowuję, mają silną składową auto-regresyjną, która czasami jest znacząco modyfikowana przez zdarzenia, które pokazują się jako zmierzone wartości w niektórych predyktorach, które w czasach braku zdarzeń są bliskie zeru. Jest to zgodne z modelem mentalnym stosowanym przez prognozy. Kluczową częścią jest możliwość wykazania, który z pomiarów „zdarzenia” ma największy wpływ na odepchnięcie prognozy od wartości autoregresji dla danej prognozy. Obrazuję ten proces w ten sposób; Forecaster określa swoją najlepszą wartość domyślną, model sugeruje inną, a Forecaster pyta, dlaczego. Model odpowiada mniej więcej tak: „patrz tutaj, ta wartość tego predyktora zwiększa wartość prognozy w lecie. Gdyby to była zima, poruszałaby się w drugą stronę. Wiem, że istnieją inne pomiary,

Teraz wyobraź sobie, że model był prostą regresją liniową. Można sobie wyobrazić wyświetlanie względnego „efektu” predyktorów opartych na zdarzeniach poprzez pomnożenie wartości przez współczynnik efektywności modelu i wyświetlenie w postaci prostego wykresu słupkowego. Wszystkie słupki z różnych predyktorów sumują się do całkowitego odchylenia od wartości AR, a to zwięźle i wyraźnie pokazuje te, które w tym przypadku mają silny wpływ.

Problem polega na tym, że prognozowany proces wykazuje wysoki stopień nieliniowości w predyktorach, a przynajmniej miałem znacznie większy sukces z czarnymi skrzynkowymi nieliniowymi algorytmami uczenia maszynowego (losowy las i GBM) niż z GLM dla ten zestaw danych. Idealnie chciałbym móc bezproblemowo zmieniać model działający „pod maską” bez zmiany doświadczenia użytkownika, więc potrzebuję jakiegoś ogólnego sposobu pokazania w prosty sposób znaczenia różnych pomiarów bez korzystania z określonego algorytmu. Moje obecne podejście będzie polegało na quasi-linearyzacji efektów poprzez ustawienie wszystkich wartości na zero, z wyjątkiem jednego predyktora, zarejestrowanie przewidywanego odchylenia, a następnie powtórzenie dla wszystkich predyktorów, wyświetlając wyniki na powyższym wykresie słupkowym. W przypadku silnej nieliniowości może to nie działać tak dobrze.

Bogdanovist
źródło
1
Z czym skończyłeś - czy możesz postawić zdjęcie lub dwa? Ponadto, „ustawienie wszystkich wartości na zero z wyjątkiem jednego predyktora” - czy nie chcesz gradientu wokół bieżących najlepszych wartości, a nie wszystkich 0?
denis

Odpowiedzi:

4

Jednym ze sposobów oceny wpływu predyktora na prognozy jest oszacowanie gradientu wyniku w stosunku do predyktorów. Można tego dokonać poprzez oszacowanie częściowych pochodnych nieliniowej funkcji predykcyjnej w odniesieniu do każdego z predyktorów na podstawie różnic skończonych.

Idealnie zrobisz to na rzeczywiście zaobserwowanych danych wejściowych testu. Na przykład możesz uśrednić wartości bezwzględne szacowanych gradientów na wszystkich wejściach testowych w ciągu ostatnich 2 dni. Wielkość tego średniego gradientu można wykorzystać do sortowania ważności predyktorów. (Musisz zachować ostrożność przy szacowaniu gradientu, aby użyć odpowiednich jednostek metodą punktacji Z lub innej takiej metody.) Możesz zapisać te szacowane gradienty według sezonu do analizy porównawczej.

Patrz „ Jak wyjaśnić indywidualne decyzje dotyczące klasyfikacji”, David Baehrens i in. glin. w JMLR, aby uzyskać więcej na ten temat. Artykuł dotyczy klasyfikacji, ale łatwo uogólnia ją również na regresję.

Innuo
źródło
To fantastycznie! Bardzo przydatne odniesienie, które będzie pomocne dla tego problemu, który mam i gdzie indziej.
Bogdanovist,
2

Czy wypróbowałeś moduł scikit-learn w Pythonie.

Możesz „komputer_importance” dla funkcji jego randomForestClassifier

jf328
źródło
1
Najpierw pomyślałem również, że obliczenie ważności cechy może być pomocne, ale ostatecznie jest to stosunkowo słabe podejście, gdy należy wyjaśnić przewidywaną wartość dla konkretnego wystąpienia. Znaczenie funkcji dostarcza jedynie niejasnych wskazówek ludzkim ekspertom.
steffen
Poza tym OP poprosił o podejście niezależne od modelu ...
steffen
Problem z miernikami o zmiennym znaczeniu polega na tym, że dotyczą one średnio całego zestawu danych, a nie informowania o tym, co było naprawdę ważne w konkretnym przypadku.
Bogdanovist,
Właściwie myślę, że jest to podejście niezależne od modelu, możesz rzeczywiście zastosować je do innych klasyfikatorów niż losowe lasy. Na stronie internetowej Breimana znajduje się subtelna uwaga na temat tego, jak obliczyć zmienne znaczenie dla pojedynczego przypadku. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (ostatnie zdanie) Myślę, że nie zostało to jeszcze gruntownie zbadane ani przynajmniej gruntownie przetestowane. Średnia zmienna ważność nie zawsze jest tym, czego chcesz. Na przykład nie wtedy, gdy chcesz pomóc lekarzowi podjąć decyzję w sprawie. To naprawdę interesujący temat.
Simone
Istnieje interesujący artykuł, w którym Breiman dyskutuje również nieco o tej metodzie regresji logistycznej: „Modelowanie statystyczne: dwie kultury”. Niezła lektura. Zdanie, które najbardziej mi się podoba to: „Moja definicja znaczenia zmiennej opiera się na predykcji. Zmienną można uznać za ważną, jeśli jej usunięcie poważnie wpływa na dokładność prognozy”. To stwierdzenie dotyczy każdego klasyfikatora, którego możesz użyć.
Simone