2017-04-14 1 views
1

Ich benutze Python 2.7 mit sklearn und mit sklearn.svm.SVC mit rbf Kernel und leiden über Überanpassung.python sklearn nicht linear svm strafe

Ich versuchte, die C und Gamma Verwendung als here erklärt und es hat nicht den Trick

Wenn ich richtig C und Gamma verstehe nicht L1- und L2-Strafe, weil C die Strafe für die Klassifizierung falsch und Gamma ist der Generalisierungsparameter in Bezug auf die Datenabtastwerte. Ich suche nach etwas, das das Modell für Komplexität wie l1 und l2 bestraft.

Ich möchte Regularisierung und l1 oder l2 Strafe verwenden, fand ich einige Beispiele here, aber wenn ich versuche, die Strafe Parameter mit dem SVC zu verwenden, wirft es und Fehler.

svr_rbf = sklearn.svm.SVC(kernel='rbf', cache_size=1, class_weight={1:100}, penalty='l1') 

und den Fehler

traceback (most recent call last): 
    File "/home/thebeancounter/PycharmProjects/nlp4/try.py", line 235, in <module> 
    svr_rbf = SVC(kernel='rbf', cache_size=1, class_weight={1:100}, penalty='l1') 
TypeError: __init__() got an unexpected keyword argument 'penalty' 

Ich weiß, dass das Beispiel für diesen Fall ist nicht gut, und ich versuche, Strafe zu verwenden, die in der SVC abwesend ist, ich bin auf der Suche nach dem richtigen Weg, es zu tun, und das ist das nächste, was ich gefunden habe.

Blick auf die docs für die SVC-Klasse ich sehe, dass es keine Strafe Attribut

hat, wie ich L1- und L2-Strafe mit RBF-Kernel SVM verwenden kann, oder wenn ich kann nicht, wie sonst kann ich versuchen, über zu verhindern passend zu diesem Modell?

+0

Sie erhalten diesen Fehler, weil in dem Beispiel, das Sie über die Beispiele zitiert haben, sie ein [LinearSVC] verwenden (http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#) sklearn.svm.LinearSVC) –

+0

Der Parameter 'C' ist der Strafparameter von SVC –

+1

@VivekKumar Danke, ich weiß das, ich bin auf der Suche nach dem richtigen Weg – thebeancounter

Antwort

0

Wenn ich mich nicht irre l1 und l2 Regularisierung kann nur mit linearen Systemen verwendet werden, d. H. Der lineare Kernel und damit die Entwicklung von verschiedenen Regularisierungsmethoden für nichtlineare Kernel. Wenn die Anzahl der Dimensionen zunimmt, werden die Regulationen l1 und l2 immer weniger effektiv. Es ist ein Ergebnis der Curse of Dimensionality und das ist teilweise warum verschiedene Regularisierungsmethoden zur Verwendung in diesen Arten von Merkmalsräumen entwickelt wurden.

Ich muss @Vivek Kumar zustimmen, dass die Verwendung einer Grid-Suchmethode zum Abstimmen Ihrer Gamma- und C-Werte der beste Ansatz ist, um eine Überanpassung der SVM zu vermeiden, wenn Sie den Kernel Ihrer Wahl verwenden.

+0

Ich lese, was Sie gesendet haben und es macht Sinn, ich bin ein wenig confused - ich nehme einen Kurs in tiefes Lernen und der Professor lehrt uns, dass tiefe Netzwerke nutzen l1 und l2 Regularisierung, wie ist das möglich unter was wir nur hier verstanden? @ Grr – thebeancounter