2011-12-12 2 views
0

사용중인 일부 분류기에 대해 n 배 교차 유효성 검사를 실행하고 싶습니다. WEKA Wiki (여기에 WekaDemo.java)에 예제 코드가 있지만 유효성 검사를 실행하기 전에 필터가 적용됩니다. 이 작업을 항상 수행해야합니까, 아니면 필수가 아닌가요?WEKA의 교차 유효성 검사를 실행하기 전에 필터를 적용해야합니까?

/** 
    * runs 10fold CV over the training file 
    */ 
    public void execute() throws Exception { 
    // run filter 
    m_Filter.setInputFormat(m_Training); 
    Instances filtered = Filter.useFilter(m_Training, m_Filter); 

    // train classifier on complete file for tree 
    m_Classifier.buildClassifier(filtered); 

    // 10fold CV with seed=1 
    m_Evaluation = new Evaluation(filtered); 
    m_Evaluation.crossValidateModel(
     m_Classifier, filtered, 10, m_Training.getRandomNumberGenerator(1)); 
    } 

또한이 분류기의 성능을 평가 허용 방법 : 여기

코드 섹션입니까?

답변

2

나는이 나쁜 습관을 고려할 것입니다. 필터가 클래스 정보에 의존하거나 클래스 정보를 사용한다면 상호 유효성 추정치는 (잠재적으로) 매우 낙관적으로 편향 될 것이므로 쓸데없는 것입니다. 극단적 인 예를 들어 클래스 속성의 사본을 데이터에 추가하는 것에 대해 생각해보십시오. 거의 모든 경우에 weka.classifiers.meta.FilteredClassifier를 사용하면 더 나은 결과를 얻을 수 있습니다. 인용 한 동일한 Wiki 페이지에서 사용하는 방법에 대한 예가 있습니다.

환호, Bernhard

+0

실제로 어떤 필터도 사용하고 싶지 않습니다. 나는 weka에 처음이므로 필터링하지 않고 crossValidateModel 메서드를 사용해도 괜찮은지 확인하고 싶었습니다. 내가 할 수 있을까? – Chris

+1

물론 할 수 있습니다 :-) – user988621

관련 문제