検索結果: タグ「slope one」
Slope One(スロープワン)アルゴリズム
2008年11月 4日 12:52 » Webサービス
ECサイトなどでお馴染みの「○○さんへのオススメ」機能。
実装にはいろいろな方法があるが、その中でSlope One(スロープワン)アルゴリズムは最もシンプルで比較的精度が高いとされている。
例えばユーザーが商品に5段階評価を付けられるアプリケーションがあるとする。
「○○さんへのオススメ」を表示するということは、
・○○さんがまだ評価していないアイテムに対して
・もし評価したらどんな評価をするかを計算によって予想し
・高評価だと予想されたものをピックアップする
という作業にあたる。
Slope Oneの基本的な考え方は、
アイテム間の評価の差は、全体でも個人でも似たようなものだろう
という単純なもの。
例えば以下のような場合を考える。
| 商品A | 商品B | 商品C | |
| 太郎 | 4 | 2 | 5 |
| 花子 | 3 | 3 | 未評価 |
| 次郎 | 5 | 未評価 | 3 |
1)花子の商品Cに対する評価の予想
商品Cと商品Aの評価差の平均:
太郎の評価差:5 - 4 = 1
次郎の評価差:3 - 5 = -2
全体の平均:(1 - 2) / 2 = - 0.5
この値を用いて花子の商品Cの評価を予想すると、
3 - 0.5 = 2.5
商品Cと商品Bの評価差の平均:
太郎の評価差:5 - 2 = 3
次郎の評価差:商品Bが未評価のため計算できない
全体の平均:3
この値を用いて花子の商品Cの評価を予想すると、
3 + 3 = 6
ここで、商品Cと商品Aを用いた予想には2人のユーザーのデータが反映されているのに対し、商品Cと商品Bを用いた予想には1人のデータだけしか反映されていない。
評価した人数の多いデータの方が重視されるように、最後にウェイトを加える。
(2 x (2.5) + 1 x 6) / (2 + 1) = 11 / 3 = 3.66...
よって、花子の商品Cに対する予想評価は3.67。
2)次郎の商品Bに対する評価の予想
同様に、
商品Bと商品Aを用いた予想:
5 + ((2 - 4) + (3 - 3)) / 2 = 5 - 1 = 4
商品Bと商品Cを用いた予想:
3 + (2 - 5) = 3 - 3 = 0
ウェイトを加えて、
(2 x 4 + 1 x 0) / (2 + 1) = 8 / 3 = 2.67
| 商品A | 商品B | 商品C | |
| 太郎 | 4 | 2 | 5 |
| 花子 | 3 | 3 | 3.67 |
| 次郎 | 5 | 2.67 | 3 |
富士山周辺地域情報サイト「ふじでこ」でもSlope Oneアルゴリズムで各ユーザーにオススメのグルメ情報を表示する予定だ。
Ads
4plus Link
Profile
Junya Sano
CTO at 4plus Inc.
B.S. degree in Computer Science at Oregon State University.
Specialty in web development, especially LAMP.

