1

Pythonでのlibsvmの使用に関する2つの質問:

  1. 問題が実行可能かどうかをどのように知ることができますか?
  2. 主変数(wとオフセットb)を取得するにはどうすればよいですか?

2D空間での4つのトレーニングポイント(*で示されている)を考慮した簡単な例を使用します。

*----*
|    |
|    |
*----*

C_SVC定式化と線形カーネルを使用してSVMをトレーニングし、4つのポイントを2つのラベル[-1、+1]に分類します。

たとえば、このようにトレーニングポイントを設定すると、分離超平面が見つかるはずです。

{-1}----{+1}
 |       |
 |       |
{-1}----{+1}

しかし、この非線形の問題では、分離超平面を見つけることができないはずです(線形カーネルのため)。

{+1}----{-1}
 |       |
 |       |
{-1}----{+1}

そして、このケースを検出できるようにしたいと思います。


2番目の例のサンプルコード:

from svmutil import *
import numpy as np

y = [1, -1, 1, -1]
x = [{1:-1, 2 :1}, {1:-1, 2:-1}, {1:1, 2:-1}, {1:1, 2:1}]

prob  = svm_problem(y, x)
param = svm_parameter()
param.kernel_type = LINEAR
param.C = 10

m = svm_train(prob, param)

サンプル出力:

optimization finished, #iter = 21
nu = 1.000000
obj = -40.000000, rho = 0.000000
nSV = 4, nBSV = 4
Total nSV = 4
4

1 に答える 1

2

線形カーネルSVMのlibsvmガイドで説明されているように、Cの指数グリッドに対して交差検定を実行します。トレーニングセットの精度が100%に近づくことができない場合は、線形モデルがデータに対して偏りすぎていることを意味します。これは、線形の仮定が誤っていることを意味します(データは線形分離可能ではありません)。

ところで。テストセットの精度は、モデルの一般化能力の実際の評価ですが、バイアスと分散の合計を測定するため、バイアスのみを測定するために直接使用することはできません。トレーニングセットとテストセットの精度の違いは、モデルの分散または過剰適合を測定します。エラー分析の詳細については、 mlクラスのオンラインクラスからの実用的なヒントとコツをまとめたこのブログ投稿を参照してください。

于 2012-04-09T07:24:24.917 に答える