ML Atlas

04 · Ocena · 6 min czytania · aktualizacja

Predykcja konformalna — jak podać przedział prognozy bez założeń o rozkładzie?

W skrócie

Predykcja konformalna ustala szerokość przedziału z błędów na odłożonych danych. Na zbiorze Diabetes przedział 90% pokrył średnio 90,4% pacjentów.

Co to jest

Predykcja konformalna (conformal prediction) to sposób, by do dowolnego modelu dołożyć przedział prognozy z gwarancją: nowa obserwacja wpadnie do niego z prawdopodobieństwem co najmniej 1 − α, np. 90%. Gwarancja nie wymaga ani rozkładu normalnego błędów, ani poprawnego modelu. Wymaga jednego: dane kalibracyjne i nowa obserwacja muszą być wymienialne (exchangeable) — z grubsza: pochodzić z tego samego źródła, w kolejności bez znaczenia.

Metodę rozwinęli Vladimir Vovk, Alex Gammerman i Glenn Shafer; jej systematyczny wykład to książka z 2005 roku. Najprostsza wersja to predykcja konformalna z podziałem (split conformal): model trenuje się na jednej części danych, a na drugiej, kalibracyjnej, mierzy, jak bardzo się myli.

Ważne rozróżnienie: przedział ufności mówi, gdzie jest parametr, np. średnia. Przedział prognozy mówi, gdzie wypadnie pojedyncza nowa obserwacja — jest dużo szerszy, bo obejmuje też jej własny szum.

Mechanizm — dlaczego tak działa

przedział z błędów na kalibracjiKrok 1: błędy na kalibracji, rosnącoqponiżej q: co najmniej 1 − α błędówKrok 2: nowy przykładŷŷ − qŷ + qGorszy model: większe błędy, szerszy przedział.
Schemat: przedział z błędów na kalibracji

Przepis dla regresji. (1) Wytrenuj model na zbiorze treningowym. (2) Na n przykładach kalibracyjnych policz wyniki niezgodności: zwykle błąd bezwzględny |y − ŷ|. (3) Posortuj je i weź k-ty najmniejszy, gdzie k = ⌈(n + 1)(1 − α)⌉; oznacz go q. (4) Dla nowego przykładu podaj przedział ŷ ± q.

Dlaczego to działa? Jeśli nowy przykład jest wymienialny z kalibracyjnymi, jego błąd jest „jednym z n + 1” i każde miejsce w rankingu jest równie prawdopodobne. Szansa, że wypadnie wśród k najmniejszych, wynosi więc co najmniej k/(n + 1) ≥ 1 − α. Stąd poprawka n + 1 zamiast n: zwykły kwantyl 90% z n błędów jest odrobinę za ciasny. Przy ciągłych błędach bez remisów pokrycie wynosi najwyżej 1 − α + 1/(n + 1), więc przedział nie jest też niepotrzebnie szeroki.

Model nie musi być dobry. Gorszy model ma większe błędy na kalibracji, więc dostaje szerszy przedział — gwarancja pokrycia trzyma się dalej, tylko przedział mniej mówi.

Granice, które trzeba znać. Po pierwsze, pokrycie jest brzegowe (marginal), a nie warunkowe: 90% średnio po wszystkich przykładach, a nie 90% dla każdej grupy pacjentów. W jednych grupach może być 95%, w innych 85%. Dokładnego pokrycia warunkowego nie da się zagwarantować bez założeń o rozkładzie (Vovk, 2012; Lei i Wasserman, 2014); Barber, Candès, Ramdas i Tibshirani (2021) badają, jakie słabsze wersje są osiągalne. Po drugie, wymienialność: w szeregach czasowych przyszłość różni się od przeszłości, dryf danych łamie gwarancję i potrzebne są wersje adaptacyjne. Po trzecie, gwarancja dotyczy średniej po losowaniu danych kalibracyjnych i testowych; na jednym małym zbiorze testowym pokrycie zmierzone może wyjść wyraźnie poniżej 90%.

Warianty adaptacyjne. Przedział ŷ ± q ma wszędzie tę samą szerokość, choć szum bywa różny. Konformalizowana regresja kwantylowa (CQR, Romano, Patterson i Candès, 2019) uczy dwóch modeli kwantylowych (np. 5% i 95%), a kalibracja konformalna tylko je poszerza lub zwęża o wspólną poprawkę. Przedział jest wtedy szerszy tam, gdzie dane są głośniejsze, a gwarancja brzegowa zostaje.

Na przykładzie

Zbiór Diabetes z scikit-learn: 442 pacjentów, 10 cech, cel to miara postępu choroby rok później (od 25 do 346, odchylenie standardowe 77). Podział: 176 do treningu, 177 do kalibracji, 89 do testu. Model: regresja liniowa. Celujemy w 90%.

k = ⌈178 · 0,9⌉ = 161, więc q to 161. najmniejszy z 177 błędów kalibracyjnych: 89,6. Przedział ma szerokość 179,2. Na 89 pacjentach testowych pokrył 77, czyli 86,5% — poniżej 90%, ale to jeden mały zbiór testowy. Naiwny przedział ±1,645·RMSE z błędów treningowych (RMSE 52,4) ma półszerokość 86,2 i pokrył 85,4%.

Dopiero 500 losowych podziałów pokazuje, co gwarantuje metoda. Przedział konformalny pokrywa średnio 90,4% pacjentów (odch. std. 3,8 punktu procentowego; 5. percentyl 83,1%). Teoria przewiduje dokładnie 161/178 = 90,45%. Naiwny przedział z regresji liniowej: 87,3% — trochę za mało, bo błąd na danych treningowych jest optymistyczny (RMSE 52,4 wobec 55,6 na teście).

Z lasem losowym różnica jest dramatyczna. Las dopasowuje się do danych treningowych, więc jego RMSE treningowe to 38,4, a testowe 57,9. Naiwny przedział ±1,645·RMSE pokrywa średnio tylko 72,1%. Konformalny — 90,4%, bo kalibracja odbywa się na danych, których las nie widział; za to jest szerszy: średnio 193,5 zamiast 126,2.

Pokrycie warunkowe: w tych samych 500 podziałach regresji liniowej przedział obejmuje 94,6% pacjentów z niższą prognozą i tylko 86,1% z wyższą (powyżej mediany prognoz w zbiorze testowym). Dla dwóch kodowanych płci: 88,5% i 92,5%. Średnio się zgadza, w grupach już nie — to przypadek dla CQR.

Jak to policzono
  • Dane: sklearn.datasets.load_diabetes(return_X_y=True) (cechy wyśrodkowane i przeskalowane przez scikit-learn, cel w oryginalnych jednostkach), 442 obserwacje, cel od 25 do 346, odch. std. 77,1.
  • Podział: train_test_split(X, y, test_size=0,2, random_state=s) daje test (89), resztę ponownie train_test_split(..., test_size=0,5, random_state=s) na trening (176) i kalibrację (177). Przykład pojedynczy: s = 0.
  • Wynik niezgodności |y − ŷ|; q = k-ty najmniejszy, k = ⌈(n + 1)·0,9⌉ = 161 dla n = 177. Przedział naiwny: ŷ ± 1,645·RMSE liczone na zbiorze treningowym.
  • s = 0, LinearRegression: q = 89,59, szerokość 179,18, pokrycie testowe 77/89 = 86,5%; naiwny: 86,23, pokrycie 85,4%; zwykły kwantyl 90% błędów kalibracyjnych (numpy.quantile) 87,8.
  • 500 podziałów (s = 0–499), LinearRegression: pokrycie średnio 90,40%, odch. std. 3,8 p.p., 5. i 95. percentyl 83,1% i 95,6%, minimum 78,7%, poniżej 90% w 45,8% podziałów; szerokość średnio 187,0 (odch. std. 9,6). Naiwny: 87,27% (4,2 p.p.), szerokość 172,4. RMSE treningowe 52,4, testowe 55,6.
  • Te same podziały, RandomForestRegressor(n_estimators=100, min_samples_leaf=5, random_state=0): konformalny 90,43% (3,7 p.p.), szerokość 193,5; naiwny 72,08% (5,7 p.p.), szerokość 126,2; RMSE treningowe 38,4, testowe 57,9.
  • Pokrycie w grupach, regresja liniowa, zsumowane po 500 podziałach: prognoza poniżej lub równa mediany prognoz testowych 94,6%, powyżej 86,1%; druga cecha (płeć, kodowana) ujemna 88,5%, dodatnia 92,5%.
  • Wartość teoretyczna średniego pokrycia: k/(n + 1) = 161/178 = 0,9045; górne ograniczenie 0,9 + 1/178 = 0,9056. Odchylenie pokrycia przy ustalonej kalibracji: rozkład Beta(161, 17), odch. std. 2,20 p.p.; dla n = 1000 Beta(901, 100), 0,95 p.p. Pokrycie ≤ 74/89 = 83,1% w 6,0% podziałów, < 83,1% w 3,6%.

Dane: Diabetes (progresja cukrzycy)

W praktyce

  • Podziel dane na trening, kalibrację i test. Gwarancja działa przy każdej liczbie n przykładów kalibracyjnych, ale przy małym n przedział skacze między losowaniami: pokrycie dla ustalonego zbioru kalibracyjnego ma rozkład beta (Angelopoulos i Bates) o odchyleniu ok. 2,2 p.p. przy n = 177 i ok. 0,9 p.p. przy n = 1000 — z grubsza √(0,09/n).
  • Nigdy nie licz błędów kalibracyjnych na danych treningowych — wtedy wracasz do naiwnego przedziału i niedoszacowania.
  • Do klasyfikacji ten sam przepis daje zbiory etykiet: wynik niezgodności to np. 1 − p(prawdziwej klasy), a zbiór predykcji zawiera wszystkie klasy z wynikiem poniżej q.
  • Gotowe implementacje: biblioteka MAPIE (zgodna z scikit-learn); split conformal to jednak kilka linijek NumPy: q = np.sort(np.abs(y_cal - m.predict(X_cal)))[k - 1].
  • Sprawdzaj pokrycie w ważnych podgrupach, nie tylko ogólne.
  • W szeregach czasowych użyj okna kroczącego do kalibracji albo metod adaptacyjnych i licz się z brakiem gwarancji.

Najczęstsze pytania

Czy predykcja konformalna to to samo co kalibracja modelu?
Nie. Kalibracja dotyczy prawdopodobieństw klasyfikatora: czy „80%” znaczy 80% trafień. Predykcja konformalna zamienia dowolną prognozę na przedział lub zbiór z gwarantowanym pokryciem. Obie korzystają z danych odłożonych od treningu.
Dlaczego przedział nie dopasowuje się do trudności przypadku?
W wersji podstawowej q jest jedno dla wszystkich. Szerokość zależną od przypadku dają wyniki niezgodności dzielone przez przewidywaną skalę błędu albo regresja kwantylowa (CQR).
Czy gwarancja oznacza 90% na moim zbiorze testowym?
Nie. Oznacza 90% średnio po losowaniu danych kalibracyjnych i testowych. Na 89 pacjentach jeden podział dał 86,5%, a co dwudziesty podział dał 83,1% lub mniej, choć średnia to 90,4%.
Co się stanie, gdy dane się zmienią?
Gwarancja znika, bo nowe dane nie są wymienialne z kalibracyjnymi. Trzeba kalibrować na świeżych danych albo stosować wersje ważone i adaptacyjne, które jednak dają słabsze gwarancje.

Źródła

Zobacz też

Przedział ufności InteraktywnePrzedział ufności to zakres wyliczony z próby metodą, która w 95% powtórzeń obejmuje prawdziwy parametr. Pokazuje, jak dokładny jest wynik.Kalibracja modelu InteraktywneModel jest skalibrowany, gdy deklarowana pewność zgadza się z częstością trafień. Temperature scaling dzieli logity przez T z walidacji, nie zmieniając decyzji.Metryki regresji: MAE, RMSE, R² InteraktywneMAE mierzy przeciętny błąd, RMSE mocniej karze duże pomyłki, a R² mówi, jaką część zmienności model wyjaśnia. Na zbiorze Diabetes regresja liniowa ma R² = 0,36.Analiza reszt InteraktywneReszty to różnice między wartością prawdziwą a przewidywaną. Ich wykres ujawnia nieliniowość, punkty wpływowe i zmienny rozrzut, których metryki nie pokażą.Las losowy InteraktywneLas losowy uśrednia wiele drzew uczonych na losowych próbkach danych i losowych podzbiorach cech. Na pingwinach 10 drzew trafia w 95,1%, jedno drzewo w 93,1%.Regresja liniowa InteraktywneRegresja liniowa przewiduje liczbę jako ważoną sumę cech plus stałą. Na danych Diabetes sam BMI wyjaśnia R² = 0,34 zmienności, 10 cech — 0,36 na teście.Zbiór treningowy, walidacyjny i testowy InteraktywneTrening służy do uczenia, walidacja do wyboru modelu i ustawień, a test do jednej uczciwej oceny na końcu. Każde podejrzenie testu psuje jego wartość.Dane szeregów czasowychW szeregu czasowym kolejność niesie informację. Na błądzeniu losowym las losowy ma błąd 0,66 przy losowym podziale, a 6,8 przy uczciwym teście na przyszłości.Regresja kwantylowaRegresja kwantylowa przewiduje wybrany kwantyl, np. 0,05 i 0,95, zamiast średniej. Na danych o cukrzycy taki przedział objął 87,3% nowych pacjentów.Estymacja gęstości jądrowej (KDE)KDE sumuje małe krzywe normalne postawione na każdej obserwacji. Dla 342 pingwinów szerokość h = 3,94 mm daje dwa szczyty: 191,5 i 214,3 mm.