5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

SupportVectorMachine(SVM)とその周辺

1 :Vapnik:2006/07/15(土) 22:21:02
SVMを中心に、そこから派生する話題も取り扱います。

・ 汎化性能の評価(VC次元など)
・ 最適化(凸解析や最適化アルゴリズム)
・ カーネルトリック及びカーネルの設計

2 :名無しさん@5周年 :2006/07/15(土) 22:55:24
2get!!
塩漬けの予感。

3 :名無しさん@5周年:2006/07/16(日) 18:40:02

テンプレに何入れる?

4 :名無しさん@5周年:2006/07/16(日) 20:04:01
とりあえずドメインまでとって気合いいれているところたちage
すみずみまで見たわけではないのでいいサイトかどうかはわからん
http://www.support-vector-machines.org/
http://www.support-vector.net/
http://www.svms.org/

5 :名無しさん@5周年:2006/07/16(日) 20:06:23
有名どころライブラリ
LIBSVM -- A Library for Support Vector Machines
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
SVM-Light Support Vector Machine
http://www.cs.cornell.edu/People/tj/svm_light/


6 :名無しさん@5周年:2006/07/16(日) 20:08:57
カーネルもいれるなら
http://www.kernel-machines.org/
http://www.kernel-methods.net/

7 :名無しさん@5周年:2006/07/16(日) 20:48:12
Wikipedia(en)
http://en.wikipedia.org/wiki/Support_vector_machine
リンク集にもなってるのでとりあえず。

以下、入門資料編

日本語資料
http://www.neurosci.aist.go.jp/~akaho/kernel.html
http://staff.aist.go.jp/takio-kurita/index-j.html

Scholkopfの本
http://www.learning-with-kernels.org/
前半部の中身を丸ごと公開してる。
チュートリアルは分かりやすいのでオススメ。

8 :名無しさん@5周年:2006/07/17(月) 20:27:45
主観的な感触だけど、総じてSVMよりLPの方が学習速いし、
判別性能の方もあんましかわらなくない?


9 :名無しさん@5周年:2006/07/17(月) 23:05:02
そりゃ問題によりますがな
一応SVMは本質的には(凸の)QPだから適用範囲は広いはず
LPで済む問題なら当然速いし汎化性能も変わらないでしょ

本当はVC次元とかで議論すべきなんだろうけどよく分からん・・・

10 :名無しさん@5周年:2006/07/18(火) 02:26:10
LP, SVM, NNでならどう使い分ける?
複雑化する理由見つけられずに、
線形世界で済んでるって人多いよね。

ところで、なんでシミュ板?


11 :名無しさん@5周年:2006/07/18(火) 05:05:56
>>10
NNスレの派生なんだけど、どこか別の板が適切だった?
数値実験って意味ではここで合ってると思うけど。
もちろん理論系の人も大歓迎です。

使い分けの話はオレもよくわかんないから聞きたいな。
研究目的かそうでないかで根拠は違ってくるだろうけど。

12 :名無しさん@5周年:2006/07/18(火) 07:00:54
正直NNスレ探すのも苦労したw

13 :名無しさん@5周年:2006/07/18(火) 07:12:50
LPで済むなら当然LP
ほとんど無理だと思うわけだが

SVMとNNはあまり比べるものではないが、幾つか並べると、
・SVMは大局解、NNは局所解
 NNの初期値依存性はかなり酷い
・SVMはマージン最大化による高い汎化能力を持つ
 NNは未知の入力に対する出力を全く保証しない
・容易にスパースになる問題においてはSVMの計算速度が上
 ごちゃごちゃした問題では逆転する
・基本的にSVMはバッチ学習が前提になる
 NNはオンラインのほうがむしろ性能が高かったりする
・NNの方が亜種がたくさん
 探せば目的に特化したのが見つかるかも

なんでLPとSVM・NNを比べてるのかよく分からない
計画問題畑の人はSVMやNNよりSQPに着目してるのかと思ったが

ちなみにSVMもNNも研究目的以外ではほとんど活躍しないだろうね

14 :名無しさん@5周年:2006/07/18(火) 15:59:53
LPでほとんど無理ってなぜ?
ある種のセンスはいるけど
LPほど適用範囲の広いツールは
他にないと思うが。


15 :名無しさん@5周年:2006/07/18(火) 16:40:07
LPは目的関数も制約条件も線形と言う制限がついてるわけで、
>LPほど適用範囲の広いツールは他にない
これはひどい

例えばQPはまるまるLPの適用範囲を含みますが

16 :名無しさん@5周年:2006/07/18(火) 17:14:47
制約条件を線形の範囲で問題をうまく変換するのが
ある種のセンスといってるわけで、
LPなら100万元の問題でも解けるけど、
QPなんてNP困難なんだからまともに解けやしないよ。


17 :名無しさん@5周年:2006/07/18(火) 17:28:51
LPのほうが速いのは当たり前
LPへの近似はより複雑なモデルで計算不可能になって初めて仕方なくやるもの
近似しないで計算できればそっちがいいから試みる

QPくらいなら解く時代になってきてるよ
より高次のものをQPに近似しながら解くSQPが流行りで、
近似先すらLPでなくてQPになりつつある


ちなみにSVMやNNはそもそも目的関数の形の数式で記述できない問題も扱う
(入力と出力の訓練例に対して、SVMなら汎化を、NNなら模倣を試みる)
思想がだいぶ違う

18 :名無しさん@5周年:2006/07/18(火) 17:52:52
なんか話が逸れてきそうなんで、終わりにするけど、
要するに応用だと問題が100万元超なんてざらで、SVMとLPでの計算時間の差が
100倍以上になったりするから、LPはまだまだ最前線で活躍中ってことさ。
俺が揚げ足取ったから話が曲がっちまったんだな。すまんな。
LPも忘れないでやってくれ。結構使えるやつだから。


19 :名無しさん@5周年:2006/07/18(火) 18:01:54
俺が話を理解できてないっぽいな
機械学習畑の人間であまりLPとか使った事ないんだ
申し訳ない

SVMとLPを同じ問題に使ってるってのがよく理解できないから
できたら何で実験してるのか教えて欲しい
定式化したもののパラメータ求めるならLP,QP他のほうが絶対いいし、
できないならLP他は使えないと思うんだけど

20 :名無しさん@5周年:2006/07/18(火) 18:05:42
いや、なんかおかしいな
SVM使ったら、その枠組み上で問題が凸二次計画問題になるはずだな
頭のいい人なら直接QPで書けるのか
なんか完全に見当違いのこと言ってたね
忘れてくれ

21 :名無しさん@5周年:2006/07/18(火) 18:37:12
一応、LPで判別、パラメータ学習を行う典型例としては、
正例の特徴ベクトル\vec{p}_1,\vec{p}_2,...,\vec{p}_N
負例の特徴ベクトル\vec{n}_1,\vec{n}_2,...,\vec{n}_M
はSVM、LPで共通として、
LPの場合は、

min 農{i,j} q_i + r_j


s.t.
\vec{v} ・ \vec{p}_i + qi > T
\vec{v} ・ \vec{n}_j - rj < T
q_i≧0, r_j≧0

という形式が多いかな (\vec{v}, q_i, r_j, Tなどが変数)



22 :名無しさん@5周年:2006/07/19(水) 03:22:24
なんだか楽しそうなwiki発見。こんなのあったんですね。
http://www.neurosci.aist.go.jp/ibisforest/index.php?FrontPage

管理人は神嶌氏&赤穂氏だそうで

23 :名無しさん@5周年:2006/07/19(水) 04:35:49
>>21
行列の形でまとめて書くと、
P=(\vec{p}_1^T,...,\vec{p}_N^T)
N=(\vec{n}_1^T,...,\vec{n}_M^T)
\vec{q} = ( q_1,...,q_N )
\vec{r} = ( r_1,...,r_M )
\vec{c} = ( c, c,...,c )
(^T:転置)

として、制約条件:
P\vec{v} + (\vec{q} - \vec{c}) > \vec{0}
N\vec{v} - (\vec{r} + \vec{c}) < \vec{0}
\vec{q}≧\vec{0}, \vec{r}≧\vec{0}

のもとで、損失関数L=農{i,j} q_i + r_jを最小化するよう
\vec{v}, \vec{q}, \vec{r}, \vec{c}を全部求めるって感じですか。
(\vec{v}に関してはノルムとかに制約なし?)

イメージ的には、
正例の特徴ベクトルに対しては> 0、負例に対しては< 0の値を対応させるような
写像f:V(入力空間)→R、具体的にはf(\vec{x}) = \vec{v}・\vec{x} + b (vへの射影)
の形で考えて、あとはfの符号を取れば判別器F:V→{-1,1}が作れそうですね。

q_iやr_jはスラック変数だろうから、ソフトマージンによるlinear-SVMと似た効果かな?
ただ、LPのさわりしか知らないおれには制約条件が難しくて具体的な解法はわかんない。

>>21のレスから勝手に想像して書いたので的外れなこと言ってたらすみません)

24 :名無しさん@5周年:2006/07/19(水) 07:15:13
>>23
LPでは定数項がない場合に
正例は閾値+1以上、
負例は閾値-1以下、
というように定数を混ぜて、
スケーリングの自由度を
消す場合があります。
ノルムは考えないです。
解法って単体法や内点法のこと?


25 :名無しさん@5周年:2006/07/19(水) 08:18:06
>>24
> 解法って単体法や内点法のこと?
内点法や単体法にどう持ち込むのかなと思って。
制約条件の部分で、

\vec{v} ・ \vec{p}_i + qi > T
\vec{v} ・ \vec{n}_j - rj < T

とありますが、単にこれを等号にするスラック変数を入れるだけ?

ちなみに>>23で言ったスラック変数は罰則対象になる変数という意味で、
LPで言う等号化のためのスラック変数とは別の意味で使いました。
自分で言っておいて混同しちゃったかも。

26 :名無しさん@5周年:2006/07/19(水) 21:00:18
>>25
適当に書いてしまったけど、おっしゃる通り、
定数項を入れたりして等号付きで書くのが
適切です。


27 :名無しさん@5周年:2006/07/21(金) 23:36:28
分かっていないので阿呆なことを聞いているかもしれませんが、
ベジェとかスプライン曲線/曲面など補間でよく使われるような
多項式でカーネルを作ることってできるんですか?

もし作れたとしたら、サポートベクトルたちが構成する
超平面も滑らかな曲線/曲面になったりする?

28 :名無しさん@5周年:2006/07/22(土) 05:34:10
カーネルって基本的に2つの事例間の類似度を表すものよ
カーネルは特徴空間へのマッピングを担当してるだけで、
カーネル関数で近似してるわけではない
別に多項式で作ったっていいけどそれが直接の原因で滑らかになったりはしないはず

ってか、特徴空間で線形分離されるだけで、
元の空間に戻れば普通にガウシアンカーネルとかでも曲面だぞ?

29 :名無しさん@5周年:2006/07/22(土) 05:36:56
そういえば普通に多項式カーネルってあったね

30 :名無しさん@5周年:2006/07/22(土) 08:38:54
>>28
ありがとうございます。

> ってか、特徴空間で線形分離されるだけで、
> 元の空間に戻れば普通にガウシアンカーネルとかでも曲面だぞ?

入力の空間の非線形性を関数の空間の線形性で
解決しようというアイデアはなんとなく分かるのですが
また元の空間で超平面を解釈したときの形は
何に依存するんだろうと疑問に思いまして…。

もしかすると、関数の具体的な形というよりも
計量の定め方次第ということなのでしょうか。

31 :名無しさん@5周年:2006/07/22(土) 14:07:21
滑らかってのは一次微分が連続ってことかな。
どうなんだろ。滑らかな気がするけど。


32 :名無しさん@5周年:2006/07/23(日) 18:59:32
>>30
元の空間での分離平面の形に影響してくるのは特徴空間から元の空間に戻す逆写像だろうけど、
カーネルトリックのおかげで写像がどんなものなのかは分からないのね
カーネルって特徴空間の内積を定義してるだけなのよ
関数の形の解釈は難しいんじゃないかな
(線形分離するために高次元の特徴空間に飛ばすわけだから、直接写像の計算はしたくない
 だから内積だけ考えるのがカーネルトリック)
評価するならVC次元だけど、滑らかという概念を考えられるのだろうか・・・

カーネルの種類と関係なく、ソフトマージンはかなり効いてくる
あたりまえだけどソフトにすれば滑らかになるけど分類は甘くなる

33 :名無しさん@5周年:2006/07/24(月) 07:05:20
>>32
> カーネルトリックのおかげで写像がどんなものなのかは分からないのね

例えばある有限次元ベクトル空間R^nの元\vec{x}と、標準内積で定まるノルム||\vec{x}||
との対応が全単射でない(ある非負実数とR^n上の半径||\vec{x}||の球面全体)ことからすでに
特徴空間上のノルムだけから写像や逆写像の形を具体的に知ることが無理っぽいのは
想像がつくのですが、それならば、具体的な写像と逆写像の形を先に与えておいてから
カーネルを作ることはできないのでしょうか?

安易かもしれませんが、有限次元なら
写像Φ:R^2 → R^3の形を具体的にΦ(\vec{x}) = (x_1, x_2, x_1*x_2)でつくっておいて
カーネル k(\vec{x},\vec{y}) = <Φ(\vec{x}), Φ(\vec{y})>(標準内積)にするとか、
無限次元なら、なんらかの具体的な自乗可積分関数に対応させたりで
作ったりできそうな気もするのですが。

34 :名無しさん@5周年:2006/07/24(月) 07:25:51
>>33
作ってもいいけど、計算が大変よ・・・
ってか、計算できるならカーネル使う必要ない

データ数以上の次元に飛ばせば必ず線形分離できるよね、
って話から始まってて、一般に特徴空間は高次元
それを避けるためのカーネルトリックでしかない

35 :名無しさん@5周年:2006/07/24(月) 07:39:11
>>34
計算が目的ではなくて、特徴空間で線形的に処理したことが
元の空間にどういう影響をもたらしたかを見てみたいと思いまして。

36 :名無しさん@5周年:2006/07/24(月) 07:42:13
写像次第じゃないの?
よく使うカーネルトリック使ったのは写像が分からないから関数の形では評価できないと思うよ

あーなんかループしてる・・・

37 :名無しさん@5周年:2006/07/24(月) 07:59:11
あーそうか
もしかして特徴空間へのマッピングがカーネルトリックと思ってるのかな

特徴空間でやろうってのはただの非線形SVMの話で、
ラグランジュの未定乗数法で定式化されるわけだけど、
その目的関数に φ(x1)^Tφ(x2) が含まれるのね
φは高次元で計算嫌だからこいつを K(x1,x2) で置き換えてしまうのがカーネルトリック
(二次計画問題になるからもともと計算量がヤバイ)

カーネルと関係ない話だったのかな

38 :名無しさん@5周年:2006/07/24(月) 08:39:28
>>37
凸2次計画問題で定式化した際に出てくる内積の計算を可能に、または
しばしば楽にするためカーネル関数を使うという動機付けは分かります。

しかし、>>28>>32を見てやはり大きく勘違いしている気がしてきましたが、
写像した先で線形分離するために、サンプル数より大きな次元を取っている
だけの話で、具体的な写像の形は、元の空間における非線形な境界面の構成に
形として見て取れるほど影響してないということなんですね。

そうなると、カーネル関数を選んだり、パラメータを調節したりする意義が
分からなくなるのですが、無数に存在する分離可能な平面(問題の解)の中から
入力された特徴量に対してよりよい汎化能力を持つ解を選ぶような感じでしょうか。

39 :名無しさん@5周年:2006/07/25(火) 00:52:46
津田さんのやってたのはどういうことなの?
教えてエロイ人

40 :名無しさん@5周年:2006/07/25(火) 01:15:27
>>38
>具体的な写像の形は、元の空間における非線形な境界面の構成に
>形として見て取れるほど影響してない
そんなことはない
高次に飛ばせば特徴空間で必ず線形分離できるけど、
その分離が元の空間にとって良い物であるかは分からないし、
それは写像しだいで変わってくる

適当なカーネルで(そのカーネルの中の)パラメータを極端にしてやってみればすぐ分かるよ
正例のごく周辺だけを正と見てその他の大部分の空間は負とか、
全然意味の無い分類をしだす(訓練例に対する分類は正しくても汎化能力を失っている)

どのカーネルを使ったら上手くいくかってのは多分よく分かってなくて、
(VC次元で頑張って評価している人に怒られそうだが)
カーネルは使いやすいのを選んでそのカーネルに関するパラメータをいじるのが普通かな
あとソフトマージン使うとまたちょっと手間が増える

解は無数にある事になるけど、パラメータを決めた上では大局解に落ち着くから
他の多くの局所解に陥る手法よりはだいぶやり易いと思うよ

41 :名無しさん@5周年:2006/07/25(火) 01:48:46
>>38
ttp://noplans.org/~1gac/html/R/index.htmlの『07 パタン識別(2)』
あたりを参考にして、カーネルやパラメータをいじって遊んでみるといいかも。

42 :名無しさん@5周年:2006/07/25(火) 08:30:31
>>41
横槍でトンクス
最近Rの神ページが増えてきて嬉しい

43 :名無しさん@5周年:2006/07/25(火) 18:00:23
>>40
ありがとうございます。
特徴空間の上ではマージンを最大化する大域的最適解に落ちてても
それが具体的にどうのように元の空間に影響してるか知るのは難しそうですね。

>>41
早速遊んでみます。

『少年老い易く学成り難し』を書いてる人ですよね。
この人の日記も機械学習の話題が多いのでおもしろく読ませてもらってます。
ttp://noplans.org/~1gac/

私事ですが、自分もRで色々パラメータやカーネルをいじってみようと
思ってたんですが、e1071を使うとなぜかエラー終了してしまうので
諦めていたのですが、どうやらBlasの差し替えが原因でした…。

44 :名無しさん@5周年:2006/07/25(火) 22:06:03
νSVMでνを一定に決めた場合、ρ/|w|の値は異なるカーネル使ったモデル間の評価に使えるもの何ですか?

45 :名無しさん@5周年:2006/07/25(火) 22:35:32
ρ/|w|って||α||な気がするけど何の意味が?
||α||はカーネル依存だし、どうやって異なるカーネルの評価を??

46 :名無しさん@5周年:2006/07/25(火) 22:41:41
マージンが大きければ大きいほど汎化能力が高いんじゃないんですか?
νでマージンエラーを固定すればそのままマージンが評価基準になるのかなぁ〜と思ったんですが。
勉強不足のようなんで出なおしてきます。

47 :名無しさん@5周年:2006/07/25(火) 22:43:37
特徴空間で汎化能力高くても元の空間で高いとは限らないよ?

48 :名無しさん@5周年:2006/07/25(火) 23:04:07
そっか、よく考えれば<w,φ(x)>/|w|なんだからφ(x)の形が変われば全く意味を成さないか。

49 :名無しさん@5周年:2006/07/25(火) 23:18:55
モデルによらずに評価できるVC次元ってのがあるから勉強してみるといいかも
なんか結局色んな近似が入って大変な事になってるみたいだけどね

俺はよく知らない

50 :43:2006/07/25(火) 23:22:16
# ---- 引数 ----
# x: 二次元の訓練データ(列が変数の行列)
# label: 訓練データのラベルのベクトル(-1 or 1)
# resol: image表示の際の解像度
# ... : svm()に渡す引数(kernel="sigmoid"など)
# ---- 返り値 ----
# svm()の返すものと同じです

conplot.svm2d <-function(x, label, resol=c(100,100), ...)
{
require(e1071)
rx <- range(x[,1])
ry <- range(x[,2])
tx <- seq(rx[1], rx[2], len=resol[1])
ty <- seq(ry[1], ry[2], len=resol[2])
grd <- expand.grid(tx, ty)
model <- svm(x, label, ...)
pred <- predict(model, grd)
hmap <- matrix(pred, resol[1])
image(tx, ty, hmap, xlab="", ylab="")
contour(tx, tx, hmap, level=0, drawlabels=F, lty=2, add=T)
points(x[label == 1,], pch=21, bg="black")
points(x[label == -1,], pch=21, bg="white")
title("SVM classification", family="serif")
invisible(model)
}

## Example
# library(MASS)
# x <- rbind(mvrnorm(100,c(0,0),diag(2)), mvrnorm(100,c(2,2),diag(2)*2))
# label <- rep(c(-1,1), each=100)
# conplot.svm2d(x, label, kernel="radial")

51 :43:2006/07/25(火) 23:30:38
>>41を参考にして、svmの学習用Rプログラム>>50を組んでみたので
R使いの人はどうぞ持っていってください。
我ながらなかなか使いやすいのではないかと思います。

ってかsvm()のラベルに-1,1を与えるとpredict()で判別器の生の値が
返ってくるって知らなかったよ…。少年老〜ブログの中の人に感謝。

52 :43:2006/07/25(火) 23:37:27
>>50の訂正
> contour(tx, tx, hmap, level=0, drawlabels=F, lty=2, add=T)
contour(tx, ty, hmap, level=0, drawlabels=F, lty=2, add=T)

tx, txじゃなくてtx, tyです。すんません。
>>50のままだとクラス間の境界のプロットがズレました。

53 :43:2006/07/26(水) 00:17:05
>>51
> svmの学習用Rプログラム

ML系のスレで学習用と名付けるのは不適切だった。
単に、お勉強用のスクリプトって意味です。どうでもいいか。

54 :名無しさん@5周年:2006/07/26(水) 00:58:16
>>51
ラベルに1,-1を入れてtypeを指定しなかったらSV回帰になっちゃんじゃないか?

55 :43:2006/07/26(水) 01:59:05
>>54
マイナーチェンジしました。
これで引数...の中でtypeオプションを指定すれば回帰も判別もOKです。
回帰モードになってたてことは判別器の返す値ではなかったんですね。
(ラベルが数値のときは回帰してますてヘルプに書いてありました…。)

引数のベクトルlabelがnumericのときはRegression
factorのときはClassification(2色の塗り分け)になります。

なんかマズいとこあったら言ってください。

conplot.svm2d <-function(x, label, resol=c(100,100), ...)
{
rx <- range(x[,1])*1.2
ry <- range(x[,2])*1.2
tx <- seq(rx[1], rx[2], len=resol[1])
ty <- seq(ry[1], ry[2], len=resol[2])
grd <- expand.grid(tx, ty)
model <- svm(x, label, ...)
pred <- predict(model, grd)
hmap <- matrix(as.numeric(pred), resol[1])
image(tx, ty, hmap, xlab="", ylab="")
contour(tx, ty, hmap, level=mean(as.numeric(label)), drawlabels=F, lty=2, add=T)
points(x[ label == unique(label)[1],], pch=21, bg="black")
points(x[ label == unique(label)[2],], pch=21, bg="white")
title("SVM - 2D plot (e1071)", family="serif")
invisible(model)
}

56 :43:2006/07/26(水) 04:09:34
Classificationの場合、predict()は二値しか返せないのだろうか…。
ttp://noplans.org/~1gac/d/blosxom.py/works/machine_learning/m9.html
同氏のこんな感じのプロットが理想形だったんだけど。

"Learning Kernel Classifiers"のSoftware Resourceのページも紹介してあったけど
http://www.learning-kernel-classifiers.org/software_resources.htm
ここはR使いの人には参考になりそうです。

なんか完全にRの話題に逸れてしまって申し訳ない。

57 :名無しさん@5周年:2006/07/26(水) 10:00:32
predict(model, grd, decision.values = TRUE)
attr(pred, "decision.values")
ってやれば超平面からの距離が計算できるハズ.

あとパッケージkernlabのksvmつかって、
model <- ksvm(y~x)
alp <- alpha(model)
kernelMult(kernel, x=grd, y = x, z=alp, blocksize = 256)
でもいいかと。

58 :57 :2006/07/26(水) 10:01:39
ミスった
pred <- predict(model, grd, decision.values = TRUE)
ね。

59 :名無しさん@5周年:2006/07/26(水) 17:11:39
>>57-58
激サンクス!うまいこと超平面からの距離得られたよ。
ついでにSVにマークも付けておいた。
これでだいぶ分かりやすいプロット画面になったかと。

conplot.svm2d <-function(x, label, resol=c(100,100), ...)
{
rx <- range(x[,1])*1.2
ry <- range(x[,2])*1.2
tx <- seq(rx[1], rx[2], len=resol[1])
ty <- seq(ry[1], ry[2], len=resol[2])
grd <- expand.grid(tx, ty)
model <- svm(x, label, ...)
pred <- predict(model, grd, decision.values=T)
hmap <- matrix(attr(pred, "decision.values"), resol[1], resol[2])
image(tx, ty, hmap, xlab="", ylab="", col=heat.colors(40))
contour(tx, ty, hmap, level=-1:1, drawlabels=F, lty=c(3,1,3), add=T)
points(x[label == unique(label)[1],], pch=21, bg="black")
points(x[label == unique(label)[2],], pch=21, bg="white")
points(x[model$index,], cex=1.6)
title("SVM - 2D plot (e1071)", family="serif")
box()
invisible(model)
}

## Example2: Circle in a Square Problem
# library(mlbench)
# train <- mlbench.circle(100)
# conplot.svm2d(train$x, train$cl, kernel="rad", type="C", gamma=4)

60 :名無しさん@5周年:2006/07/30(日) 20:18:07
>>59
中身勝手にアレンジして使わせてもらってます!

61 :名無しさん@5周年:2006/07/30(日) 21:03:43
>>60
使えるなら勝手に使ってやってください。
すでにお気づきかもしれませんが、表示範囲の設定が

rx <- range(x[,1])*1.2

だと範囲が原点をまたぐときしかうまくいかないので

rx <- range(x[,1])
rx <- rx + scale(rx, scale=F)*(expand-1)

みたいに変えて、expandを拡大倍率の引数に
するなりの修正を加えておいてください。

62 :名無しさん@5周年:2006/08/07(月) 20:30:51
普通のSVMとLPSVMの違いって、
正則化項が (α^T)Kα か sum(|α|) かの違いですよね?

んでsum(|α|) <= 1なら、(α^T)Kα もなんか適当な定数Mで抑えられますよね?

だったら
『max ρ, s.t sum(|α|) <= 1,...』ってやるのも、
『max ρ, s.t (α^T)Kα <= 1,...』 ってやるのも一緒なんじゃねえの?
っておもったんだけど、何がだめなの?

63 :名無しさん@5周年:2006/08/07(月) 20:40:28
>>62
確認前に書き込んでしまった。
×何がだめなの?
〇何がどう違うんでしょうか?

64 :名無しさん@5周年:2006/08/27(日) 21:20:43
age

65 :名無しさん@5周年:2006/08/30(水) 17:36:51
NIPS2006の査読結果って、いつ頃くるんだろうか。

66 :名無しさん@5周年:2006/10/12(木) 06:50:26
hosh

67 :名無しさん@5周年:2006/10/30(月) 17:38:50
ガウシアンカーネル使ったSVMで判別したいんですが、
データ数や入力次元から計算できるようなカーネルパラメータの目安ってないんですか?

68 :名無しさん@5周年:2006/11/19(日) 21:04:55
すいません、svm-lightのmulticlass使いたいんですけど
とりあえず原理などはおいておいて、
動かす際のデータの入力ってどうすればいいのでしょう?

svm-lightは、未知(これから振り分ける)のデータに対して
0というクラスを与えましたが、
multiclassではどうなるのか。。。
分かる方いらっしゃいましたら
ご解答よろしくお願いいたします。

69 :名無しさん@5周年:2006/11/20(月) 22:15:30
>>68
svm-multiclassでググると使い方書いてるページがあったような

70 :名無しさん@5周年:2006/11/26(日) 01:29:09
>>69さん
それが、未知データに関する記述が見つからないんですよ…。
教師データに関しては書きかたがのっていたのですが。
ぅーむ。
でも、回答ありがとうございました!

71 :名無しさん@5周年:2007/01/10(水) 04:22:12
>>68です。
すいません、svm-lightの分類モードで結果として
得られる数値ってなんなんでしょうか?
sign(g(x))関数に変換(+1、−1)すると、
それぞれのクラスに分類されるんだろうとは思いますが。。。

調べてみると、
決定関数値(decision function)などと書かれているものを見つけました。
が、それがなんなのかよくわからず…。

分離超平面からの距離なのかな〜とも思ったのですが、
周りにsvmを知ってる人間がおらず、
四苦八苦しています。

申し訳ありませんが、ご回答お願いいたします。

72 :名無しさん@5周年:2007/01/10(水) 06:32:21
>>70
example4のtest.dat見りゃわかるだろ

73 :>>68:2007/01/11(木) 03:43:56
>>72サン
返答ありがとうございます。
test.dat
はもちろん見てみました。
lightの場合は未知クラスは0でしたが、
multiclassではそうではないみたいで、
これをどう振っているのかが分かりませんでした。

74 :名無しさん@5周年:2007/01/11(木) 06:56:11
>>73
確かtest.datのtargetだけ変えても結果は変わらんだろ?やってみた?
lightにしろmultiにしろtrain.datとtest.datは同フォーマットだからclassificationの際は無視された筈。
lightでtarget=0ってのは未知数って事で、そう定義しても良いだけでtest.datのtargetを全部0にする必要もない筈。

75 :名無しさん@5周年:2007/01/12(金) 15:39:49
さげると思うな

29 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)