技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

集合知勉強し始めてみた

病院居る間暇、、、、というか順天堂大学医院みたいな指定病院は、朝8時に来ても速攻混むから、余裕で午後2~3時になる、、、、。

ので、オライリー集合知本読みふけってた。

噛み砕いて原義をきちんと知って、プログラム書きたいと思ったもの。

類似性の比較

何かの本2冊の5段階評価として、X軸、Y軸に本のスコア、プロットするのはその人が2冊に対してどういった評価をしたか。

プロット後、それらの間の距離が短ければ、同類(類似性が高い)だとみなすと。

2次元座標比較は二乗和をルートしてやりゃいいので簡単。複数の比較でも、図にしにくいだけで三次元距離とか4次元距離で比較していけばよい。

これは考え方が単純で組みやすい。一方で、全体的に評価を低く見積もる人と、全体的に評価を高く見積もる人で差が出てしまう。

  • ピアソン相関比較

同じく二次元で考えるが、人間2人をX.Y 軸に設定し、今度は本の評価をプロットしていく。

そしてそれらアイテムにもっとも近い一次直線を引く(回帰曲線の直線近似というんだっけか?)。

そして、プロットと線の距離の合計を計算する。

好みが似通っていると、このプロットは一次直線上か、それに近い範囲に収まるので、合計値が小さいほどよい。

ユークリッド空間比較の欠点を補いはするが、計算回数は多そう。

比較したら

片方だけが見て、高評価な本を推奨できる。

相関の高い先頭10人位の、本の評価を、類似度 100% で掛け算して、平均を取ると、より好みに近い本が選べる。

因みに、ピアソン相関の一時直線の係数がマイナスに傾く場合、そもそも好みが対極に近づいてることを意味してしまう。

これは、評価値の無いもの「持ってる、持ってない」の場合も 1, 0 を割り振ればいけるのだとか、、、。

後は延々コード書きたいとかそればっかで勉強に手つかなかった(;´∀`)

21日の Scala座 にこれもってこーかな?

  • Q:それしかしてないの?

  • A:それしかしてないよ。後は小説読んで待ってたもの、、、。