What is SVM-Dlight? SVMDlight is a slightly modified version of SVMLight that allows a programmer to create plugins for reading arbitrary data types (e.g. graphs / relational data) and calculating a custom kernel on them. The two programs svm_Dlearn and svm_Dclassify behave exactly as T. Joachims' svm_learn and svm_classify, but accept an extra option (-D) for loading a custom dynamic library that
SVMを学びたい人にとっては「サポートベクターマシン入門」通称「赤本」は最適な入門書であるといえる。理論から実践までバランスよく解説されており、本書を読むだけでSVMの実装が可能になる。 しかし本書はSF小説を彷彿とさせる独特な翻訳の文体のため機械学習に不慣れな読者にとっては読みこなすのは苦しい戦いとなる。本来なら原書をオススメしたいところだが、そうはいっても英語はちょっとという人も多いはず。 そこで本記事では赤本のオススメな読み方を紹介してみる。 1.「わかパタ」で準備運動をしよう 泳ぎのうまい人でもいきなり水に飛び込むのは危険。まずは準備運動をして体を温める。これには「わかりやすいパターン認識」がオススメ。とりあえず2章まで、余裕があれば3章まで読んでおけば充分。 2.赤本を枕元において一晩寝よう さて準備運動が済んだら早速赤本にトライ!したいところだが赤本の放つ瘴気で心を蝕まれないよ
SVM のチューニング SVM(Support Vector Machine) はみなさん御存じ機械学習の手法です。 SVM はデフォルト設定でモデルを作ってもしょうがないです。gamma と cost というパラメータがあるので、これらの値に最適値を設定しなければなりません。R の SVM の Help にもこう書いてあります。 Parameters of SVM-models usually must be tuned to yield sensible results! (訳) SVM でいい結果出したかったらチューニングしろよな! というわけで、SVM のチューニングのしかたについて説明したいと思います。 交差検証 おっと、その前に、交差検証の話をしなければなりません。 SVM モデルをチューニングする際、二つのパラメータでグリッドサーチをします。 すなわち、パラメータをいろいろ変
Algorithm::SVMLight をインストールして使ってみよう - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? overlast(さとうとしのり)です。 僕は普段、自然言語処理技術を活用する仕事に従事しています。 Perl は「アイディアが浮かんでからコードを実行するまでの早さ」や「急で無茶な仕様変更への対応のしやすさ」などが好きで使っています。最初に Perl で実装して、後日速度が求められるようになったら、遅い部分だけ C / C++ で書き直すことが多いです。 Perl の CPAN モジュールの Author の方にはいつもお世話になっております。本当にいつもどうもありがとうございます。 さて今回は、教師あり学習を用いる識別手法の一つである Support Vector Machine
下巻に入って7章のサポートベクトルマシン(Support Vector Machine: SVM)を実装してみます。SVMに関しては、有名なSVMのライブラリ(libsvm)を使ったことがあるだけで、アルゴリズム詳細はPRMLで初めて学習しました。なので変なことを書いていたらコメント欄で指摘してもらえると助かります。 まずは、一番簡単な線形SVMを実装してみます。今までと同様に直線(超平面)でデータが完全に分離できる場合です。PRMLの7章には特に説明がありませんが、カーネル関数に下の線形カーネル(データのただの内積)を用いた場合に相当するようです。このカーネル関数を多項カーネルやガウシアンカーネルに変更すると線形分離不可能なデータも分類できるようになるとのこと。非線形SVMは次回ためしてみます。 まず、SVMの識別関数は、式(7.1)で表せます。 今までと違ってバイアスパラメータをまとめ
今回は、非線形サポートベクトルマシンを試してみます。線形SVM(2010/5/1)は、カーネル関数に線形カーネル(ただの内積)を使いましたが、これを多項式カーネル(A)やガウスカーネル(B)に変更します。 カーネル関数は元のベクトルxを非線形写像によって高次元空間に写像した特徴ベクトルφ(x)の内積(C)で定義されます。 一般に特徴ベクトルφ(x)は高次元空間(無限次元空間でもOK)になるので普通にやってたら内積の計算量が非常に大きくなります。そこで、特徴ベクトルφ(x)の内積を計算せずに多項式カーネル(A)やガウスカーネル(B)の計算で置き換えるテクニックをカーネルトリックと呼ぶとのこと。多項式カーネルやガウスカーネルを使うとφ(x)を陽に計算する必要がなくなります。ただ、元の空間xでの内積は必要なんですよね・・・最初は、カーネルトリックのありがたみがよくわからなかったのですが、「入力空
前回(2010/5/2)のハードマージンSVMでは、データに重なりがある場合、下のようにちゃんと分類境界を求められませんでした。今回は、重なりのあるクラス分布に対応できるように拡張してみます。このようなSVMはハードマージンSVMに対してソフトマージンSVMと呼ばれます。別名としてC-SVMとも呼ばれるようです。 PRMLの7.1.1にあるように、データの誤分類を許すようにSVMを修正します。ハードマージンSVMでは、データ点がマージン内(-1 < y < 1)に絶対に入らないことを前提にしていましたが、ソフトマージンSVMでは「入ってしまったものは仕方ない、だがペナルティを与える!」と少し条件を緩めます。 まず、スラック変数ζ(ゼータ)をデータごとに導入します。スラック変数は、データが正しく分類されかつマージン境界上または外側にある場合は0、正しく分類されているがマージン内に侵入してしま
うちにある本で、サポートベクターマシン(SVM)について書いてある本をあげてみます。 まずは、これ。機械学習ってなんなの?という人におすすめ。パーセプトロンからSVM、ニューラルネットワークときて、そうやってできた学習機械の評価方法についても書いてあります。 フリーソフトでつくる音声認識システム パターン認識・機械学習の初歩から対話システムまで 作者: 荒木雅弘出版社/メーカー: 森北出版発売日: 2007/10/01メディア: 単行本(ソフトカバー)購入: 45人 クリック: 519回この商品を含むブログ (39件) を見る SVM・カーネルに関しては記述が軽く、これも機械学習の入門書。けど、学習機械を組み合わせるブースティングなどの話が書いてある。 パターン認識と学習の統計学―新しい概念と手法 (統計科学のフロンティア 6) 作者: 甘利俊一,麻生英樹,津田宏治,村田昇出版社/メーカー
最近、機械学習とか、そのアルゴリズムのひとつであるサポートベクターマシンとかやってるわけですが、そもそも機械学習ってなんなんでしょか? 機械学習ってのは、なんとなく与えられた点の分類から、新たに与えられた点の分類を推測するのですが、ようするに、点が与えられたときにそこから分類の領域を推測しておいて、新たな点がきたときにはどの領域に入るかを判別するのです。 ニューラルネットワークは、名前にニューロンとかついてて、とてもステキな響きがするのですが、あれは関数のあてはめを行っているのです。そうやって関数をあてはめることで、領域の境界面を求めます。 NN法は、学習とかせず、一番近いデータが同じ分類になるはずという戦略でやってます。 サポートベクターマシンも考え方としてはNN法と同じで、新しい点がやってくると、学習したそれぞれの点までの近さを計算して、一番ちかい分類を求めます。そのため、学習データが
SMOよりも優れたアルゴリズムにSimple SVMというのがあるそうだ。SSVM : A Simple SVM Algorithmhttp://www.stat.purdue.edu/~vishy/papers/VisMur02b.pdf しかし、このアルゴリズムを理解してC#で実装したいんだけれど、なんだか論文がすごく難しくて挫折を繰り返してしまう。誰か素人でもわかるように教えてください(´・ω・`) 余談だけれど、このSimple SVMとやらは10回以下で収束するって書いてある。オンライン学習というのが研究されているが、オンライン学習はsimple SVMの10倍以下の高速化しか望めないし、解の質もよくわからないということなのかな?
A collection of machine-learning algorithms for classification Classias is a collection of machine-learning algorithms for classification. Currently, it supports the following formalizations: L1/L2-regularized logistic regression (aka. Maximum Entropy) L1/L2-regularized L1-loss linear-kernel Support Vector Machine (SVM) Averaged perceptron
インストール † 展開するときにディレクトリーを作ってくれないので注意しましょう. mkdir svm_light mv svm_light.tar.gz gunzip -c svm_light.tar.gz | tar xvf - make all gunzipの-cオプションは圧縮ファイルをそのままにして伸張した結果を標準出力に書き出すもので,tarの引数-は標準入力から入力されたファイルを展開するものです. これだとコンパイルだけで,パスを通さないと使えません. パスが通っているところにコンパイルされたファイルを移動させると,いつでもターミナルから実行できるようになります. sudo mv svm_learn svm_classify /usr/local/bin make clean 最後のmake cleanは不要になったファイルを消すためのオマケです. コンパイルでできたファイ
ここではソフトウェアSVM-Lightの使い方を説明します。SVM自体の原理を知りたい方は「Chris Burge氏のチュートリアル」が良い教科書となるでしょう。 SVM-Lightは学習モジュール(svm_learn)と識別モジュール(svm_classify)で構成されています。この識別モジュールは、学習されたモデルを新たなサンプルに適用することが出来ます。詳しくは以下に示す「svm_learn」と「svm_classify」の使い方を参照してください。 svm_learn svm_learnは次のようなパラメータによって呼び出されます。
サポートベクターマシン(以下 SVM) とは ・ニューラルネットワークの一種 ・教師ありクラスタリング SVM の基本的な考え方 ・元々2クラスの線形分離手法として提案される ・単層パーセプトロンに似ているが、SVM はマージン最大化という手法をとっているのがポイント。 ・マージン最大化とは、超平面と学習データの隙間となるマージンをなるべく大きく取ろうというもの。 (ここでいう超平面とは、2つのクラスにぶった切る平面のこと) ・ちなみに超平面と、ちょうどマージンの分だけ離れている学習データをサポートベクトルという。 ・このマージン最大化という考えを取り入れることによって、テストデータの識別精度を高めている。 SVM の発展 ・線形分離不可能な問題への対応 - ソフトマージン(学習データが多少マージンにくい込んだり、反するクラスの空間にくい込んだりしても許す)で対応
久々の更新です。 最近、カーネルSVMの威力に驚いています。 基本的には、判別分析と同じで、 直線を引いて、この線よりこっち側はクラスAで 反対側はBですよというもの。 ↓イメージ ただし、下の場合のようにどうしても線が引けない時が出てきてしまいます。 そんなときは、カーネル関数によって次元を上げてしまうのです。 この図ですと、2次元から3次元にしたことによって、 2種類の○が直線によってわかられるのです。 (正確には平面) 「いやいや次元飛ばさなくても、曲線描けば分けられるよ」 と思うかも知れませんが、 解が計算できない場合が多いのです。 もちろん2次の判別関数(qda)というものも存在します。 まだ、判別関数について説明はしていませんが、 いずれしたいと思います。 判別関数にもちゃんとした長所もありますが 今回はSVMについて。 二つメリットを挙げます。 ・SVMは稀なデータでも可能
このウェブサイトは販売用です! atword.jp は、あなたがお探しの情報の全ての最新かつ最適なソースです。一般トピックからここから検索できる内容は、atword.jpが全てとなります。あなたがお探しの内容が見つかることを願っています!
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く