naoki86star

インターネットの片隅でなにかしら書いてみる

EM-algorithm by javascript

先日VoltDBの要望機能を書いたときにgithubのアカウントを取りました。せっかくなので、自分の古いもののうちまだ残しておくものを整理してupしていくことにします。

昔、潜在クラス抽出というのをC++で書きました。理論は「マーケティングの数理モデル」という書籍を参考にしました。具体的な内容は、ユーザーとアイテムの行列を与えて、それから潜在クラス数を与えてあげると、ユーザーを潜在クラスの数分に割り振ってくれるものです。

そのアルゴリズム部分の学習用*1javascriptで書きました。このjsでは数式どおりの単純な実装なのでアイテム数が100程度以上だと確率が正しくもとまらず結果が不正になると思います。EM-アルゴリズムにおけるイテレーションの動きの理解にはちょうどいいのと、即席の簡単な分析みたいなのにはもしかしたら用途あるかもです*2

*1:そしてjavascriptの学習

*2:と思って、ずっとレンタルサーバの片隅にdiskの肥やしになっていた