2015-06-15 1 views
0

Я новичок в weka, и у меня есть проблема с моим проектом классификации, использующим его.Большая разница в точности между перекрестной проверкой и тестированием с помощью тестового набора в weka? это нормально?

У меня есть набор данных поезда с 1000 экземплярами и один из 200 для тестирования. Проблема в том, что когда я пытаюсь проверить производительность некоторых алгоритмов (например, randomforest), число, заданное перекрестной проверкой и набором тестов, действительно отличается.

Вот пример с перекрестной проверкой

=== Run information === 

Scheme:weka.classifiers.trees.RandomForest -I 100 -K 0 -S 1 
Relation:  testData-weka.filters.unsupervised.attribute.StringToWordVector-R1-W10000000-prune-rate-1.0-T-I-N0-L-stemmerweka.core.stemmers.IteratedLovinsStemmer-M1-O-tokenizerweka.core.tokenizers.WordTokenizer -delimiters " \r\n\t.,;:\"\'()?!--+-í+*&#$\\/=<>[]_`@"-weka.filters.supervised.attribute.AttributeSelection-Eweka.attributeSelection.InfoGainAttributeEval-Sweka.attributeSelection.Ranker -T 0.0 -N -1 
Instances: 1000 
Attributes: 276 
[list of attributes omitted] 
Test mode:10-fold cross-validation 

=== Classifier model (full training set) === 

Random forest of 100 trees, each constructed while considering 9 random features. 
Out of bag error: 0.269 



Time taken to build model: 4.9 seconds 

=== Stratified cross-validation === 
=== Summary === 

Correctly Classified Instances   740    74  % 
Incorrectly Classified Instances  260    26  % 
Kappa statistic       0.5674 
Mean absolute error      0.2554 
Root mean squared error     0.3552 
Relative absolute error     60.623 % 
Root relative squared error    77.4053 % 
Total Number of Instances    1000  

=== Detailed Accuracy By Class === 

       TP Rate FP Rate Precision Recall F-Measure ROC Area Class 
       0.479  0.083  0.723  0.479  0.576  0.795 I 
       0.941  0.352  0.707  0.941  0.808  0.894 E 
       0.673  0.023  0.889  0.673  0.766  0.964 R 
Weighted Avg. 0.74  0.198  0.751  0.74  0.727  0.878 

=== Confusion Matrix === 

    a b c <-- classified as 
149 148 14 | a = I 
    24 447 4 | b = E 
    33 37 144 | c = R 

72,5%, это что-то ...

Но теперь, если я пытаюсь с моим тестовым набором 200 экземпляров ...

=== Run information === 

Scheme:weka.classifiers.trees.RandomForest -I 100 -K 0 -S 1 
Relation:  testData-weka.filters.unsupervised.attribute.StringToWordVector-R1-W10000000-prune-rate-1.0-T-I-N0-L-stemmerweka.core.stemmers.IteratedLovinsStemmer-M1-O-tokenizerweka.core.tokenizers.WordTokenizer -delimiters " \r\n\t.,;:\"\'()?!--+-í+*&#$\\/=<>[]_`@"-weka.filters.supervised.attribute.AttributeSelection-Eweka.attributeSelection.InfoGainAttributeEval-Sweka.attributeSelection.Ranker -T 0.0 -N -1 
Instances: 1000 
Attributes: 276 
[list of attributes omitted] 
Test mode:user supplied test set: size unknown (reading incrementally) 

=== Classifier model (full training set) === 

Random forest of 100 trees, each constructed while considering 9 random features. 
Out of bag error: 0.269 



Time taken to build model: 4.72 seconds 

=== Evaluation on test set === 
=== Summary === 

Correctly Classified Instances   86    43  % 
Incorrectly Classified Instances  114    57  % 
Kappa statistic       0.2061 
Mean absolute error      0.3829 
Root mean squared error     0.4868 
Relative absolute error     84.8628 % 
Root relative squared error    99.2642 % 
Total Number of Instances    200  

=== Detailed Accuracy By Class === 

       TP Rate FP Rate Precision Recall F-Measure ROC Area Class 
       0.17  0.071  0.652  0.17  0.27  0.596 I 
       0.941  0.711  0.312  0.941  0.468  0.796 E 
       0.377  0   1   0.377  0.548  0.958 R 
Weighted Avg. 0.43  0.213  0.671  0.43  0.405  0.758 

=== Confusion Matrix === 

    a b c <-- classified as 
15 73 0 | a = I 
    3 48 0 | b = E 
    5 33 23 | c = R 

43% ... очевидно, что-то на самом деле не так, я использовал пакет фильтрации с помощью теста набор

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

Я думаю, что я получил концепцию за резюме, но, возможно, я ошибаюсь.

Благодаря

+0

Какая ваша обучающая ошибка? –

+0

извините, но ... как я могу узнать ошибку обучения с weka (gui)? – Thal

+0

Выберите * use training set * option –

ответ

0

Как из вашего комментария, это статистика:

ошибка CV: 26%

ошибка теста: 57%

ошибка Обучение: 1,2%

Низкая ошибка в обучении всегда опасна. Первое, что нужно сделать, если вы получите низкую ошибку, - проверить ошибку CV или пробную ошибку. Если между обучением и ошибкой теста/CV существует большая разница, тогда есть возможность переобучения. Это очень хороший тест sanity test. И, конечно же, у вас есть другие методы, такие как кривые обучения, чтобы подтвердить, является ли ваша модель переоценкой или нет. переобучение означает, что ваша модель не может обобщать хорошо - это знает только обучающие данные или только является пригодным для подготовки данных в, в общем, если применить эту модель неизвестных данных, она не будет способный соответствовать себе.

Итак, вернемся к вашей проблеме - CV и Test можно рассматривать как два независимых случая тестирования обобщение емкость вашей модели. Если у вас есть модель, которая переоформляет, она не сможет хорошо обобщить. Итак, в случае CV он дает один результат, а для теста он дает вам другое.

Надеюсь, что это поможет?

 Смежные вопросы

  • Нет связанных вопросов^_^