2008-08-01から1ヶ月間の記事一覧

Rubyで書くMovieLensデータセットでの推薦

前回は,データセットの準備まででした. これで準備が整ったので,これまでのプログラムを使って計算することができます. MovieLensデータセットでの推薦 まずは87番さんのデータをみてみましょう. movie_lens_critics = Marshal.load(File.open('movie_l…

Rubyで書くMovieLensデータセットの変換

MovieLensと呼ばれる映画の批評データを使って映画の推薦を行ってみよう,という試みです. 今回は元データをこれまでに作ったプログラムで使えるように変換するところまでやります. MovieLensデータセットの変換 データの形式をこれまでのcritics(いわゆる…

Rubyで書くはてブを使った推薦

書籍の例では,del.icio.usからソーシャルブックマークのデータを取得して推薦を行っています.(p.20-p.24を参照) これをこのままRubyで書こうかな...とも思ったのですが,何か面白くないので はてなブックマーク(以下 はてブ)のデータを取ってくることにし…

Rubyで書くユークリッド距離とピアソン相関(NArray編)

これまでのコードは標準ライブラリだけで書いてきました. が,もうちょっと速くできないものかと思い,調べてみたところNArrayというGemがあることがわかりました. (Rubyの数値計算ではおなじみらしいですね...) 今回はこのNArrayを使って,高速化してみよ…

Rubyで書くアイテムベースの推薦

前回作成したアイテムベースのデータを使って,映画の推薦を行うことができます. アイテム相関による推薦 アイテム同士の相関値を作成してから,批評値と相関値を掛け合わせます. あらかじめ作成したアイテム相関のデータを渡せると,計算が早くなるのが嬉…

Rubyで書くアイテム相関データの作成

これまで使っていた評価データから,アイテム同士の相関を導くことができます. アイテム相関データの作成 既出のメソッドを組み合わせているだけなので簡単です. ただし,top_matchesを何度も繰り返すので,評価データが大きくなるほど実行時間が延びてし…

Rubyで書く似ている製品探し

これまで,評価者をキーとしたデータセットを使って計算をしてきましたが, アイテム(この場合は映画)をキーとした相関を知ることはできるでしょうか. この点に注目したのが「似ている製品」の章です. アイテムをキーにした評価データへの変換 元のデータ…

Rubyで書くアイテムの推薦

前回は評者の相関まで計算しました. そこで,この値を使って映画の推薦をしてしまおう,という魂胆です. 推薦値の計算 正直,ちょっと長いです. もっとすっきり書きたかったんですが,何やってるか分かるでしょうか... module My class Recommender # # …

Rubyで書く相関値順のリスト

これまでに作ったユークリッド距離とピアソン相関を使って,相関値によるリストを作成します. このリストにより評者のランク付けが可能になります. ランキングの仕方 やっていることは単純です. オプションの渡し方だけ注意が必要です. Rubyでは名前付き…

Rubyで書くピアソン相関

前回のユークリッド距離に続いて「ピアソン相関によるスコア」です. ピアソン相関の計算 正しくは,ピアソンの積率相関係数というらしいです. 巻末のp.342にある定義をそのまま実装しました. sum_xy(x*yの部分和)を求めるのに,zipで書いてあるところがち…

Rubyで書くユークリッド距離

oreillyから「集合知プログラミング」という書籍が発売されました. この本文中で使われている例題をRubyで書いてみようと思います. どこまで行けるか分かりませんが,やるだけやってみます. では「ユークリッド距離によるスコア」から. criticsの表現 本…