2017-04-14 1 views
1

私はsklearnでPython 2.7を使用していて、rbfカーネルでsklearn.svm.SVCを使用しています。python sklearn non linear svm penalty

here を説明したように、私はCとガンマを使用してみましたし、私が正しく理解していればCが間違ったとガンマを分類するためのペナルティであるので、それはトリックに

をしませんでしたCおよびガンマは、L1とL2のペナルティはありませんデータサンプルに関する汎化パラメータである。私はl1とl2のような複雑さのためにモデルに不利益を与える何かを探しています。

正則化とl1またはl2のペナルティを使用したいと思っていますが、私はいくつかの例を見つけましたが、私はSVCでペナルティパラメータを使用しようとすると、スローとエラーが発生します。

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

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' 

私は例がこの場合のために良くないことを知っている、と私はSVCには存在しないペナルティを使用しようとしていますエラーを取得し、私は右を探していますそれを行う方法とこれは私が見つけた最も近いです。

SVCクラスのdocsを見て、私はそれが私はRBFカーネルSVMまたは場合はL1とL2のペナルティを使用する方法

は、私はどのように他の私はオーバーを防止しようとすることができないことができペナルティ属性を持っていないことを確認しますそのモデルに合う?

+0

例について引用した例では、[LinearSVC](http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#)を使用しているため、このエラーが発生します。 sklearn.svm.LinearSVC) –

+0

パラメータ 'C'はSVCのペナルティパラメータです –

+1

@VivekKumarありがとう、私はそれを行う正しい方法を探しています – thebeancounter

答えて

0

もし私が間違っていないならば、l1とl2の正則化は線形システム、すなわち線形カーネルでしか使えないので、非線形カーネルのための異なる正則化法が開発される。さらに、次元の数がl1とl2の正則化を増やすにつれて、それほど効果的でなくなります。それはCurse of Dimensionalityの結果であり、なぜなら、これらの種類の特徴空間で使用される異なる正則化方法が開発された理由の一部である。

ガンマとCの値を調整するためにグリッド検索方法を利用することは、あなたの選択したカーネルを考慮して、SVMのオーバーフィットを避ける最良の方法になると私は@ Vivek Kumarに同意する必要があります。

+0

私はあなたが送ったものを読んでそれは意味があります、私は少しconufusedです - 私は深い学習のコースを取っているとproffesorは、深いヌーラルネットワークは11と12の正則化を使用して教えている、ただここで理解されている? @Grr – thebeancounter

関連する問題