开发者

When should I stop training neural network for classification using Cross Validation Method

I am now implementing neural network for classification. I use backpropagation algorithm to train. I use Cross validation method. But I am not clear when should I stop training the neural network.

Next one is how to check overfitting and underfitting.

I have a data set which has 1,000 pattern. I use 10 fold cross validation method. So 1 Fold has 100 pattern. I train with 900 pattern and test with 100 pattern.

Although I change no of hidden nodes and no of epoch, testing accuracy is not change very much. But I feed training data to trained network, accuracy of training is vary according to no of hidden nodes and no of epoch. Is My idea enough for checking overfitting and underfitting? Can I determine overfitting and underfitting only with accuracy?

I want to also ask some question continue with this. I post my result, that test with various hidden nodes and various no of epoch. As I told, I use开发者_JAVA百科 cross validation, I use only one network(which get maximum on test accuracy) from 10 trained networks.

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=100
Network 0 on Test=75.0 , onTrain= 97.11111111111111
Network 1 on Test=72.0 , onTrain= 98.22222222222223
Network 2 on Test=69.0 , onTrain= 97.88888888888889
> Network 3 on Test=78.0 , onTrain= 97.44444444444444
Network 4 on Test=77.0 , onTrain= 97.77777777777777
Network 5 on Test=77.0 , onTrain= 97.11111111111111
Network 6 on Test=69.0 , onTrain= 97.55555555555556
Network 7 on Test=74.0 , onTrain= 98.22222222222223
Network 8 on Test=76.0 , onTrain= 97.77777777777777
Network 9 on Test=74.0 , onTrain= 97.55555555555556

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=70
Network 0 on Test=71.0 , onTrain= 93.22222222222221
Network 1 on Test=70.0 , onTrain= 93.33333333333333
Network 2 on Test=76.0 , onTrain= 89.88888888888889
Network 3 on Test=80.0 , onTrain= 93.55555555555556
Network 4 on Test=77.0 , onTrain= 93.77777777777779
> Network 5 on Test=81.0 , onTrain= 92.33333333333333
Network 6 on Test=77.0 , onTrain= 93.0
Network 7 on Test=73.0 , onTrain= 92.33333333333333
Network 8 on Test=75.0 , onTrain= 94.77777777777779
Network 9 on Test=70.0 , onTrain= 93.11111111111111

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=50

Network 0 on Test=73.0 , onTrain= 87.8888888888889
Network 1 on Test=74.0 , onTrain= 89.22222222222223
Network 2 on Test=73.0 , onTrain= 87.1111111111111
Network 3 on Test=66.0 , onTrain= 90.44444444444444
Network 4 on Test=82.0 , onTrain= 88.77777777777777
Network 5 on Test=80.0 , onTrain= 88.44444444444444
Network 6 on Test=67.0 , onTrain= 88.33333333333333
Network 7 on Test=75.0 , onTrain= 87.8888888888889
Network 8 on Test=78.0 , onTrain= 87.44444444444444
Network 9 on Test=73.0 , onTrain= 85.0

The First Network( no of epoch=100) best network get accuracy on Test is 78.0 but on train is 97.4444. Is it mean overfitting? If this is overfitting, is the Third Network( no of epoch=50) best network get accuracy on test is 82.0 and on train is 88.777 acceptable? If not acceptable, should I decrease no of epoch?


See this answer for more details: whats is the difference between train, validation and test set, in neural networks?

OR if you like pseudo code, this is approximately what it would look like:

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜