研究
と、いう訳で、Centering matrixを生成する。 import numpy def makeCentering(dimension): return numpy.identity(dimension) - 1.0/dimension 例えばdimension=2だとこうなる [[0.5 -0.5] [-0.5 0.5]]以上
Isomapがうまく次元削減できることは結果から明らかなのだけれど、学部時代に 線形代数や最適化の授業をサボってきた僕にとっては「何故」うまくいくか理解 できなかったので、先生の助けなども借りながら考えてみた。 Isomap自体はこちらで見たらよく分かり…
インターンの面接の後、ぐずぐずしながらも、先日の続きであるIsomapの実装を行った。 前回は失敗したけど、今回は無事成功。 良かったです。 結果どうなるかは知っていたけど、非常にきれいな結果が得られました。 良かったよかった。 ただ、Gnuplot.pyが期…
linalgを使う。 適当な行列mが定義されている時 >>>import numpy >>>la,v = numpy.linalg.eig(m) laには固有値が、vには固有ベクトル(正確には列ごとに固有ベクトルが並んでいる行列)が代入される。 laのそれぞれの固有値に対応する位置の列に、その固有値…
中間発表終了 いろいろと言ってもらってやや頭が混乱してくる。 1つ言えるのは自分がよりどころとする部分をはっきりさせないとね、ってことですね。
最近はとりあえずPythonで実装してみて、よさげな結果が出そうならCで実装するという流れができつつある。 が、今回の場合はPython依存の関数を使いまくっているので、Cで実装するときどうするか、ということが問題だなぁ。 いよいよC++か?
Numpyの使い方などを勉強しつつIsomapを実装してみましょう、としてみたけど失敗。 固有値、固有ベクトルを求める辺りに問題がありそうななさそうな。 - 違った。 問題は固有値、固有ベクトルを求めた後に、固有値の大きいほうからn番目を使わないといけない…
そんなときはidentity()関数を使えばよい。 >>>from numpy import * >>>identity(2) >>>array([[1.,0.], [0.,1.]]) 同様のものにzeros()やones()がある。
SciPy Tutorial — SciPy v0.13.0 Reference Guide チュートリアルに従って、いろいろ試してみた。メモ mat関数?を使えば行列を定義できる。 mat('[1,2,3;4,5,6;7,8,9]')で3行3列の行列が定義できる。 linalg(LinearAlgebra)をimportすれば、線形代数関係の…
昨日の続きで、k近傍グラフとそれらの測地線距離を求めるプログラムを作成した。 k近傍グラフが案外めんどくさかった。 これから行列計算が連発してくるわけですが、いちいちプログラムを作るのはめんどくさいなぁというわけで、楽になるものを探し中。 スイ…
Isomapを実装するために、とりあえず適当なデータが欲しいところ。 論文に書いてあったスイスロールがいいののかな。 ちょっとプログラムを考えてみるか。 3次元だとx-z軸かy-z軸方向に回転しつつ半径を小さくしながら移動して、移動している位置から適当な…
次元削減で何か面白い文献はないかなぁといろいろと探していたら面白いものを見つけた。 http://d.hatena.ne.jp/audioswitch/20081004/1223138496 経由で見つけたIsomapというアルゴリズムだけど、何が面白いって、まずgoogle先生に尋ねると isomap - Google…
微妙にてこずりながらも完成。 多分こんな感じでいいはず。 完成品 ぱちぱちー 大きさによるけどデータは500点くらい使えばすかすか感はなくなる。 100点くらいだと寂しい感じだった。 次はこのデータで近傍グラフを作成します。 k近傍グラフでk=3,4,5辺りで…
OpenCVで遊んでばかりもいられないので、論文をカキカキしている。 ようやく日本語の投稿論文を書き終え、研究室内レビュー*1もパスしたのでようやく一息、といいたいところだったのに、今度は国際学会の原稿を送らないといけないというワナ。 日本語の論文…
日本語の論文についてはほぼ完成しつつある。 後は、明日最終の見直しと最大の関門である先生のチェックをすればおk。 論文は細かいところに気を使うのがめんどくさすぎる。
初めて投稿論文を書いている。(卒論を除く。あれは論文じゃない。やったことの記録と報告だと思っている。) 今までは学会前の概要提出で最高でA4が4枚だったけど、今回はA4で6枚。 思った以上に2枚の壁は厚い。 論文を書きながら、まだまだインプットが足…
SVMをSVMたらしめているカーネルですが落とし穴があります。 カーネルについてよく言われることに、 どのようなカーネルを使うかより、カーネルパラメータをいかに設定するか ということがあります。 カーネルパラメータの設定がすごく重要ということです。 …
国際学会のタイトルを提出した。 今から一ヶ月で英語の資料を作らなければならない。 とほほ。 よく考えると その辺りが投稿論文の締め切りだった。 とほほほほ。 さらに その辺りに研究室内の中間発表だった。 とほほほほほほほ。
判別分析に用いられる二つの尺度のうち、線形判別関数でない方がマハラノビス距離である。 ということで、調べてみたけどなんだか難しめな感じ。 マハラノビス距離 - Wikipediaでもそんなに難しくなかった。 マハラノビス距離とは データ分布の広がりを加味…
判別分析とは、データのグループ分けを行う方法。 データを何がしかの基準で、二つに分類する。 分類の方法としては、超平面である線形判別関数を使う方法と、マハラノビス距離を使う方法がある。 今日は線形判別関数を使う方法を学んだ。 二つのグループに…
判別分析の辺りに研究のヒントになりそうな理論を発見。 統計++ ってか、思いのほか分散って重要なのねー 今までどんだけ勉強してないんだって話。 思い返すと、実は統計学は優だった希ガス。 何をどう勉強したのやら。 記憶の片隅にすら残っていなかった…
勉強したってほどではないけど、意味が理解できた。 疎な解=サポートベクトルが見つかる、という認識でよさげ。 つまり、データ全てを用いなくても、サポートベクトル(全データの一部)さえあれば、最適な超平面を構成できる。 最適な超平面を構成できるとい…
"Multidimensional support vector machines for visualization of gene expression data" D.Komuraらを読む。 これ東大の先生の論文みたいだな。 この分野で日本人が書いた論文を初めて読んだ。 SVMは決定関数(分離超平面)が1つだけしか学習できない。 PCA(…
『Support vector machine classification and validation of cancer tissue samples using microarray expression data / Terrence S. Fureyら(2000)』を読む。 この辺りの時期からSVMを発現量データの解析に用いだしたと思われる。 発現量データにSVMを用…
マニュアルはちゃんと読もうという話。 LIBSVMの各種機能は関数として提供されているようだ。 良く分かっていなかったので、今まで約半年以上の間、システムコールでシェルから実行ファイルを呼び出していた。 なんと効率のよくないことをしていたのか。
今後の方針について最近考えている。 ここまできたらSVMと修論で心中しちまうか、って流れが自分の中でできつつある。 SVMで修論を書くためには、バイオネタと絡めて応用の匂いを醸し出さないとフルボッコ確定のはず。 とはいいつつも、最低限以上SVMの枠組…
SVMの実装まではまだ距離はあるので、少し方向転換して、現在使っているSVMのパッケージLIBSVMについて調べていく。 理論・実装の部分も引き続き調べていく。 LIBSVMはSVMで有名な実装の1つ。 後は、SVMLightとかTinySVMとか?? LIBSVM↓ LIBSVM -- A Librar…
ソフトマージンSVMについてソフトマージンSVMはマージン領域にデータが入り込むことを許容したものである。 ノイズが含まれる実世界のデータに対して有効となる。 ここから新たな知識。 ソフトマージンSVMは緩和変数の形式により2種類存在する。 L1ソフトマ…
研究室に会ったのでこちらの本も読み始める。サポートベクターマシン入門作者: ネロクリスティアニーニ,ジョンショー‐テイラー,Nello Cristianini,John Shawe‐Taylor,大北剛出版社/メーカー: 共立出版発売日: 2005/03メディア: 単行本購入: 8人 クリック: 13…
KKT条件について ここを見ればよいと思われ http://www.indsys.chuo-u.ac.jp/~konnolab/lect/Optimization3.pdfSVMは非線形計画問題である。 制約条件が線形で、目的関数が上に凸の2次式のとき、2次計画と呼ぶ。SVMの制約条件はマージン領域にデータが入り…