プログラミング

Python版のSCWを作った(ついでに疎な素性を取るようにした)

Pythonに慣れるためにSCWを書いた。前にPerlで書いたのは密な素性を前提にしていた。これだと不便なので今回は疎な素性を取るように変更した。 https://github.com/echizentm/ConfidenceWeighted

何かと話題の隠れマルコフモデルを実装した

"ビジネスでもほとんど使われていない最新の統計モデル"とかいう謎なレッテルをはられてしまったことで話題の隠れマルコフモデル(Hidden Markov Model)を実装した。 NLPでのHMMは教師ありデータに対して使う場合が多いが、完全に品詞がわかっている場合はCRF…

SoftConfidenceWeightedの非対角成分を無視するバージョンを書いた

SCWはまともに実装すると高次元密行列ができてしまう。なんだか対角成分だけでもいいんじゃないの的な話があったので試しに実装してみた。 対角成分だけだったら疎なままでもOKだし(今回の実装では密行列を想定しているけど)、これで充分に精度が出るならSCW…

Soft Confidence Weightedも書いてみた

CW(Confidence Weighted)を実装したので調子に乗ってSCW(Soft Confidence Weighted)も書いてみた。 SCWには1と2があって、それぞれL1,L2正則化っぽい感じのことをしている。今回はSCW1を実装した。 またCWは学習時に使う共分散行列が対角成分しかなかったの…

Confidence Weightedを書いてみた

時代はSCW(Soft Confidence Weighted)らしいのだがCWさえまともに実装したことがなかった。これでは良くないということでCWを実装したので公開しておく。 https://github.com/echizentm/ConfidenceWeighted参考: http://www.cs.jhu.edu/~mdredze/publication…

自分のコピペ用にPerlで誤差関数と逆誤差関数を書いた

学習器を実装しようとすると唐突に逆誤差関数(erf(誤差関数)の逆関数)が必要になったりする。 こんなときに慌てず騒がずコピペできるようにPerlで実装したものをメモしておく。

重複のない乱数リストをお手軽に生成する方法

作ったプログラムのテストとかでまとまった数の乱数が欲しいことがある。値が重複しても良いならひたすら乱数を生成する関数(rand()とか)を呼べばいい。 ところが場合によっては同じ値が何回も出現すると困ることがある。こういう時のために重複のない乱数リ…

テスト駆動開発とかよくわからない人のための今すぐ使えるCppUnitテンプレ

時代はテスト駆動開発(TDD)らしいので有名な単体テスト用フレームワークCppUnitを試してみた。 これまでテスト用コードは自前で書いていたのでフレームワークのありがたさを実感するなどした。ただCppUnitは「必ず書かないといけないコード」の量が何気に多…

自分用にC++疎ベクトルクラスを書いてみた

最近、色々と学習器を作って遊んでいるときに気軽にコピペで使える疎ベクトル(sparse vector)クラスが欲しくなってきたので勉強を兼ねて書いてみた。必要最低限の機能は付いている(はず)。 サポートしている演算は加算(減算)とスカラー倍と内積の3つ。加えて…

TopCoderはじめました(今更

故あって今更ながらTopCoderをはじめた。英語サイトということもあり、コーディングをはじめるまでに結構手間取ってしまった。とりあえず過去問を解いてみるまでの手順をメモしておく。

perlでLDA(Latent Dirichlet Allocation)を書いてみた

感覚を掴むためにperlでLDAを書いてみた。130行くらい。あくまで練習なので効率のよさとかは考えてない。とりあえず動いたよ的な。実装はBlei論文に書かれている変分ベイズ版を使った。 Latent Dirichlet Allocation D.M.Blei et al, 2003 なおディガンマ関…

PerlXS: sv_2mortal()やhv_store()のこと

そろそろXSをちゃんとやろうと思ったので、メモリ周辺のことが良くわからなくて放置していたsv_2mortal()やhv_store()のことについて調べた。 参考: perlguts http://www.kt.rim.or.jp/~kbk/perl5.005/perlguts.html

Coreutilsのshufを使ってみた

1行1エントリの巨大なデータから数千行サンプリングして小さいデータを作りたい、という問題が起きた。overlastさんにCoreutilsのshufを紹介していただいたので使ってみた。これは便利。 参考: http://www.gnu.org/software/coreutils/ http://ftp.gnu.org…

SVMのおまけ(多項式カーネル)

昨日書いたSVMのカーネルは線形カーネル(というかただの内積)だったので、多項式カーネルにパワーアップ!させてみた。 参考: perlでSGD版SVMを書いてみた - EchizenBlog-Zwei

perlでSGD版SVMを書いてみた

SVM(Support Vector Machine, サポートベクターマシン, サポートベクトルマシン)をperlで書いてみた。 実装が簡単という理由からSGDによるオンライン学習を行っている。カーネル行列(グラム行列)をメモリに持っておかないといけないので本当の意味ではオンラ…

Windows版mmapクラス

故あってmmapの調査をしていた。UNIX環境だとファイルディスクリプタを引数にmmapコマンドを呼ぶだけなのだけれどwindowsだとちょい面倒なAPIを呼ばないといけない。そんなわけで今後の利便性のためwindows版mmapのリーダークラスをメモしておく。

PHPで編集距離

普段PHPは使わないのだが、故あってPHPのstringクラスのメソッドを調べていたらlevenshtein()なるものが。

PerlXS:C++編

次にC++ラッパーの作り方。 参考:http://www.johnkeiser.com/perl-xs-c++.html

PerlXS:入出力の型

perlの変数はスカラ値、配列、ハッシュの3つ。一方C/C++ではintやdouble、構造体、クラスなどが使われる。xsではC/C++のコードとPerlのコード間でこれらの変数をどのようにやり取りしているのかという話。生半可な知識で書いているので間違ってる可能性あり…

PerlXS:C編

C/C++ライブラリのperlラッパーの作り方をメモ。まずは単純なCラッパーを。

Perlでオブジェクト指向

Perlでクラスを書く方法をメモ。