Отличительный переоснащение против хорошего прогноза

Это вопросы о том, как рассчитать и уменьшить переоснащение в машинном обучении. Я думаю, что многие новички в машинном обучении будут иметь такие же вопросы, поэтому я постарался прояснить свои примеры и вопросы в надежде, что ответы здесь могут помочь другим.

У меня есть очень маленький образец текстов, и яЯ пытаюсь предсказать значения, связанные с ними. Я'мы использовали sklearn для вычисления tf-idf и вставили их в регрессионную модель для прогнозирования. Это дает мне 26 образцов с 6323 функциями - не много .. Я знаю:

>> 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)

Вставка этих 26 выборок из 6323 признаков (X) и связанных с ними оценок (y) вLinearRegression модель, дает хорошие прогнозы. Они получены с помощью перекрестной проверки без участия, из: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

Довольно хорошо! Использование нграмм (n = 300) вместо униграмм (n = 1) приводит к аналогичным результатам, что, очевидно, неверно. Ни в одном из текстов не встречается 300 слов, поэтому предсказание должно быть неудачным, но это не так.т:

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

Вопрос 1: Это может означать, что модель прогнозированияпереобучения данные. Я знаю это только потому, что я выбрал экстремальное значение для нграмм (n = 300), которое я ЗНАЮ, можетне дает хороших результатов. Но если бы я неЕсли бы у вас не было этих знаний, как бы вы обычно говорили, что модель слишком подходит? Другими словами, если бы использовалась разумная мера (n = 1), как вы узнали бы, что хороший прогноз был результатом того, что модель подходила лучше, чем модель?

Вопрос 2: Каков наилучший способ предотвращения чрезмерного соответствия (в этой ситуации), чтобы быть уверенным, что результаты прогноза хорошие или нет?

Вопрос 3: ЕслиLeaveOneOut используется перекрестная проверка, как модель может переопределиться с хорошими результатами? Избыточный подбор означает, что точность прогноза пострадает - так почему же нетне пострадает ли предсказание пропущенного текста? Единственная причина, о которой я могу подумать: в разреженной матрице tf-idf, состоящей в основном из 0, существует сильное совпадение между текстами, потому что очень много терминов равно 0 - регрессия тогда думает, что тексты коррелируют высоко.

Пожалуйста, ответьте на любой из вопросов, даже если вы нене знаю их всех. Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос