Jestem więc nowicjuszem w dziedzinie ML i staram się dokonać klasyfikacji. Moim celem jest przewidzieć wynik wydarzenia sportowego. Zebrałem trochę danych historycznych i teraz próbuję wyszkolić klasyfikatora. Dostałem około 1200 próbek, z czego 0,2 oddzieliłem do celów testowych, inne poddałem wyszukiwaniu sieci (w tym walidacji krzyżowej) z różnymi klasyfikatorami. Do tej pory wypróbowałem SVM z jądrem liniowym, rbf i wielomianowym oraz Random Forests. Niestety nie mogę uzyskać dokładności znacznie większej niż 0,5 (to samo, co losowy wybór klasy). Czy to oznacza, że po prostu nie mogę przewidzieć wyniku tak złożonego wydarzenia? Czy mogę uzyskać dokładność co najmniej 0,7-0,8? Jeśli to wykonalne, to w co powinienem spojrzeć dalej?
- Uzyskaj więcej danych? (Mogę powiększyć zestaw danych do 5 razy)
- Wypróbować różne klasyfikatory? (Regresja logistyczna, kNN itp.)
- Ponownie ocenić mój zestaw funkcji? Czy są jakieś narzędzia ML do analizy, które funkcje mają sens, a które nie? Może powinienem zmniejszyć zestaw funkcji (obecnie mam 12 funkcji)?
Odpowiedzi:
Przede wszystkim, jeśli twój klasyfikator nie robi nic lepszego niż przypadkowy wybór, istnieje ryzyko, że po prostu nie ma związku między cechami a klasą. Dobrym pytaniem, jakie należy sobie zadać w takiej sytuacji, jest to, czy pogoda lub ekspert domeny może wnioskować o klasie (z dokładnością większą niż losowy klasyfikator) na podstawie danych cech. Jeśli nie, to uzyskanie większej liczby wierszy danych lub zmiana klasyfikatora nie pomoże. Musisz uzyskać więcej danych przy użyciu różnych funkcji.
Z drugiej strony, jeśli uważasz, że informacje potrzebne do wnioskowania o klasie znajdują się już na etykietach, powinieneś sprawdzić, czy twój klasyfikator cierpi z powodu wysokiego błędu lub dużej wariancji.
Aby to zrobić, wykreśl błąd sprawdzania poprawności i błąd zestawu treningowego, jako funkcję przykładów treningowych.
Jeśli linie wydają się zbieżne do tej samej wartości i są bliskie na końcu, twój klasyfikator ma duże odchylenie i dodanie większej ilości danych nie pomoże. Dobrym pomysłem w tym przypadku jest albo zmiana klasyfikatora na taki, który ma większą wariancję, albo po prostu obniżenie parametru regularyzacji bieżącego.
Z drugiej strony, jeśli linie są dość daleko od siebie i masz niski błąd zestawu treningowego, ale wysoki błąd walidacji, to twój klasyfikator ma zbyt dużą wariancję. W takim przypadku bardzo prawdopodobne jest uzyskanie większej ilości danych. Jeśli po uzyskaniu większej ilości danych wariancja nadal będzie zbyt wysoka, możesz zwiększyć parametr regularyzacji.
To są ogólne zasady, których chciałbym użyć, gdy napotkam taki problem.
Twoje zdrowie.
źródło
Sugerowałbym cofnięcie się o krok i wykonanie eksploracyjnej analizy danych przed próbą klasyfikacji. Warto sprawdzić swoje cechy indywidualnie, aby sprawdzić, czy istnieje jakikolwiek związek z wynikiem zainteresowania - może to oznaczać, że posiadane funkcje nie mają żadnego związku z etykietami klas. Skąd wiesz, czy funkcje, które posiadasz, będą przydatne?
Możesz zacząć od testowania hipotez lub analizy korelacji w celu sprawdzenia zależności. Generowanie histogramów specyficznych dla klasy dla cech (tj. Wykreślanie histogramów danych dla każdej klasy, dla danej cechy na tej samej osi) może być również dobrym sposobem na wykazanie, czy cecha dobrze rozróżnia dwie klasy.
Należy jednak pamiętać, aby wyniki analizy eksploracyjnej nie wpływały na decyzje dotyczące klasyfikacji. Wybór funkcji do klasyfikacji na podstawie wcześniejszej analizy eksploracyjnej tych samych danych może prowadzić do przeszacowania i tendencyjnego oszacowania wydajności (patrz tutaj dyskusja ), ale analiza eksploracyjna przynajmniej da ci pojęcie, czy zadanie, które próbujesz wykonać, to w ogóle możliwy.
źródło
Dobrze, że podzieliłeś swoje dane na dane treningowe i dane testowe.
Czy Twój błąd treningowy spadł podczas treningu? Jeśli nie, możesz mieć błąd w algorytmie treningowym. Oczekujesz, że błąd w zestawie testowym będzie większy niż błąd w zestawie treningowym, więc jeśli masz niedopuszczalnie wysoki błąd w zestawie treningowym, nie ma nadziei na sukces.
Pozbycie się funkcji może uniknąć niektórych rodzajów przeregulowania. Nie powinno to jednak poprawiać błędu w zestawie treningowym. Niski błąd w zestawie treningowym i wysoki błąd w zestawie testowym może wskazywać na to, że nadmiernie się trenujesz, używając zbyt elastycznego zestawu funkcji. Jednak bezpieczniej jest to sprawdzić poprzez weryfikację krzyżową niż w zestawie testowym. Po wybraniu zestawu funkcji na podstawie zestawu testowego nie jest on już ważny jako zestaw testowy.
źródło
Dlaczego nie zastosować zasady „najpierw spójrz na wykresy danych”. Jedną rzeczą, którą możesz zrobić, jest wykres rozrzutu 2 D dwóch klasowych gęstości warunkowych dla dwóch zmiennych towarzyszących. Jeśli spojrzysz na nie i nie zauważysz praktycznie żadnej separacji, która może wskazywać na brak przewidywalności, możesz to zrobić ze wszystkimi współzmiennymi. To daje kilka pomysłów na temat możliwości wykorzystania tych zmiennych towarzyszących do przewidywania. Jeśli widzisz nadzieję, że zmienne te mogą się trochę rozdzielić, zacznij myśleć o liniowych dyskryminatorach, kwadratowych dyskryminatorach, dyskryminacji jądra, regularyzacji, klasyfikacji drzew, SVM itp.
źródło