私は SVM 理論にあまり詳しくなく、Python でこの LinearSVC クラスを使用しています。
http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC
ペナルティと損失パラメータの違いは何ですか?
私は SVM 理論にあまり詳しくなく、Python でこの LinearSVC クラスを使用しています。
http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC
ペナルティと損失パラメータの違いは何ですか?
機械学習では、損失関数はソリューションの品質を測定しますが、ペナルティ関数はソリューションにいくつかの制約を課します。
具体的には、Xをデータ、yをデータのラベルとします。次に、損失関数 V(f(X),y)は、モデルfがデータをラベルにどの程度うまくマッピングするかを測定します。ここで、f(X) は予測ラベルのベクトルです。
L1 ノルムと L2 ノルムは一般的に使用され、直感的に理解できる損失関数です ( *を参照)。L1 norm : V(f(X),y) = |f(x1) - y1| + ... + |f(xn) - yn|
、ここで、f(xi) - i 番目のオブジェクトの予測ラベル、yi は実際のラベルです。L2 ノルム: V(f(X),y) = sqrt(|f(x1) - y1|^2 + ... + |f(xn) - yn|^2)
、ここで、sqrt は平方根です。
ペナルティ関数については、解fにいくつかの制約R(f)を課すために使用されます。L1 ノルムは である可能性があり、同様に L2 ノルムを定義できます。ここで、f1,..., fmはモデルの係数です。これらは、機械学習アルゴリズムによってデータから学習されている値です。R(f)=|f1| + ... + |fm|
最終的に、全体のコスト関数はV(f(X),y) + lambda*R(f)
です。目標は、費用関数を最小化する f を見つけることです。次に、この f を使用して、新しい見えないオブジェクトを予測します。なぜペナルティ関数が必要なのですか? ペナルティ関数は、ソリューションにいくつかの優れたプロパティを追加する可能性があります。たとえば、特徴量が多すぎる場合、L1 ノルムはスパース ソリューションを生成することで過適合を防ぐのに役立ちます。
*これは、サポート ベクター マシンの正確な動作ではありませんが、これらの用語の意味を理解するのに役立ちます。たとえば、SVM では、L1 ヒンジ損失関数と L2 ヒンジ損失関数が使用されます。L1-hinge :
V(f(X),y) = max(0,1 - y1*f(x1)) + ... + max(0,1 - yn*f(xn))
、および L2 も同様ですが、二乗項があります。Coursera の Andrew Ng による Machine Learning クラスで ML の優れた紹介を見つけることができます。