libsvm“최대 반복 횟수에 도달”경고 및 교차 유효성 검사


20

C-SVC 모드에서 2 차 다항식 커널로 libsvm을 사용하고 있으며 여러 SVM을 훈련시켜야합니다. 각 트레이닝 세트에는 10 개의 기능과 5000 개의 벡터가 있습니다. 훈련하는 동안 훈련하는 대부분의 SVM에 대해이 경고가 표시됩니다.

WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

누군가이 경고가 의미하는 바를 설명하고 어떻게 피할 수 있습니까?

또한 감마 및 C (정규화)에 가장 적합한 선택을 결정하기 위해 모델에 교차 검증을 적용하고 싶습니다. 내 계획은 두 매개 변수에 대해 0.00001, 0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000이라는 10 가지 값의 모든 조합을 시도하고 교차 검증 중에 어떤 조합이 최고의 정확도를 생성하는지 확인하는 것입니다. 이것이 충분하나요? 이 간격에 더 많은 값을 사용해야합니까, 더 넓은 간격을 선택해야합니까?


NU_SVC 모드를 시도하면 문제가 해결됩니다.
Hosein Bitaraf

답변:


20

이 경고는 LIBSVM에서 데이터를 분리 하는 최대 마진 하이퍼 플레인 (즉, 매개 변수 wb ) 을 찾기 위해 2 차 최적화 문제를 해결하기 위해 사용하는 반복 루틴 이 최대 반복 횟수에 도달했으며 현재 근사값에 도달하는 동안 중지해야 함을 의미합니다. 대 w 더욱 향상 될 수있다 (즉, w 더 극단적 인 목적 함수의 값을 변경할 수있다). 즉, LIBSVM은 최대 마진 하이퍼 플레인을 찾지 못했다고 생각하며 이는 사실 일 수도 있고 그렇지 않을 수도 있습니다.

이 문제가 발생할 수있는 여러 가지 이유가 있습니다. 다음을 수행 할 것을 제안합니다.

  • 데이터를 정규화하십시오.
  • 수업이 어느 정도 균형을 이루어야합니다 (유사한 크기). 그렇지 않은 경우 매개 변수 -w를 사용하여 다른 가중치를 지정하십시오.
  • 다른 와 시도하십시오 . 커널이 이므로 LIBSVM의 다항식 커널에는'coef0 '매개 변수가 있습니다. γ γ u v + 계수  정도Cγ
    γuv+coeff0 degree

당신처럼 로그 스케일로 최적의 를 검색하는 것이 좋습니다 . 정규화 된 데이터의 경우 제안한 의 검색 범위 가 정상이어야한다고 생각합니다. 유용한 점검 : 분류기의 정확도는 해당 범위의 경계와 세트의 두 값 사이에서 크게 변하지 않아야합니다. 그렇다면 범위를 확장하거나 중간 값을 추가하십시오.CCC

Windows 용 LIBSVM 배포판에는 grid.py라는 Python 스크립트가 포함되어 있어야합니다.이 스크립트는 상호 유효성 검사 및 지정된 검색 범위를 기반으로 매개 변수를 선택할 수 있습니다. 또한 SVM의 정확도를위한 등고선 플롯을 생성 할 수 있습니다. 이 도구는 매우 유용 할 수 있습니다.

StackOverflow에 대한 다음 질문 및 관련 질문도 도움이 될 수 있습니다. libsvm Shrinking Heuristics


자세한 설명을 주셔서 감사합니다. 그것은 분명히 미스터리를 정리합니다. 나는 SO (당신이 제공 한 링크)에 대해 거의 같은 질문을했지만, 거기에서받은 대답은 주로 축소 휴리스틱에 중점을 두었습니다.
Mihai Todor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.