2012-04-30 5 views
5

libsvm의 "grid.py"는 svm-train의 두 매개 변수 "c"와 "g"만 최적화하려고합니다. 다른 매개 변수에 대해 "grid.py"를 반복적으로 실행하여 "grid.py"를 확장하여 다른 매개 변수 (예 : "r"또는 "d")를 최적화하려고했습니다. 질문이 있습니다.
1. "c"및 "g"이외의 매개 변수를 최적화 할 수있는 스크립트가 이미 있습니까?
2. 어떤 매개 변수가 더 중요하며 최대/최소 범위는 무엇입니까? 때때로 한 매개 변수를 변경/최적화하면 다른 매개 변수가 자동으로 최적화됩니다. svm-train 매개 변수가있는 경우입니까?
svm-train 다른 매개 변수 최적화

답변

11

내가 아는 한이 작업을 수행하는 스크립트는 없지만 grid.py를 쉽게 확장 할 수없는 이유는 알 수 없습니다. 그러나 나는 그 노력의 가치가 있다고 생각하지 않는다.

먼저 커널을 선택해야합니다. 이것은 그 자체로 매개 변수입니다. 각 커널은 다른 매개 변수 집합을 가지고 있으며 다르게 수행 할 것이므로 커널을 비교하려면 각 커널 매개 변수를 최적화해야합니다.

C, 비용 매개 변수는 SVM 자체에 적용되는 전체 매개 변수입니다. 다른 매개 변수는 커널 함수에 대한 모든 입력입니다. C는 넓은 마진과 오 분류 된 더 많은 훈련 포인트 (그러나 미래의 데이터로보다 잘 일반화 될 수있는 모델)와 트레이닝 포인트에 더 잘 맞는 좁은 마진 사이의 절충을 제어하지만 트레이닝 데이터에 지나치게 적합 할 수 있습니다.

일반적으로 두 가지 가장 널리 사용되는 커널은 선형 (매개 변수가 필요 없음)과 RBF 커널입니다.

RBF 커널은 감마 매개 변수를 사용합니다. 이것은 최적화되어야하며, 그 값은 성능에 상당한 영향을 미칩니다.

다항식 커널을 사용하는 경우 d가 주 매개 변수이므로 최적화해야합니다. 다른 매개 변수를 기본값에서 수정하는 것이 합리적이지 않은 수학적 이유가있는 경우가 아니면 데이터를 더 잘 적용 할 수 있습니다. 내 경험에 의하면 다항식 커널은 좋은 결과를 줄 수 있지만 RBF 커널의 경우 엄청난 계산 비용으로 소량 증가합니다.

시그 모이 드 커널과 마찬가지로 감마가 주요 매개 변수이며,이를 최적화하고 coef0을 기본값으로 두는 것이 좋습니다. 단, 왜 이것이 데이터에 더 적합한 지 잘 이해하지 않은 경우입니다.

grid.py가 다른 매개 변수를 최적화하지 않는 이유는 대부분의 경우 단순히 불필요하며 일반적으로 성능이 향상되지 않기 때문입니다. 귀하의 두 번째 질문에 관해서는 : 아니요, 이것은 하나를 최적화하는 것이 다른 하나를 최적화하는 경우가 아닙니다. 이러한 매개 변수의 최적 값은 데이터 집합에 따라 다릅니다. 커널 매개 변수의 값을 변경하면 C의 최적 값에 영향을 미칩니다. 그리드 검색이 권장되는 이유입니다. 이러한 추가 매개 변수를 검색에 추가하면 시간이 많이 걸리므로 분류 기준 성능이 향상되지 않을 수 있습니다.

+0

D가 의미하는 것은 바로 학위입니까? 어떤 매개 변수가 어떤 커널에 필수적인지에 대한 정보는 어디에서 찾을 수 있습니까? 그래서 불필요한 매개 변수로 시간 낭비하지 않을 것입니다. 타이 – MonsterMMORPG

관련 문제