기존 SVM 모델에 교육 데이터를 추가 할 수 있습니까?


14

libsvm을 사용하고 있는데 svmtrain ()을 호출 할 때마다 새 모델을 만들고 기존 모델에 데이터를 넣을 수있는 옵션이없는 것 같습니다. 그러나 이것이 가능합니까? libsvm 에서이 측면을 보지 못합니까?


'기존 모델에 데이터를 넣는 것'이 무엇을 의미하는지 잘 모르겠습니다. 이를 수행 할 수있는 다른 기술 (SVM이 아님)의 예를 제시 할 수 있습니까? 로지스틱 회귀 분석을 예로 들어 보겠습니다. 새 데이터를 추가하면 어떤 데이터가 '신규'또는 '이전'인지에 관계없이 기존 세트에 대해 새로운 계수 세트가 재 훈련됩니다. 모두 훈련 데이터입니다. 그래디언트 디센트 유형 솔버를 사용하는 경우 이전에 최적화 된 값을 초기화하여 시간을 절약 할 수 있습니다. 이는 아마도 새로운 솔루션에 가깝습니다. 이게 니가하려고했던 거 맞아?
Bogdanovist 2016 년

답변:


17

"증분"또는 "온라인"학습 알고리즘을 찾고있는 것 같습니다. 이 알고리즘을 사용하면 전체 내용을 처음부터 다시 학습하지 않고도 새로운 예제로 분류자를 업데이트 할 수 있습니다.

libSVM이 현재 그것을 지원하지 않는다고 생각하지만 지원 벡터 시스템에서는 가능합니다. 다음을 포함하여 패키지를 제공하는 다른 여러 패키지를 살펴볼 가치가 있습니다.

추신 : @Bogdanovist : 이것에 대한 꽤 광범위한 문헌이 있습니다. kNN은 명백하고 사소한 점증 적입니다. 확률 대신 카운트를 저장하여 (일부) 베이지안 분류기를 증분 분류기로 바꿀 수 있습니다. STAGGER, AQ * 및 ID * 의사 결정 트리 알고리즘의 일부 (모두는 아님)도 머리 꼭대기에서 점진적으로 증가합니다.


1
흥미 롭습니다. 감사합니다. 나는 '온라인'이라는 용어가 이전에 붕대 화되는 것을 보았지만 기술적 중요성을 깨닫지 못했습니다.
Bogdanovist 2016 년

기쁘다! 위에서 언급 했어야하지만 일부 온라인 / 증분 알고리즘은 실제로 "최신"예제에 더 많은 가중치를 부여하는데, 이는 응용 프로그램에 따라 유용 할 수도 있고 그렇지 않을 수도 있습니다 (예 : 트위터 주제 예측에 적합, 암에 대해서는 덜 경감) 연구).
Matt Krause

12

온라인 / 증분 SVM 유틸리티의 대부분은 선형 커널 용이며 비선형 커널만큼 어렵지 않습니다.

현재 사용 가능한 주목할만한 온라인 / 증분 SVM 도구 중 일부 :
+ Leon Bottous의 LaSVM : 선형 및 비선형 커널을 모두 지원합니다. C ++ 코드
+ Bordes의 LaRank : 선형 및 비선형 커널을 모두 지원합니다. C ++ 코드 링크가 지금 끊어진 것 같습니다 :-(
+ Gert Cauwenberghs의 코드 증분 및 감소 : 선형 및 비선형 커널 모두 지원 Matlab 코드
+ Chris Diehl의 Incremental SVM 학습 : 선형 및 비선형 커널 모두 지원 Matlab 코드
+ Alistair Shilton의 SVMHeavy : 이진 분류 및 회귀 만 C ++ 코드
+ Francesco Parrella의 OnlineSVR: 회귀 만. Matlab과 C ++.
+ Pegasos : 선형 및 비선형. C 및 Matlab 코드. 자바 인터페이스 .
+ Langford의 Vowpal Wabbit : 확실하지 않음 :-(
+ Koby Crammer의 MCSVM : 선형 및 비선형 C 코드

Quora 답변 에서 더 업데이트 된 목록을 찾을 수 있습니다 .


(+1) 사이트에 오신 것을 환영합니다. 그것은 철저한 목록입니다! :)
추기경

4

또 다른 가능성은 알파 시딩 입니다. libSVM이이를 지원하는지 알 수 없습니다. 아이디어는 방대한 양의 훈련 데이터를 덩어리로 나누는 것입니다. 그런 다음 첫 번째 청크에서 SVM을 훈련시킵니다. 결과 지원 벡터는 데이터 샘플의 일부일 뿐이므로이를 취하여 다음 청크로 SVM을 훈련시키는 데 사용합니다. 또한 해당 SVM을 사용하여 다음 반복 (시드)에 대한 알파 값의 초기 추정치를 계산합니다. 따라서 이점은 두 가지입니다. 각 문제는 더 작고 스마트 초기화를 통해 훨씬 더 빨리 수렴됩니다. 이렇게하면 일련의 간단한 단계를 순차적으로 해결하는 데있어 큰 문제를 단순화 할 수 있습니다.


이 방법을 적용하는 라이브러리가 있습니까?
d.putto

분명히 libsvm은 이미 그것을하고 있거나 적어도 일부 알고리즘 work.caltech.edu/~htlin/program/libsvm
jpmuc

1

"증분"솔루션을 찾는 다른 옵션은 여기에서 찾을 수 있습니다 ...

도서관 증분

증분 학습을 허용하는 LIBLINEAR의 확장입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.