1 名前:Vapnik [2006/07/15(土) 22:21:02 ] SVMを中心に、そこから派生する話題も取り扱います。 ・ 汎化性能の評価(VC次元など) ・ 最適化(凸解析や最適化アルゴリズム) ・ カーネルトリック及びカーネルの設計
2 名前:名無しさん@5周年 mailto:sage [2006/07/15(土) 22:55:24 ] 2get!! 塩漬けの予感。
3 名前:名無しさん@5周年 mailto:sage [2006/07/16(日) 18:40:02 ] 乙 テンプレに何入れる?
4 名前:名無しさん@5周年 mailto:sage [2006/07/16(日) 20:04:01 ] とりあえずドメインまでとって気合いいれているところたちage すみずみまで見たわけではないのでいいサイトかどうかはわからん www.support-vector-machines.org/ www.support-vector.net/ www.svms.org/
5 名前:名無しさん@5周年 mailto:sage [2006/07/16(日) 20:06:23 ] 有名どころライブラリ LIBSVM -- A Library for Support Vector Machines www.csie.ntu.edu.tw/~cjlin/libsvm/ SVM-Light Support Vector Machine www.cs.cornell.edu/People/tj/svm_light/
6 名前:名無しさん@5周年 mailto:sage [2006/07/16(日) 20:08:57 ] カーネルもいれるなら www.kernel-machines.org/ www.kernel-methods.net/
7 名前:名無しさん@5周年 mailto:sage [2006/07/16(日) 20:48:12 ] Wikipedia(en) en.wikipedia.org/wiki/Support_vector_machine リンク集にもなってるのでとりあえず。 以下、入門資料編 日本語資料 www.neurosci.aist.go.jp/~akaho/kernel.html staff.aist.go.jp/takio-kurita/index-j.html Scholkopfの本 www.learning-with-kernels.org/ 前半部の中身を丸ごと公開してる。 チュートリアルは分かりやすいのでオススメ。
8 名前:名無しさん@5周年 mailto:sage [2006/07/17(月) 20:27:45 ] 主観的な感触だけど、総じてSVMよりLPの方が学習速いし、 判別性能の方もあんましかわらなくない?
9 名前:名無しさん@5周年 [2006/07/17(月) 23:05:02 ] そりゃ問題によりますがな 一応SVMは本質的には(凸の)QPだから適用範囲は広いはず LPで済む問題なら当然速いし汎化性能も変わらないでしょ 本当はVC次元とかで議論すべきなんだろうけどよく分からん・・・
10 名前:名無しさん@5周年 mailto:sage [2006/07/18(火) 02:26:10 ] LP, SVM, NNでならどう使い分ける? 複雑化する理由見つけられずに、 線形世界で済んでるって人多いよね。 ところで、なんでシミュ板?
11 名前:名無しさん@5周年 mailto:sage [2006/07/18(火) 05:05:56 ] >>10 NNスレの派生なんだけど、どこか別の板が適切だった? 数値実験って意味ではここで合ってると思うけど。 もちろん理論系の人も大歓迎です。 使い分けの話はオレもよくわかんないから聞きたいな。 研究目的かそうでないかで根拠は違ってくるだろうけど。
12 名前:名無しさん@5周年 mailto:sage [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周年 mailto:sage [2006/07/18(火) 15:59:53 ] LPでほとんど無理ってなぜ? ある種のセンスはいるけど LPほど適用範囲の広いツールは 他にないと思うが。
15 名前:名無しさん@5周年 [2006/07/18(火) 16:40:07 ] LPは目的関数も制約条件も線形と言う制限がついてるわけで、 >LPほど適用範囲の広いツールは他にない これはひどい 例えばQPはまるまるLPの適用範囲を含みますが
16 名前:名無しさん@5周年 mailto:sage [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周年 mailto:sage [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周年 mailto:sage [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発見。こんなのあったんですね。 www.neurosci.aist.go.jp/ibisforest/index.php?FrontPage 管理人は神嶌氏&赤穂氏だそうで
23 名前:名無しさん@5周年 mailto:sage [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周年 mailto:sage [2006/07/19(水) 07:15:13 ] >>23 LPでは定数項がない場合に 正例は閾値+1以上、 負例は閾値-1以下、 というように定数を混ぜて、 スケーリングの自由度を 消す場合があります。 ノルムは考えないです。 解法って単体法や内点法のこと?
25 名前:名無しさん@5周年 mailto:sage [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周年 mailto:sage [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周年 mailto:sage [2006/07/22(土) 08:38:54 ] >>28 ありがとうございます。 > ってか、特徴空間で線形分離されるだけで、 > 元の空間に戻れば普通にガウシアンカーネルとかでも曲面だぞ? 入力の空間の非線形性を関数の空間の線形性で 解決しようというアイデアはなんとなく分かるのですが また元の空間で超平面を解釈したときの形は 何に依存するんだろうと疑問に思いまして…。 もしかすると、関数の具体的な形というよりも 計量の定め方次第ということなのでしょうか。
31 名前:名無しさん@5周年 mailto:sage [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周年 mailto:sage [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周年 mailto:sage [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 mailto:sage [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 mailto:sage [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 mailto:sage [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 mailto:sage [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のページも紹介してあったけど 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周年 mailto:sage [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周年 mailto:sage [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周年 mailto:sage [2006/08/30(水) 17:36:51 ] NIPS2006の査読結果って、いつ頃くるんだろうか。
66 名前:名無しさん@5周年 mailto:sage [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周年 mailto:sage [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周年 mailto:sage [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周年 mailto:sage [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周年 mailto:age [2007/01/12(金) 15:39:49 ] さげると思うな
76 名前:名無しさん@5周年 [2007/04/12(木) 10:49:29 ] SVM大好き
77 名前:名無しさん@5周年 [2007/05/01(火) 08:42:01 ] Rのe1071パッケージを使って遊んでます。 LIBSVM FAQを含めていろいろ調べたのですが、 分からなかったので質問です。 入力に対する重みwを確かめたいのですが、 可能でしょうか?? 2変数だと図化すれば直観的にわかりますが、 変数が多いとどれが効いているのかサッパリ分かりません。
78 名前:名無しさん@5周年 mailto:sage [2007/05/04(金) 15:03:50 ] 日本語資料に下記ページも入れてください。 Support Vector Machine って,なに? www.neuro.sfc.keio.ac.jp/~masato/study/SVM/index.htm 日本語の本はこれだけでしょうか? サポートベクターマシン入門 (訳書) www.amazon.co.jp/dp/4320121341 An Introduction to Support Vector Machines (原書) www.amazon.co.jp/dp/0521780195
79 名前:名無しさん@5周年 [2007/05/04(金) 22:53:02 ] SVMはだいたい分かったが、肝心の実装であるSMOがぜんぜん分からん。。。 だれかSMOのアルゴリズムと、なぜSMOで最適化できるのかを、分かりやすく説明できる人いない?
80 名前:79 [2007/05/25(金) 23:43:11 ] スレッドストッパーか俺はw 引き続きSequential Minimal Optimizationの解説募集中です。
81 名前:名無しさん@5周年 mailto:sage [2007/05/28(月) 18:54:23 ] >>80 SMOとかよく知らないでレスするのもあれだけど ググるとトップに出てくる research.microsoft.com/users/jplatt/smo.html にある文献じゃ満足できないんでしょうか? オレも過去に別スレであるアルゴリズムの収束性の検討とか それが導出できる根拠について聞いたことあるんだけど そういう質問ってなかなかレスつかないんだよね…。(過疎のせいもあるが) 中にはシュミレーションの結果しかなくて理論が不整備なものもあったりするし。 自分で分かるところまで解説してみて分からない部分を聞いてみた方が 皆も勉強になっていいと思うんだがどうだろうか。
82 名前:名無しさん@5周年 mailto:sage [2007/05/28(月) 19:17:35 ] シュミレーションとか言っちゃった
83 名前:名無しさん@5周年 [2007/06/15(金) 23:16:20 ] イインダヨ
84 名前:学生 [2007/08/26(日) 20:11:26 ] 統計ソフトRで、パッケージe1071のsvm(),kernlabのksvm()の中身を参考にしながら、 SVM()を最初から作成しようと考えています。 なお、既存のパッケージを使用しないのは、 svmのα(ラグランジュ変数)やマージンの大きさ(正確にはweight vector)などをいじる必要が出てきたからです。 そこで質問なのですが、同じように中身をいじる必要が出てきた場合、みなさんはどのように実現されているんでしょうか? 1)やはり1から自分で作成する必要があるんでしょうか? 2)それとも、上記に挙げたパッケージの関数よりもっと細かい設定・修正ができるパッケージ等(?)があるんでしょうか? 3)もしくは、Rでは困難で、他のソフト(MatLab等?)を使用すべきなんでしょうか? 当方のプログラミングの知識が浅いため、出来ればサンプルや出来合いのものがあれば・・と思ってgoogleなどで聞いてみたんですが見つからず・・ という状況で、同じような研究をされている方おられましたら、ぜひ教えて頂きたいです。
85 名前:名無しさん@5周年 mailto:sage [2007/08/26(日) 21:08:36 ] >>84 ソース弄ればええやん スキル不足ならスキル身に付けろ
86 名前:学生 [2007/08/26(日) 22:16:08 ] >>85 >ソース弄ればええやん >スキル不足ならスキル身に付けろ 回答ありがとうございます!やっぱり上記 >>84 で示したように、 >統計ソフトRで、パッケージe1071のsvm(),kernlabのksvm()の中身を参考にしながら、 >SVM()を最初から作成しようと考えています。 ・・という方法が一番ということですよね? もしご存知でしたら、これ以外で(私は之を参考に作った等の)サイト・書籍等があれば伺いたいんですが。。 それとも、やはり自作する場合はksvm(),svm()を参考に作るのがBestでしょうか?
87 名前:名無しさん@5周年 mailto:sage [2007/09/01(土) 05:18:27 ] >>86 Rスクリプトの部分はデータの整形とかの下準備だけで 本質的な計算はたいていCで書いてるのが多い。 そういう場合、一番手っ取り早いのは、オリジナルのソースをコピーして それを元に都合良く改変して自分用のライブラリorパッケージを作ること。 オレもそうやってclassパッケージに入ってる線形判別関数の Cのソースいじってカーネル化したり最適化手法をすげ替えたりしてたわよ。 自分用ライブラリの作成方法はRjpwikiの「Rから他言語利用」に少々書いてある。 情報に不足があれば付属のPDFマニュアル"Writing R Extention"を読む。
88 名前:学生 [2007/09/01(土) 20:06:51 ] >>87 ありがとうございました! Cは結構弄れる方なので、あとはRとの インタフェースが分かれば・・と思っていたところです。 コレ↓非常に助かりました! >自分用ライブラリの作成方法はRjpwikiの「Rから他言語利用」に少々書いてある。
89 名前:名無しさん@5周年 [2007/09/03(月) 03:37:12 ] 超がつく程の初心者です 最近,SVMについてかじり始めたのですが polynomial kernel等の各パラメータ値が どのように影響するのか,どのような意味を持っているのかがよくわかりません... svm-lightで,polynomialのオプションとして指定できる d,s,rの中で,dは次元を意味するのはわかるのですが s,rがどこから来たのかどうしても理解できません・・・
90 名前:名無しさん@5周年 mailto:sage [2007/09/03(月) 05:38:30 ] 俺はSMしかわからんなぁ。 ムチで おちんちんスプラッシュ!!
91 名前:名無しさん@5周年 [2007/09/03(月) 11:45:08 ] ドンマイ
92 名前:名無しさん@5周年 [2007/09/08(土) 03:15:55 ] >>89 どうしても理解できないことなんてそうない。 つまりそれは君の怠惰だ。 そのことを証明するためにSVM_lightを一度も使ったことのない このオレサマが貴重な時間を割いて今ソースを見てきてやったぞ。 ---- svm_learn_main.c 167行 case 'd': i++; kernel_parm->poly_degree=atol(argv[i]); break; case 'g': i++; kernel_parm->rbf_gamma=atof(argv[i]); break; case 's': i++; kernel_parm->coef_lin=atof(argv[i]); break; case 'r': i++; kernel_parm->coef_const=atof(argv[i]); break; ---- svm_common.c 86行 case 1: /* polynomial */ return((CFLOAT)pow(kernel_parm->coef_lin*sprod_ss(a,b) +kernel_parm->coef_const,(double)kernel_parm->poly_degree)); つまり、この多項式カーネルは K(x,y) = (s*<x,y> + r)^d <x,y>は標準内積
93 名前:89 [2007/09/08(土) 04:45:47 ] >>92 ありがとうございますっ! すごく納得できました 怠けることなく,頑張りたいと思います... ありがとうございましたっ
94 名前:名無しさん@5周年 [2007/09/19(水) 23:54:59 ] よく使われるカーネルの polynomial,sigmoid,gaussian等の 各カーネルの特徴って何なんでしょうか…? 問題によってどのカーネルを選ぶのが適切なのかわからなくって… 一応自分なりに探してはみたんですがいまいちピンと来ませんでした もしよかったら教えてください…
95 名前:名無しさん@5周年 mailto:sage [2007/09/20(木) 00:13:08 ] カン
96 名前:名無しさん@5周年 [2007/09/20(木) 12:05:03 ] このレスを見たあなたは確実に交通事故に会います 逃れる方法はただ一つ ↓このスレに行き game12.2ch.net/test/read.cgi/gamerpg/1190004222/ デア・リヒター最強 と書き込んでください。書き込まなければ確実に明日交通事故にあいますよ
97 名前:名無しさん@5周年 [2007/10/13(土) 17:40:33 ] 線形SVMの実装なら既存のソースをいじるって作るより一から作る方がいいですかね? 当然ですけど既存のは非線形で分離しちゃうじゃないですか。 線形で分離したいんです。
98 名前:名無しさん@5周年 mailto:sage [2007/10/13(土) 18:43:24 ] >>97 既存のソース使うなら、線形Kernelが実装されてないやつを わざわざ選ぶ必要がないんじゃないか? 多項式Kernel使えるならそれの一次でやれば線形なんだし。 手間おしまないなら自分で作るのが勉強になるしいいと思うけど。
99 名前:名無しさん@5周年 [2007/10/13(土) 21:08:58 ] ○。・。○。・。○。・。○。・。○。・。○。・。○。・。○。・。○ このレスをみたあなたは・・・31日から17日に ラッキーなことが起きるでしょう。片思いの人と両思いになったり 成績や順位が上ったりetc...でもこのレスをコピペして別々のスレに 59個貼り付けてください。貼り付けなかったら今あなたが10番起きて ほしくないことが起きてしまうでしょう。 コピペするかしないかはあなた次第... ○。・。○。・。○。・。○。・。○。・。○。・。○。・。○。・。○
100 名前:名無しさん@5周年 [2007/10/14(日) 15:34:45 ] >>98 回答ありがとうございます。 時間が惜しいので出来たら既存のソースを弄くりたいと思ってましたが やはり自分で作ろうかと。 探してもマトラボやRのソースは出てきてもCやC++はあまりないっぽいので。 (C、C++くらいしかいじれないので…)
101 名前:名無しさん@5周年 mailto:sage [2007/10/15(月) 05:36:38 ] >>100 例えば>>5 のSVM lightはCで書かれてるし コマンドラインですぐ扱えると思うんだけど。
102 名前:名無しさん@5周年 mailto:sage [2007/10/17(水) 15:19:18 ] SVMの入力を1,0のバイナリーしかとれないとして(3次元なら立方体) マージン最大をハミング距離最大で考えようとしてるんですけど この考え方って成り立つと思いますか? とりあえずカーネルとかソフトマージンは考えないで線形ハードマージンが 成り立てばと思ってるんですけど ハミング距離が小数になったりして意味わかんないことになるんですよね当然。 ダメかなこの考え
103 名前:名無しさん@5周年 [2007/10/17(水) 21:01:42 ] >>101 ほんとですね、どこを探してたんだろ自分。 でもこれここ ttp://download.joachims.org/svm_light/current/svm_light_windows.zip からダウンロードしたのだけでコマンドラインで動かすこと出来ますか? その下のインストールと使い方ってとこ読んでも良くわからなかったりします。。 何か、素人くさい質問で申し訳ないんですが助けてもらえませんか
104 名前:名無しさん@5周年 mailto:sage [2007/10/17(水) 23:54:40 ] >>103 windows用の中身はコンパイル済み実行ファイルが入ってる。 解凍した場所でコマンドプロンプト開いて実行するだけ。 使い方はHow to useの通り。
105 名前:名無しさん@5周年 mailto:sage [2007/10/18(木) 06:47:41 ] libsvmについて質問なのですが,ソフトマージンではなくハードマージンを設定したいのですがどうしたらよいのでしょうか?
106 名前:名無しさん@5周年 mailto:sage [2007/10/18(木) 13:30:38 ] >>104 ありがとうございます。 その後にsvm_learnを実行すると Not enough input parameters! (more) って出てきて、それから具体的にどうするのかが不明です。 形式的なコマンドの構文やパラメーターの設定はどのようにすればいいのでしょうか? How to useが翻訳されてる ttp://www.bi.a.u-tokyo.ac.jp/~tak/svm-light.html を読んでも情けないかな、いまいち理解できませんでした。 ご教授願います。。
107 名前:名無しさん@5周年 mailto:sage [2007/10/20(土) 00:50:03 ] プログラムの知識に乏しいので教えてください Rでe1071のsvm()の損失関数を自分で変化させたくソースを弄る事にしました。 おそらく、デフォルトだと線形の損失関数になってると思うのですが、 それを2次にしたりと自分で書き換えたいのです。 svm()の中の肝心な計算部分svmtrainがCで書かれていることまではわかったんですが、 svmtrainの中のどこを触ったら損失関数が弄れるかがわかりません。 ご存知の方がいましたらご教授願います
108 名前:名無しさん@5周年 mailto:sage [2007/10/21(日) 02:06:50 ] 脳みそに汗をかけ,若者よ
109 名前:名無しさん@5周年 mailto:sage [2007/10/22(月) 18:03:08 ] >>105 しつこくてすいません だれか分かる方いませんか? 別にlibsvmでなくてもいいんですがソフトマージンありなしを比較したいんです
110 名前:名無しさん@5周年 mailto:sage [2007/10/23(火) 10:04:10 ] 公開されてるライブラリは使ったこと無いわ 自作のでならやった事あるんだが
111 名前:名無しさん@5周年 mailto:sage [2007/11/07(水) 23:26:40 ] >>109 パラメータC→∞にすればハードマージンと同じになるのではないでしょうか 間違っていたらごめんなさい。
112 名前:名無しさん@5周年 [2007/11/15(木) 23:18:35 ] すいません,ものすごく初歩的な質問なのですが LIBSVMで学習,識別を行った後 テストデータの各値毎のカーネル値を見たいのですが どこで見ればいいのでしょうか? プログラムを見てもわかりませんでした・・・ ご教授願います・・・・
113 名前:名無しさん@5周年 mailto:sage [2007/11/17(土) 15:43:45 ] 107です ここからどうしてもわからないので、わかる方居らっしゃいましたらお力添えお願いします。 LIBSVM(C言語)の損失関数をL2-損失関数に変更して、 「他言語からの利用」を参考にLIBSVM.cppとLIBSVM.hからLIBSVM.dllを作るところまではできました。 この後、e1071のパッケージは読み込まずに、 e1071のsvm関数のソース(PACKAGE=""としてある)だけをコンソールで読ませて、 実行すると、svm.defaultのC言語参照部分「"svmtrain"が見つかりません」となって実行できません。 おそらくLIBSVM.cppに"svmtrain"というルーチンがないからだと思いますが、 svmtrainにあたる、LIBSVM.cppのどのルーチンを呼び出したらいいのかわかりません。 すいません、どなたかご教授お願いします。
114 名前:名無しさん@5周年 mailto:sage [2007/11/17(土) 16:32:33 ] 113です 失礼しました、svmのソースでPACKAGE=""ではdllファイルが読めませんよね 変更してPACKAGE="LIBSVM"としても、「"svmtrain"がload table上にありません」 となってしまいます。よろしくお願いします。
115 名前:名無しさん@5周年 mailto:sage [2007/11/20(火) 06:34:04 ] >>113 状況がよく分かりませんがWriting R Extensionは読みましたか? e1071の改変をするのなら、参考にするのは 他言語利用よりもパッケージのビルドじゃないでしょうか。 www.okada.jp.org/RWiki/?Windows%A4%C7%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%A4%F2%BC%AB%BA%EE e1071revなどとパッケージ名を変えてビルドしてはいかがでしょう。 最近はRの質問が多いですね。 Rの比重が大きな話題ならこちらへどうぞ。 = 統計解析フリーソフト R 【第2章】 = science6.2ch.net/test/read.cgi/math/1152449095/
116 名前:名無しさん@5周年 mailto:sage [2007/11/20(火) 14:38:02 ] >>115 さん 解決しました! LIBSVM.dllをビルドする時に LIBSVM.cppとLIBSVM.hと「Rsvm.c(e1071のソースにある)」を 一緒にビルドすればいいだけの話でした ありがとうございました。 Rの質問はリンク先でするようにします、ご指摘ありがとうございます。
117 名前:名無しさん@5周年 [2007/11/27(火) 00:24:19 ] ttp://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/SVM_2_1.htm に載っている正規化のやり方が分かりません 考えろと言われても…思いつきません… どなたかご教授よろしくお願いします
118 名前:名無しさん@5周年 mailto:sage [2007/11/27(火) 06:36:42 ] >>117 とりあえずぱっと思いつくのは \lambda_n = (- \sum_[i=1}^{n-1} \lambda_i y_i) / y_n カナ?そういうことなのかな?
119 名前:名無しさん@5周年 mailto:sage [2007/11/27(火) 07:07:57 ] 追記 www.neuro.sfc.keio.ac.jp/~masato/study/SVM/svmdemo.m の normalize 関数が相当するみたい
120 名前:名無しさん@5周年 [2007/12/10(月) 15:40:38 ] www.bi.a.u-tokyo.ac.jp/~tak/libsvm.html に 「modelパラメータの探索を行うスクリプトがついており」ってあるが これはグリッドサーチのことを言っているの?それとももっと便利な何かがあるのかな?
121 名前:名無しさん@5周年 mailto:sage [2007/12/10(月) 18:13:08 ] >>118 プログラムじゃなくて実際の計算はどうやっているのか? ってことじゃないですかね?
122 名前:名無しさん@5周年 mailto:sage [2007/12/10(月) 22:47:13 ] >>120 グリッドサーチ
123 名前:名無しさん@5周年 mailto:sage [2007/12/13(木) 01:36:22 ] グッドリサーチに見えた
124 名前:名無しさん@5周年 [2007/12/18(火) 17:35:47 ] >>122 ありがとう。ついでにもうひとつ確認だけど、 グリッドサーチで出てくるError rateって 単純に交差検定で平均とった推定間違い率(1-推定精度)のことだよね? >>123 言われてみたいなぁ・・・
125 名前:名無しさん@5周年 [2008/01/21(月) 20:31:55 ] SVM_Multiclassって-tオプション使えないんですか?
126 名前:名無しさん@5周年 [2008/01/21(月) 22:40:40 ] >>125 普通に使えるっぽいけど。 それよりも、multiclassの-cの値がよく分からんです。
127 名前:名無しさん@5周年 [2008/01/22(火) 18:12:42 ] >>126 -cはマージンの間隔じゃないでしょうか?? ーcを大きくしたらトレーニングデータに対して過学習になるのに対して、小さくしたらトレーニングデータに対しての認識率は低くなりますが、テストデータに対しては良くなる可能性もあるはずです。 私の方はSVM_MulticlassでRBFカーネルを使用したいんですが、-t 2 のオプションが使用できないんですよ…。
128 名前:名無しさん@5周年 mailto:sage [2008/01/23(水) 00:25:02 ] オーム社から出た小野寺本オススメ
129 名前:名無しさん@5周年 [2008/01/23(水) 00:44:19 ] >>127 C > 0 is a constant that controls the trade off between training error minimization and margin maximization. (下のリファレンスの論文より) ソフトマージンの式のペナルティ項の係数みたいですね。一応理解しました。 -t 2オプションは、もしかしたら位置が間違ってるのではないですか? ./svm_multiclass_learn -t 2 -c ~~~~~ でいけました。末端の位置に-tオプションを置いても、-tの値に関わらず全て線形分類になるみたいです。
130 名前:名無しさん@5周年 mailto:sage [2008/01/23(水) 08:17:08 ] >>128 Amazonで「オーム社 小野寺」で検索しても、 スレに無関係な本が1冊ひっかかるだけです。 オーム社から出た小野寺本はこれ以外に存在するんですか? そしてこのスレに関係ある本なのですか? 誤爆や釣りでないなら本のタイトルをお願いします。 「見方・考え方 合金状態図」 三浦 憲司 (著), 小野寺 秀博 (著), 福富 洋志 (著) オーム社 (2003/11) www.amazon.co.jp/dp/4274087441
131 名前:名無しさん@5周年 mailto:sage [2008/01/23(水) 22:49:00 ] >>130 スマン。小野田だったw
132 名前:名無しさん@5周年 mailto:sage [2008/01/25(金) 02:48:16 ] 情報ありがとうございます。 まさにこのスレ向けの本なのでリンクします。 サポートベクターマシン (知の科学) www.amazon.co.jp/dp/4274204413/ 知の科学 サポートベクターマシン ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-20441-8 サポートベクターマシン - tabatee の日記 slashdot.jp/~tabatee/journal/414568
133 名前:名無しさん@5周年 mailto:sage [2008/01/28(月) 00:04:25 ] LibSVMでone-class SVM使おうと思うんだけど、grid.pyでパラメータがうまくでないんです…。 grid用のデータは1クラス分の教師データではダメなんでしょうか?
134 名前:名無しさん@5周年 mailto:sage [2008/01/28(月) 18:35:44 ] one-class SVMは教師なし学習だから、grid searchは無意味だよ
135 名前:名無しさん@5周年 mailto:sage [2008/01/28(月) 21:49:46 ] >>134 やっぱりそうですよね。ありがとうございます。 ということは、νやRBFカーネルのγはヒューリスティックに探すしかないんですかね…。
136 名前:名無しさん@5周年 mailto:sage [2008/02/06(水) 17:03:30 ] LibSVMでカーネルがRBFのときより線形や多項式の方が精度がいいっていうのはどういう場合に起こるんでしょうか??
137 名前:名無しさん@5周年 mailto:sage [2008/02/08(金) 21:01:10 ] データの生成法がそういうものだった時
138 名前:名無しさん@5周年 [2008/03/13(木) 12:07:59 ] 只今勉強中で以下について教えていただければ幸いです。 RBFカーネルk(x,y)=exp(-beta*||x-y||^2)を使うと 特徴空間上の距離は ||phi(x)-phi(y)||=sqrt(2*(1-exp(-beta*||x-y||^2)) となって、 元空間の距離について単調増加、元空間の距離->∞でsqrt(2)に収束する。 これは元空間で遠いものが特徴空間ではほぼ等距離に扱われる。 (...だから何なの?...) これが 「元空間では線形分離不能だったものが特徴空間で線形分離可能になる」...(*) 仕組みなのでしょうか? 遠いものを一緒くたに扱ったからといってうまくいくとは思えないのですが、 それとも別の解釈で結論(*)が導かれるのでしょうか? 良きアドバイスを頂ければ幸いです。
139 名前:名無しさん@5周年 mailto:sage [2008/04/24(木) 14:38:37 ] one-class SVMでデータ全体の20%だけ抽出するには パラメータをどうするといいのでしょうか?
140 名前:名無しさん@5周年 [2008/05/17(土) 07:49:38 ] NNが重みを記録しておいて後から読み出せば使えるように、SVMでもこれを記録しとけば再び最初から学習させなくても使えるようになるものってないんでしょうか
141 名前:名無しさん@5周年 mailto:sage [2008/05/17(土) 07:58:26 ] そんな使えない分類器が流行っていると思ってたのかw サポートベクタ記録しとけ
142 名前:名無しさん@5周年 [2008/07/10(木) 00:14:41 ] >>138 phi(x)の次元がトレーニングデータの件数より多くなれば線形分離可能になるってだけじゃないの? 距離がどうこうだからってのは聞いたことないな。
143 名前:名無しさん@5周年 [2008/08/10(日) 21:55:45 ] Rのkernlabパッケージの二次計画ソルバーipopを使ってSVMを実装しました。 これは、helpにもあるように簡単に実装できました。 問題は回帰(SVR)の場合です。αとα´について最適化しなければならないので、 やはりipopでは実装できないのでしょうか? SVRの制約条件に簡単に修正を入れたモデルを考えているのですが… 実装の方法をアドバイスいただければと思います。 よろしくおねがいしいます。
144 名前:名無しさん@5周年 mailto:sage [2008/08/12(火) 15:11:42 ] 他人に訊く前にまず自分で良〜く考えろ 脳味噌が汗かく位な
145 名前:名無しさん@5周年 [2008/08/12(火) 18:17:58 ] 自分なりによく考えてみたのですが…それでも分からず質問させていただきました。 速度などはあまり気にせず、Rを使ってSVRの定式化に修正を加えて実装できる方法があれば、 ぜひアドバイスいただきたいです。
146 名前:名無しさん@5周年 mailto:sage [2008/08/15(金) 23:16:24 ] まず自分で考えたことを書いて それに対する批判なりアドバイスなりを頼むのが筋 ってーかエスパーじゃないんだからそんな質問に答えられる人間はいないだろjk
147 名前:名無しさん@5周年 [2008/08/24(日) 12:09:56 ] SVMの損失関数はどのようなものが定式化されているのでしょうか? 今私が扱っている問題ではヒンジロスははずれ値の影響が強すぎる と感じているので、0-1ロスのようなものが望ましいのですが、 ラグランジュをとくところでそんなに簡単に定式化できなさそうなので 既存にどんなものがあるのか教えていただきたいです。
148 名前:名無しさん@5周年 [2008/09/02(火) 15:13:59 ] NNの情報を探していてSVMにたどりついたのですが、例えば日毎の 気温データから翌日の気温を予測したりするのに使えるでしょうか? NNなら直前10日間の気温を入力、次の日の気温を教師にして学習とか するのかと思うのですがこれをSVMでやるにはどうやればよいんでしょうか?
149 名前:名無しさん@5周年 mailto:sage [2008/09/02(火) 15:47:52 ] >>148 直前10日間の気温を入力、次の日の気温を教師にして学習
150 名前:名無しさん@5周年 mailto:sage [2008/09/02(火) 16:11:18 ] >>149 さっきlibsvmてのを拾ってきたのですが、学習ファイルには1行に x日の気温 1:x-1日の気温 2:x-2日の気温 ... 10:x-10日の気温 というのをN日分用意してsvm-trainするだけでいいんでしょうか。 この手のサンプルはどれにあたるんでしょ、まだmakeしてheartで試しただけなので
151 名前:名無しさん@5周年 mailto:sage [2008/09/04(木) 15:10:14 ] svmの最初の論文でたのいつだっけ? 今じゃいろんなとこに広まってるんだな
152 名前:名無しさん@5周年 mailto:sage [2008/09/05(金) 08:34:25 ] 1990年くらい?
153 名前:名無しさん@5周年 mailto:sage [2008/09/11(木) 08:37:04 ] >>151 線形svm自体は古いんじゃないか。 90年代にカーネルトリックで非線形対応になって 初めて流行したと記憶してる。 wikipediaで調べてみたが、 The original optimal hyperplane algorithm proposed by Vladimir Vapnik in 1963 was a linear classifier. However, in 1992, Bernhard Boser, Isabelle Guyon and Vapnik suggesteda way to create non-linear classifiers by applying the kernel trick (originally proposed by Aizerman et al..) to maximum-margin hyperplanes. en.wikipedia.org/wiki/Support_vector_machine 63年初出、92年にカーネルトリック導入し大ブームってとこか。 思ったより古いね。
154 名前:名無しさん@5周年 [2008/09/24(水) 23:31:58 ] SVM_lightで識別を行うための学習データセット、テストデータセットの作り方 が良くわかりません。exmapleは見てみたのですが…。 例えば、UCIのIrisデータをSVMに学習、クラス分類させるにはどのように書き 直したらいいのでしょうか?
155 名前:名無しさん@5周年 mailto:sage [2008/09/27(土) 15:57:10 ] 再生核ヒルベルト空間がわからん VC理論も全然わからん
156 名前:名無しさん@5周年 mailto:sage [2008/09/27(土) 19:33:22 ] まず基本的な数学と 基本的なプログラミングを学べよ
157 名前:名無しさん@5周年 mailto:sage [2008/09/27(土) 20:58:44 ] やっぱ、関数解析とかの勉強から始めなきゃだめか