Jak uzyskać hiper parametry w sprawdzaniu poprawności zagnieżdżonej?


17

Przeczytałem następujące posty dotyczące sprawdzania poprawności krzyżowania zagnieżdżonego i wciąż nie jestem w 100% pewien, co mam zrobić z wyborem modelu za pomocą sprawdzania poprawności krzyżowania zagnieżdżonego:

Aby wyjaśnić moje zamieszanie, pozwól mi przejść krok po kroku przez wybór modelu z zagnieżdżoną metodą sprawdzania poprawności krzyżowej.

  1. Utwórz zewnętrzną pętlę CV za pomocą K-Fold. Będzie to wykorzystane do oszacowania wydajności hiper-parametrów, które „wygrały” każdą wewnętrzną pętlę CV.
  2. Użyj GridSearchCV, aby utworzyć wewnętrzną pętlę CV, w której w każdej wewnętrznej pętli GSCV przechodzi przez wszystkie możliwe kombinacje przestrzeni parametrów i zapewnia najlepszy zestaw parametrów.
  3. Po znalezieniu przez GSCV najlepszych parametrów w wewnętrznej pętli, jest on testowany z zestawem testowym w zewnętrznej pętli, aby uzyskać oszacowanie wydajności.
  4. Pętla zewnętrzna jest następnie aktualizowana do następnej zakładki jako zestaw testowy, a reszta jako zestaw treningowy i 1-3 powtórzenia. Łącznie możliwe parametry „wygranej” to liczba fałd wyznaczona w zewnętrznej pętli. Więc jeśli zewnętrzna pętla jest 5-krotna, będziesz miał oszacowanie wydajności algorytmu z 5 różnymi zestawami hiper parametrów, NIE wydajność jednego określonego zestawu hiper parametrów.

Podejście to zilustrowano na przykładowej stronie SKLearn: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html

Pytanie: Po 4. jak określić, które hiperparametry działały najlepiej? Rozumiem, że chcesz wytrenować algorytm (np. Regresję logistyczną, losowy las itp.) Z zestawem danych KOMPLETNY na końcu. Ale w jaki sposób określasz, które hiperparametry działały najlepiej w sprawdzaniu poprawności zagnieżdżonej? Rozumiem, że dla każdej wewnętrznej pętli wygra inny zestaw hiper parametrów. W przypadku zewnętrznej pętli otrzymujesz oszacowanie wydajności GridSearchCV, ale nie otrzymujesz żadnego konkretnego zestawu parametrów hiper. A więc, w ostatecznym utworzeniu modelu, skąd wiesz, jakich hiper parametrów użyć? Tę brakującą logikę trudno mi zrozumieć na podstawie innych stopni.

Z góry dziękuję za wszelkie wskazówki, szczególnie jeśli @Dikran Marsupial i @cbeleites mogą się włączyć!

Edycja: Jeśli możesz, w odpowiedzi użyj terminów takich jak „algorytm” i „parametry hiperparametru”. Myślę, że jednym ze źródeł nieporozumień jest to, że ludzie używają terminu „model” lub „wybór modelu”. Jestem zdezorientowany, czy chodzi o wybranie algorytmu, którego należy użyć, czy jakich hiper parametrów użyć.

Edycja 2: Utworzyłem notatnik, który pokazuje dwa sposoby wykonywania zagnieżdżonej weryfikacji krzyżowej. Pierwszym sposobem jest ten pokazany w przykładzie SKLearn, a innym dłuższym sposobem jest ten, który napisałem. Sposób pokazany w SKLearn nie ujawnia „zwycięskich” hiperparametrów, ale moja dłuższa droga tak. Ale pytanie pozostaje takie samo. Po zakończeniu sprawdzania poprawności zagnieżdżonej, nawet przy odsłoniętych hiperparametrach, co mam teraz zrobić? Jak widać z hiperparametrów na końcu notebooka, różnią się one dość.


1
+1 dla notebooka. To pytanie również mnie interesuje i będzie kontynuowane.
Arnold Klein

Odpowiedzi:


6

(Jestem pewien, że większość tego napisałem już w jakiejś odpowiedzi - ale nie mogę jej teraz znaleźć. Jeśli ktoś natknie się na tę odpowiedź, proszę ją połączyć). Widzę tutaj 2 nieco inne podejścia, które moim zdaniem są rozsądne.

Ale najpierw trochę terminologii:

  • Pochodzący z zastosowanego pola model (dopasowany / wyszkolony) jest dla mnie gotowy do użycia. Tj. Model zawiera wszystkie informacje potrzebne do wygenerowania prognoz dla nowych danych. Zatem model zawiera również hiperparametry . Jak zobaczycie, ten punkt widzenia jest ściśle związany z podejściem 2 poniżej.
  • OTOH, algorytm treningowy z mojego doświadczenia nie jest dobrze zdefiniowany w następującym znaczeniu: aby uzyskać (dopasowany) model, nie tylko - nazwijmy go „pierwotnym dopasowaniem” - „normalnych” parametrów modelu, ale również hiperparametry muszą zostać naprawione. Z mojego punktu widzenia aplikacji tak naprawdę nie ma dużej różnicy między parametrami a hiperparamerami: oba są częścią modelu i należy je oszacować / zdecydować podczas treningu.
    Myślę, że różnica między nimi jest związana z różnicą między kimś opracowującym nowe algorytmy szkoleniowe, który zwykle opisywałby klasę algorytmów szkoleniowych wraz z niektórymi parametrami sterującymi ( hiperparametry), które są trudne / niemożliwe do naprawienia (lub przynajmniej ustalenia, w jaki sposób należy je ustalić / oszacować) bez wiedzy o aplikacji / dziedzinie.

Podejście 1: wymaga stabilnych wyników optymalizacji

Dzięki takiemu podejściu „trening modelu” jest dopasowaniem „normalnych” parametrów modelu i podane są hiperparametry . Wewnętrzna walidacja krzyżowa zajmuje się optymalizacją hiperparametrów.

Kluczowym krokiem / założeniem w celu rozwiązania dylematu, którego zestaw hiperparametrów powinien być wybrany, jest wymaganie stabilizacji optymalizacji . Krzyżowa walidacja do celów walidacji zakłada, że ​​wszystkie modele zastępcze są wystarczająco podobne do ostatecznego modelu (uzyskanego przez ten sam algorytm treningowy zastosowany do całego zestawu danych), aby umożliwić traktowanie ich jako równych (między sobą, a także do ostatecznego modelu). Jeżeli założenie to się załamie i

  1. modele zastępcze są nadal równe (lub równoważne) między sobą, ale nie do ostatecznego modelu, mówimy o dobrze znanym pesymistycznym nastawieniu walidacji krzyżowej.

  2. Jeśli również model zastępczy nie jest sobie równy / równoważny, mamy problemy z niestabilnością .

Dla wyników optymalizacji wewnętrznej pętli oznacza to, że jeśli optymalizacja jest stabilna, nie ma konfliktu w wyborze hiperparametrów . A jeśli zaobserwowane zostaną znaczne różnice w wynikach wewnętrznej weryfikacji krzyżowej, optymalizacja nie będzie stabilna . Niestabilne sytuacje treningowe mają znacznie gorsze problemy niż sama decyzja, który zestaw hiperparametrów wybrać, i naprawdę polecam cofnąć się w tym przypadku i rozpocząć proces modelowania od nowa.

Jest tu jednak wyjątek: może istnieć kilka lokalnych minimów w optymalizacji zapewniających jednakową wydajność dla celów praktycznych. Wymaganie również wyboru spośród nich, aby był stabilny, może być niepotrzebnie silnym wymogiem - ale nie wiem, jak wyjść z tego dylematu.

Zauważ, że jeśli nie wszystkie modele dają ten sam zwycięski zestaw parametrów, nie należy tutaj używać oszacowań pętli zewnętrznej jako błędu generalizacji:

  • p
  • Ale chyba, że ​​nie zostanie podjęta żadna decyzja, ponieważ wszystkie podziały dały te same parametry, spowoduje to przerwanie niezależności w zewnętrznej pętli: dane testowe każdego podziału już wpłynęły na decyzję, który zestaw parametrów wygrał, ponieważ był to dane treningowe we wszystkich innych podziałach, a zatem zostały użyte w celu optymalizacji parametrów.

Podejście 2: traktuj strojenie hiperparametrów jako część treningu modelowego

Podejście to łączy perspektywy „twórcy algorytmu szkoleniowego” i zastosowanego użytkownika algorytmu szkoleniowego.

Twórca algorytmu treningowego zapewnia algorytm „nagi” model = train_naked (trainingdata, hyperparameters). Jako zastosowany użytkownik potrzebuje, tunedmodel = train_tuned (trainingdata)który dba również o ustalenie hiperparametrów.

train_tunedmoże być zaimplementowany np. poprzez owijanie optymalizatora opartego na krzyżowej weryfikacji wokół algorytmu „goły trening” train_naked.

train_tunedmoże być następnie użyty jak każdy inny algorytm szkoleniowy, który nie wymaga wprowadzania hiperparametrów, np. jego dane wyjściowe tunedmodelmogą być poddawane walidacji krzyżowej. Teraz hiperparametry są sprawdzane pod kątem stabilności, podobnie jak „normalne” parametry powinny być sprawdzane pod kątem stabilności w ramach oceny walidacji krzyżowej.

To jest właśnie to, co robisz i oceniasz w zagnieżdżonej walidacji krzyżowej, jeśli uśredniasz wydajność wszystkich zwycięskich modeli, niezależnie od ich poszczególnych zestawów parametrów.


Co za różnica?

Prawdopodobnie otrzymamy różne modele końcowe, przyjmując te 2 podejścia:

  • ostatecznym modelem w podejściu 1 będzie train_naked (all data, hyperparameters from optimization)
  • podczas gdy podejście 2 zastosuje train_tuned (all data)i - ponieważ ponownie uruchomi optymalizację hiperparametrów dla większego zestawu danych - może to zakończyć się innym zestawem hiperparametrów.

Ale znowu ta sama logika ma zastosowanie: jeśli stwierdzimy, że ostateczny model ma zasadniczo inne parametry niż modele zastępcze walidacji krzyżowej, jest to objaw naruszenia zasady 1. IMHO, więc znowu nie mamy konfliktu, a raczej sprawdzenie, czy nasze (dorozumiane) założenia są uzasadnione. A jeśli tak nie jest, to i tak nie powinniśmy zbytnio stawiać na dobre oszacowanie wydajności tego ostatecznego modelu.


Mam wrażenie (również na podstawie liczby podobnych pytań / zamieszania tutaj w CV), że wiele osób myśli o zagnieżdżonej weryfikacji krzyżowej przy podejściu 1. Ale błąd uogólnienia jest zwykle szacowany zgodnie z podejściem 2, więc to jest droga do ostateczny model również.


Przykład tęczówki

Podsumowanie: Optymalizacja jest w zasadzie bezcelowa. Dostępny rozmiar próbki nie pozwala na rozróżnienie między wydajnością żadnego z zestawów parametrów tutaj.

Jednak z punktu widzenia aplikacji wniosek jest taki, że nie ma znaczenia, który z 4 zestawów parametrów wybierzesz - co nie jest wcale takie złe: znalazłeś względnie stabilny plateau parametrów. Oto zaleta właściwego zagnieżdżonego sprawdzania poprawności dostrojonego modelu: chociaż nie możesz twierdzić, że jest to model optymalny, nadal możesz twierdzić, że model zbudowany na całych danych przy użyciu podejścia 2 będzie miał około 97% dokładności (95% przedział ufności dla 145 poprawnych ze 150 przypadków testowych: 92–99%)

Zauważ, że również podejście 1 nie jest tak dalekie, jak się wydaje - patrz poniżej: twoja optymalizacja przypadkowo pominęła stosunkowo wyraźnego „zwycięzcę” z powodu powiązań (w rzeczywistości jest to kolejny bardzo znaczący objaw problemu z wielkością próby).

Chociaż nie jestem wystarczająco głęboko w SVM, aby „zobaczyć”, że C = 1 powinien być tutaj dobrym wyborem, wybrałbym bardziej restrykcyjne liniowe jądro. Ponadto, gdy dokonałeś optymalizacji, nie ma nic złego w wyborze zwycięskiego zestawu parametrów, nawet jeśli masz świadomość, że wszystkie zestawy parametrów prowadzą do praktycznie jednakowej wydajności.

Jednak w przyszłości zastanów się, czy Twoje doświadczenie nie pozwala oszacować, jakiej wydajności możesz się spodziewać, i z grubsza, który model byłby dobrym wyborem. Następnie zbuduj ten model (z ręcznie ustalonymi hiperparametrami) i oblicz przedział ufności dla jego wydajności. Użyj tego, aby zdecydować, czy próba optymalizacji jest w ogóle sensowna. (Mogę dodać, że głównie pracuję z danymi, w których uzyskanie 10 niezależnych przypadków nie jest łatwe - jeśli jesteś w polu z dużymi niezależnymi próbkami, sprawy wyglądają o wiele lepiej)

długa wersja:

Jak na przykład wyniki w zestawie irisdanych. irisma 150 przypadków, rozważa się SVM z siatką 2 x 2 parametry (2 jądra, 2 rzędy wielkości kary C).

Pętla wewnętrzna ma podziały 129 (2x) i 132 (6x) przypadków. „Najlepszy” zestawu parametrów niepewny między liniowymi lub jądro RBF, zarówno z C = 1. Jednak dokładność wewnętrzną testu są wszystkie (w tym zawsze loosing C = 10) w 94 - 98,5% Obserwowany dokładności. Największa różnica, jaką mamy w jednym z podziałów, to 3 vs 8 błędów dla rbf przy C = 1 vs 10.

Nie ma mowy, że to znacząca różnica. Nie wiem, jak wyodrębnić prognozy dla poszczególnych przypadków w CV, ale nawet zakładając, że 3 błędy były wspólne, a model C = 10 popełnił dodatkowe 5 błędów:

> table (rbf1, rbf10)
         rbf10
rbf1      correct wrong
  correct     124     5
  wrong         0     3

> mcnemar.exact(rbf1, rbf10)

    Exact McNemar test (with central confidence intervals)

data:  rbf1 and rbf10
b = 5, c = 0, p-value = 0.0625
alternative hypothesis: true odds ratio is not equal to 1

Pamiętaj, że w siatce 2 x 2 jest 6 porównań parami, więc musimy poprawić również wiele porównań.


Podejście 1

W 3 z 4 zewnętrznych podziałów, w których rbf „wygrał” w stosunku do jądra liniowego, faktycznie miały tę samą oszacowaną dokładność (wydaje mi się, że min w przypadku powiązań zwraca pierwszy odpowiedni indeks).

Zmiana siatki na params = {'kernel':['linear', 'rbf'],'C':[1,10]} plony

({'kernel': 'linear', 'C': 1}, 0.95238095238095233, 0.97674418604651159)
({'kernel': 'rbf', 'C': 1}, 0.95238095238095233, 0.98449612403100772)
({'kernel': 'linear', 'C': 1}, 1.0, 0.97727272727272729)
({'kernel': 'linear', 'C': 1}, 0.94444444444444442, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 0.94444444444444442, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 1.0, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 1.0, 0.96212121212121215)

Podejście 2:

Oto clftwój ostateczny model. Z random_state = 2, rbf z C = 1 wygrywa:

In [310]: clf.grid_scores_
[...snip warning...]
Out[310]: 
[mean: 0.97333, std: 0.00897, params: {'kernel': 'linear', 'C': 1},
 mean: 0.98000, std: 0.02773, params: {'kernel': 'rbf', 'C': 1},
 mean: 0.96000, std: 0.03202, params: {'kernel': 'linear', 'C': 10},
 mean: 0.95333, std: 0.01791, params: {'kernel': 'rbf', 'C': 10}]

(dzieje się od około 1 do 5 razy, 1 na 6 razy lineari rbfz C = 1są związane na miejscu 1)


4
Dzięki @cbeleites! Przeczytałem również twoje odpowiedzi w innych wątkach i miałem nadzieję, że odpowiesz na moje pytanie. Twoja odpowiedź jest bardzo dogłębna, ale moje pytanie naprawdę koncentruje się na tym, jak analizować wyniki zagnieżdżonego CV; Nadal jestem trochę niejasny, co do „co robić po zagnieżdżeniu CV”. Czy możesz rzucić okiem na notatnik, który stworzyłem (pod koniec mojego postu) i wyjaśnić laikowi, co robić, ponieważ dwa różne zestawy hiperparametrów zostały określone jako optymalne w zagnieżdżonym CV? Obiecuję, że to bardzo, bardzo krótki notatnik!
Heavy Breathing

@HeavyBreathing Przeczytałem odpowiedź i nadal nie jestem tak jasny na temat „co zrobić po zagnieżdżeniu CV”. Czy wyraźnie to rozgryzłeś?
stackunderflow

0

Przeczytałem twoje pytanie i odpowiedź powyżej 2 razy (pierwszy raz 3 miesiące temu). Jestem zainteresowany, a także chcę znaleźć absolutnie odpowiedni sposób weryfikacji krzyżowej moich danych. Po wielu przemyśleniach i czytaniu wydaje mi się, że znajduję dziury i oto moja poprawka:

Aby wyjaśnić moje zamieszanie, pozwól mi przejść krok po kroku przez wybór modelu z zagnieżdżoną metodą sprawdzania poprawności krzyżowej.

  1. Utwórz zewnętrzną pętlę CV za pomocą K-Fold. Będzie to wykorzystane do oszacowania wydajności hiper-parametrów, które „wygrały” każdą wewnętrzną pętlę CV.
  2. Użyj GridSearchCV, aby utworzyć wewnętrzną pętlę CV, w której w każdej wewnętrznej pętli GSCV przechodzi przez wszystkie możliwe kombinacje przestrzeni parametrów i zapewnia najlepszy zestaw parametrów. (Uwaga: tutaj zakładam: dane dla wewnętrznej pętli = dane treningowe dla zewnętrznej pętli. Możesz zapytać: dlaczego? Odpowiedź: /programming/42228735/scikit-learn-gridsearchcv-with-multiple-repetitions/ 42230764 # 42230764 przeczytaj sekcję odpowiedzi Vivek Kumar krok 4)
  3. Po znalezieniu przez GSCV „najlepszych parametrów” w wewnętrznej pętli (nazwijmy ją wewnętrznym zwycięzcą), jest ona testowana z zestawem testowym w zewnętrznej pętli, aby uzyskać oszacowanie wydajności (nazwijmy to outer_fold_score1).
  4. Pętla zewnętrzna jest następnie aktualizowana do następnej zakładki jako zestaw testowy, a reszta jako zestaw treningowy (aby ocenić „wewnętrznego zwycięzcę” w zewnętrznej pętli), „wewnętrzny zwycięzca” jest ponownie testowany z nowym zestawem testowym (outer_fold_score2). Następnie pętla zewnętrzna aktualizuje się do następnego złożenia, dopóki pętla nie zostanie ukończona. Wyniki z każdego foldu (outer_fold_score 1,2 ..) będą średnie, aby uzyskać wynik „wewnętrznego zwycięzcy” dla zewnętrznej pętli (outer_score)
  5. Pętla zewnętrzna jest następnie aktualizowana do następnego pasowania jako zestaw testowy, a reszta jako zestaw treningowy (aby znaleźć następnego „wewnętrznego zwycięzcę”, i 1-4 powtórzeń (pamiętaj, że gdy powtarzamy 1, nie tworzymy nowego K- fold, ale za każdym razem używamy tego samego zewnętrznego Kfolda) . Z każdym cyklem 1-4 otrzymujemy „najlepsze parametry” (lub „wewnętrznego zwycięzcę”) z wynikiem zewnętrznym. Ten z najlepszym wynikiem zewnętrznym będzie zwycięzcą zwycięzcy

Rozumowanie:

  • Zasadniczo twoje pytanie dotyczy tego, że istnieje wiele „zwycięskich parametrów” dla zewnętrznej pętli. Chodzi o to, że nie ukończyłeś zewnętrznej pętli, aby ocenić i znaleźć „zewnętrznego zwycięzcę”. Twój czwarty krok ocenia „wewnętrznego zwycięzcę” tylko 1-krotnie w zewnętrznej pętli, ale nie „zapętliłeś”. Dlatego muszę zastąpić go moim czwartym krokiem - „zapętlić” krok oceny w zewnętrznej pętli i uzyskać wynik zewnętrzny (przez uśrednienie)
  • Twój piąty krok wykonał „zapętlenie” w pętli zewnętrznej, ale służy tylko zbudowaniu kolejnego „wewnętrznego zwycięzcy”. Nie zapętliło „oceny” tego „wewnętrznego zwycięzcy” w zewnętrznej pętli

Czy to naprawdę odpowiada na pytanie?
Michael R. Chernick,

0

Nie używasz zagnieżdżonej weryfikacji krzyżowej do wybierania hiper parametrów algorytmu, ta metoda służy do oszacowania błędu uogólnienia procedury budowania modelu . Gdzie, według procedury budowy modelu, zamierzam wykonać wszystkie kroki, które zastosowałeś, aby osiągnąć ostateczny model, którego będziesz używać na polu.
Procedura budowania modelu może składać się z reguł zastosowanych w celu podjęcia decyzji, które przetwarzanie wstępne zastosować do danych, której funkcji użyć, a na koniec jakich hiper parametrów użyć. Pomyśl o tym jako o „meta-algorytmie”, który odbiera jako dane wejściowe określony zestaw danychrei generuje jako wynik „algorytm”, składający się ze stałego zestawu transformacji przetwarzania wstępnego, cech i wartości hiperparametrów.

Powiedzmy na przykład, że masz X,yjako macierz projektową i cel, a chcesz wyszkolić klasyfikatora:
1. który używa tylko pierwszegox funkcje w X które mają najwyższą korelację z y.
2. wybierasz wartości hiper parametrów poprzez minimalizację 10-krotnego oszacowania błędu walidacji krzyżowej.

Jeśli zastosujesz te dwa kroki do konkretnej pary X,y uzyskasz określony algorytm z określonym zestawem funkcji i ustalonymi parametrami hiper, które niekoniecznie będą takie same jak te, które uzyskasz dla X,ychociaż procedura budowania modelu byłaby identyczna, tj .: kroki 1 + 2, które nie są powiązane z żadnym konkretnym zestawem danych.
Powiedzmy, że zrobiłeś wszystkie powyższe, nie dzieląc danych na test kolejowy, ponieważ masz mały zestaw danych, jak oszacujesz błąd uogólnienia właśnie utworzonego klasyfikatora? Czy możesz użyć najlepszego błędu znalezionego podczas weryfikacji krzyżowej w kroku 2?
Nie , pierwszym dużym problemem jest krok 1, w którym używasz wszystkich danych, aby wybrać funkcje do użycia. Dlatego nawet po przeprowadzeniu weryfikacji krzyżowej w kroku 2 funkcje będą już widzieć i zapamiętywać pewne informacje obecne w folderze testowym przy każdym uruchomieniu weryfikacji krzyżowej. Rezultatem będzie zbyt optymistyczne oszacowanie błędu testu i to się nazywa stronniczość wyboru funkcji. Aby uwzględnić to w szacunkach, należy umieścić krok wyboru funkcji w pętli weryfikacji krzyżowej kroku 2.
Ok, teraz jesteśmy w porządku? Czy najlepszy błąd znaleziony w weryfikacji krzyżowej z krokiem wyboru funkcji w pętli jest uczciwym oszacowaniem błędu uogólnienia?
Teoretycznie odpowiedź brzmi „nie” , problem polega na tym, że parametry hiper-parametrów zostały wybrane w celu zminimalizowania błędu weryfikacji krzyżowej w określonym zestawie danych do Państwa dyspozycji, więc w pewnym sensie dopasowujesz parametry hiperparametru do swoich danych z ryzykiem ich nadmierne dopasowanie, co nazywa się uprzedzeniem wyboru modelu. Ale czy jest to problem w praktyce? Zależy to od konkretnej aplikacji: może stać się bardziej dotkliwe, ponieważ nadmiernie pasuje do treningu, gdy zestaw danych jest mały, a liczba hiperparowanych parametrówdostrojony jest stosunkowo duży. Aby uwzględnić to podczas szacowania błędu uogólnienia, zastosowałbyś zagnieżdżoną weryfikację krzyżową, jak opisano, co dałoby prawidłowe oszacowanie błędu uogólnienia.
Wreszcie, aby odpowiedzieć na ostatnie pytanie, po rzetelnym oszacowaniu błędu uogólnienia „procedury budowania modelu” z zagnieżdżoną weryfikacją krzyżową, wystarczy zastosować procedurę (krok 1 + 2) do całego zestawu danych, uzyskując model ze stałym zestawem funkcji i ustaw wartości hiperparametrów, ale należy pamiętać, że błędem, jakiego oczekujemy od tego modelu w przypadku niewidzialnych danych, jest szacunek zagnieżdżenia krzyżowego .

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.