Отличительный переоснащение против хорошего прогноза
Это вопросы о том, как рассчитать и уменьшить переоснащение в машинном обучении. Я думаю, что многие новички в машинном обучении будут иметь такие же вопросы, поэтому я постарался прояснить свои примеры и вопросы в надежде, что ответы здесь могут помочь другим.
У меня есть очень маленький образец текстов, и яЯ пытаюсь предсказать значения, связанные с ними. Я'мы использовали 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 - регрессия тогда думает, что тексты коррелируют высоко.
Пожалуйста, ответьте на любой из вопросов, даже если вы нене знаю их всех. Спасибо!