В чем разница между поездом, валидацией и набором тестов в нейронных сетях?
Я использую библиотека для реализации обучения агентов.
Я создал обучающие случаи, но я не знаю точно, что такое наборы проверки и тестирования.
Учитель говорит:
70% должны быть случаи тренировки, 10% будут тестовыми случаями и остальные 20% должны быть случаями утверждения.
edit
у меня есть этот код для обучения, но я понятия не имею, когда остановка обучение.
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
edit
Я могу получить среднюю ошибку 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
4 ответа:
наборы обучения и проверки используются во время обучения.
for each epoch for each training data instance propagate error through the network adjust the weights calculate the accuracy over training data for each validation data instance calculate the accuracy over the validation data if the threshold validation accuracy is met exit training else continue training
после того, как вы закончите обучение, то вы запустите против вашего набора тестирования и убедитесь, что точность достаточна.
Обучающий Набор: этот набор данных используется для настройки весов нейронной сети.
Проверки: этот набор данных используется для минимизации переобучения. Вы не корректируете вес сети с помощью этого набора данных, вы просто проверка того, что любое увеличение точности по набору обучающих данных фактически приводит к увеличению точности по набору данных, который ранее не был показан сети, или, по крайней мере, сеть не обучалась на нем (т. е. набор данных проверки). Если точность по набору данных обучения увеличивается, но точность по набору данных проверки остается прежней или уменьшается, то вы перекрываете свою нейронную сеть, и вы должны прекратить обучение.
Тестирование Набор: это набор данных используется только для тестирования конечного решения с целью подтверждения фактической прогностической мощности сети.
обучающий набор: набор примеров, используемых для обучения, то есть, чтобы соответствовать параметры [т. е. веса] классификатора.
проверки: Набор примеров, используемых для настройки параметров [т. е. архитектуры, а не Весов] классификатора, например, для выбора количества скрытых единиц в нейронной сети.
набор перекрестной проверки используется для выбора модели, например, выберите полиномиальную модель с наименьшим количеством ошибок для данного набора параметров. Затем тестовый набор используется для сообщения об ошибке обобщения для выбранной модели. Отсюда: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets
в простых словах определить набор обучения, набор тестов, набор проверки
обучающий набор: используется для поиска ближайших соседей. Набор проверки: предназначен для поиска различных k, которые применяются к набору поездов. Тестовый набор: используется для поиска максимальной точности и невидимых данных в будущем.