2014-03-12 3 views
2

지도 축소 (각자 LibSVM 라이브러리를 사용 중입니다)에서 각 데이터 세트에 대해 SVM 모델을 만들고 있습니다. 심지어 각 모델의 테스트 결과가 있습니다. 테스트 결과 파일 세부 사항을 다음이 포함되어 있습니다. I는 5 테스트 파일이Ensemble SVM in map reduce

+1 
-1 
+1 
+1 
.. 
.. 
+1 

(IT 테스트 결과에 대한 예측을 기븐스). 이제 map reduction에서 과반수 투표를 사용하여 테스트 결과를 결합하고 싶습니다. 지도 단계에서 줄 번호를 키 값으로 지정하려고합니다. 모든 테스트 파일에 대해 어떻게 맵 번호에 줄 번호를 부여 할 수 있습니까?

+0

요구 사항입니까, 아니면 솔루션의 일부가 될 것이라고 생각합니까? 왜냐하면 나는 당신이 라인 번호를 필요로하지 않는다고 생각하기 때문이다. 당신이 단지이 모든 숫자를 합산해야하고, 긍정적 인 +1이 이기면된다. 권리? – vefthym

+0

SVM은 다양성이 부족하기 때문에 일반적으로 포괄적 인 앙상블 사용에 적합하지 않습니다. overfit 경향이있는 자질 분류 학에서는 자루에 넣을 때 더 잘 수행되는 경향이 있습니다. 다음 이야기는 앙상블 분류기의 문제에 대한 좋은 토론을합니다 : http://www.sandia.gov/~wpk/avi/avatar-tools-background-video.avi –

답변

1

이 작업을 위해 MapReduce가 필요한지 여부는 잘 모르겠지만 MapReduce에서 수행해야하는 경우 Map-only 작업 만 사용하고 출력 파일을 사용하지 않아도됩니다. 그냥 두 개의 카운터를 사용하여 (나는 decrCounter 메서드를 찾지 못했고 incrCounter은 음수 값을 가질 수 없다). 여기에 간단한 의사 코드가 있습니다.

enum MyCounter = {POSITIVES, NEGATIVES}; 
map(LongWritable key, Text value, Reporter reporter) { 
    if (value.toString().equals("+1")) { 
     reporter.incrCounter(MyCounter.POSITIVES, 1); 
    } else { 
     reporter.incrCounter(MyCounter.NEGATIVES, 1); 
    } 
} 

그런 다음 POSITIVES > NEGATIVES, +1이 승리하면!

MapReduce가 필요하지 않은 경우 모든 파일의 행을 계산할 수 있습니다. Linux에서 wc -l 명령을 사용하고 +1이있는 행을 계산하십시오. grep -c을 사용하십시오.