タグ

kerneltricに関するyukimori_726のブックマーク (17)

  • 機械学習におけるカーネル法について - めもめも

    何の話かというと 機械学習におけるカーネル法の説明で、よく登場するのがこちらの図です。 左側の (x, y) 平面上の点を分類する場合、このままだと線形分類器(直線で分類するアルゴリズム)ではうまく分類できないのが、右図のように z 軸を追加してデータを変形すると、平面できれいに分割できるようになって、線形分類器による分類がうまくいくというものです。このように、高次元空間にデータを埋め込むことでうまいこと分類するのがカーネル法の仕組みだというわけです。 なのですが・・・・・・・・・・・・・・・・・・・・ これ、当にカーネル法の原理を知っている方には、ちょっと気持ち悪くないですか? ※ 以下はカーネル法を知っている方向けのつぶやきです。 上記の例は、データの配置にあわせて、うまいこと z 軸方向の変形をしているのでうまくいっているのですが、カーネル法には、データの配置にあわせてうまいこと変

    機械学習におけるカーネル法について - めもめも
  • 機械学習超入門IV 〜SVM(サポートベクターマシン)だって30分で作れちゃう☆〜 - EchizenBlog-Zwei

    ニーズがあるのかさっぱりわからない機械学習超入門だけどひっそり続けていきたい。 前回は識別関数の基礎であるパーセプトロンの簡単な説明とPerlによる実装を解説した。実はこの時点でかの有名なSVM(Support Vector Machine、サポートベクターマシン)もほぼ完成していたのだ!というわけで今回はSVMをPerlで作ってしまうお話。 参考: これからはじめる人のための機械学習の教科書まとめ - EchizenBlog-Zwei 機械学習超入門 〜そろそろナイーブベイズについてひとこと言っておくか〜 - EchizenBlog-Zwei 機械学習超入門II 〜Gmailの優先トレイでも使っているPA法を30分で習得しよう!〜 - EchizenBlog-Zwei 機械学習超入門III 〜機械学習の基礎、パーセプトロンを30分で作って学ぶ〜 - EchizenBlog-Zwei さて

    機械学習超入門IV 〜SVM(サポートベクターマシン)だって30分で作れちゃう☆〜 - EchizenBlog-Zwei
  • カーネルトリック - Shogo Computing Laboratory

    写像 ソフトマージンで線形分離不可能な場合でも、分離超平面を決定することができますが、 所詮線形分離なので、性能には限界があります。 そこで、入力を適当な非線形変換を使って、 より高次元な特徴空間へ写像することを考えます。 例えば左の図で赤丸と青丸は線形分離出来ません。 そこで、元の特徴空間を非線形変換し、 に写像します。 すると、右図のような分布になり、直線で分離することが可能になります。 カーネルトリック 上の例では、二次元から二次元の写像でしたが、複雑な問題なるとより大きな次元に写像する必要があります。 次元があまりにも大きくなると、写像を求めるのは大変になってきます。 しかし、SVMの場合、実は実際に写像を求める必要はなく、ベクトルの内積だけ分かれば計算ができます。 この写像した特徴空間の内積は、当然もとの特徴ベクトルの関数になっているはずです。 そこで、写像した特徴空間の内積を関

  • 非線形分類器のミニバッチ分散オンライン学習器を実装してみた - ny23の日記

    ソフトウェアをいろいろ更新した - ny23の日記 で紹介した, Minibatch and Parallelization for Online Large Margin Structured Learning, NAACL 2013 がようやく学会で発表されたようなので,非線形学習版の実装を置いておく.RBF カーネルを用いたオンライン学習器をミニバッチ+並列化したもの.実装したのはもう二ヶ月ぐらい前(論文の pdf を著者が公開した直後)なのだけど,流石に学会発表前に実装を出すのは気が引けたので公開を先延ばしにしていた. // mpa1.cc ; GNU GPL version 2 copyright@id:ny23 #include <err.h> #include <cstdio> #include <cstdlib> #include <cstring> #include <c

    非線形分類器のミニバッチ分散オンライン学習器を実装してみた - ny23の日記
  • ソフトマージンSVM - 人工知能に関する断創録

    前回(2010/5/2)のハードマージンSVMでは、データに重なりがある場合、下のようにちゃんと分類境界を求められませんでした。今回は、重なりのあるクラス分布に対応できるように拡張してみます。このようなSVMはハードマージンSVMに対してソフトマージンSVMと呼ばれます。別名としてC-SVMとも呼ばれるようです。 PRMLの7.1.1にあるように、データの誤分類を許すようにSVMを修正します。ハードマージンSVMでは、データ点がマージン内(-1 < y < 1)に絶対に入らないことを前提にしていましたが、ソフトマージンSVMでは「入ってしまったものは仕方ない、だがペナルティを与える!」と少し条件を緩めます。 まず、スラック変数ζ(ゼータ)をデータごとに導入します。スラック変数は、データが正しく分類されかつマージン境界上または外側にある場合は0、正しく分類されているがマージン内に侵入してしま

    ソフトマージンSVM - 人工知能に関する断創録
  • Gabung Sekarang di Slot88: Situs Judi Slot Online Terpercaya & Gacor, Dapat Maxwin!

  • 線形回帰、カーネル線形回帰をRで実装する - Loud Minority

    http://d.hatena.ne.jp/sesejun/20090401/p1 で紹介したカーネル多変量解析の続き。 演習があるべきだ、と言ったが一般にカーネル法だと、与えられた点の数だけ次元を持つ正方行列を扱うので、演習を作っても手で解くのがつらい。だから、こんな風にソースコードを入れてみるのは、どうかと思ったので、このエントリを書いてみた。 線形回帰からカーネル線形回帰までをRで書いてみる(行列扱うのが楽なので)。式番号は、カーネル多変量解析のに出てくる式番号である(まだ式番号をつけていないところが多いので、後日つけます付けました。2009/4/3)。 まずは単なるXYプロット。正規分布を鋭角にした感じの点20個。図1.3(P9)の点を真似た。 x1 <- c(-2,-1.69,-1.5,-1.3,-1.1,-0.9,-0.7,-0.48,-0.42,-0.05,0.09,0.

    線形回帰、カーネル線形回帰をRで実装する - Loud Minority
  • TokyoNLP#7で「きれいなジャイアンのカカカカ☆カーネル法入門-C++」を発表しました - シリコンの谷のゾンビ

    TokyoNLP#7に参加して,「きれいなジャイアンのカカカカ☆カーネル法入門-C++」を発表してきました. 幹事の @nokuno さんをはじめ,他の発表者の方々や懇親会の買い出しをしてくださったみなさま,参加者のみなさま,そしてなにより会場を提供してくださったECナビさんと@ajiyoshiさんに改めて感謝申し上げます. 大分時間が空いてしまったけれど一応前回からの続き. TokyoNLP#5で「パーセプトロンで楽しい仲間がぽぽぽぽ〜ん」を発表しました 発表資料を公開します.一部修正してあります. TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++ View more presentations from sleepy_yoshi 発表のポイントは以下のあたり. 入力とデータ点 (サポートベクタ) との類似度 (カーネル) の重みづけ和でモデルを表現している!

    TokyoNLP#7で「きれいなジャイアンのカカカカ☆カーネル法入門-C++」を発表しました - シリコンの谷のゾンビ
  • Pythonでカーネル主成分分析を実装してみる

    カーネル主成分分析(Kernel principal component analysis; kernel PCA)はその名のとおりカーネルを使って主成分分析(PCA)を行う手法.カーネルっていうのは距離みたいなもん(→Kernel trick - Wikipedia).線形主成分分析はデータが元の変数のベクトルの線形結合で表されてるとしているけど,そうでもないときもあるよねってことで,非線形写像して主成分分析する.分散共分散行列の代わりに,各データ間のカーネルを要素とするカーネル行列の固有値固有ベクトルを求めるってこと. Kernel pricipal component analysis - Wikipediaに載ってる画像っぽいのをつくってやってみた.つくったデータ→ kpca.data"x1 x2 class\n".3つのクラス.各クラス100個ずつ. 元データの描画. カーネルは

    Pythonでカーネル主成分分析を実装してみる
  • The Kernel Trick

    Everything You Wanted to Know about the Kernel Trick (But Were Too Afraid to Ask) Eric Kim (eric.kim.cs@gmail.com, http://www.eric-kim.net) PDF link (12/20/2017) I've exported this article to a PDF that includes all rendered equations. Until I find a more permanent solution, please view this PDF instead, sorry about the inconvenience: Link Abstract The goal of this writeup is to provide a high-lev

    The Kernel Trick
  • カーネル関数 - Qiita

    パラメトリックな線形モデルの多くは同値の双対表現の形に表すことができます。予測も訓練データ点を中心として定義される カーネル関数 (kernel function) の線形結合を用いて行われます。 あらかじめ定義された非線型の 特徴空間 (feature space) への写像 Φ(x) に基づくモデルにおけるカーネル関数は次の関係になります。 以前のサポートベクトルマシンの話ではグリッドサーチで最適なカーネル関数を導出しました。カーネル関数には多くの種類があります。このうち引数の差のみに注目したのは 不変カーネル (stationary kernel) と言われます。これに対し 2 つのベクトルの距離にのみ依存するのは 均一カーネル (homogeneous kernel) と言われます。 カーネル関数の制約 * 共分散行列が正定値である * グラム行列が半正定値である (シグモイドカー

    カーネル関数 - Qiita
  • 線形識別器でカーネルトリックを使う方法 - Preferred Networks Research & Development

    WEB+DB PRESS Vol.64に「作って学ぶ日本語入力」という特集記事を書かせていただきました。徳永です。全国の書店で発売中ですので、ぜひみなさんお買い求めください。(宣伝) さて今回は、線形識別器でカーネルを使うのと同じ効果を得るための手法を紹介したいと思います。 カーネルとは SVMはカーネルトリックによって非線形識別を可能としたことによって、研究コミュニティで大流行しました。 カーネルトリックは線形空間では線形分離できないデータを高次元空間に写像してそっちで線形分離しちゃおう、でも高次元に実際に写像してしまうと計算量が増えちゃうから、問題を等価な形に変形して高次元に写像した場合と同じ結果を高速に計算しようね、というテクニックです。具体的には、高次元データが出てくる部分は全部内積で書ける形に変形し、この内積の部分をカーネルと呼ばれる特殊な関数で置き換えます。 結局、自然言語処理

    線形識別器でカーネルトリックを使う方法 - Preferred Networks Research & Development
  • 今さら聞けないカーネル法とサポートベクターマシン

    The document discusses distances between data and similarity measures in data analysis. It introduces the concept of distance between data as a quantitative measure of how different two data points are, with smaller distances indicating greater similarity. Distances are useful for tasks like clustering data, detecting anomalies, data recognition, and measuring approximation errors. The most common

    今さら聞けないカーネル法とサポートベクターマシン
  • 非線形SVM 〜詳細説明〜

    非線形SVM 〜 詳細説明 〜 戻る 問題が線形分離できないような場合,やっぱり非線形なモデルを考えたいわけで,常套手段はなんといっても,元の特徴空間を線形分離可能な別の特徴空間に変換してやってから線形分離してやる,っていう方法だよね.非線形SVMも例に漏れずこの方法を使う. 元の特徴空間におけるベクトルを,別の次元特徴空間に変換する関数を考える.は,スカラーを出力する任意の個の非線形関数を要素とするベクトルと定義する. (2.1) これを使って,非線形SVMの識別関数を次のように考える. ただし (2.2) 学習データは個与えられているとし,と表す.これらのデータを2つのクラスおよびに分離することを考える.この学習データ集合に対して,が次の条件を満たすようにパラメータを調節することを考える. (2.3) ここで学習データに関する教師信号をとし,次のように定義する.

  • カーネルとは直感的に説明するとなんなのか? - Qiita

    How to intuitively explain what a kernel is?に対する回答がわかりやすかったので和訳 まずは質問の意図から。 質問者は、「カーネルとは直感的に説明するとなんなのか?」を聞いています。それに対する回答のひとつが、上記のリンク先です。 和訳 カーネルとはふたつのベクトル $\boldsymbol{x}$ と $\boldsymbol{y}$ の内積を(たいていはとても高次元の)特徴空間で計算する方法であり、これがカーネル関数が時々「一般化内積」と呼ばれる理由です。 $\mathbb{R}^n$ 上にあるベクトルをなんらかの特徴空間 $\mathbb{R}^m$ へ写す写像 $\varphi:\mathbb{R}^n \rightarrow \mathbb{R}^m$ があるとします。すると、その空間での $\boldsymbol{x}$ と $\bol

    カーネルとは直感的に説明するとなんなのか? - Qiita
  • サポートベクターマシンとは[カーネル法による非線形サポートベクターマシン] - verum ipsum factum

    ここからはこれまで述べてきたサポートベクターマシンにカーネル法を適用することにより非線形サポートベクターマシンへ拡張することを考えます。 カーネル法の導入 これまで述べてきたサポートベクターマシーン分離面が超平面であることを前提としていました。しかし、実際の問題では正例データと負例データの境界が超平面であるよりは、複雑に入り組んだ超曲面である可能性が高いことが想定されます。 このようなデータに、これまで述べてきたようなクラス境界を超平面とするサポートベクターマシーンを適用しても、高い分類性能を期待することは難しそうです。 たとえば下図のような単純なケースでさえ正例データ(○)と負例データ(×)を分ける直線は存在しないため、100%の分類性能は達成できません。 しかし、このようなデータでも線形分離が可能になるような別の空間へ変換できれば、変換先の空間ではクラス境界が超平面になるのでサポートベ

    サポートベクターマシンとは[カーネル法による非線形サポートベクターマシン] - verum ipsum factum
  • 確率的勾配降下法によるSVMの実装 - Qiita

    この記事は何? サポートベクターマシン(Support Vector Machine: SVM)では以下の目的関数を最小化します. \min_{\bf w}\frac{\lambda}{2}\|{\bf w}\|^2+\frac{1}{m}\sum_{({\bf x},y)\in S}l({\bf w}; ({\bf x}, y)) \\ l({\bf w}; ({\bf x},y))=\max(0,1-y\left<{\bf w},{\bf x} \right>) オンライン機械学習に,この目的関数を確率的勾配降下法で最小化するアルゴリズムが載っていましたが,カーネルトリックには対応していませんでした. そこで,確率的勾配降下法によるカーネルトリックを用いたSVMの実装を探していたところ,Pegasos: Primal Estimated sub-GrAdient SOlver for

    確率的勾配降下法によるSVMの実装 - Qiita
  • 1