検索結果: タグ「slope one」

Slope One(スロープワン)アルゴリズム

2008年11月 4日 12:52 » Webサービス

ECサイトなどでお馴染みの「○○さんへのオススメ」機能。
実装にはいろいろな方法があるが、その中でSlope One(スロープワン)アルゴリズムは最もシンプルで比較的精度が高いとされている。

例えばユーザーが商品に5段階評価を付けられるアプリケーションがあるとする。
「○○さんへのオススメ」を表示するということは、

・○○さんがまだ評価していないアイテムに対して
・もし評価したらどんな評価をするかを計算によって予想し
・高評価だと予想されたものをピックアップする

という作業にあたる。

Slope Oneの基本的な考え方は、

アイテム間の評価の差は、全体でも個人でも似たようなものだろう

という単純なもの。

例えば以下のような場合を考える。


商品A商品B商品C
太郎425
花子33未評価
次郎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
太郎425
花子333.67
次郎52.673

富士山周辺地域情報サイト「ふじでこ」でもSlope Oneアルゴリズムで各ユーザーにオススメのグルメ情報を表示する予定だ。

Ads

アーカイブ

ページの上部へ