Rozróżnianie nadmiarowości a dobre przewidywanie

Są to pytania, jak obliczyć i zmniejszyć nadmierne dopasowanie w uczeniu maszynowym. Myślę, że wielu nowych w uczeniu maszynowym będzie miało te same pytania, więc starałem się być jasny z moimi przykładami i pytaniami w nadziei, że odpowiedzi tutaj mogą pomóc innym.

Mam bardzo małą próbkę tekstów i staram się przewidzieć wartości z nimi związane. Użyłem sklearn do obliczenia TF-idf i wstawiłem je do modelu regresji do przewidywania. Daje mi to 26 próbek z 6323 funkcjami - 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)

Umieszczenie tych 26 próbek 6323 cech (X) i związanych z nimi wyników (y), w modelu LinearRegression, daje dobre prognozy. Są one uzyskiwane za pomocą walidacji krzyżowej leave-one-out, z cross_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 nieźle! Używając ngramów (n=300) zamiast unigramów (N = 1), pojawiają się podobne wyniki, co oczywiście nie jest właściwe. Nie ma 300-słów w żadnym z tekstów, więc przepowiednia powinna zawieść, ale tak nie jest:
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 predykcyjny jest overforting danych. Wiem to tylko dlatego, że wybrałem ekstremalną wartość dla ngramów (n=300), które Wiem, że nie mogą przynieść dobrych wyników. Ale gdybym nie miał tej wiedzy, jak normalnie powiedziałbyś, że model jest zbyt dopasowany? Innymi słowy, jeśli zastosowano rozsądną miarę (n=1), Skąd wiesz, że dobra prognoza była wynikiem nadmiernego dopasowania w porównaniu z Modelem, który dopiero działa więc?

Pytanie 2: jaki jest najlepszy sposób zapobiegania nadmiernemu dopasowaniu (w tej sytuacji), aby mieć pewność, że wyniki prognoz są dobre, czy nie?

pytanie 3: jeśli używana jest Walidacja krzyżowa, w jaki sposób model może być nadmiernie dopasowany z dobrymi wynikami? Nadmierne dopasowanie oznacza, że ucierpi na tym dokładność przewidywania - dlaczego więc nie ucierpi na tym przewidywanie tekstu, który zostanie pominięty? Jedyny powód, dla którego mogę myśleć: w TF-idf sparse macierz głównie 0s, istnieje silne nakładanie się tekstów, ponieważ tak wiele terminów jest 0s-regresja uważa, że teksty silnie korelują.

Proszę odpowiedzieć na każde z pytań, nawet jeśli nie znasz ich wszystkich. Dzięki!
Author: Zach, 2012-09-03

1 answers

Jak zwykle zauważysz, że model jest zbyt dopasowany?

Jedną z przydatnych zasad {7]} jest to, że możesz być nadmiernie zadowolony, gdy wydajność Twojego modelu na własnym zestawie treningowym jest znacznie lepsza niż w zestawie walidacji wstrzymanej lub w ustawieniu walidacji krzyżowej. Ale to nie wszystko.

Wpis na blogu, który podlinkowałem, opisuje procedurę testowania na overfit: zestaw treningowy plot i błąd zestawu walidacyjnego jako funkcja zestawu treningowego rozmiar. Jeśli pokazują stabilną lukę na prawym końcu działki, prawdopodobnie nadajesz się.

Jaki jest najlepszy sposób zapobiegania nadmiernemu dopasowaniu (w tej sytuacji), aby mieć pewność, że wyniki prognoz są dobre, czy nie?

Użyj zestawu testów wstrzymanych. Ocenę tego zestawu wykonaj tylko wtedy, gdy całkowicie skończysz z wyborem modelu( strojenie hiperparametrów); nie trenuj na nim, nie używaj go w walidacji (cross -). Wynik uzyskany na zestawie testowym to model ocena końcowa. Powinno to pokazać, czy przypadkowo przekroczyłeś(aś) zestaw (y) sprawdzania poprawności.

[konferencje uczenia maszynowego są czasami skonfigurowane jak konkurs, gdzie zestaw testów jest przekazywany badaczom dopiero po dostarczy organizatorom swój ostateczny model. W międzyczasie mogą korzystać z zestawu treningowego według własnego uznania, np. testując modele z wykorzystaniem walidacji krzyżowej. Kaggle robi coś podobnego.]

If LeaveOneOut cross Walidacja jest używana, w jaki sposób model może być nadmiernie dopasowany z dobrymi wynikami?

Ponieważ możesz dostroić model tak bardzo, jak chcesz w tym ustawieniu weryfikacji krzyżowej, dopóki nie będzie prawie idealnie działał w CV.

Jako ekstremalny przykład, załóżmy, że zaimplementowałeś Estymator, który jest zasadniczo generatorem liczb losowych. Możesz próbować losowych nasion, dopóki nie trafisz "modelu", który generuje bardzo niski błąd w weryfikacji krzyżowej, ale nie trafisz odpowiedniego modelu. To znaczy, że za bardzo pasujesz do weryfikacji krzyżowej.

Zobacz także tę ciekawą historię wojenną .

 34
Author: Fred Foo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-02 12:33:13