Я использую эту библиотеку для реализации учебного агента.
Я создал учебные примеры, но я не знаю точно, что такое наборы валидации и тестирования.
Учитель говорит:
70% должны быть обучающими случаями, 10% будут контрольными случаями, а остальные 20% должны быть проверочными.
редактировать
У меня есть этот код для обучения, но я не знаю, когда прекратить обучение.
def train(self, train, validation, N=0.3, M=0.1):
# N: learning rate
# M: momentum factor
accuracy = list()
while(True):
error = 0.0
for p in train:
input, target = p
self.update(input)
error = error + self.backPropagate(target, N, M)
print "validation"
total = 0
for p in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output
accuracy.append(total)
print min(accuracy)
print sum(accuracy[-5:])/5
#if i % 100 == 0:
print 'error %-14f' % error
if ? < ?:
break
редактировать
Я могу получить среднюю ошибку 0,2 с данными проверки, возможно, после 20 итераций обучения, это должно быть 80%?
средняя ошибка = сумма абсолютной разницы между целевым значением и выходным значением, учитывая ввод данных проверки / размер данных проверки.
1
avg error 0.520395
validation
0.246937882684
2
avg error 0.272367
validation
0.228832420879
3
avg error 0.249578
validation
0.216253590304
...
22
avg error 0.227753
validation
0.200239244714
23
avg error 0.227905
validation
0.199875013416
Ответы:
Наборы для обучения и проверки используются во время обучения.
После того, как вы закончите тренировку, вы наберете тестовый набор и убедитесь, что точность достаточна.
Учебный набор : этот набор данных используется для настройки весов в нейронной сети.
Набор для проверки : этот набор данных используется для минимизации перенастройки. Вы не корректируете вес сети с помощью этого набора данных, вы просто проверяете, что любое повышение точности по сравнению с набором обучающих данных фактически приводит к увеличению точности по сравнению с набором данных, который ранее не был показан в сети, или, по крайней мере, сеть не обучалась этому (то есть набор данных проверки). Если точность набора обучающих данных увеличивается, но точность набора проверочных данных остается неизменной или уменьшается, то вы перегружаете свою нейронную сеть и должны прекратить обучение.
Набор тестирования : этот набор данных используется только для тестирования окончательного решения с целью подтверждения фактической предсказательной мощности сети.
источник
validation set
ни другое неtest set
используются для настройки весов нейронной сети. Почему вы не можете использовать тот же набор данных, не использованный для тренировки весов, какvalidation set
иtest set
? Что получается, если держать их отдельно?Из раздела ftp://ftp.sas.com/pub/neural/FAQ1.txt « Что такое население, выборка, набор для обучения, набор для разработки, проверка »
Поверхность ошибки будет отличаться для разных наборов данных из вашего набора данных (пакетное обучение). Поэтому, если вы найдете очень хорошие локальные минимумы для данных вашего набора тестов, это может быть не очень хорошей точкой, а может быть очень плохой точкой на поверхности, сгенерированной некоторым другим набором данных для той же проблемы. Поэтому вам необходимо вычислить такую модель, которая не только находит хорошую конфигурацию веса для тренировочного набора, но также должна быть в состоянии предсказать новые данные (которых нет в тренировочном наборе) с хорошей ошибкой. Другими словами, сеть должна иметь возможность обобщать примеры так, чтобы она изучала данные, а не просто запоминала или загружала тренировочный набор, перегружая тренировочные данные.
Набор данных проверки - это набор данных для функции, которую вы хотите изучить, которую вы не используете напрямую для обучения сети. Вы тренируете сеть с набором данных, который вы называете набором обучающих данных. Если вы используете алгоритм на основе градиента для обучения сети, то поверхность ошибки и градиент в некоторой точке будут полностью зависеть от набора обучающих данных, таким образом, набор обучающих данных напрямую используется для корректировки весов. Чтобы убедиться, что вы не перегружаете сеть, вам нужно ввести проверочный набор данных в сеть и проверить, находится ли ошибка в некотором диапазоне. Поскольку набор валидации не используется напрямую для настройки весов сетевых операций, поэтому хорошая ошибка для валидации, а также для набора тестов указывает на то, что сеть хорошо прогнозирует примеры наборов поездов,
Ранняя остановка - это способ прекратить тренировки. Доступны различные варианты, основной план состоит в том, что отслеживаются ошибки как поезда, так и набора проверки, ошибка поезда уменьшается на каждой итерации (backprop и brothers) и сначала уменьшается ошибка проверки. Обучение останавливается в тот момент, когда ошибка проверки начинает расти. Конфигурация веса в этой точке указывает модель, которая хорошо предсказывает данные тренировки, а также данные, которые не видны сетью . Но потому что данные проверки на самом делевлияет на конфигурацию веса косвенно, чтобы выбрать конфигурацию веса. Именно здесь вступает тестовый набор. Этот набор данных никогда не используется в процессе обучения. Как только модель выбрана на основе набора проверки, данные набора тестов применяются к сетевой модели и обнаруживается ошибка для этого набора. Эта ошибка является представителем ошибки, которую мы можем ожидать от абсолютно новых данных для той же проблемы.
РЕДАКТИРОВАТЬ:
Кроме того, в случае, если у вас недостаточно данных для набора проверки, вы можете использовать перекрестную проверку для настройки параметров, а также для оценки ошибки теста.
источник
Набор перекрестной проверки используется для выбора модели, например, выберите полиномиальную модель с наименьшим количеством ошибок для данного набора параметров. Затем набор тестов используется для сообщения об ошибке обобщения выбранной модели. Отсюда: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets
источник
Мы создаем набор для проверки
Почему используется набор проверки :
источник
Скажем, вы тренируете модель на тренировочном наборе, а затем измеряете ее производительность на тестовом наборе. Вы думаете, что еще есть возможности для улучшения, и вы пытаетесь настроить гиперпараметры (если модель является нейронной сетью - гиперпараметры - это число слоев или узлов в слоях). Теперь вы получаете чуть лучшую производительность. Однако, когда модель подвергается воздействию других данных (не входящих в набор для тестирования и обучения), вы можете не получить такой же уровень точности. Это связано с тем, что при настройке гиперпараметров вы внесли некоторый уклон, чтобы повысить точность тестового набора. Вы в основном адаптировали модель и гиперпараметры, чтобы получить лучшую модель для этого конкретного учебного набора.
Распространенным решением является дальнейшее разделение обучающего набора для создания проверочного набора . Теперь у вас есть
Вы продолжаете, как и раньше, но на этот раз вы используете набор проверки для проверки производительности и настройки гиперпараметров. В частности, вы обучаете несколько моделей с различными гиперпараметрами в сокращенном обучающем наборе (то есть полном обучающем наборе за вычетом проверочного набора) и выбираете модель, которая лучше всего работает в проверочном наборе.
После того, как вы выбрали самую эффективную модель в наборе проверки, вы обучаете лучшую модель на полном обучающем наборе (включая набор проверки), и это дает вам окончательную модель.
Наконец, вы оцениваете эту окончательную модель на тестовом наборе, чтобы получить оценку ошибки обобщения.
источник
Набор обучающих данных : выборка данных, используемая для соответствия модели.
Набор данных проверки : выборка данных, используемая для обеспечения объективной оценки соответствия модели набору обучающих данных при настройке гиперпараметров модели. Оценка становится более предвзятой, так как навык в наборе данных проверки включается в конфигурацию модели.
Набор тестовых данных : выборка данных, используемая для объективной оценки окончательной модели, подходящей для набора обучающих данных.
источник
Простыми словами определить набор обучения, набор испытаний, набор проверки
Учебный набор: используется для поиска ближайших соседей. Набор для проверки: предназначен для нахождения различных k, которые применяются к набору поездов. Тестовый набор: используется для нахождения максимальной точности и невидимых данных в будущем.
источник