Odróżnianie przeuczenia od dobrej prognozy
Są to pytania dotyczące sposobu obliczania i ograniczania przeuczania w uczeniu maszynowym. Myślę, że wiele nowych metod uczenia się na maszynie będzie miało te same pytania, więc starałem się być jasny z moich przykładów i pytań w nadziei, że odpowiedzi tutaj mogą pomóc innym.
Mam bardzo małą próbkę tekstów i próbuję przewidzieć związane z nimi wartości. Użyłem sklearn do obliczenia tf-idf i wstawienia ich do modelu regresji do predykcji. Daje mi to 26 próbek z funkcjami 6323 - niewiele. Wiem:
>> count_vectorizer = CountVectorizer(min_n=1, max_n=1)
>> term_freq = count_vectorizer.fit_transform(texts)
>> transformer = TfidfTransformer()
>> X = transformer.fit_transform(term_freq)
>> print X.shape
(26, 6323)
Wstawienie tych 26 próbek 6323 cech (X) i powiązanych wyników (y), doLinearRegression
model, daje dobre prognozy. Uzyskuje się je za pomocą walidacji krzyżowej typu „jeden na jeden”, zcross_validation.LeaveOneOut(X.shape[0], indices=True)
:
using ngrams (n=1):
human machine points-off %error
8.67 8.27 0.40 1.98
8.00 7.33 0.67 3.34
... ... ... ...
5.00 6.61 1.61 8.06
9.00 7.50 1.50 7.50
mean: 7.59 7.64 1.29 6.47
std : 1.94 0.56 1.38 6.91
Całkiem dobre! Używając ngrams (n = 300) zamiast unigramów (n = 1), pojawiają się podobne wyniki, co oczywiście nie jest właściwe. W żadnym z tekstów nie ma 300 słów, więc przewidywanie powinno się nie udać, ale nie:
using ngrams (n=300):
human machine points-off %error
8.67 7.55 1.12 5.60
8.00 7.57 0.43 2.13
... ... ... ...
mean: 7.59 7.59 1.52 7.59
std : 1.94 0.08 1.32 6.61
Pytanie 1: Może to oznaczać, że model przewidywania jestprzeładowanie dane. Wiem to tylko dlatego, że wybrałem ekstremalną wartość dla ngrams (n = 300), której WIEM nie może dać dobrych wyników. Ale jeśli nie miałbym tej wiedzy, jak normalnie powiedziałbyś, że model jest zbyt dopasowany? Innymi słowy, jeśli użyto rozsądnej miary (n = 1), to skąd wiedziałbyś, że dobra prognoza była wynikiem nadmiaru w porównaniu z modelem, który po prostu działa dobrze?
Pytanie 2: Jaki jest najlepszy sposób zapobiegania nadmiernemu dopasowaniu (w tej sytuacji), aby mieć pewność, że wyniki prognozowania są dobre, czy nie?
Pytanie 3: JeśliLeaveOneOut
używana jest walidacja krzyżowa, w jaki sposób model może być nadmiernie dopasowany z dobrymi wynikami? Nadmierne dopasowanie oznacza, że dokładność przewidywania ucierpi - dlaczego więc nie cierpi na przewidywanie, że tekst zostanie pominięty? Jedynym powodem, dla którego mogę pomyśleć: w macierzy rzadkich tf-idf, głównie 0s, istnieje silne nakładanie się tekstów, ponieważ tak wiele terminów to 0s - regresja wtedy uważa, że teksty bardzo się korelują.
Odpowiedz na dowolne z pytań, nawet jeśli nie znasz ich wszystkich. Dzięki!