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.
Dokładność zestawu treningowego nie ma sensu w uczeniu maszynowym. Zignoruj to.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło