SVM özellik ağırlıkları nasıl yorumlanır?


42

Doğrusal bir SVM yerleştirerek verilen değişken ağırlıkları yorumlamaya çalışıyorum.

(Ben scikit-learn kullanıyorum ):

from sklearn import svm

svm = svm.SVC(kernel='linear')

svm.fit(features, labels)
svm.coef_

Belgelerde, bu ağırlıkların nasıl hesaplandığını veya yorumlandığını gösteren hiçbir şey bulamıyorum.

Kilo işaretinin dersle ilgisi var mı?

Yanıtlar:


55

Genel bir çekirdek için SVM ağırlıklarını yorumlamak zordur, ancak doğrusal SVM için aslında yararlı bir yorum vardır:

1) Lineer SVM'de sonucun, sınıfları mümkün olduğunca en iyi şekilde ayıran bir hiper düzlem olduğunu hatırlayın. Ağırlıklar bu hiper düzlemi temsil eder, size hiper düzene dik olan bir vektörün koordinatlarını vererek - bunlar svm.coef_ tarafından verilen katsayılardır. Bu vektöre w diyelim.

2) Bu vektör ile ne yapabiliriz? Yönü bize öngörülen sınıfı verir, yani vektör ile herhangi bir noktanın nokta ürününü alırsanız, hangi tarafta olduğunu söyleyebilirsiniz: nokta ürünü pozitifse, negatif sınıfa aitse, pozitif sınıfa aittir. negatif sınıfa aittir.

3) Son olarak, her bir özelliğin önemi hakkında bir şeyler bile öğrenebilirsiniz. Bu benim kendi yorumum. Bu yüzden önce kendini ikna et. Diyelim ki svm veriyi ayırmak için kullanışlı olan tek bir özellik bulacaktır, daha sonra hiper düzlem o eksene dik olacaktır. Yani, diğerlerine göre katsayının mutlak boyutunun, özelliğin ayırma için ne kadar önemli olduğuna dair bir gösterge verdiğini söyleyebilirsiniz. Örneğin, ayırma için yalnızca ilk koordinat kullanılırsa, w, x'in sıfır olmayan bir sayı olduğu biçiminde (x, 0) ve sonra | x |> 0 olur.


3
Nokta 3, özellik (gen) seçimi için doğrusal bir SVM'nin
B_Miner

1
@B_Miner teşekkürler! Bunu kendi başıma düşündüğümden beri yanlış olabileceğinden endişeliydim ("saf" CS'den değilim) - ama doğru olduğunu tahmin ediyorum.
Bitwise

1
Her iki sınıfı ayırıyorsa, ortogonal vektörün yönünün anlamı nedir? Ayırıcı hiper uçağın genel sınıf tahmini olasılığına katkısıyla bir ilgisi var mı?
Austin Richardson

Ağırlık işaretinin sınıfla ilgili olup olmadığını anlamak (doğrusal durumda) - bu özelliklere bağlıdır. Örneğin, öngörücü özellikler yalnızca negatif olmayan ( ) değerler alırsa, negatif ağırlıklar, veri noktalarının negatif bir sınıflandırmasına katkıda bulunur. 0
Kdawg

@B_Miner, sana bağlantısını anlamı düşünüyorum Bu yazıda ziyade Guyon tarafından diğeri.
ijoseph

11

Dokümantasyon oldukça tamamlandığında: LIBSVM kütüphane dayanmaktadır çok sınıflı durumda, SVC için bire vs-one ayarını kullanır. Doğrusal bir çekirdek durumunda, n_classes * (n_classes - 1) / 2her bir olası sınıf çifti için ayrı ayrı doğrusal ikili modeller yerleştirilmiştir. Bu nedenle birlikte birleştirilmiş tüm ilkel parametrelerin toplam şekli [n_classes * (n_classes - 1) / 2, n_features](+ [n_classes * (n_classes - 1) / 2yolunu keser intercept_öznitelik).

İkili doğrusal problem için, ayrıştırma hiper düzleminin coef_nitelikten çizilmesi bu örnekte yapılır .

Takılan parametrelerin anlamı ile ilgili detayların, özellikle doğrusal olmayan çekirdek durumunun detaylarını istiyorsanız, matematiksel formülasyona ve belgelerde belirtilen referanslara bir göz atın .


1
Sklearn'ün dokümantasyonunda coef_ niteliği shape = [n_class-1, n_features] şeklindedir. Bunun bir hata olduğuna inanıyorum.
Naomi

6

Doğrusal bir SVM yerleştirerek verilen değişken ağırlıkları yorumlamaya çalışıyorum.

Ağırlıkların nasıl hesaplandığını ve lineer SVM durumunda nasıl yorumlanacağını anlamanın iyi bir yolu hesaplamaları elle basit bir örnekle yapmaktır.

Örnek

Doğrusal olarak ayrılabilen aşağıdaki veri setini göz önünde bulundurun

import numpy as np
X = np.array([[3,4],[1,4],[2,3],[6,-1],[7,-1],[5,-3]] )
y = np.array([-1,-1, -1, 1, 1 , 1 ])

SVM basit

SVM problemini inceleme ile çözme

x2=x1-3wTx+b=0

w=[1,-1]  b=-3

SVM teorisi bize marjın "genişliğinin" tarafından verildiğini söyler.2||w||22=242

c

cx1-cx2-3c=0
w=[c,-c]  b=-3c

Elde ettiğimiz genişlik için denklemi tekrar sokmak

2||w||=4222c=42c=14

w=[14,-14]  b=-34


(Ben scikit-learn kullanıyorum)

Öyleyse ben, manuel hesaplamaları kontrol etmek için bazı kod

from sklearn.svm import SVC
clf = SVC(C = 1e5, kernel = 'linear')
clf.fit(X, y) 
print('w = ',clf.coef_)
print('b = ',clf.intercept_)
print('Indices of support vectors = ', clf.support_)
print('Support vectors = ', clf.support_vectors_)
print('Number of support vectors for each class = ', clf.n_support_)
print('Coefficients of the support vector in the decision function = ', np.abs(clf.dual_coef_))
  • w = [[0,25 -0,25]] b = [-0,75]
  • Destek vektörlerinin endeksleri = [2 3]
  • Destek vektörleri = [[2. 3.] [6. -1.]]
  • Her sınıf için destek vektör sayısı = [1 1]
  • Karar fonksiyonundaki destek vektörünün katsayıları = [[0.0625 0.0625]]

Kilo işaretinin dersle ilgisi var mı?

Tam olarak değil, ağırlıkların işaretinin sınır düzleminin denklemi ile ilgisi var.

 

Kaynak

https://ai6034.mit.edu/wiki/images/SVM_and_Boosting.pdf


5

Özellik seçiminde bu kağıdı kontrol edin . Yazarlar, belirli bir özniteliğin uygunluğuna karar vermek için sıralama çekirdeği SVM tarafından atanan ağırlık karesini (niteliklerin) kullanırlar. Bu, mikroarray verilerinden genlerin seçilmesinin son derece atıfta bulunan yollarından biridir.


3

Guyon ve Elisseeff (2003) tarafından hazırlanan harika bir makale. Değişken ve özellik seçimine giriş. Makine öğrenimi araştırması dergisi, 1157-1182, şöyle der: "İyi bir tahminci oluşturmak için faydalı özellik alt kümelerinin oluşturulması ve seçilmesi, potansiyel olarak ilgili tüm değişkenlerin bulunması veya sıralanması sorunuyla çelişmektedir. En alakalı değişkenlerin seçilmesi, genellikle Tahminde bulunmak, özellikle değişkenlerin fazla olması durumunda, tersine, yararlı değişkenlerin bir alt kümesi birçok gereksiz, ancak ilgili değişkenleri hariç tutabilir. "

Bu nedenle genel olarak doğrusal modellerin ağırlıklarını yorumlarken dikkatli olun (lojistik regresyon, doğrusal regresyon ve doğrusal çekirdek SVM dahil). SVM ağırlıkları giriş verilerinin normalleştirilmemesi durumunda telafi edebilir. Belirli bir özelliğin SVM ağırlığı, özellikle özellikler ilişkiliyse, diğer özelliklere de bağlıdır. Bireysel özelliklerin önemini belirlemek için özellik sıralaması yöntemleri daha iyi bir seçimdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.