[R][e1071]libsvm のモデルについて(いろいろ意訳)

write.svm で出力したモデルファイルの内容について。
あちこちからかき集めた内容を、やや意訳してみた。
合ってないかも。


rho

バイアス項
決定関数 wx+b の切片 -b(正負を逆にするとbになる?)

ProbA, ProbB

2つで1組になっている。
確度を出力する際に使用するパラメータで、probability=FALSE(確度を出力しない)のときは、値が空になる。
二値分類(1 / (1 + exp(a x + b)))の判定予測値のためのロジスティック分布のパラメータである。
(↑ここの訳はかなり自信ない)
k個のクラスがあるとき、k*(k-1)/2 の二値分類問題を解くことになり、rho, probA, probB も同数出力される。
これらの値は、二値分類問題の順番に対応して並んでいる。
二値分類問題は
  1 vs 2, 1 vs 3, ..., 1 vs k, 2 vs 3, ..., 2 vs k, ..., k-1 vs k.
という順番で、この番号(ラベル)はlabelの項で出力されていて、教師データのラベルである。
(教師データのラベルは、クラスの出現順に番号が付与され、
二値分類の場合は -1/1、多値分類の場合は 1,2,...のように付与される)

nr_sv

各クラスのサポートベクタの数。
クラスの数だけ、数字が並ぶ。
この数字を全部足すと total_sv の数になる。

SV

行頭のセミコロンなしの数値は、各クラスに対応した係数。
セミコロンありの数値は、特徴量番号:重み。
特徴量番号は1から。



SVの見方は結構ややこしい。
Q: Can you explain more about the model file?
+-+-+-+--------------------+
|1|1|1| |
|v|v|v| SVs from class 1 | SVが数行並ぶ
|2|3|4| |
+-+-+-+--------------------+
|1|2|2| |
|v|v|v| SVs from class 2 |
|2|3|4| |
+-+-+-+--------------------+
|1|2|3| |
|v|v|v| SVs from class 3 |
|3|3|4| |
+-+-+-+--------------------+
|1|2|3| |
|v|v|v| SVs from class 4 |
|4|4|4| |
+-+-+-+--------------------+


教師データのラベルに文字列を付与していた場合、
この1とか2とかがどれに当たるのかが、すごくわかりづらい。
多分こんなじゃないかと想像していることを以下に書いてみる。
違ったら誰か教えて。

この1とか2とかはクラス番号なので、ラベル番号とは違う。
モデルファイルに
  label 4 3 2 1
とある場合は、
  class 1 -> ラベル4
  class 2 -> ラベル3
  class 3 -> ラベル2
  class 4 -> ラベル1
となる。
このラベル番号は、教師データのラベル文字列の出現順に1から付与される。
出現順は何を見たらわかるかといえば、
predict の出力結果をprintすると出力される確度表のヘッダの順番だと思う。
これ以外に出力されていない希ガス。
Labels は全然違う順番になっちゃってる。
(文字で降順ソートされているのかな?)
[PR]
by xiaoxia | 2014-07-30 17:41 | ソフトウェア | Comments(0)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞