Dokładność testu wyższa niż trening. Jak interpretować?


23

Mam zestaw danych zawierający maksymalnie 150 przykładów (z podziałem na szkolenia i testy), z wieloma funkcjami (ponad 1000). Muszę porównać klasyfikatory i metody wyboru cech, które dobrze sprawdzają się w danych. Tak więc używam trzech metod klasyfikacji (J48, NB, SVM) i 2 metod wyboru funkcji (CFS, WrapperSubset) z różnymi metodami wyszukiwania (Greedy, BestFirst).

Porównując, patrzę na dokładność treningu (5-krotnie składanie krzyżowe) i dokładność testu.

Oto jeden z wyników J48 i CFS-BestFirst:

{„dokładność szkolenia”: 95,83, „dokładność testu”: 98,21}

Wiele wyników jest takich, a na SVM jest wiele wyników wskazujących, że dokładność testu jest znacznie wyższa niż trening (szkolenie: 60%, test: 98%)

Jak w sposób znaczący zinterpretować tego rodzaju wyniki? Gdyby był niższy, powiedziałbym, że jest zbyt dobry. Czy w tym przypadku można coś powiedzieć o stronniczości i wariancji, patrząc na wszystkie wyniki? Co mogę zrobić, aby ta klasyfikacja była znacząca, na przykład ponownie wybrać zestawy szkoleniowe i testowe lub po prostu zastosować weryfikację krzyżową wszystkich danych?

Mam 73 szkolenia i 58 przypadków testowych. Niektóre odpowiedzi nie miały tych informacji, gdy zostały opublikowane.

Odpowiedzi:


20

Myślę, że pierwszym krokiem jest sprawdzenie, czy zgłoszone szkolenie i wydajność testu są w rzeczywistości prawidłowe.

  • Czy podział podczas 5-krotnej walidacji krzyżowej odbywa się w sposób, który daje statystycznie niezależne zestawy pociągów / testów cv? Np. Jeśli dane są powtarzane, czy zawsze kończą się w tym samym zestawie?
  • Dokładność 95,83% w 5-krotnym cv 150 próbek jest zgodna z 5 błędnymi ze 130 próbek treningowych dla 5 modeli zastępczych lub 25 błędnymi przypadkami dla 5 * 130 próbek treningowych.
  • Dokładność testu 98,21% jest trudniejsza do wyjaśnienia: podczas jednego przebiegu CV każdy przypadek należy przetestować jeden raz. Prawdopodobnie zgłoszone liczby powinny być w krokach co 100% / 150. 98,21% odpowiada 2,68 błędnym przypadkom (2 i 3 błędne spośród 150 przypadków testowych dają odpowiednio 98,67 i 98,00% dokładności).

  • Jeśli możesz wyodrębnić swój model, oblicz zgłoszone dokładności zewnętrznie.

  • Jakie są zgłaszane dokładności losowego wprowadzania danych?
  • Wykonaj zewnętrzną weryfikację krzyżową: podziel dane i przekaż tylko część szkoleniową do programu. Przewiduj „zewnętrzne” dane testowe i oblicz dokładność. Czy jest to zgodne z wynikami programu?
  • Upewnij się, że zgłoszona „dokładność testu” pochodzi z niezależnych danych (podwójna / zagnieżdżona walidacja krzyżowa): jeśli twój program dokonuje optymalizacji opartej na danych (np. Wybierając „najlepsze” funkcje przez porównanie wielu modeli), to bardziej przypomina błąd szkolenia (dobroć) dopasowania) niż jak błąd uogólnienia.

Zgadzam się z @mbq, że błąd szkolenia rzadko jest przydatny w uczeniu maszynowym. Ale może się zdarzyć, że jest to jedna z niewielu sytuacji, w których jest to przydatne: jeśli program wybiera „najlepszy” model, porównując dokładności, ale ma tylko błędy treningowe do wyboru, musisz sprawdzić, czy błąd treningowy rzeczywiście pozwala na sensowne wybór.
@mbq nakreślił najlepszy scenariusz dla modeli nie do odróżnienia. Jednak zdarzają się również gorsze scenariusze: podobnie jak dokładność testu, dokładność treningu również jest zależna od wariancji, ale ma optymistyczne nastawienie w porównaniu z dokładnością uogólnienia, która jest zwykle przedmiotem zainteresowania. Może to prowadzić do sytuacji, w której nie można rozróżnić modeli, chociaż tak naprawdę mają różne parametry. Ale ich dokładności treningowe (lub wewnętrzne cv) są zbyt bliskie, aby je rozróżnić ze względu na ich optymistyczne nastawienie. Np. Iteracyjne metody wyboru cech mogą podlegać takim problemom, które mogą nawet utrzymywać się dla wewnętrznych dokładności weryfikacji krzyżowej (w zależności od tego, w jaki sposób ta weryfikacja krzyżowa jest realizowana).

Jeśli więc taki problem może się pojawić, myślę, że dobrym pomysłem jest sprawdzenie, czy rozsądny wybór może wynikać ze dokładności, jakich program używa do podjęcia decyzji. Oznaczałoby to sprawdzenie, czy wewnętrzna dokładność cv (która rzekomo jest używana do wyboru najlepszego modelu) nie jest lub nie jest zbyt optymistycznie tendencyjna w stosunku do zewnętrznego cv z statystycznie niezależnym podziałem. Ponownie, syntetyczne i / lub losowe dane mogą pomóc dowiedzieć się, co faktycznie robi program.

Drugim krokiem jest sprawdzenie, czy zaobserwowane różnice dla statystycznie niezależnych podziałów są znaczące, jak już wskazał @mbq.

Sugeruję, aby obliczyć, jaką różnicę dokładności należy obserwować przy danej wielkości próbki, aby uzyskać statystycznie znaczącą różnicę. Jeśli zaobserwowana zmienność jest mniejsza, nie można zdecydować, który algorytm jest lepszy dla danego zestawu danych: dalsza optymalizacja nie ma sensu.


jest tu świetna informacja do strawienia. po pierwsze, bardzo mi przykro, że nie podałem dokładnych liczb, ponieważ nie spodziewałem się, że dostaniecie tak szczegółowe liczby, a także chciałem skupić się na jednym temacie. w każdym razie mam 73 szkolenia i 58 danych testowych. nie są one rozdzielone statystycznie, zostały po prostu wzięte przeze mnie w różnych czasach. Próbki szkoleniowe są najpierw brane pod uwagę w algorytmie wyboru funkcji (metoda owijania również ma wewnętrzne pięciokrotne cv), a następnie pięciokrotnie i pobierana jest najlepsza dokładność, a model jest zapisywany. a następnie ten model jest używany do obliczania dokładności testu.
ercu

16

Dokładność zestawu treningowego nie ma sensu w uczeniu maszynowym. Zignoruj ​​to.


dzięki! mam wiele wyników z tą samą najlepszą dokładnością testu, więc nie mogę teraz porównać wyników (chciałbym również sprawdzić dokładność szkolenia, aby porównać, jeśli nie powiedziałeś tego :). więc zamiast podziału na testy i szkolenie, czy wielokrotne przeprowadzanie weryfikacji krzyżowej we wszystkich zestawach danych jest bardziej odpowiednie dla mojego przypadku do porównania wyników? czy potrzebuję innych danych?
ercu

1
CV jest z pewnością dobrym pomysłem; w każdym razie zauważ, że może istnieć kilka „najlepszych” algorytmów lub zestawów parametrów (w tym sensie, że dają one taką samą lub statystycznie nie do odróżnienia dokładność od najlepszego przypadku) - to też nie jest problem. Co więcej, oznacza to, że uzyskujesz stabilne wyniki - ostry optimum może sugerować, że model został dopasowany przez parametry wybierające wiśnie.

8
Dobrze jest znać dokładność zestawu treningowego, aby oszacować stopień nadmiernego dopasowania algorytmu predykcyjnego (obliczając różnicę dokładności między zestawami treningowymi a testowymi).
Frank Harrell,

Czy możesz wyjaśnić dlaczego?
inf.

1
Z definicji metody ML dotyczą wydajności niewidzialnych danych, dlatego nie dają żadnych gwarancji dotyczących tego wyniku (model nie powinien ponownie wdrożyć mechanizmu leżącego u podstaw danych, jak w przypadku modelowania statystycznego). W praktyce wiele metod podaje zbyt dokładne prognozy, dlatego jest to tylko mylące.

6

Jest kilka poważnych problemów z tym, jak sobie z tym poradziłeś. Przede wszystkim dzielenie danych jest niewiarygodne, chyba że całkowita wielkość próby jest ogromna. Jeśli podzielisz się ponownie, uzyskasz inne wyniki. Między innymi nie bierzesz pod uwagę przedziałów ufności dotyczących szacunków dokładności. Po drugie, 5-krotna walidacja krzyżowa nie jest wystarczająco precyzyjna. Może być konieczne powtórzenie go 100 razy, aby osiągnąć odpowiednią precyzję. Po trzecie, jako wynik dokładności wybrałeś nieciągłą niewłaściwą regułę punktacji (odsetek prawidłowo sklasyfikowany). Taka niewłaściwa reguła punktacji doprowadzi do wyboru niewłaściwego modelu.


3

Zakładając, że nie ma usterki w implementacji algorytmów, spójrzmy na problem.

Wyobraź sobie, że pobierasz mały podzbiór z danych treningowych i uruchamiasz na nim swój algorytm uczenia się. Oczywiście zrobi to bardzo dobrze. Zawsze można wyodrębnić podzbiór, który osiąga dokładność zbliżoną do 98%.

Czy Twoje dane testowe są bardzo podobne do tego podzbioru? Jeśli tak, to musisz iść i zebrać więcej danych, miejmy nadzieję nieco bardziej zróżnicowanych. Z punktu widzenia odchylenia wstępnego powiedziałbym, że Twoja wariancja jest wysoka.


1

Masz zbyt wiele funkcji (1000) dla liczby posiadanych próbek (150). Musisz zwiększyć liczbę próbek lub liczbę funkcji.

Mówią zwykle, że liczba funkcji ^ 2 = liczba potrzebnych próbek. Potrzebujesz więc co najmniej miliona próbek.


0

Może się to zdarzyć przy użyciu dowolnego algorytmu ML, a nawet niestandardowych klasyfikatorów. Wypróbuj różne schematy k-krotnej weryfikacji krzyżowej, tj. 2 lub 10-krotne. Przy wyższych wartościach k oczekuje się zmniejszenia błędu testu.

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.