4

비선형 커널 및 one-vs-rest 시나리오를 지원하는 SVM 구현을 찾고 있으며, 다중 라벨 분류. 가급적이면, 파이썬으로 작성되었거나, 파이썬에서 래퍼로 호출 할 수 있습니다.1 대 대 나머지에서 비선형 커널 및 다중 레이블을 지원하는 SVM 구현

내가 sklearn로보고되었고, 분류 SVM을 사용하는 두 구현이 있습니다 :

sklearn.svm.LinearSVC 는 - 한 - 대 - 나머지 시나리오와 멀티 라벨 분류를 지원하지만이 liblinear을 기반으로하고, 따라서 선형 커널 만 지원합니다.

sklearn.svm.SVC 이 - K- 대/2 이진 분류 - libsvm에 기초하여 비선형 커널을 지원하지만 멀티 라벨 분류 한 대 온 감소하에 수행되며, 이는 K (1 K)를 열차 방식 다발성 문제. 여기

상세 정보 : http://scikit-learn.org/stable/modules/multiclass.html

사람이 멀티 라벨 분류 및 비선형 커널을 지원하는 직접 다른 SVM 구현을 알고 있습니까?

한 가지 해결책은 sklearn.svm.SVC를 기반으로 한 코드를 적용하여 One-vs-Rest를 수행하는 것일 수 있습니다. 이전에 이미 시도 했습니까?

+0

멀티 클래스를 말하는 거지, 그렇지? 다중 레이블은 다른 것입니다 (각 샘플은 둘 이상의 레이블로 레이블됩니다). –

+0

아니요, 실제로는 다중 레이블을 의미합니다. 정확하게 "각 샘플은 하나 이상의 라벨로 라벨이 붙어 있습니다" –

+1

그러면 어떻게 1 대 1 대 1 대 대 모두를 사용 하시겠습니까? 이들은 다중 레이블이 아닌 다중 클래스 (단일 레이블) 메소드입니다. –

답변

1

Binary Relevance problem transformation method은 다중 레이블 분류를 수행하는 데있어 일대일 방식을 사용합니다. scikit-multilearn 라이브러리를 사용하여 비선형 커널로 ​​SVM을 쉽게 구현할 수 있습니다. 다음은 train_y의 각 행이 여러 레이블을 나타내는 핫 벡터 (예 : [0,0,1,0,1,0])를 나타내는 예제 python 코드입니다.

from skmultilearn.problem_transform.br import BinaryRelevance 
from sklearn.svm import SVC 

# Non-linear kernel 
svm = SVC(kernel='rbf') 
cls = BinaryRelevance(classifier=svm) 

cls.fit(train_x, train_y) 
predictions = cls.predict(test_x) 
+0

감사 Nikkhil, https://github.com/scikit-multilearn에 대해 몰랐습니다. –