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!

questionAnswers(1)

yourAnswerToTheQuestion