현재 데이터를 분류하기 위해 선형 커널과 함께 SVM을 사용하고 있습니다. 훈련 세트에 오류가 없습니다. 매개 변수 ( )에 여러 값을 시도했습니다 . 테스트 세트의 오류는 변경되지 않았습니다.
지금은 궁금해 :이 오류가 루비 바인딩으로 인한 위해 libsvm
내가 (사용하고 RB-libsvm을 ) 또는 이것이 이론적으로 설명 할 ?
매개 변수 항상 분류기의 성능을 변경 해야합니까 ?
현재 데이터를 분류하기 위해 선형 커널과 함께 SVM을 사용하고 있습니다. 훈련 세트에 오류가 없습니다. 매개 변수 ( )에 여러 값을 시도했습니다 . 테스트 세트의 오류는 변경되지 않았습니다.
지금은 궁금해 :이 오류가 루비 바인딩으로 인한 위해 libsvm
내가 (사용하고 RB-libsvm을 ) 또는 이것이 이론적으로 설명 할 ?
매개 변수 항상 분류기의 성능을 변경 해야합니까 ?
답변:
C 매개 변수는 SVM 최적화에 각 학습 예제를 잘못 분류하지 않으려는 정도를 알려줍니다. C 값이 큰 경우, 하이퍼 플레인이 모든 트레이닝 포인트를 올바르게 분류하는 데 더 나은 작업을 수행하면 최적화에서 더 작은 마진 하이퍼 플레인을 선택합니다. 반대로, C 값이 매우 작 으면 옵티마이 저가 하이퍼 플레인이 더 많은 포인트를 잘못 분류하더라도 더 큰 마진 분리 하이퍼 플레인을 찾습니다. 아주 작은 C 값의 경우 훈련 데이터를 선형으로 분리 할 수있는 경우에도 잘못 분류 된 예제를 가져와야합니다.
SVM에서 최소 마진이 가장 큰 하이퍼 플레인과 가능한 한 많은 인스턴스를 올바르게 분리하는 하이퍼 플레인을 검색합니다. 문제는 항상 두 가지를 모두 얻을 수는 없다는 것입니다. c 매개 변수는 후자에 대한 욕구가 얼마나 큰지를 결정합니다. 이것을 설명하기 위해 아래에 작은 예를 그렸습니다. 왼쪽에는 c가 낮아서 최소 마진 (보라색)이 커집니다. 그러나이를 위해서는 올바른 분류에 실패한 파란색 원 이상 치를 무시해야합니다. 오른쪽에는 높은 c가 있습니다. 이제 특이 치를 무시하지 않으므로 훨씬 작은 마진으로 끝납니다.
그렇다면이 분류기 중 어느 것이 가장 좋습니까? 그것은 당신이 예측할 미래의 데이터가 무엇인지에 달려 있으며, 대부분은 물론 그 사실을 모릅니다. 미래 데이터가 다음과 같은 경우 :
그런 다음 큰 c 값을 사용하여 배운 분류 기가 가장 좋습니다.
반면에 미래 데이터가 다음과 같은 경우 :
그런 다음 낮은 c 값을 사용하여 배운 분류 기가 가장 좋습니다.
데이터 세트에 따라 c를 변경하면 다른 초평면이 생성되거나 생성되지 않을 수 있습니다. 이 경우 않는 다른 초평면을 생산, 그것은 당신의 분류 출력 다른 클래스가 특정 데이터에 대한 당신이 분류하는 데 사용한 것을 의미하지는 않습니다. Weka는 SVM에 대한 다양한 설정으로 데이터를 시각화하고 재생하는 데 유용한 도구입니다. 데이터의 모양과 c 값을 변경해도 분류 오류가 변경되지 않는 이유를 더 잘 이해할 수 있습니다. 일반적으로 교육 인스턴스가 적고 속성이 많으면 데이터를 선형으로 쉽게 분리 할 수 있습니다. 또한 보이지 않는 새로운 데이터가 아니라 훈련 데이터를 평가한다는 사실이 분리를 더 쉽게 만듭니다.
어떤 종류의 데이터에서 모델을 배우려고합니까? 얼마나 많은 데이터? 우리가 볼 수 있습니까?
C는 기본적으로 정규화 매개 변수로, 훈련 데이터에서 낮은 오류를 달성하는 것과 가중치의 표준을 최소화하는 것 사이의 절충을 제어합니다. 릿지 회귀 분석에서 리지 매개 변수와 유사합니다 (실제로 선형 SVM과 릿지 회귀간에 성능 또는 이론에는 거의 차이가 없으므로, 일반적으로 관찰보다 더 많은 속성이있는 경우 후자 또는 커널 릿지 회귀를 사용합니다).
구조적 위험 최소화 (기본 접근 방식의 핵심 원칙)는 C의 튜닝을 통해 당사자가 구현하므로 C를 올바르게 튜닝하는 것이 SVM 사용에서 모범 사례의 필수 단계입니다. 매개 변수 C는 표준의 상한을 강제합니다. 가중치는 C에 의해 색인화 된 중첩 된 가설 클래스 세트가 있음을 의미합니다. C를 증가 시키면 가설 클래스의 복잡성이 증가합니다 (C를 약간 증가 시키면 이전에 할 수있는 모든 선형 모델을 여전히 형성 할 수 있음) 또한 허용 가능한 가중치의 상한선을 늘리기 전에는 불가능했던 것들도 있습니다). 최대 마진 분류를 통해 SRM을 구현할뿐만 아니라 C를 제어하여 가설 클래스의 복잡성을 제한함으로써 구현됩니다.
슬프게도 C를 설정하는 방법을 결정하는 이론은 현재 잘 발달되어 있지 않기 때문에 대부분의 사람들은 교차 검증을 사용하는 경향이 있습니다 (무슨 일을하는 경우).
C는 분류 오류를 보이지 않는 데이터로 일반화하는 기능인 낮은 교육 오류와 낮은 테스트 오류 간의 균형을 제어하는 정규화 매개 변수입니다.
선형 SVM의 목적 함수를 고려하십시오 : min | w | ^ 2 + C∑ξ. C가 너무 크면 최적화 알고리즘이 | w | 각 훈련 예제를 올바르게 분류하려고하는 초평면으로 이어진다. 이렇게하면 분류기의 일반화 속성이 손실됩니다. 반면에 C가 너무 작 으면 목적 함수에 | w | 많은 훈련 오류가 발생할 것입니다.
아래 그림은이를 시각화하는 데 도움이 될 수 있습니다.
위의 답변은 훌륭합니다. 귀하의 질문을주의 깊게 읽은 후 간과 할 수있는 두 가지 중요한 사실이 있습니다.
두 가지 사실을 감안할 때 C 값이 적절한 범위 내에서 변경되면 최적 초평면은 마진 (지지 벡터에 의해 형성된 간격) 내에서 소량 만 무작위로 이동합니다.
직관적으로 훈련 데이터의 마진이 적거나 마진 내에 테스트 데이터 포인트가없는 경우 마진 내에서 최적의 초평면 이동은 테스트 세트의 분류 오류에 영향을 미치지 않습니다.
그럼에도 불구하고 C = 0을 설정하면 SVM은 오류를 무시하고 가중치 (w)의 제곱합을 최소화하려고 시도합니다. 테스트 세트에서 다른 결과를 얻을 수 있습니다.