#python #validation #machine-learning
#python #проверка #машинное обучение
Вопрос:
Что произойдет, если я использую одни и те же данные обучения и данные проверки для своего классификатора машинного обучения?
Ответ №1:
Если данные поезда и данные проверки совпадают, обученный классификатор будет иметь высокую точность, поскольку он уже видел данные. Вот почему мы используем разбиения на обучающие тесты. Мы берем 60-70% обучающих данных для обучения классификатора, а затем запускаем классификатор против 30-40% данных, данных проверки, которые классификатор еще не видел. Это помогает измерить точность классификатора и его поведение, например, чрезмерную подгонку или недостаточную подгонку, по сравнению с реальным набором тестов без меток.
Комментарии:
1. Это неверно. Классификатор не будет иметь точность 99% только потому, что вы используете одни и те же данные для проверки.
Ответ №2:
Мы создаем несколько моделей, а затем используем проверку, чтобы увидеть, какая модель показала наилучшие результаты. Мы также используем данные проверки, чтобы снизить сложность нашей модели до нужного уровня. Если вы используете данные обучения в качестве данных проверки, вы достигнете невероятно высокого уровня успеха (ваш коэффициент неправильной классификации или среднеквадратичная ошибка будут крошечными), но когда вы применяете модель к реальным данным, которые не взяты из ваших данных обучения, ваша модель будет работать очень плохо. Это называется ПЕРЕОПРЕДЕЛЕНИЕМ данных для обучения.
Комментарии:
1. Вы не сможете переобучиться, если сначала не построите модель с высокой дисперсией. Простое использование данных проверки не означает, что вы будете перегружены. Вместо этого это будет означать, что вы не сможете определить, происходит ли переобучение
Ответ №3:
По сути, ничего не происходит. Вы просто пытаетесь проверить производительность вашей модели на тех же данных, на которых она была обучена, что практически не дает ничего другого или полезного. Это все равно, что научить кого-то распознавать яблоко и попросить его распознать то же самое яблоко и посмотреть, как они работают.
Почему тогда используется набор проверки? Короче говоря, предполагается, что наборы для обучения и проверки сгенерированы из одного и того же дистрибутива, и, таким образом, модель, обученная на обучающем наборе, должна работать почти одинаково хорошо на примерах из набора проверки, которые она раньше не видела.
Ответ №4:
Как правило, мы разделяем данные на проверку и обучение, чтобы предотвратить переобучение. Чтобы объяснить это, мы можем представить модель, которая классифицирует, является ли она человеком или нет, и у вас есть набор данных, содержащий 1000 человеческих изображений. Если вы обучите свою модель всем своим изображениям в этом наборе данных и снова подтвердите ее с тем же набором данных, ваша точность составит 99%. Однако, когда вы помещаете другое изображение из другого набора данных для классификации вашей моделью, ваша точность будет намного ниже первой. Таким образом, обобщение модели для этого примера — это обучение модели, ищущей крупье, чтобы определить, в основном это человек или нет, вместо того, чтобы искать конкретного красивого блондина. Поэтому мы разделяем набор данных на проверку и обучение, чтобы обобщить модель и предотвратить переобучение.
Комментарии:
1. Это неверно. Классификатор не будет иметь точность 99% только потому, что вы используете одни и те же данные для проверки.
Ответ №5:
TLDR;
Если вы используете один и тот же набор данных для обучения и проверки, то:
training_accuracy = testing_accuracy
Ваш testing_accuracy
будет таким же, как training_accuracy
если бы вы использовали обучающий набор данных в качестве набора данных проверки. Поэтому вы НЕ сможете определить, имеет ли ваша модель underfit
или нет.
Давайте поговорим о наборах данных и показателях оценки. Вот некоторая терминология (ссылка) —
Наборы данных:
- Обучающий набор данных: данные, используемые для соответствия модели.
- Набор данных для проверки: данные, используемые для проверки способности модели к обобщению или для ранней остановки во время процесса обучения. В большинстве случаев это то же самое, что и тестовый набор данных
Оценки:
- Точность обучения: точность, которую вы достигаете при сравнении прогнозов и фактических данных из самих обучающих данных.
- Точность тестирования: точность, которую вы достигаете при сравнении прогнозов и фактических данных из данных тестирования / проверки.
С training_accuracy
помощью вы можете получить представление о том, насколько хорошо модель соответствует вашим данным, и testing_accuracy
о том, насколько хорошо эта модель поддается обобщению. Если train_accuracy
значение низкое, то ваша модель имеет underfitted
, и вам может понадобиться лучшая модель (лучшие функции, другая архитектура и т. Д.) Для моделирования данной проблемы. Если training_accuracy
значение высокое, но testing_accuracy
низкое, это означает, что ваша модель хорошо подходит для данных, но она не может быть обобщена на невидимые данные. Это overfitting
.
Примечание: На практике лучше иметь модель overfit и сильно упорядочивать ее, а не работать с моделью underfit.
Еще одна важная вещь, которую вам нужно понять, что обучение модели ( fit
) и вывод из модели ( predict
/ score
) — это 2 отдельные задачи. Поэтому, когда вы используете набор данных проверки в качестве обучающего набора данных, вы в основном остаетесь training
моделью в том же обучающем наборе данных, но пока inference
вы используете обучающий набор данных, который даст вам ту же точность, training_accuracy
что и .
Поэтому вы не узнаете, если вообще overfit
узнаете, НО это не значит, что вы получите точность 99%, как в другом ответе, который предлагается! Вы все равно можете underfit
получить чрезвычайно низкую точность модели