Что происходит с проверочными данными после завершения обучения?

Не эксперт по машинному обучению, но обычный процесс, которому я следую, чтобы обучить модель машинного обучения, — это после очистки данных, разделения набора данных для обучения и тестирования с использованием разделения тестов обучения scikit-learn.

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X.values,
                                                y.values,
                                                test_size=0.30,
                                                random_state=0)

пропуская весь процесс построения модели... когда вы переходите к обучению модели (соответствует ей) после ее определения и компиляции, необходимо использовать параметр разделения проверки, как показано ниже.

history = model.fit(X_train, y_train, epochs=10,validation_split=0.2)

кажется, что это снова делит наборы обучающих данных на 20% точек данных, чтобы проверить нашу модель во время обучения. Если бы у вас было, скажем, 1000 точек данных (строк) в наборе данных, первый приведенный выше код приведет к 700 тренировочных точек данных для обучения и 300 для тестирования

второй снова разделит эти 700 на 20% для проверки, оставив как 640 точек данных для обучения и 160 для проверки

оставив нам небольшие данные для обучения нашей модели.

Недавно я столкнулся с методом, в котором вы используете тестовые данные для проверки, как показано ниже.

history = model.fit(x_train, y_train, validation_data=(x_test, y_test))

Мой вопрос заключается в том, что на самом деле произойдет с проверочными данными после завершения обучения, автоматически ли они добавляются для обучения нашей модели, каким-то образом улучшая нашу точность в конце, а также достаточно ли используются тестовые данные для проверки, и если мы это сделаем, будет ли это иметь эффект, когда мы пытаемся оценить нашу модель, используя тестовые данные.

Данные, которые я использую во время обучения для проверки модели, знают потери при проверке и точность проверки в каждую эпоху (с использованием глубокой нейронной сети).

Azaria Gebremichael 12.12.2020 11:24

а также после переобучения с использованием как обучения, так и проверки, мы должны снова переобучить нашу модель с использованием тестовых данных. в конце концов, перед развертыванием? каковы будут последствия этого и будет ли это зависеть от других факторов?

Azaria Gebremichael 12.12.2020 11:30

Когда вы позволяете модели выполнять разделение проверки для вас, неясно, будет ли модель повторно обучать данные проверки, в том числе. Вам следует обратиться к документации по вашей модели, и, если она неясна, выполните разделение проверки вручную и повторите обучение позже вручную. Sklearn GridSearchCV переобучит (переустановит параметр), keras - не уверен. Если есть сомнения, лучше сделать это вручную. Вы можете переучиться на тесте, если знаете метки, но в реальной жизни определение теста предполагает, что вы не знаете меток (см., например, соревнования Kaggle)

Sergey Bushmanov 12.12.2020 11:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
414
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как указано keras (последний метод model.fit с validation_data исходит от keras)

validation_split

Плавающая от 0 до 1. Доля обучающих данных, которые будут использоваться в качестве данные проверки. Модель будет выделять эту часть обучающие данные, не будет на них тренироваться, а будет оценивать потери и любые метрики модели по этим данным в конце каждой эпохи. данные проверки выбираются из последних выборок в данных x и y при условии, до перетасовки.

validation_data

Данные для оценки убытка и любые показатели модели в конце каждую эпоху. Модель не будет обучаться на этих данных. Это должно быть список (x_val, y_val) или список (x_val, y_val, val_sample_weights). validation_data переопределит validation_split.

Таким образом, с этой настройкой модель не будет обучаться на проверочных данных.

Теоретически данные проверки используются для оценки вашей модели и настройки ее гиперпараметров.

Если вам нужно запустить эту модель в производство, вы должны переобучить модель со всеми данными, зная, что производительность будет той, которую вы получили из данных проверки\тестирования.

В любом случае, производительность на данных проверки\тестирования часто является оптимистичной оценкой производительности.

источник

Другие вопросы по теме