2

나는 멋진 vowpal wabbit tool 사용하여 명령을 다음과 같이 카테고리 분류에 대한 바이너리 S 자형 피드 포워드 네트워크를 훈련하고 싶은에 비해 (vowpal-wabbit : overfitting을 피하기 위해 다중 패스, 홀드 아웃 및 홀드 아웃 기간 사용?</p> <pre><code>vw --binary --nn 4 train.vw -f category.model </code></pre> <p>을 그리고 테스트 :

vw --binary -t -i category.model -p test.vw 

을하지만 아주 나쁜 결과를 가지고 내 선형 svm 추정기).

나는 Number of Training Passes 인수 (--passes arg)를 사용해야한다는 의견을 발견했습니다.

내 질문은 훈련을 통과하는 횟수를 아는 방법은 재교육을받지 않기 위해서일까요?

P. holdout_period 인수를 사용해야합니까? 그리고 어떻게?

답변

2

질문의 test 명령이 올바르지 않습니다. 입력이 없습니다 (-p ... 출력 예상을 나타냄). 당신이 테스트 할 수는 test을 말한다 때문에 또는 을 예측하지만, 사용되는 명령이 당신이 데이터를 표시하고 당신이 모델의 품질을 평가하고 의미 -p ...

시험이있는 경우 또한 그것은 분명하지 않다. 엄밀히 말하면 : 을 의미합니다. 라벨이 없으므로 예측이 얼마나 좋은지 실제로 알 수 없습니다. 실제적으로, 보유하고있는 레이블이있는 데이터 (레이블을 무시함으로써 레이블이없는 것으로 가장하는)를 예측 한 다음 실제로 레이블을 가지고 있기 때문에 이러한 예측이 얼마나 좋은지 평가할 수 있습니다. 일반적으로

: 당신이 이진 분류를 수행하려는 경우, 당신은 {-1, 1}에 라벨을 사용하고 --loss_function logistic를 사용해야합니다

  • . --binary은 독립 옵션이므로 예측을 2 진수로 지정하면 정보가 줄어 듭니다.

  • 레이블이있는 별도의 테스트 세트가있는 경우 보유 할 필요가 없습니다.

vw의 홀드 아웃 메카니즘은 다중 패스를 모든 예 효과적으로 헬드 아웃되는 단일 패스로 인해 사용되는 경우에만 관련이 테스트 세트를 대체 이상의 피팅 않도록 설계되었다; 다음 (아직 보이지 않는) 예제는 1) 예측을 위해 레이블이 지정되지 않고 2) 테스트 및 모델 업데이트 용으로 레이블이 지정된 것으로 처리됩니다. IOW : 귀하의 기차 세트는 실제로 귀하의 시험 세트이기도합니다.

그래서 당신이에 여러 패스를 할 수 있습니다 어떤 홀드 아웃와 기차 세트 :

vw --loss_function logistic --nn 4 -c --passes 2 --holdout_off train.vw -f model 

후 별도의와 모델을 테스트하고 표시, 시험 세트 :

vw -t -i model test.vw 

또는 을 몇 가지 홀드 아웃 (hold-out)을 포함하는 동일한 트레인 세트에 여러 번 통과시켜 테스트 세트으로하십시오. 당신이 테스트가 설정되어 있지 않으며, 당신이 적합-강화하기 위해 여러 패스를 사용하여 원하는 경우

vw --loss_function logistic --nn 4 -c --passes 20 --holdout_period 7 train.vw -f model 

, 당신이 잡아 아웃하는 예를 일 모든 N을 (N 10 인 디폴트를 vw을 요청할 수 있습니다, 위에서 보았 듯이 --holdout_period <N>을 사용하여 명시 적으로 무시할 수 있습니다. 이 경우 보류 아웃 세트의 손실이 증가하기 시작하면 vw이 자동으로 조기 종료하기 때문에보다 높은 수의 패스를 지정할 수 있습니다.

당신은 vw이 같은 인쇄하기 때문에 당신이 조기 종료를 누르 알 것 : 5 N 중 패스가 실제로 초기 정지하기 전에 사용 된 것을 나타내는

passes used = 5 
... 
average loss = 0.06074 h 

을하고, 보유 밖으로 집합에 오류 예를 들면 0.06074입니다 (꼬리표 h은 보류 손실임을 나타냄). 당신이 볼 수 있듯이

는 패스수, 홀드 아웃 기간는 완전히 독립적 인 옵션입니다.

모델을 개선하고 더 많은 자신감을 얻으려면 다른 최적화를 사용하고 holdout_period를 변경하고 --nn args를 시도하십시오. 더 나은 하이퍼 매개 변수를 찾으려면 utl 하위 디렉토리의 vw-hypersearch 유틸리티를 확인하십시오.

$ vw-hypersearch 1 20 vw --loss_function logistic --nn % -c --passes 20 --holdout_period 11 test/train-sets/rcv1_small.dat --binary 
trying 13 ............. 0.133333 (best) 
trying 8 ............. 0.122222 (best) 
trying 5 ............. 0.088889 (best) 
trying 3 ............. 0.111111 
trying 6 ............. 0.1 
trying 4 ............. 0.088889 (best) 
loss(4) == loss(5): 0.088889 
5  0.08888 

4 또는 5 하나가 홀드에 0.08888 손실을 수득 --nn 좋은 파라미터되는 것을 나타내는 : 여기

소스에 포함 된 테스트 세트 중 하나에 vw-hypersearch를 사용하는 예이다 11 가지 예에서 1의 하위 집합.