nigoblog

技術系会社のCEOブログ~私的編~

レコメンドアルゴリズム超入門

集合知プログラミング

集合知プログラミング

本日とあるwebアプリケーションのβ版をリリースしたので、そこに使われているメイン技術のレコメンドアルゴリズムを超入門という形で紹介します。

  1. 参考図書
  2. レコメンドアルゴリズムとは?
  3. レコメンドアルゴリズムの概要
  4. webアプリケーションの紹介

参考図書

これはトップにあるようにオライリー集合知プログラミングという本を使用しました。

レコメンドアルゴリズムとは?

Amazonのトップページに行くと、「あなたへのオススメ」のような欄がありますよね。
同様にyoutubeなどもオススメ機能があります。
そのようなコンテンツは全てレコメンド(推薦)アルゴリズムを用いております。
簡単にいうと
「ユーザーの行動からそのユーザーの好みを分析するアルゴリズム」
です。
簡単じゃないですね笑
とにかくオススメ機能などを実装するにあたって欠かせないアルゴリズムのことです。

レコメンドアルゴリズムの概要

簡単にフローを説明します

データセットを用意

ユーザーの行動を分析するにあたって、ある程度そのユーザーが行動をしていないといけません。
そのユーザーの行動(Amazon: 購入、閲覧 . Youtube: 閲覧、コメント など)をデータセットとして保持します。

類似度を計算

分析したら、また別の(全ての)ユーザーの行動を分析します。
そうすると似たような行動をするユーザーが現れます。
そのどれくらい似ているかの指標を類似度として、次のように計算します。

length = sqrt((x1-x2)^2 + (y1-y2)^2 + ... + ... )

今はわからなくても良いのですが、これは平方根の定理(ピタゴラスの定理)をn次元(nは整数)に拡張したものです。
またこの状態だと単なる距離なのでさらに類似度として

similarly = 1 / (1 + length)

とします。つまり距離の逆数をとっています。このsimilarlyの値は0~1の範囲で1に近いほどユーザーの類似度が高いということになります。
逆数を取る理由としては距離のまま計算すると、膨大な数が現れること、
また大きい値の方が近いという指標を得たいということ。
分母で1を足しているのは、lengthの値が0でもうまくいくようにという理由です。

ランキングの計算

類似度から一番近いユーザーを決定します。

nearUser = MAX(similarly)

このような関数(メソッド)を想像してください。

アイテムの推薦

一番近いユーザーが扱った商品を推薦どんどん推薦します。

以上が簡単でしたがレコメンドアルゴリズムの流れです。

webアプリケーションの紹介

というわけで以上の技術を用いたアプリケーションを紹介します。
ウェブイチ
タイトルは「ウェブイチ」
簡単にアプリケーションの説明をします。

  • 10人の女の子の中から1, 2, 3位を決定します。
  • 2, 3位のみチェックし、送信します。
  • すると考えていた1位をコンピュータが計算して当てます。

使い方は以上。
自動で1位を判定するというところに上記のレコメンドアルゴリズムを用いています。


以上簡単でしたが、レコメンドアルゴリズムのお話でした。
ウェブイチの説明は今後もっと掘り下げていきたいと思います。