Jednym ze sposobów zapewnienia tego jest upewnienie się, że wszystko, co robisz, aby dopasować się do modelu, zostało zakodowane , nawet „majsterkowanie”. W ten sposób, gdy uruchamiasz proces wielokrotnie, powiedzmy przez cross-validation, zachowujesz spójność między przebiegami. Zapewnia to, że wszystkie potencjalne źródła zmienności są przechwytywane przez proces weryfikacji krzyżowej.
Inną niezwykle ważną rzeczą jest zapewnienie reprezentatywnej próbki w obu zestawach danych. Jeśli Twój zestaw danych nie jest reprezentatywny dla rodzaju danych, których spodziewasz się użyć do przewidywania, to niewiele możesz zrobić. Całe modelowanie opiera się na założeniu, że „indukcja” działa - rzeczy, których nie zaobserwowaliśmy, zachowują się jak rzeczy, które zaobserwowaliśmy.
Zasadniczo trzymaj się z dala od procedur dopasowywania złożonego modelu, chyba że (i) wiesz, co robisz, oraz (ii) wypróbowałeś prostsze metody i okazało się, że nie działają, oraz w jaki sposób metoda złożona naprawia problemy z prostą metodą. „Prosty” i „złożony” oznacza w znaczeniu „prosty” lub „złożony” dla osoby wykonującej dopasowanie. Powodem, dla którego jest to tak ważne, jest to, że pozwala ci zastosować to, co lubię nazywać „testem powąchania” do wyników. Czy wynik wygląda dobrze? Nie możesz „powąchać” wyników z procedury, której nie rozumiesz.
UWAGA: następna, dość długa część mojej odpowiedzi oparta jest na moim doświadczeniu, które znajduje się w obszarze , przy czym może być duże. Jestem prawie pewien, że to, co następuje poniżej nie stosuje się do lub przypadkachN>>p p N≈p N<p
Gdy masz dużą próbkę, różnica między użyciem a niewykorzystaniem danej obserwacji jest bardzo mała, pod warunkiem, że twoje modelowanie nie jest zbyt „lokalne”. Wynika to z faktu, że wpływ danego punktu danych jest generalnie rzędu . Tak więc w dużych zestawach danych, resztki, które otrzymujesz z „trzymania” zestawu danych testowych, są w zasadzie takie same jak resztki, które otrzymujesz z używania go w zestawie danych treningowych. Możesz to pokazać za pomocą zwykłych najmniejszych kwadratów. Resztka uzyskana z wykluczenia tej obserwacji (tj. Jaki byłby błąd zestawu testowego, gdybyśmy umieścili obserwację w zestawie testowym), to , gdzie jest pozostałym treningiem, a1Nietesti=(1−hii)−1etrainietrainihiijest dźwignią tego punktu danych. Teraz mamy , gdzie jest liczbą zmiennych w regresji. Teraz, jeśli , to jest bardzo trudne, aby jakikolwiek był wystarczająco duży, aby wprowadzić znaczącą różnicę między błędami zestawu testowego i zestawu treningowego. Możemy wziąć uproszczony przykład, załóżmy, że (przecięcie i zmienna), macierz obliczeniowa to (zarówno zestawy treningowe, jak i testowe), a dźwignia wynosii∑ihii=ppN>>phiip=21N×pX
hii=xTi(XTX)−1xi=1Ns2x(1xi)(x2¯¯¯¯¯−x¯¯¯−x¯¯¯1)(1xi)=1+x~2iN
Gdzie , , a . Wreszcie, jest znormalizowaną zmienną predykcyjną i mierzy, ile standardowych odchyleń jest od średniej. Wiemy więc od początku, że błąd zestawu testowego będzie znacznie większy niż błąd zestawu treningowego dla obserwacji „na krawędzi” zestawu treningowego. Ale to w zasadzie znowu ten reprezentatywny problem - obserwacje „na brzegu” są mniej reprezentatywne niż obserwacje „na środku”. Dodatkowo jest to zamówienie . Więc jeśli masz obserwacji, nawet jeślix¯¯¯=N−1∑ixix2¯¯¯¯¯=N−1∑ix2is2x=x2¯¯¯¯¯−x¯¯¯2x~i=xi−x¯¯¯sxxi1N100x~i=5 (wartość odstająca w przestrzeni x według większości definicji), oznacza to , a błąd testu jest zaniżony . Jeśli masz duży zestaw danych, powiedzmy , jest on jeszcze mniejszy, , czyli mniej niż . W rzeczywistości dla obserwacji wymagałabyś obserwacji w celu dokonania niedoszacowania błędu zestawu testowego przy użyciu błędu zestawu szkoleniowego.hii=261001−26100=74100100001−26100001%10000x~=5025%
Tak więc w przypadku dużych zbiorów danych użycie zestawu testowego jest nie tylko nieefektywne, ale także niepotrzebne, o ile . Dotyczy to OLS, a także w przybliżeniu dotyczy GLM (szczegóły są różne dla GLM, ale ogólny wniosek jest taki sam). W więcej niż wymiarach „wartości odstające” są zdefiniowane przez obserwacje z dużymi wynikami „głównego składnika”. Można to pokazać pisząc Gdzie jest (ortogonalną) macierzą wektorów własnych dla , z macierzą wartości własnych . Otrzymujemy gdzieN>>p2hii=xTiEET(XTX)−1EETxiEXTXΛhii=zTiΛ−1zi=∑pj=1z2jiΛjjzi=ETxijest główną oceną składową .xi
Jeśli Twój zestaw testowy ma obserwacji, otrzymasz wersję macierzową , gdzie i to rzędy macierzy projektowej w zestawie testowym. Tak więc w przypadku regresji OLS wiesz już, jakie byłyby błędy „zestawu testowego” dla wszystkich możliwych podziałów danych na zestawy szkoleniowe i testowe. W tym przypadku ( ) nie ma potrzeby dzielenia danych. Możesz zgłosić błędy zestawu testowego „najlepszy przypadek” i „najgorszy przypadek” niemal dowolnego rozmiaru bez faktycznego podziału danych. Pozwala to zaoszczędzić dużo czasu i zasobów komputera.ketest{k}=(Ik−H{k})−1etrain{k}H{k}=X{k}(XTX)−1XT{k}X{k}N>>p
Zasadniczo wszystko to sprowadza się do użycia kary umownej, aby uwzględnić różnicę między błędami szkolenia i testów, takimi jak BIC lub AIC. Skutecznie osiąga ten sam wynik, co przy użyciu zestawu testowego, jednak nie musisz wyrzucać potencjalnie użytecznych informacji. Za pomocą BIC przybliżasz dowody dla modelu, który wygląda matematycznie:
p(D|MiI)=p(y1y2…yN|MiI)
Zauważ, że w tej procedurze nie możemy oszacować żadnych parametrów wewnętrznych - każdy model musi być w pełni określony lub mieć zintegrowane parametry wewnętrzne. Możemy jednak sprawić, że będzie to wyglądać jak krzyżowa walidacja (przy użyciu określonej funkcji utraty) poprzez wielokrotne stosowanie reguły produktu, a następnie rejestrowanie wyniku:Mi
p(D|MiI)=p(y1|MiI)p(y2…yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3…yN|y1y2MiI)
=⋯=∏i=1Np(yi|y1…yi−1MiI)
⟹log[p(D|MiI)]=∑i=1Nlog[p(yi|y1…yi−1MiI)]
Sugeruje to formę krzyżowej walidacji, ale w przypadku gdy zestaw treningowy jest stale aktualizowany, jedna obserwacja na raz z zestawu testowego - podobnie jak filtr Kalmana. Przewidujemy kolejną obserwację z zestawu testowego przy użyciu bieżącego zestawu treningowego, mierzymy odchylenie od obserwowanej wartości przy użyciu warunkowego prawdopodobieństwa log, a następnie aktualizujemy zestaw treningowy, aby uwzględnić nową obserwację. Należy jednak pamiętać, że ta procedura w pełni przetwarza wszystkie dostępne dane, jednocześnie upewniając się, że każda obserwacja jest testowana jako przypadek „poza próbą”. Jest również niezmienny, ponieważ nie ma znaczenia, co nazywacie „obserwacją 1” lub „obserwacją 10”; wynik jest taki sam (obliczenia mogą być łatwiejsze dla niektórych permutacji niż innych). Funkcja straty jest również „adaptacyjna”, jeśli zdefiniujemy L i iLi=log[p(yi|y1…yi−1MiI)] , to ostrość zależy od , ponieważ funkcja utraty jest stale aktualizowana o nowe dane.Lii
Sugerowałbym, że ocena modeli predykcyjnych w ten sposób działałaby całkiem dobrze.