【国等の委託研究の成果に係る記載事項】(出願人による申告)国等の委託研究の成果に係る特許出願(平成22年度、独立行政法人情報通信研究機構「ダイナミックネットワーク技術の研究開発」)は産業技術力強化法第19条の適用を受ける特許出願
(58)【調査した分野】(Int.Cl.,DB名)
前記検索要求は、前記ユーザによって入力されるキーワード、または前記ユーザの端末に実装されたソフトウェアプログラムによって自動的に生成されるトリガーであることを特徴とする、請求項1に記載のレコメンダシステム。
【背景技術】
【0002】
ネットワークを通して入手可能なリソース・情報(アイテム)の爆発的な量的増加、質的多様化により、個々のユーザが欲しい時に欲しいアイテムにアクセスすることが困難になってきている。そのため、個々人の特性や選好情報、状況などの時々刻々と変化するコンテキスト情報を考慮して最適なアイテムを提供するレコメンダシステム/プラットフォームが求められている。この目的のためには、各ユーザの選好情報のような時間的変化が緩やかなスタティック情報や、現在位置のように時々刻々と変化するダイナミック情報を取り扱い、各ユーザ向けにカスタマイズされたコンテキストアウェアなレコメンダシステムが必要となってくる。
【0003】
レコメンダシステムでは、各ユーザが良質と評価する可能性の高いアイテムを提供する必要があるが、従来のレコメンダシステムにおいても、提供する情報の満足度向上のために様々な手法が提案されている。もっともシンプルで一般的な手法として、他のユーザのこれまでの経験を参考にし、各アイテムの評価結果(レーティング)の平均を取る手法がある。良質なアイテムは多くのユーザが高評価を与える確率が高いため、特にユーザ数が多い場合は一定の効果が期待できる。
【0004】
例えば、特許文献1には、ユーザが過去に購入したアイテム履歴からアイテム間の類似性を抽出し、ユーザが興味を持つことが既に判明しているアイテムと類似性の高いアイテムの中から評価の高いアイテムを表示するシステムが記載されている。しかし、単に平均的に評価の高いアイテムを表示するだけでは全てのユーザに対して均質な情報を提供することになり、ユーザ数が少ない場合や、選好が少数派であるユーザの場合はうまくいかない場合がある。
【0005】
そのため、ユーザの履歴などかユーザの選好特性を分析し、レコメンドする対象ユーザ(アクティブユーザ)と類似度の高いユーザの意見に重みをおいた加重平均をとる方法が知られている。これはCollaborative Filteringと呼ばれる手法で、価値観の似ているユーザの意見はより高い確率でアクティブユーザが良質と感じることを前提にしており、多くのレコメンダシステムで取り入れられている。類似性を考慮するうえで必要なことは、ユーザの関心をきめる選好傾向や現在状況(コンテキスト)を考慮することである。
【0006】
コンテキストにはスタティックなものとダイナミックなものがある。時間的変化が比較的緩やかなスタティックなコンテキストの例として、本や映画、ニュースなどのアイテムに対するユーザの選好情報がある。オンラインショッピングサイトや口コミ情報サイトなどでは、レコメンドする商品・アイテムをアクティブユーザの選好情報を推定することで決定している。典型的に行われる処理は、ユーザの購買履歴などの行動履歴から、類似性の高い行動履歴をもつユーザを特定し、それらのユーザが高く評価したアイテムを表示することである。ここでは、購入履歴が類似しているユーザ同士は選考が似ていると考えられ、一方のユーザが評価したアイテムは他方のユーザも高く評価する可能性が高いと考えられることを前提としている。例えば、非特許文献1には、アクティブユーザと類似した選好傾向をもつユーザの選好情報をもとにニュースをレコメンドするシステムが記載されている。
【0007】
ダイナミックなコンテキストを用いたレコメンダシステムの例としては、実空間アプリケーションがあげられる。現在位置は時々刻々と変化するユーザコンテキストの代表例であり、実空間アプリケーションでは各ユーザの現在位置をGPSなどを用いて取得・管理し、現在位置と関係のあるアイテムをレコメンドする。ここでの類似性とは測地座標的な距離の近さである。実空間アプリケーションは、アクティブユーザの近くにいる他のユーザを表示するソーシャルネットワーキングアプリケーションや、近隣の人気レストランや観光スポットなどを表示するレコメンダシステムなどに応用されている。
【0008】
一方、類似性の高いユーザが必ずしも正しい価値判断を行うスキルを有しているとは限らない。そのため、ユーザの評価自体を評価することでオーソリティユーザをシステマティックに選択する手法がある。この手法は、例えば質問者の質問に対して複数のユーザが回答するQ&Aサイトなどにおいて、評価の高いアドバイザを抽出することなどに応用されている。具体的には、ユーザのコメントを他のユーザが評価し、皆の評価が高いオーソリティユーザのアドバイスを選択することにより実現される。
【0009】
ユーザ間の類似性とオーソリティ度合いの情報を組み合わせ、類似性の高いユーザの中で、オーソリティ度合いの高いユーザがレコメンドするアイテムを優先的に選択することで、精度の高いレコメンドを行うことが可能である。
【0010】
特許文献2には、個々の閲覧用情報について、その内容がいずれの分類に該当するかを表す分類タグを関連付けて登録する情報登録部と、個々の閲覧用情報について閲覧済みのユーザによる評価を取得する評価取得部と、評価取得部により取得された個々の閲覧用情報についての評価を、ユーザごとの識別情報とともに蓄積するユーザ情報蓄積部と、個々の閲覧用情報に関連付けられた分類タグごとに、ユーザ情報蓄積部に蓄積された複数のユーザ間でみた評価の相対関係からユーザ相互の関係性を判断するユーザ分類判断部と、互いに異なる複数の分類タグの間でみて、ユーザ分類判断部により判断されたユーザ相互の関係性の違いと、それぞれの分類タグが付された閲覧用情報に対するユーザごとの評価の違いから、これら複数の分類タグ相互の関係性を判断する情報分類判断部と、特定のユーザによりいずれかの閲覧用情報についてキーワードを用いた閲覧要求がなされた場合、このキーワードが属する特定の分類タグとは別の分類タグに関してユーザ分類判断部により判断された特定のユーザとその他のユーザとの関係性と、情報分類判断部により判断された特定の分類タグと別の分類タグとの関係性とに基づいて、特定のユーザに適した閲覧用情報を選択する情報出力部とを備えた情報提供システムが開示されている。
【発明を実施するための形態】
【0019】
次に、本発明を実施するための形態について、図面を参照して詳細に説明する。
図1は、本発明の実施の形態によるレコメンダシステム100の構成を示すブロック図である。レコメンダシステム100は、サービス受容者(ユーザk、アクティブユーザ)が利用する、プログラム制御により動作するコンピュータ上に実装されたブラウザに代表されるユーザインターフェース部101と、インターネットに代表されるネットワーク部102によって接続される。
【0020】
レコメンダシステム100は、ユーザkからの入力情報を処理する入力部103と、ユーザkの情報を管理するユーザ管理部104と、ユーザkに提示するオブジェクトをインデックス化して管理するインデックステーブル管理部105と、ユーザの評価情報を管理するユーザオーソリティ値管理部106と、オブジェクトのユーザkに対するレーティングを計算するレーティング計算部107と、オブジェクトのレーティング情報に基づいてオブジェクトの集合をソートして序列化されたリストを作成する序列化リスト作成部108と、処理結果をユーザインターフェース部101で表示可能なように加工し、ネットワーク部102を通して出力する出力部109を備えている。
【0021】
レコメンダシステム100は、CPU、ROMやRAM等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。なお、レコメンダシステム100は、単一のコンピュータにより構成されるものであっても、通信回線を介して互いに接続された複数のコンピュータにより構成されるものであってもよい。
【0022】
入力部103、ユーザ管理部104、インデックステーブル管理部105、ユーザオーソリティ値管理部106、レーティング計算部107、序列化リスト作成部108、出力部109は、CPUがROM等に格納された所定のプログラムを実行することにより実現される機能のモジュールに相当する。
【0023】
ユーザインターフェース部101は、ユーザkとの入出力情報のやり取りを行う。例えば、ユーザkの検索キーワード入力や位置情報などのユーザの状況をレコメンダシステム100に送信する。また、レコメンダシステム100から検索キーワードに関連するオブジェクトがソートされた結果を受けて出力する。
【0024】
ネットワーク部102は、ユーザkのクライアントシステム(ユーザインターフェース部101)とレコメンダシステム100を接続するインターネットに代表されるコンピュータネットワークである。
【0025】
入力部103は、ネットワーク部102を介したユーザインターフェース部101との接続を可能にする機能を有し、また、外部からレコメンダシステム100への入力情報を受信する。
【0026】
ユーザ管理部104は、レコメンダシステム100にアクセスするユーザの情報を管理する。具体的には、ユーザプロファイル情報や、過去に参照したオブジェクト履歴や趣向情報、他のユーザの評価情報などを管理する。また、入力部103を介して受信された情報に基づいて、キーワードに代表されるキーを作成する。ユーザから直接キーワードが入力された場合は、ユーザ情報とそのキーワードを関連付けるが、位置情報やその他の間接的情報が入力されたときは、その情報に関連の深いキーを自動生成し、インデックステーブル管理部105の管理するキーと互換性のある形式の情報を生成する。
【0027】
インデックステーブル管理部105は、レコメンダシステム100が取り扱うオブジェクトが関連の深いキーワードと関連付けられているインデックステーブルを管理しており、キーワード入力に対し、そのキーワードと関連の深いオブジェクト集合を出力する。
【0028】
ユーザオーソリティ値管理部106は、ユーザの行動履歴やユーザの相互評価結果を用いて、ユーザkにとっての他のユーザの評価の信頼度を決める指標であるオーソリティ値情報を出力する。
【0029】
レーティング計算部107は、オブジェクト情報とオーソリティ情報に基づいて、ユーザkにとっての各オブジェクトの評価値を計算する。
【0030】
序列化リスト作成部108は、レーティング計算部107の計算結果に基づいてオブジェクトをソートし、ユーザkの趣向にあった順でオブジェクトを序列化したリストを作成する。
【0031】
出力部109は、オブジェクトの序列化リストをユーザkがユーザインターフェース部101で正しく閲覧できるように情報を加工し、ネットワーク部102を通して出力する。
【0032】
図2は、レコメンダシステム100が対象とするオブジェクト200の構造の例を示す図である。オブジェクト200は、ヘッダ201とボディ202を有し、ヘッダ201はそのオブジェクトに関するメタ情報を、ボディ202はそのオブジェクトの実際のコンテンツ情報もしくはそれを参照可能な参照情報を含む。
【0033】
コンテンツ情報は、例えばレコメンダシステム100が映画の口コミサイトであれば、1つの映画の情報である。また、レコメンダシステム100が音楽情報サイトなら楽曲情報などである。コンテンツ情報は、一般には取り扱う情報・データの一単位である。
【0034】
ヘッダ201は、オブジェクトIDやそのオブジェクトを分類するカテゴリIDなどの一般的なメタ情報の他、過去にこのオブジェクトを閲覧したユーザの評価結果の情報などを有している。
【0035】
ユーザ管理部104が自動生成するキー情報は、インデックステーブル管理部105のキー情報として入力可能なものであり、ユーザのコンテキストを表現する情報である。例えば、現在、閲覧・編集中のファイルの特徴キーワードであったり、現在の位置情報や時間と深く関連付けられた情報を表現するキーワードであったりする。現在の位置情報と深く関連付けられた情報の例として、その場所の近くにあるレストラン・名所などの施設の情報や、その場所と関連の深い広告情報などが挙げられる。
【0036】
図3は、インデックステーブル管理部105を詳細に説明する図である。インデックステーブル管理部105は、レコメンダシステム100が管理するオブジェクトの集合から、あるキーに関連する情報を瞬時に参照できるように、予めインデックスを作成しておく機能である。インデックステーブル302はキーとバリューのペアで構成され、キーに関連の深い情報をバリューとして保存する。キーは典型的にはキーワードであり、バリューはそのキーに関連の深いオブジェクト集合303を参照可能なポインタなどの情報である。
【0037】
例えば、オブジェクト集合303の先頭オブジェクトポインタを保存し、オブジェクト集合303に属するオブジェクト304はリンクドリストとして相互参照が可能なようにまとめられていてもよい。この他にも、バリュー値からキーに関連の深いオブジェクト304の集合が参照できるものであればよい。インデックステーブル管理部105は、キーワード301の入力に対して、インデックステーブル302の中で対応する行をサーチし、その行のバリュー値を用いてオブジェクト集合303を出力する。インデックステーブル302は様々な手法で構成可能であるが、例えばオブジェクトの自然言語処理などによりオブジェクトに関連の深いキーワードを抽出し、その逆引き辞書を作成することで構成することができる。
【0038】
図4は、ユーザオーソリティ値管理部106を詳細に説明する図である。ユーザオーソリティ値管理部106は、ユーザ参照ネットワーク管理部402と、ユーザ行動履歴403と、重み計算部404と、オーソリティ値計算部405とを備え、ユーザ相互評価結果401とユーザ行動履歴403に基づいて算出したオーソリティ値ベクトル406を出力する。
【0039】
ユーザ相互評価結果401は、各ユーザの他のユーザに対する評価結果から決定され、誰が誰をどれくらい評価するかというユーザ評価指標である。例えば、あるユーザの過去のレビュー内容を見て、自分と同じ意見であるなどの理由からそのユーザを高く評価する場合は、5段階評価で4や5などの高い値が付けられる。なお、全てのユーザがお互いを評価する必要はなく、一部のユーザのみの評価でもよい。
【0040】
ユーザ参照ネットワーク管理部402は、ユーザ相互評価結果401を用いて、評価関係をグラフに表す。例えば、評価をバイナリで表現し、ユーザAがユーザBを評価する場合はA−>Bとエッジを作成し、評価しないユーザにはエッジを作成しない、というようにグラフを作成する。また、ユーザをフルメッシュで接続し、その重みとしてユーザ評価値を割り当てるようにしてもよい。
【0041】
ユーザ行動履歴403は、ユーザの特徴や選好情報などのコンテキスト情報から、ユーザ間のコンテキストの類似性を抽出するために用いる、それぞれのユーザの過去の行動履歴である。行動履歴は直接的な手法でも間接的な手法でも記録可能である。
【0042】
スタティックなコンテキストの例として、オブジェクトに対する選好情報が挙げられる。直接的な記録手法としては、各オブジェクトに対して各ユーザがどのような評価を行ったかを記録する方法が挙げられる。例えば、オブジェクトxに対して、ユーザiが10段階評価の7を付けた、などの情報であり、ヘッダ201のレーティング情報に入力する元となる情報になる。なお、あるオブジェクトに対し、必ずしも全てのユーザの評価が存在する必要はない。
【0043】
間接的な記録手法としては、クリック履歴に基づくオブジェクトの参照回数や、参照時間などに基づく情報が挙げられる。また、これ以外にも、ユーザのプロファイル(年齢、性別、住所など)やユーザ自身が明示的に示した興味範囲を含めるようにしてもよい。
【0044】
ダイナミックなコンテキスト情報となるユーザ行動履歴の例として、GPSによる測地座標データの累積データのような位置的情報が挙げられる。例えば、最近数時間の間にどこにいたかなどの過渡的な位置情報は強いコンテキスト情報であり、その類似性は、必要な情報の類似性と強い相関があると考えられる。
【0045】
さらに、一般にはこれらのスタティックおよびダイナミックな情報の両者を含む情報を取り扱ってもよい。これらは、ヘテロな情報の集合であるが、典型的にはベクトルの集合として表現可能であり、集合間の距離によって類似度を定義することが可能である。
【0046】
重み計算部404は、ユーザ行動履歴403に基づいてユーザ間の類似度を計算し、オーソリティ値計算部405で用いる重みを出力する。この重みは、各ユーザからみたその他のユーザの重要度の情報であり、典型的には行列で表現可能であるがこの限りではない。
【0047】
オーソリティ値計算部405は、ユーザ参照ネットワーク管理情報と重み情報に基づいて各ユーザのオーソリティ値を計算し、各ユーザからみた他のユーザに対する評価値であるオーソリティ値情報を出力する。
【0048】
図5は、重み計算部404の重み計算の方法について説明する図である。重みは、ユーザ行動履歴の類似性から計算するものであるが、単なる集合を使うのではなく、ヘテロな情報に対して効率よく類似性を計算する必要がある。そのために、ユーザ行動履歴を直接扱うのではなく、一度、情報圧縮された形態であるコンテキスト表現部602に変換する。コンテキスト表現部602は、小さい違いを除き、類似性の高いオブジェクトへの選好を表すユーザ行動履歴を同じものとして表現するような情報圧縮効果を有するものである。
【0049】
例えば、スタティックなコンテキスト情報の例として、オブジェクトへのレーティング情報をユーザ行動履歴とした場合を考える。オブジェクトxの特徴を任意次元(D次元)のベクトルv
xで表現し、そのレーティング情報s
xを実数値で表現すると、ユーザ行動履歴Uは、U={x}={(v
x、s
x)∈R
D×R}のように、D次元ベクトルと実数値のペアの集合で表すことができる。今、オブジェクトxとyがあり、その類似度が距離d(x,y)=|v
x−v
y|で定義されるとし、d(x,y)が小さい(類似している)とする。ユーザiは、オブジェクトxを高く評価し(s
x大)、ユーザjはオブジェクトyを高く評価する場合(s
y大)、ユーザiとユーザjの類似度を大きくする。また、評価したオブジェクトが複数ある場合は、その評価傾向として、同じようなオブジェクトを同じように高く(低く)評価したユーザ同士の類似度を高くする。上記のような機能を実現する手法の例として以下の方法がある。
【0050】
ユーザ行動履歴403(
図5では601)は、各オブジェクトに対して、その特徴情報と、直接的もしくは間接的手法によって取得されたユーザの選好情報を保持している。以後の例として、オブジェクトxに対して、特徴情報を多次元ベクトルv
xで、選好情報を−5〜5の整数s
xで表現し、(v
x、s
x)が保持されているとする。各オブジェクトxに対して、下記のハッシュ関数f(v)を用いて、オブジェクトxに対するアトミックラベル値を計算する。
【数1】
【0051】
ここで、
【数2】
はzを超えない最大の整数、CとWはユーザによってあらかじめ指定されるパラメータで、それぞれ2以上の自然数、および実数である。また、Rは0以上W未満の一様乱数、Aはvと同じ次元をもつベクトルで、各要素は独立な標準正規分布N(0,1)に従うランダム数とする。このハッシュ関数を独立にB個作成し、各々のアトミックラベルを多重化したL(v
x)=<f
1(v
x),・・・,f
B(v
x)>を、オブジェクトxに対するラベルとする。この多重化ラベルは、特徴ベクトルの近いオブジェクト同士では同じラベルをもつ可能性が高いという特徴を有する。
【0052】
以下、コンテキスト表現部602がこのラベル計算を用いて拡張ヒストグラムを作成する、拡張ヒストグラム作成手法について説明する。拡張ヒストグラムとは、複数の異なるラベルが付けられたビンの中に登録されたオブジェクトの度数分布である。ここでは、通常のヒストグラムと違い、負の値も持てるものとする。あるユーザiに対して、ユーザiのユーザ行動履歴である集合T
i={(v
x、s
x)}が与えられたとき、そのユーザiに対する拡張ヒストグラムH
iを求める。集合T
iに属する全てのオブジェクトxに対して上記のラベルを計算し、そのラベルを付けたビンに登録する操作を行う。全てのオブジェクトが登録し終わったところで、各ビンの度数を計算するが、その際の計算式として以下の式を用いる。
【数3】
【0053】
ここで、B
LはラベルLを持つビンであり、その度数h
i(L)は、そのビンに登録された全てのオブジェクトの評価値の和である。ここで、s
xが負の値を持ち得ることからh
i(L)は負の値にもなり得ることに注意が必要である。このh
i(L)を用いれば、拡張ヒストグラムH
iは下記式で表すことができる。
【数4】
【0054】
上式において、拡張ヒストグラムH
iは、全ラベル数をD
Lとした時のD
L次元ベクトルの一点として表現可能である。ただし、{e
L}は正規直交系をなすとし、e
LはラベルLに対応した単位ベクトルとする。本手法によれば、拡張ヒストグラムは、好むオブジェクトに対応するラベルの度数は正の大きな数を有し、逆に好まないオブジェクトに対応するラベルの度数は負の大きな度数を有し、中立的な評価もしくはほとんど評価したことのないオブジェクトに対応するラベルの度数は0に近い値を有する。同じような選好をもつユーザ同士は同じような拡張ヒストグラムを有することになるため、類似度計算部603を用いて類似度を評価することができる。
【0055】
類似度計算部603は、各ユーザの拡張ヒストグラムを用いて、ユーザ間の類似度を評価する。例えば、正規化した拡張ヒストグラム間の内積を用いることができるが、必ずしもこれに限るものではない。類似度計算部603は重み604を出力するが、これは類似度の値をそのまま用いてもよいし、適当な関数によって他の実数に変換してもよく、あるユーザkから見た他のユーザの重要度に対する増加関数となっていればよい。すなわち、重要度が高いほど高い評価値となっていればよい。さらに、拡張ヒストグラムのうち絶対値のある程度大きいラベルのみを取り出して、他のラベルを無視することで次元を圧縮することも可能である。具体的には、例えば上位Q個等あらかじめ決めたルールに従って抽出する。また、ラベルを現在興味のある部分のみに限ることで、類似度を計算する観点を絞り込むことも可能である。例えば、入力キーワードに関連の深いオブジェクトに対応するラベル範囲のみに限定してもよい。
【0056】
以下では、1を足して2で割り0〜1の範囲の正の実数になるようスケーリングすることとする。一般に、重み604は、ユーザがN人いればNxN行列となり、i行j列の値はユーザiからみたユーザjの評価の重要度指標となる。この処理は基本的にオフラインで行われるが、オンラインで必要な補正処理を入れて情報のアップデートを行ってもよい。
【0057】
図6は、オーソリティ値計算部405が、ユーザkからみた各ユーザのオーソリティ値を計算する方法について説明する図である。基本的なアイデアは、Webページ検索のために開発されたHITSアルゴリズムに重みを追加したアルゴリズム(Weighted HITS)であり、重みとしてコンテキスト類似性の重みを加えている。HITSについては非特許文献2に開示されている。
【0058】
重み計算部404の出力である重み604と、ユーザ参照ネットワーク管理部402の出力であるユーザ間グラフGを用いて、グラフの各ノードで表現される各ユーザのオーソリティ値を計算する。先の説明の例を用いると、重み604は行列で表現されるが、その中のk行の情報を抽出し、ユーザkに対するユーザiの評価の重要度w
kiを取得する。さらに、このw
kiを対角成分とする重要度行列W={w
k,1,・・・,w
k,N}を作成する。ここで、ユーザ間グラフGの各要素は1か0の値をもち、i行j列の値g
ij=1の場合はユーザiからユーザjに向かってエッジがあるとする。オーソリティ値計算部405は、このWとGを用いて、以下の漸化式に従って反復的にユーザiのオーソリティ値を求める。
【数5】
【0059】
ただし、G
Tは行列Gの転置行列であり、tはt≧1の整数で、全てのiに関してa
i(0)=1とする。ここで、W
a、W
γは対角行列であり、重要度による加重和をとるためのものであり、W
a=W
γ=Wでもよいし、どちらか一方は単位行列としてもよい。すなわち、Iを単位行列として、W
a=WかつW
γ=I、もしくはW
a=IかつW
γ=Wとする。
【0060】
あるノードiに対して、γ
iは“ハブ的”な値を示し、a
iは“オーソリティ的”な値を示すとし、γ
iはどれだけ高いオーソリティ的なノードを指しているか、a
iはどれだけハブ的なノードから参照されているかを表すとする。このとき、実際に指しているノードの重要度指標Wを重みとしてかけて計算している。すなわち、ユーザkにとってより重要度の高いユーザを参照しているハブユーザを高く評価し、また重要なハブから参照されているユーザを高く評価する。
図6に示すように、あるノード701は、ハブとしてノード702、703を指しているが、ノード702はその重要度とオーソリティ値がそれぞれw
k,1、a
k,1であり、ノード703はその重要度とオーソリティ値がそれぞれw
k,2、a
k,2であるとする。ここで、添字kはユーザkに対するという意味である。そのとき、ノード701のγ
k,iは、γ
k,i=w
k,1×a
k,1+w
k,2×a
k,2と計算される。
【0061】
全てのノードに対するγ
k,iを計算したら、次にオーソリティ値a
k,iを計算する。ノード704のa
k,iは、ノード705と706から接続されており、重要度とγの値はそれぞれ(w
k,1、γ
k,1)、(w
k,2、γ
k,2)であるので、先と同様に、a
k,i=w
k,1×γ
k,1+w
k,2×γ
k,2と計算される。上記の漸化式の加重和としてはW
a=W
γ=Wの例を示したが、ユーザの判断の類似度に基づく重要度を加重和に反映させる限り、どちらかのWを単位行列に変えるなどの変更も可能である。γ
k,iとa
k,iは相互に関連しているため、収束するまである一定期間反復的な計算を行うことで、全てのユーザiのユーザkに対するオーソリティ値a
k,iを得る。これはユーザkに対する他のユーザのオーソリティ値として出力される。
【0062】
図7は、オブジェクトxのユーザkに対するレーティング情報の計算処理を説明する図である。レーティング計算部107は、ユーザkのキー入力に対して、インデックステーブル管理部105が出力するオブジェクトレーティングテーブル501と、ユーザオーソリティ値管理部106によって出力される、ユーザkに対する他のユーザのオーソリティ値情報であるユーザオーソリティ値テーブル502に基づいて、オブジェクト集合のそれぞれのオブジェクトのユーザkに対するレーティング情報を計算する。
【0063】
オブジェクトレーティングテーブル501は、インデックステーブル管理部105が出力するオブジェクト集合に属する全てのオブジェクトに対して一つのテーブルを有し、
図2に示したように、ヘッダ201の中に含まれる他のユーザのレーティング情報である。
【0064】
以下、このオブジェクトxに対するオブジェクトレーティングテーブル501の中に登録があるユーザの集合をU
xとし、ユーザi∈U
xのオブジェクトxに対するレーティングをr
iとする。また、ユーザkに対するユーザオーソリティ値テーブル502は、ユーザkに対して定義された他のユーザの評価値情報を有しており、ユーザjに対するオーソリティ値をa
k,
jとする。
【0065】
重みつきレーティング計算部503は、オブジェクトxに対して、ユーザkに対するレーティング値504を<r>
kとして出力するものであり、具体的な形は様々であるが、典型的には以下の式で表現可能である。下記の式は、各ユーザの評価重みωを用いた、ユーザレーティング値の重みつき平均を表す。
【数6】
【0066】
ここで、ω(a)は、オーソリティ値aに対して一意に決まる関数であり、一般にはaの単調増加関数である。具体的な形は管理者依存できめるパラメータであるが、簡単にはω(a)=pa+q(pとqは実数)のような一次関数で表現される。
【0067】
なお、インデックステーブル管理部105とユーザオーソリティ値管理部106における計算自体は一般にオフラインであらかじめ行っておくが、必要に応じてオンラインで補正計算を行うことも可能である。
【0068】
また、レコメンダシステム100は、その動作のトリガーを、ユーザの直接的な入力としてもよいし、自動的に検知した位置情報などに代表される動的なユーザコンテキスト情報の変化としてもよい。さらに、あらかじめ定められた定期的なアップデートをトリガーとしてもよい。
【0069】
以上のように、本実施形態によれば、ユーザのコンテキストに合わせて選好傾向の類似度が高く、かつ評価基準も類似した評価能力の高いユーザをシステマティックに選択するため、ユーザのコンテキストの変化や直接的なキーワード入力による検索要求に対して、各ユーザにカスタマイズされた情報を提供することができる。
【実施例】
【0070】
次に、ヘテロなユーザ行動履歴情報に対する重み計算の実施例について
図8を用いて詳細に説明する。ここでは、ヘテロなユーザ行動履歴情報の例として、ユーザのオブジェクトに対する選好情報(オブジェクト評価履歴801)と現在位置(GPS履歴803)の両方を扱う。
【0071】
コンテキスト表現部602として上記の拡張ヒストグラム作成部を用い、オブジェクト履歴用拡張ヒストグラム作成部802と、GPS履歴用拡張ヒストグラム作成部804が、それぞれオブジェクト評価履歴801とGPS履歴803からコンテキスト表現として拡張ヒストグラムを出力する。
【0072】
一般に、GPSデータは3次元のベクトルであるので、ユークリッド距離に関して定義できる上記のハッシュ関数でよいが、例えばオブジェクトの類似度を考えるときに上記の例のようなユークリッド距離ではなく、コサイン類似度(ベクトルu、vに対して、cos(u・v/|u||v|)で定義される)など、別の距離尺度を用いてもよい。
【0073】
対象の履歴データの類似度を表現する上で定義される距離尺度として、上記のユークリッド距離やコサイン類似度以外にもLp距離、ハミング距離、Jacard係数など様々な距離が考えられるが、考慮する距離尺度に対して対応するハッシュ関数が定義できればよい。
【0074】
ユーザ行動履歴情報のエリメント間で定義されたなんらかの距離に対して対応するハッシュ関数が定義できない場合は、ハッシュ関数は用いずに、例えば単にそのエリメント集合の評価値を反映した加重をかけた平均をとるなどしてユーザ行動履歴の代表的情報を抽出してもよい。ここで、それらは適当な次元(D1、D2次元とする)のベクトル空間の一点として表現されている。
【0075】
ここで、二人のユーザiとjの類似度を計算することを考える。まず相関分析部805は、各ユーザ間のコンテキスト表現の相関行列(分散共分散行列)を計算する。簡単にはそれぞれのベクトル空間の直和から形成される(D1+D2)次元のベクトルと考え、その相関行列を作成するが、各成分に適当な重みをかけて成分ごとの情報の重要度を制御してもよい。
【0076】
生成された相関行列を用いて、主成分分析部806はその行列の固有値演算を行い、固有値の絶対値が大きいものから順に適当な数だけ取り出し、その固有ベクトルで張られる部分空間のみを考慮することで次元圧縮を行う。これにより、ユーザコンテキスト分布の特徴を大まかに捉える主成分で各ユーザのコンテキスト情報を表現することが可能であり、類似度分析部807はこの主成分のみで表現された部分空間上の位置関係をもってユーザの類似度を算出する。
【0077】
ここで、主成分を抽出する一つの方法は、分散が大きい(ユーザ毎に特徴に差がある)方向を見つけることである。ある特定の観点でユーザの類似度を比較したい場合は、例えば、その対応する成分の重みを大きくすることでユーザ間での当該成分差を大きくし、主成分として選択することも可能である。
【0078】
これは、コンテキスト表現であるベクトルを適当な線形変換行列で変換することで表現が可能である。例えば二次元ベクトルの場合は、強調したい方向がx軸から角度θの方向であった場合、回転行列をR(θ)、x軸方向にu倍するスケール変換行列をS(u)としたとき、任意のベクトルvはR(θ)S(u)R(−θ)vで表現される。出力される重みは一般に類似度が高いほど大きな値を持つため、本実施例における類似度はベクトル間の内積によって表現可能で、これをユーザ間の重み808として出力する。
【0079】
さらに、複数の種類のユーザ行動履歴を用いる場合のユーザ間類似度を表現する他の例について説明する。上記の実施例において、ユーザ行動履歴としてオブジェクト評価履歴801とGPS履歴803とがあり、そのコンテキスト表現が得られたとする。ここで、ユーザiのオブジェクト評価履歴801のコンテキスト表現をC
ioとし、GPS履歴803のコンテキスト表現をC
iGとする。ここで、ユーザiとjのオブジェクト評価履歴やGPS履歴のコンテキスト表現の類似度が定義されているとする。例えば、上記のハッシュ関数を用いた例ではベクトルの内積などを用いて定義可能である。ユーザiとjのあるコンテキスト表現Cに関する類似度をS
i,j(C)とすると、ユーザiとjの類似度は次の式で定義できる。
【数7】
【0080】
ここで、pは1以上の整数である。和は全てのコンテキスト表現で取るとし、この例では、C
ioとC
iGである。また、α
Cは各コンテキスト表現に対してあらかじめ定められた加重であり、0≦α
C≦1かつ、
【数8】
を満たし、どのコンテキストをどれくらい重視するかを表すパラメータである。p=1のときは単なる加重和であり、pが非常に大きいときは、最も類似度の大きいコンテキストのみを考慮することになる。
【0081】
本発明は、オンラインショッピングや口コミなどをベースにした情報提供サービスなどにおいて、ユーザ毎に最適化された商品や情報を提供する用途に適用できる。また、現在のユーザの位置などのダイナミックな状況を感知し、その状況に合わせたニュースや事象、広告などの情報を提供するサービスにも適用可能である。
【0082】
この出願は、2011年3月3日に出願された日本出願特願2011−46855を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【0083】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0084】
上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)ユーザに情報オブジェクトを提供するレコメンダシステムであって、
前記ユーザからの検索要求を受信する入力部と、
前記ユーザの特徴を表すコンテキスト情報を管理するユーザ管理部と、
複数の情報オブジェクトを管理し、前記ユーザの前記検索要求に関連する情報オブジェクトを出力するインデックステーブル管理部と、
前記ユーザと他のユーザの前記コンテキスト情報の比較から算出されるユーザ間の類似度と、前記他のユーザに対する複数のユーザの信頼度に基づいて、前記他のユーザに対する前記ユーザの信頼度を表すオーソリティ値を算出するユーザオーソリティ値管理部と、
前記情報オブジェクトに対する前記他のユーザの評価値を前記他のユーザの前記オーソリティ値に応じて重み付けした値を用いて、前記情報オブジェクトに対する前記ユーザの評価値を計算するレーティング計算部と、
前記ユーザの評価値に基づいて序列化された情報オブジェクトのリストを出力する序列化リスト作成部と、を備えたレコメンダシステム。
【0085】
(付記2)前記検索要求は、前記ユーザによって入力されるキーワード、または前記ユーザの端末に実装されたソフトウェアプログラムによって自動的に生成されるトリガーであることを特徴とする、付記1に記載のレコメンダシステム。
【0086】
(付記3)前記コンテキスト情報は、
各々の情報オブジェクトに対する選好情報と、前記ユーザの現在位置を含むユーザ行動履歴を含む、付記1に記載のレコメンダシステム。
【0087】
(付記4)前記コンテキスト情報は、
前記ユーザの各々の情報オブジェクトに対する過去の評価情報を含む、付記1に記載のレコメンダシステム。
【0088】
(付記5)前記ユーザ管理部は、
前記コンテキスト情報に基づいて、前記検索要求に関連するキー情報を生成し、
前記インデックステーブル管理部は、
各々の情報オブジェクトを前記キー情報と関連付けて管理し、前記検索要求に関連するキー情報に対応する情報オブジェクトを出力する、付記1に記載のレコメンダシステム。
【0089】
(付記6)前記ユーザオーソリティ値管理部は、
前記コンテキスト情報の中の特定部分の特徴を確率的な演算手段を用いて表現するコンテキスト表現部を備え、前記特定部分の類似度に基づいて、ユーザ間の類似度を算出する、付記1に記載のレコメンダシステム。
【0090】
(付記7)前記ユーザオーソリティ値管理部は、
前記他のユーザの情報オブジェクトに対する過去の評価情報に対する、複数のユーザの信頼度と、前記ユーザ間の類似度に基づいて、前記オーソリティ値を算出する、付記1に記載のレコメンダシステム。
【0091】
(付記8)前記コンテキスト表現部は、
前記コンテキスト情報から主成分を抽出して次元圧縮することにより前記特定部分の特徴を表現し、前記ユーザオーソリティ値管理部は、前記主成分のみで表現される部分空間上の位置関係に基づいて、ユーザ間の類似度を算出する、付記6に記載のレコメンダシステム。
【0092】
(付記9)ユーザに情報オブジェクトを提供するレコメンド方法であって、
前記ユーザからの検索要求を受信する工程と、
複数の情報オブジェクトを管理し、前記ユーザの前記検索要求に関連する情報オブジェクトを出力する工程と、
前記ユーザと他のユーザの前記コンテキスト情報の比較から算出されるユーザ間の類似度と、前記他のユーザに対する複数のユーザの信頼度に基づいて、前記他のユーザに対する前記ユーザの信頼度を表すオーソリティ値を算出する工程と、
前記情報オブジェクトに対する前記他のユーザの評価値を前記他のユーザの前記オーソリティ値に応じて重み付けした値を用いて、前記情報オブジェクトに対する前記ユーザの評価値を計算する工程と、
前記ユーザの評価値に基づいて序列化された情報オブジェクトのリストを出力する工程と、を備えたレコメンド方法。
【0093】
(付記10)コンピュータを、
ユーザに情報オブジェクトを提供するレコメンダシステムとして機能させるプログラムであって、
前記コンピュータを、
前記ユーザからの検索要求を受信する入力部と、
前記ユーザの特徴を表すコンテキスト情報を管理するユーザ管理部と、
複数の情報オブジェクトを管理し、前記ユーザの前記検索要求に関連する情報オブジェクトを出力するインデックステーブル管理部と、
前記ユーザと他のユーザの前記コンテキスト情報の比較から算出されるユーザ間の類似度と、前記他のユーザに対する複数のユーザの信頼度に基づいて、前記他のユーザに対する前記ユーザの信頼度を表すオーソリティ値を算出するユーザオーソリティ値管理部と、
前記情報オブジェクトに対する前記他のユーザの評価値を前記他のユーザの前記オーソリティ値に応じて重み付けした値を用いて、前記情報オブジェクトに対する前記ユーザの評価値を計算するレーティング計算部と、
前記ユーザの評価値に基づいて序列化された情報オブジェクトのリストを出力する序列化リスト作成部、として機能させるプログラム。