Interwały prognoz dla algorytmów uczenia maszynowego


14

Chcę wiedzieć, czy opisany poniżej proces jest prawidłowy / akceptowalny i czy dostępne jest jakiekolwiek uzasadnienie.

Pomysł: nadzorowane algorytmy uczenia się nie zakładają podstawowych struktur / dystrybucji danych. Na koniec dnia przedstawiają szacunkowe dane wyjściowe. Mam nadzieję, że jakoś oszacuję niepewność tych szacunków. Teraz proces budowania modelu ML jest z natury losowy (np. W próbkowaniu w celu weryfikacji krzyżowej dostrajania hiperparametrów i w podpróbkowaniu w stochastycznym GBM), więc potok modelowania da mi inną wydajność dla tych samych predyktorów z każdym innym ziarnem. Moim (naiwnym) pomysłem jest ciągłe przeprowadzanie tego procesu, aby uzyskać rozkład prognoz, i mam nadzieję, że mogę wypowiedzieć się na temat niepewności prognoz.

Jeśli to ma znaczenie, zestawy danych, z którymi pracuję, są zwykle bardzo małe (~ 200 wierszy).

Czy to ma sens?

Dla wyjaśnienia, tak naprawdę nie ładuję danych w tradycyjny sposób (tj. Nie próbuję ponownie danych). Ten sam zestaw danych jest używany w każdej iteracji, po prostu wykorzystuję losowość w Xval i stochastycznym GBM.


2
Jeśli tak naprawdę chcesz przedział prognozy (a nie przedział ufności), musisz wziąć pod uwagę zmienność spostrzeżeń na temat modelu, a nie tylko zmienność predykcji modelu
Glen_b

@Glen_b czy podejście opisane w OP, czy wersja boostrapped dostarczy mi przedziały ufności? Zaczynam myśleć, że przedział przewidywania nie jest możliwy bez określenia podstawowego rozkładu danych, więc następnym razem może być konieczne ponowne sformułowanie pytania.
kevinykuo

Możesz uruchamiać przedziały prognozowania ... po prostu nie robiąc tego, co
opisujesz

@Glen_b czy możesz opisać, jak to zrobić w odpowiedzi?
kevinykuo

1
Nie mogłem udzielić wystarczającej odpowiedzi. Ale patrz Davison i Hinkley (1997) w rozdziałach na temat regresji wielokrotnej i GLM, które dają poczucie tego, co może być potrzebne. Na przykład w przypadku regresji wielokrotnej reszty są ponownie próbkowane w celu uzyskania oszacowania bootstrap niepewności predykcyjnej (zmiany w prognozach z powodu niepewności parametrów) i ponownie próbkowane w celu zmierzenia się ze zmiennością procesu. Przy odpowiednim schemacie być może będziesz w stanie poradzić sobie z niepewnością specyfikacji modelu na tym pierwszym etapie, ale nie możesz pominąć drugiego etapu zmienności procesu
Glen_b

Odpowiedzi:


5

Wydaje mi się, że równie dobrym podejściem jest oszacowanie niepewności w prognozach. Po prostu pamiętaj, aby powtórzyć wszystkie kroki modelowania (dla GBM, który byłby dostrajaniem parametrów) od zera w każdej zmianie próbki bootstrap. Warto również uruchomić rankingi ważności w celu oszacowania niepewności w rankingach.

Odkryłem, że czasami przedziały nie zawierają rzeczywistej prognozy, szczególnie przy szacowaniu prawdopodobieństwa. Zwiększenie minimalnej liczby obserwacji w każdym węźle końcowym zwykle rozwiązuje to, przynajmniej w danych, z którymi pracowałem.

Prognozowanie konformalne wydaje się być użytecznym podejściem do kwantyfikacji zaufania do prognoz na nowych danych. Do tej pory jedynie porysowałem powierzchnię, a inni prawdopodobnie bardziej nadają się do tego.

W mojej odpowiedzi na ten post znajduje się prymitywny kod R dotyczący znalezienia przedziału prognozy GBM.

Mam nadzieję że to pomoże!


2

Możesz podzielić swoją niepewność dotyczącą prognoz na warunki „stronniczości” i „wariancji”. Termin odchylenie odnosi się do błędnej specyfikacji modelu: jeśli dopasujesz model liniowy dla funkcji nieliniowej, zawsze pojawi się jakiś błąd. Termin „wariancja” odnosi się do błędu w oszacowaniu parametrów modelu. Podchodzisz do rozliczania się z częścią niepewności, a nie możesz oszacować błędu.

Jak sugeruje @ErikL przewidywanie zgodności jest teoretycznie uzasadnionym podejściem, które przyjmuje podobny pomysł na bootstrap. Prognozowanie konformalne przy użyciu rekonstrukcji modelu przy użyciu nowego punktu uwzględnia zarówno błąd systematyczny, jak i wariancję, natomiast do regresji potrzebują znacznych zasobów obliczeniowych. Możesz wypróbować go w Pythonie, używając niekonformistycznej biblioteki .


1

Nie, to wydaje się złym pomysłem. Po pierwsze, jak zauważył Alexey, występuje uprzedzenie i wariancja. Nawet w przypadku wyboru najlepszych parametrów nie można uniknąć wariancji. Twoja metoda nawet nie próbuje tego rozwiązać. Jest jeszcze jedna bardzo ważna kwestia, że ​​część, a prawdopodobnie większość błędów twojego modelu, tkwi w danych, a nie w naturalnej losowości modelu. (Nie wspominając o tym, że niektóre modele, takie jak zwykła regresja liniowa, wcale nie są losowe, a dla modeli losowych stopień losowości różni się w zależności od modelu)

Proponuję przetestować swoje podejście na prostych symulowanych danych i niektórych modelach, które znasz. Jestem pewien, że z powodów, które opisałem, twój szacowany błąd będzie znacznie mniejszy niż błąd rzeczywisty (lub twój rozkład będzie znacznie węższy).

Do oszacowania rozkładu błędów można użyć starej dobrej weryfikacji krzyżowej.


0

Myślę teraz o tym problemie. Oto moje ustalenia:

(1) Metoda delta
(2) Ponowne próbkowanie paska ładującego
(3) Metoda bayesowska
(4) Oszacowanie średniej wariancji (MVE)

Pomysł polega na oszacowaniu dwóch źródeł zmienności predykcji, niepewności na podstawie oszacowania parametru modelu i błędu nieredukowalnego.

Oto kilka referencji:

Podejścia Machine Learning do oszacowania przedziału predykcji dla wyników modelu, Durga L. Shrestha, Dimitri P. Solomatine, 2006
Porównanie niektórych oszacowań błędów dla modeli sieci neuronowych, Robert Tibshirani, 1995
Kompleksowy przegląd interwałów predykcyjnych opartych na sieci neuronowej i nowe Zaliczki, Abbas Khosravi, Doug Creighton, 2011

Mam nadzieję, że to pomoże i poprawi mnie którekolwiek z powyższych jest niewłaściwe. Chciałbym usłyszeć więcej od innych.


1
Czy możesz wyjaśnić, w jaki sposób ten post odnosi się do pierwotnego pytania?
whuber

Tytuł brzmi „PI dla algorytmów ML”, @kevinykuo pyta, czy działa jego sposób „ładowania”. Wskazuję kilka odniesień na niektóre metody stosowane w PI dla sieci neuronowej.
Demo
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.