データモデリング

データモデリング
推薦のための集合知プログラミング
協調フィルタリング
• お勧め商品を推薦してもらうための方法
– 友人にその商品について 聞いてみる
– 商品が増えれば増えるほど、推薦は困難
• その商品を知っている友人 が必ずいるとは限らない
• 協調フィルタリング
– あなたの好みに似た人々 を、大規模な人々の
集団から発見する
– これらの人々が好む商品で、あなたが知らない
商品を推薦する
好みの商品の収集
• 映画を例に説明
• 各人が5段階評価
• 見ていないものには、評価を与えない
高田
池田
西尾
原田
丸山
国枝
島川
ラピュタ
2.5
3.0
2.5
3.0
3.0
4.5
千と千尋
3.5
3.5
3.0
3.5
4.0
4.0
Minority
Reort
3.0
1.5
3.0
2.0
Avatar
3.5
5.0
3.5
4.0
3.0
5.0
4.0
タイタニック
2.5
3.5
2.5
2.0
3.5
1.0
Mission
Impposible
3.0
3.0
3.0
4.5
3.0
3.0
[注] ユーザ名は架空のもので、実在する人名とは一切関係がありません。
似ているユーザを探し出す
• 類似性を測る尺度が必要
• いろいろな尺度
– ユークリッド距離
• 各ユーザを、映画の数だけの次元のベクトルで表現
• 2つのベクトル間の距離を計算
• 距離が短いほど、2つのベクトルは似ている
– コサイン類似度
• 2つのベクトルの方向が似ていることを利用
– ピアソン相関
• 各映画に対する2人の評価について、一方が好きなら
他方も好きであるという相関性を利用
ユークリッド距離
• 2つのベクトル間の距離を計算
• 距離が短いほど、2つのベクトルは似ている
a(1, 3, 0)
|b – a | =
=
=
=
b (5, 2, 1)
=
=
(5-1)2+(2-3)2+(1-0)2
16 + 1 + 1
18
3 2
3 x 1.414
4.243
コサイン類似度
• 2つのベクトル a, b のなす角度θを考えると
a(1, 3, 0)
θ
同じ方向を向いているとき cosθ = 1.0
逆方向を向いているとき
cosθ = -1.0
似ていれば似ているほど大きな値
内積(a, b) は
(a, b) = |a| |b| cosθ = (a1b1+a2b2+…)
だから、cosθは
(5,
2,
1)
b
(a, b)
cosθ =
|a| |b|
この場合は
(1・5+3・2+0・1)
cosθ =
12+32+02 52+22+12
コサイン類似度を使った
似た人の並び替え
• 映画の数だけの次元を考える
– この場合、6次元
• 各ユーザを6次元のベクトルで表現
• 任意の2つのユーザの組について、コサイン類
似度を計算
• 計算結果に基づき、ソート
• 問題
– 見ていない映画についてはどう考えるか?
ピアソン相関
• 2つの項目の相関を示す[-1, 1]の値
– 値が1に近づけば、正の相関 が強い
• 一方の値が大きくなると他方も大きくなる
– 値が-1に近づけば、負の相関 が強い
• 一方の値が大きくなると他方は小さくなる
ユーザ2
1.2
正の相関
ピアソン相関は1に近づく
ユーザ2
負の相関
ピアソン相関は-1に近づく
アバタの評価は
ユーザ1が3.0で
ユーザ2は1.2
ユーザ1
3.0
ユーザ1
ピアソン相関の意味
3つの映画の場合を例とする
• ユーザ1とユーザ2で映画の評価の 平均 をとる。
a1 = (r1 + s1 + t1) / 3, a2 = (r2 + s2 + t2) / 3
• すべての映画の評価の平均からの、各映画の評価
の 偏差 を考える。ユーザ2
千と千尋(s1, s2)
s2 - a2
平均(a1, a2)
t2 – a2
r2 – a2 ラピュタ(r1, r2)
タイタニック(t1, t2)
ユーザ1
r1 - a1
t1 - a1
s1 - a1
ユーザ1,2の偏差のベクトル
• ユーザ1の偏差のベクトル d1 = ( r1 - a1, s1 - a1, t1 - a1 )
• ユーザ2の偏差のベクトル d2 = ( r2 – a2, s2 – a2, t2- a2 )
• ベクトル d1, d2 のコサイン類似度 p
p = (d1, d2) / |d1| |d2|
は、 d1と d2 が
– 同方向を向いているとき 1 に近づき、
– 逆方向を向いているとき -1 に近づく
• pをピアソン相関 (Peason corelataion)という
相関
一方が高ければ…
• d1と d2 が同方向とは、ユーザ1が平
均より高い方向に評価するものは、
ユーザ2も平均より高い方向に評価
することを意味する
– 正の相関
• d1と d2 が逆方向とは、ユーザ1が平
均より高い方向に評価するものは、
ユーザ2は平均より低い方向に評価
することを意味する
– 負の相関
• ピアソン相関は、大きな点をつける人
と小さな点をつける人でも傾向が同じ
であれば類似しているとみなす
S(千と千尋)についての偏差
ユーザ2の
偏差ベクトル
d2
ユーザ1の
偏差ベクトル
d1
θ
t(タイタニック)についての偏差
r(ラピュタ)
についての偏差
アイテムを推薦する
• 自分が見ていなくて、自分が面白いと思う
映画を推薦してもらうためにはどうすれば
よいか?
1. 自分以外の全評価者の評価点を集める。
2. ある人の、それぞれの映画の評価点を、
その人と自分との類似性で重みづける。
3. 重みづけられた評点を各映画ごとにすべ
ての評価者で合計し、合計点が高いもの
から推薦する。
おすすめ度の計算表
• 各映画の評価に類似性をかけ、重みづけ評価を計算
– 丸山のラピュタの評価は3.0で、類似性は0.92だから
3.0 x 0.92 = 2.77
• これを映画ごとにすべての評価者で合計する
– ラピュタの評価は 8.38
• 多くの人が見た映画が高く評価されるので、不公平
• この合計値を、映画をみた評価者の類似度の合計で割る
– 映画をみた評価者の類似度の合計は 0.99+0.38+0.92+0.66=2.95
– ラピュタについてのおすすめ度は 8.38 ÷ 2.95 = 2.83
高田
池田
原田
丸山
国枝
合計
使用した類似
性の合計
合計/使用した
類似性の合計
類似性
0.99
0.38
0.89
0.92
0.66
Mission Mission Impposible*
Impposible
類似性
3.0
2.97
3.0
1.14
4.5
4.02
3.0
2.77
3.0
1.99
12.89
ラピュタ
2.5
3.0
ラピュタ*類似性
2.48
1.14
3.0
3.0
2.77
1.99
8.38
Minority Minority Reort*
Reort
類似性
3.0
2.97
1.5
0.57
3.0
2.68
2.0
1.85
8.07
3.84
2.95
3.18
3.35
2.83
2.53
使用した類似性の合計で割る理由
• 値v1, v2, v3があるとして、これに重みw1, w2, w3
をかけて、加重平均をとるとき
w1 v1 + w2 v2 + w3 v3
w1 + w2 + w3
• 前スライドでの計算は、これを実施しただけ。
• 類似性で重みつけられた評価値の合計は定
式の分子、類似性の合計は上記の分母
計算結果を使って推薦
• 第1位
• 第2位
• 第3位
高田
池田
原田
丸山
国枝
合計
使用した類似
性の合計
合計/使用した
類似性の合計
類似性
0.99
0.38
0.89
0.92
0.66
Mission Impossible
天空の城 ラピュタ
Minority Report
Mission Mission Impposible*
Impposible
類似性
3.0
2.97
3.0
1.14
4.5
4.02
3.0
2.77
3.0
1.99
12.89
ラピュタ
2.5
3.0
ラピュタ*類似性
2.48
1.14
3.0
3.0
2.77
1.99
8.38
Minority Minority Reort*
Reort
類似性
3.0
2.97
1.5
0.57
3.0
2.68
2.0
1.85
8.07
3.84
2.95
3.18
3.35
2.83
2.53