(57)【特許請求の範囲】
【請求項１】
サービスを利用するユーザに対して、当該サービスにおけるアイテムを推薦する推薦システムであって、
前記推薦システムは、
ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけた履歴データから、遷移行列データを生成する複数の遷移行列構築サーバと、
前記遷移行列データから、推薦データを並行して生成する複数の推薦サーバとを備え、
前記遷移行列構築サーバは、
前記履歴データから、遷移行列データの一部である遷移部分行列データを算出するとともに、前記遷移部分行列データを記憶する遷移部分行列算出手段を備え、
前記推薦サーバは、
前記複数の遷移行列構築サーバから前記遷移部分行列データをランダムな順序で取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する遷移行列取得手段と、
前記遷移行列データの各要素の関連に基づいて、前記ユーザの推薦データを生成する推薦アイテム算出手段を備える
ことを特徴とする推薦システム。
【請求項２】
前記推薦サーバにおいて、
前記遷移部分行列算出手段は、前記遷移部分行列データを複数のファイルに分割して記憶し、
分割された前記ファイルの識別子を、前記推薦サーバに通知する通知手段をさらに備え、
前記推薦サーバは、
複数の前記遷移行列構築サーバから、各遷移行列構築サーバが保持する前記ファイルの識別子が通知されると、通知元の遷移行列構築サーバの識別子と当該遷移行列構築サーバが保持する前記ファイルの識別子とを対応づけたレコードを含む行列格納データを記憶する分散ファイル制御手段をさらに備え、
前記遷移行列取得手段は、前記行列格納データの各レコードをランダムに並び替え、並び替えた順序で、前記遷移部分行列データを取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する
ことを特徴とする請求項１に記載の推薦システム。
【請求項３】
前記複数の推薦サーバのうち稼働中の推薦サーバに、処理対象のユーザＩＤとともに処理リクエストを送信する制御サーバ
をさらに備えることを特徴とする請求項１または２に記載の推薦システム。
【請求項４】
サービスを利用するユーザに対して、当該サービスにおけるアイテムを推薦する推薦サーバであって、
ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけた履歴データ履歴データから生成された遷移行列の部分行列である遷移部分行列データを記憶する複数の遷移行列構築サーバから、前記遷移部分行列データをランダムな順序で取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する遷移行列取得手段と、
前記遷移行列データの各要素の関連に基づいて、前記ユーザの推薦データを生成する推薦アイテム算出手段
を備えることを特徴とする推薦サーバ。
【請求項５】
複数の前記遷移行列構築サーバから、各遷移行列構築サーバが保持する前記ファイルの識別子が通知されると、通知元の遷移行列構築サーバの識別子と当該遷移行列構築サーバが保持する前記ファイルの識別子とを対応づけたレコードを含む行列格納データを記憶する分散ファイル制御手段をさらに備え、
前記遷移行列取得手段は、前記行列格納データの各レコードをランダムに並び替え、並び替えた順序で、前記遷移部分行列データを取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する
ことを特徴とする請求項４に記載の推薦サーバ。
【請求項６】
サービスを利用するユーザに対して、当該サービスにおけるアイテムを推薦する推薦サーバに用いられる推薦方法であって、
推薦サーバが、ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけた履歴データ履歴データから生成された遷移行列の部分行列である遷移部分行列データを記憶する複数の遷移行列構築サーバから、前記遷移部分行列データをランダムな順序で取得するステップと、
前記推薦サーバが、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成するステップと、
前記推薦サーバが、前記遷移行列データの各要素の関連に基づいて、前記ユーザの推薦データを生成するステップ
を備えることを特徴とする推薦方法。
【請求項７】
前記推薦サーバが、複数の前記遷移行列構築サーバから、各遷移行列構築サーバが保持する前記ファイルの識別子が通知されると、通知元の遷移行列構築サーバの識別子と当該遷移行列構築サーバが保持する前記ファイルの識別子とを対応づけたレコードを含む行列格納データを記憶するステップをさらに備え、
前記遷移部分行列データをランダムな順序で取得するステップは、前記行列格納データの各レコードをランダムに並び替え、並び替えた順序で、前記遷移部分行列データを取得する
ことを特徴とする請求項６に記載の推薦方法。
【請求項８】
コンピュータに、請求項６または請求項７のいずれか１項に記載のステップを実行させるための推薦プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービスのユーザに対して、当該サービスにおけるアイテムを推薦する推薦システム、推薦サーバ、推薦方法および推薦プログラムに関する。
【背景技術】
【０００２】
一般的に、サービスのユーザに対して、サービスにおけるアイテムを推薦する方法として、グラフマイニングの手法が用いられている（例えば、特許文献１および非特許文献１参照。）。
【０００３】
例えば、特許文献１は、複数のサービスドメインを対象として、アイテムの推薦を可能とする方法を開示する。特許文献１に記載の方法は、複数のドメインのアイテムに付与されたメタデータをグラフ上で関連づけた後、グラフマイニングの手法を適用する。このような特許文献１に記載の方法は、ユーザのアイテム履歴が存在しない場合や少ない場合など、推薦精度が低下しやすい状況において、高精度な推薦を実現することができる。
【０００４】
また非特許文献１に記載の方法は、ユーザとアイテムからなるグラフを構築する際に、複数のサービスドメインを考慮してグラフを構築し、グラフマイニングの手法を適用する。非特許文献１に記載の方法は、複数のドメインに共通するユーザの利用履歴を用いることで、高精度な推薦を実現する。
【０００５】
このように、特許文献１および非特許文献１において、Ｒａｎｄｏｍ  Ｗａｌｋ  ｗｉｔｈ  Ｒｅｓｔａｒｔｓ （以下、ＲＷＲと称す）が、グラフマイニングの計算手法として用いられている。ＲＷＲは、Ｐｅｒｓｏｎａｌｉｚｅｄ  ＰａｇｅＲａｎｋとも呼ばれる場合がある。ＲＷＲは、ノード間の関連度の計算手法として注目を集めている計算手法の一つである。ＲＷＲは、今までグラフ理論でよく用いられてきたノード間の最短距離などと異なり、グラフの構造的な特徴に基づいて関連度が計算できる。
【０００６】
このＲＷＲでは、問い合わせ分布に基づいた各ノードの存在確率に基づいて、非推薦ユーザを表す起点ノードからランダムウォークを開始し、隣接するノードにエッジの重みに比例した確率でランダムに移動する。ここで問い合わせ分布は、被推薦ユーザを表す起点ノードのみが「１」である１×Ｎの列ベクトルｑである。さらにＲＷＲでは、ノードに到達するたびに一定の確率（αで規定される）で起点ノードに戻る。
【０００７】
具体的には、式（１）の様に示される。
【数１】
0005519832.tif 000002
【０００８】
ここでｐは、起点ノードａから各ノードへの到達確率（関連度）を表す１×Ｎの列ベクトルである。Ａは、Ｎ×Ｎの遷移行列である。ｑは、問い合わせ分布であって、被推薦ユーザを表す起点ノードのみが「１」である１×Ｎの列ベクトルである。αは、０＜α＜１を満たす定数である。
【０００９】
式（１）の計算は、ｐを再帰的に更新することで実現される。例えば、ｔ回更新した後のベクトルｐからアイテムを表すノードについて関連度の高いものが、推薦アイテムとして出力される。ここでのｔは、例えば「３０」などであって、十分に大きな値であれば、この数値に限定されるものではない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−１５０５６１号公報
【非特許文献】
【００１１】
【非特許文献１】堤田恭太、中辻真、内山俊郎、戸田浩之、内山匡、「アクセスログを用いたクロスドメイン環境における情報推薦」、第１５４回ＤＢＳ・第１０７回ＩＦＡＴ合同研究発表会、２０１２年８月
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１および非特許文献１に記載の技術では、グラフ全体を用いて関連度を繰り返し計算するので、関連度の算出に要する計算量が多いという問題がある。実用的には、グラフの遷移行列Ａ（隣接行列Ａ）が大きいという問題もある。Ｗｅｂページなどのサービスを対象とする場合、ユーザ数、アイテム数とも膨大であるため、遷移行列が数億オーダーの次数の正方行列となる場合も考えられる。この場合、推薦アイテムを算出するためのファイルの読み込みに時間がかかり、ｐ、ｑの要素数も多いという課題もある。
【００１３】
従って本発明の目的は、効率的に推薦アイテムを算出する推薦システム、推薦サーバ、推薦方法および推薦プログラムを提供することである。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明の第１の特徴は、サービスを利用するユーザに対して、当該サービスにおけるアイテムを推薦する推薦システムに関する。本発明の第１の特徴に係る推薦システムは、ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけた履歴データから、遷移行列データを生成する複数の遷移行列構築サーバと、遷移行列データから、推薦データを並行して生成する複数の推薦サーバとを備える。遷移行列構築サーバは、履歴データから、遷移行列データの一部である遷移部分行列データを算出するとともに、遷移部分行列データを記憶する遷移部分行列算出手段を備える。推薦サーバは、複数の遷移行列構築サーバから遷移部分行列データをランダムな順序で取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する遷移行列取得手段と、遷移行列データの各要素の関連に基づいて、ユーザの推薦データを生成する推薦アイテム算出手段を備える。
【００１５】
推薦サーバにおいて、遷移部分行列算出手段は、遷移部分行列データを複数のファイルに分割して記憶し、分割されたファイルの識別子を、推薦サーバに通知する通知手段をさらに備えても良い。推薦サーバは、複数の遷移行列構築サーバから、各遷移行列構築サーバが保持するファイルの識別子が通知されると、通知元の遷移行列構築サーバの識別子と当該遷移行列構築サーバが保持するファイルの識別子とを対応づけたレコードを含む行列格納データを記憶する分散ファイル制御手段をさらに備え、遷移行列取得手段は、行列格納データの各レコードをランダムに並び替え、並び替えた順序で、遷移部分行列データを取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する。
【００１６】
また複数の推薦サーバのうち稼働中の推薦サーバに、処理対象のユーザＩＤとともに処理リクエストを送信する制御サーバをさらに備えても良い。
【００１７】
本発明の第２の特徴は、サービスを利用するユーザに対して、当該サービスにおけるアイテムを推薦する推薦サーバに関する。本発明の第２の特徴に係る推薦サーバは、ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけた履歴データ履歴データから生成された遷移行列の部分行列である遷移部分行列データを記憶する複数の遷移行列構築サーバから、遷移部分行列データをランダムな順序で取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成する遷移行列取得手段と、遷移行列データの各要素の関連に基づいて、ユーザの推薦データを生成する推薦アイテム算出手段を備える。
【００１８】
ここで、複数の遷移行列構築サーバから、各遷移行列構築サーバが保持するファイルの識別子が通知されると、通知元の遷移行列構築サーバの識別子と当該遷移行列構築サーバが保持するファイルの識別子とを対応づけたレコードを含む行列格納データを記憶する分散ファイル制御手段をさらに備え、遷移行列取得手段は、行列格納データの各レコードをランダムに並び替え、並び替えた順序で、遷移部分行列データを取得し、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成しても良い。
【００１９】
本発明の第３の特徴は、サービスを利用するユーザに対して、当該サービスにおけるアイテムを推薦する推薦サーバに用いられる推薦方法に関する。本発明の第３の特徴に係る推薦方法は、推薦サーバが、ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけた履歴データ履歴データから生成された遷移行列の部分行列である遷移部分行列データを記憶する複数の遷移行列構築サーバから、遷移部分行列データをランダムな順序で取得するステップと、推薦サーバが、各遷移行列構築サーバから取得した遷移部分行列データから遷移行列データを生成するステップと、推薦サーバが、遷移行列データの各要素の関連に基づいて、ユーザの推薦データを生成するステップを備える。
【００２０】
ここで、推薦サーバが、複数の遷移行列構築サーバから、各遷移行列構築サーバが保持するファイルの識別子が通知されると、通知元の遷移行列構築サーバの識別子と当該遷移行列構築サーバが保持するファイルの識別子とを対応づけたレコードを含む行列格納データを記憶するステップをさらに備えても良い。この場合、記遷移部分行列データをランダムな順序で取得するステップは、行列格納データの各レコードをランダムに並び替え、並び替えた順序で、遷移部分行列データを取得する。
【００２１】
本発明の第４の特徴は、コンピュータに本発明の第４の特徴に記載のステップを実行させるための推薦プログラムに関する。
【発明の効果】
【００２２】
本発明によれば、効率的に推薦アイテムを算出する推薦システム、推薦サーバ、推薦方法および推薦プログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態に係る推薦システムの概要を説明する図である。
【図２】本発明の実施の形態に係る履歴データのデータ構造とデータの一例を説明する図である。
【図３】本発明の実施の形態に係る遷移行列構築サーバのハードウェア構成と機能ブロックを説明する図である。
【図４】本発明の実施の形態に係る遷移行列構築サーバの遷移部分行列算出処理を説明するフローチャートである。
【図５】本発明の実施の形態に係る推薦システムの遷移行列の一例を説明する図である。
【図６】本発明の実施の形態に係る遷移行列構築サーバが算出する遷移部分行列データのデータ構造とデータの一例を説明する図である。
【図７】本発明の実施の形態に係る推薦サーバのハードウェア構成と機能ブロックを説明する図である。
【図８】本発明の実施の形態に係る推薦システムにおいて、各遷移行列構築サーバが格納する部分行列を説明する図である。
【図９】本発明の実施の形態に係る推薦サーバが記憶する行列格納データを説明する図である。
【図１０】本発明の実施の形態に係る制御サーバのハードウェア構成と機能ブロックを説明する図である。
【図１１】本発明の実施の形態に係る制御サーバの処理を説明するフローチャートである。
【発明を実施するための形態】
【００２４】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
【００２５】
（推薦システム）
図１に示すように、本発明の実施の形態に係る推薦システム６は、サービスのユーザに対して、当該サービスにおけるアイテムを推薦する。推薦システム６は、履歴データ４を記憶する記憶装置、複数の遷移行列構築サーバ１、複数の推薦サーバ２、制御サーバ３およびユーザ推薦データ５を記憶する記憶装置を備える。これらは、ＬＡＮなどの通信ネットワーク（図示せず）を介して、相互に通信可能に接続される。図１に示す例において、遷移行列構築サーバ１および推薦サーバ２は、それぞれ３つずつ設ける場合を説明するが、各サーバの数はこれに限られない。
【００２６】
遷移行列構築サーバ１、推薦サーバ２および制御サーバ３は、中央処理制御装置１１０、２１０および３１０、記憶装置１２０、２２０および３２０および通信制御装置１３０、２３０および３３０などを備える一般的なコンピュータである。一般的なコンピュータが、所定の機能を実現させるためのプログラムを実行することにより、各コンピュータは、後述する図３、図７および図１０に示す各機能が実装される。
【００２７】
履歴データ４は、サービスにおいてユーザが利用したアイテムの履歴のデータである。履歴データ４は、例えば、図２に示すように、ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づけたデータである。評価値は、ユーザがアイテムの利用における重み値である。
【００２８】
履歴データ４は、遷移行列構築サーバ１がアクセス可能な記憶装置に記憶される。具体的には履歴データ４は、サービスを提供するサーバなどの記憶装置に記憶されても良いし、サービスに関連するデータを扱うデータベースサーバなどに記憶されても良い。また履歴データ４は、図２に示すように一つのテーブルで実現される場合に限定されない。例えば履歴データ４は、適当な大きさに分割されて、複数のテーブルまたはファイルから構成されても良い。またこれらの複数のテーブルまたはファイルが、それぞれ異なるサーバ上に記憶されても良い。
【００２９】
遷移行列構築サーバ１は、履歴データ４から、遷移行列データを生成する。各遷移行列構築サーバ１は、履歴データ４から、遷移行列の遷移部分行列データ１２１を分担して生成して記憶する。推薦システム６に属する複数の遷移行列構築サーバ１がそれぞれ算出した遷移部分行列データがマージされることにより、推薦システム６が一つの遷移行列データを出力することを可能とする。
【００３０】
推薦サーバ２は、遷移行列データから、推薦データを生成する。複数の推薦サーバ２はそれぞれ、複数の遷移行列構築サーバ１から遷移部分行列データ１２１を取得して、各推薦サーバ２の記憶装置２２０内に、遷移行列データ２２２を生成する。推薦サーバ２は、生成した遷移行列データ２２２を用いて、所定のユーザに推薦するアイテムに関する推薦データ２２３を出力する。
【００３１】
制御サーバ３は、推薦システム６の処理を制御する。制御サーバ３は、推薦サーバ２の稼働状況を取得し、稼働中の推薦サーバ２に、所定のユーザＩＤを入力して、このユーザＩＤに関連する推薦データ２２３を出力させる。また、推薦サーバ２において処理が滞った場合、その推薦サーバ２で実行されていた処理を、他の推薦サーバ２に処理させたりする。
【００３２】
ユーザ推薦データ５は、各推薦サーバ２から出力された推薦データ２２３をマージしたデータである。推薦データ２２３がアクセス可能な記憶装置に記憶される。具体的にはユーザ推薦データ５は、サービスを提供するサーバや制御サーバ３などの記憶装置に記憶されても良いし、サービスに関連するデータを扱うデータベースサーバなどに記憶されても良い。ユーザ推薦データ５に格納されたデータは、サービス提供時などにおいて、適宜ユーザに提示される。
【００３３】
（遷移行列構築サーバ）
図３に示すように、遷移行列構築サーバ１の中央処理制御装置１１０は、遷移部分行列算出手段１１１および通知手段１１２を備えるとともに、記憶装置１２０は、遷移部分行列データ１２１を記憶する。
【００３４】
遷移部分行列算出手段１１１は、履歴データ４から、遷移行列データの一部である遷移部分行列データ１２１を算出するとともに、遷移部分行列データ１２１を記憶装置１２０に記憶する。ここで遷移部分行列算出手段１１１は、遷移部分行列データ１２１を複数のファイルに分割して、記憶装置１２０に記憶することが好ましい。各ファイルは、推薦サーバ２が遷移部分行列データ１２１を取得する単位である。遷移部分行列算出手段１１１が算出するべき部分行列の範囲は、予め制御サーバ３などの処理により定められ、遷移部分行列算出手段１１１は既知である。
【００３５】
図４を参照して、遷移部分行列算出手段１１１による遷移部分行列算出処理を説明する。
【００３６】
まずステップＳ１０１において遷移部分行列算出手段１１１は、履歴データ４からユーザＩＤ、アイテムＩＤおよび評価値を取得する。さらに、ユーザＩＤおよびアイテムＩＤのに任意の組み合わせについて、評価値を用いて、行列Ａ’を構築する。ここで、評価値のないユーザＩＤおよびアイテムＩＤの組み合わせについては、評価値“０”を固定値として、用いる。また、ユーザＩＤに対するアイテムＩＤの評価値と、そのアイテムＩＤに対するそのユーザＩＤの評価値には、同じ値が設定される。
【００３７】
さらにステップＳ１０２において遷移部分行列算出手段１１１は、ステップＳ１０１で算出した行列Ａ’について、正規化処理をした行列Ａの部分行列を得る。具体的には、遷移部分行列算出手段１１１は、列の値の和が１になるように、式（２）を用いて正規化処理を行う。
【数２】
0005519832.tif 000003
【００３８】
ここで、ｊおよびｋは、ｊ行ｋ列の行列Ａの要素を表す添え字である。ここで遷移部分行列算出手段１１１は、この遷移行列構築サーバ１が算出するべき部分行列の範囲について、式（１）に基づいて遷移部分行列データ１２１を算出する。
【００３９】
ステップＳ１０３において遷移部分行列算出手段１１１は、ステップＳ１０２で算出された遷移部分行列データ１２１を、複数のファイルに分割して、記憶装置１２０に記憶する。
【００４０】
図５を参照して、各遷移行列構築サーバ１の遷移部分行列算出手段１１１が算出した遷移行列データを説明する。遷移行列データは、ユーザＩＤおよびアイテムＩＤを行および列の要素として持つ。遷移行列データは、ユーザＩＤに対するアイテムＩＤの要素、およびアイテムＩＤに対するユーザＩＤの要素に、それぞれの評価値から正規化された値が設定される。図５に示す遷移行列データのデータサイズは、ユーザＩＤおよびアイテムＩＤの数に依存するので、サービスの規模によっては、巨大となってしまう。
【００４１】
そこで本発明の実施の形態に係る遷移行列構築サーバ１は、遷移行列データの部分行列を算出し、図６に示すような遷移部分行列データ１２１として出力する。図６に示す遷移部分行列データ１２１は、図５に示す遷移行列データのうち、所定のユーザＩＤおよびアイテムＩＤに関する、正規化された評価値が対応づけられたデータである。さらに遷移部分行列算出手段１１１は、ステップＳ１０２で算出された遷移部分行列データ１２１を６４ＭＢｙｔｅなどの所定のサイズで分割して、複数のファイルに分割する。
【００４２】
ここで、遷移部分行列算出手段１１１による遷移部分行列算出処理において、図４とは異なる方法として、ＭａｐＲｅｄｕｃｅプログラミングフレームワークに添った処理も可能である。ＭａｐＲｅｄｕｃｅプログラミングフレームワークに添った処理は、履歴データ４が分散されたディスク上のファイルで実現されている場合に好適である。この場合遷移部分行列算出手段１１１は、以下の（１）ないし（４）の手順で処理する。
【００４３】
（１）遷移部分行列算出手段１１１は、Ｍａｐｐｅｒで分散されたディスク上のそれぞれのファイルの情報を整理する。具体的には、遷移部分行列算出手段１１１は、ＫｅｙをユーザＩＤとし、このＫｅｙに対応するＶａｌｕｅとして、このユーザＩＤのアイテムＩＤおよび評価値を対応づける。
【００４４】
（２）遷移部分行列算出手段１１１は、Ｒｅｄｕｃｅメソッドにおいて、ＭａｐｐｅｒでエミットされたデータをＫｅｙで集約し、Ｖａｌｕｅとして、このユーザＩＤのアイテムＩＤおよび評価値のイテレータを対応づける。
【００４５】
（３）遷移部分行列算出手段１１１は、Ｒｅｄｕｃｅメソッドにおいて、ユーザＩＤごとの評価値の和が、“１．０”となるように、正規化する。ここで遷移部分行列算出手段１１１は、ＫｅｙをユーザＩＤおよびアイテムＩＤとし、Ｖａｌｕｅとして、ユーザＩＤごとの評価値の和が、“１．０”となるように正規化された評価値を設定する。
【００４６】
（４）遷移部分行列算出手段１１１は、Ｒｅｄｕｃｅメソッドにおいて、上記（３）と同様に、アイテムＩＤに対応する評価値の和が、“１．０”となるように、正規化する。ここで遷移部分行列算出手段１１１は、アイテムＩＤとユーザＩＤとを入れ替えて、ＫｅｙをアイテムＩＤおよびユーザＩＤとし、Ｖａｌｕｅとして、アイテムＩＤごとの評価値の和が、“１．０”となるように正規化された評価値を設定し、遷移部分行列データ１２１として出力する。
【００４７】
遷移部分行列算出手段１１１が算出する遷移部分行列データ１２１は、図５に示すように、ユーザＩＤおよびアイテムＩＤが昇順となるように出力される。なおユーザＩＤ＜アイテムＩＤとなるように、ＩＤ体系が設定されている。このように出力することにより、Compressed Column Storage形式や、Compressed Row Storage形式など、推薦サーバ２が、非零要素を効率的に格納できる形式に容易に、変換することが可能となる。
【００４８】
遷移行列構築サーバ１の通知手段１１２は、遷移部分行列データ１２１を分割したファイルの識別子を、推薦サーバに通知する。ファイルの識別子は、推薦サーバ２が遷移部分行列データ１２１を取得するためのアクセス先であって、ファイル名であっても良いし、ファイルが格納されたアドレスであっても良い。
【００４９】
（推薦サーバ）
図７に示すように、推薦サーバ２の中央処理制御装置２１０は、分散ファイル制御手段２１１、遷移行列取得手段２１２、推薦アイテム算出手段２１３および推薦データ出力手段２１４を備える。記憶装置２２０は、行列格納データ２２１、遷移行列データ２２２および推薦データ２２３を記憶する。
【００５０】
本発明の実施の形態において複数の遷移行列構築サーバ１は、それぞれ遷移部分行列データ１２１を分割したファイルで格納する。これにより、遷移行列データの各要素は、図８に示すように、各遷移行列構築サーバ１の識別子およびそのサーバ内のファイル識別子に対応して、分散して保持される。
【００５１】
そこで分散ファイル制御手段２１１は、複数の遷移行列構築サーバ１から、各遷移行列構築サーバ１が保持する、遷移部分行列データ１２１を分割したファイルの識別子が通知されると、行列格納データ２２１を生成して、記憶装置２２０に記憶する。行列格納データ２２１は、図９（ａ）に示すように、通知元の遷移行列構築サーバ１の識別子と、このサーバが通知したファイルの識別子との組み合わせのリストである。
【００５２】
遷移行列取得手段２１２は、複数の遷移行列構築サーバ１から遷移部分行列データ１２１をランダムな順序で取得する。遷移行列取得手段２１２は、各遷移行列構築サーバ１から取得した遷移部分行列データから遷移行列データ２２２を生成して、記憶装置２２０に記憶する。ここで遷移行列取得手段２１２は、行列格納データ２２１の各レコードをランダムに並び替える。遷移行列取得手段２１２は、並び替えた順序で、各遷移行列構築サーバ１から遷移部分行列データの各ファイルを取得し、各遷移行列構築サーバ１から取得した遷移部分行列データから遷移行列データ２２２を生成する。
【００５３】
遷移行列取得手段２１２は、自身の推薦サーバ２が記憶する行列格納データ２２１を読み出し、分散されている遷移部分行列データ１２１の各ファイルについて、格納される遷移行列構築サーバ１の識別子およびファイルの識別子を取得する。次に、遷移行列取得手段２１２は、取得した格納される遷移行列構築サーバ１の識別子およびファイルの識別子の組み合わせを、ランダムに並び替える。その結果、図９（ｂ）に示すように、読み込み順が決定される。ここでこの処理は、各推薦サーバ２で実行されるので、他の推薦サーバ２においては、図９（ｃ）に示すように、図９（ｂ）に示した読み込み順と異なる順序が決定される。
【００５４】
遷移行列取得手段２１２は、ランダムに並び替えられた順序で、各遷移行列構築サーバ１から各ファイルを取得して、メインメモリやハードディスクなどの記憶装置２２０に展開する。さらに遷移行列取得手段２１２は、展開した各データをマージして、遷移行列データ２２２を生成する。
【００５５】
このように遷移行列取得手段２１２は、後述する推薦アイテム算出手段２１３が、推薦アイテムを算出する際に参照する遷移行列データ２２２を、推薦アイテム算出手段２１３が読み出し可能なメインメモリ上に展開する。このとき、複数の推薦サーバ２が並行して同じ処理を実行すると、各サーバマシンが、同一のファイルを先頭から読み込むことになり、特定の遷移行列構築サーバ１に各推薦サーバ２からのアクセスが集中し、負荷が高くなってしまうおそれがある。そこで本発明の実施の形態に係る推薦システム６において、各推薦サーバ２が読み込むファイルの順序をランダマイズすることで、特定の遷移行列構築サーバ１にアクセスが集中することなく、推薦システム６全体として円滑な処理を実現する。
【００５６】
推薦アイテム算出手段２１３は、遷移行列データ２２２の各要素の関連に基づいて、ユーザの推薦データを生成する。遷移行列取得手段２１２が、各遷移行列構築サーバ１の分散行列の各ファイルから遷移行列データ２２２を生成した後、推薦アイテム算出手段２１３は、生成された遷移行列データ２２２に基づいて、被推薦ユーザＩＤについて各アイテムＩＤとの関連度を算出する。推薦アイテム算出手段２１３は、関連度の高いアイテムＩＤを、推薦データ２２３として出力する。推薦アイテム算出手段２１３は、特許文献１や非特許文献１に記載された方法で、遷移行列データ２２２から推薦データ２２３を生成する。
【００５７】
ここで処理対象となる被推薦ユーザＩＤは、制御サーバ３により入力される。推薦アイテム算出手段２１３は、入力された被推薦ユーザＩＤに対する処理が終了すると、制御サーバ３にその旨を通知する。
【００５８】
推薦アイテム算出手段２１３は、関連度の算出において、Ｒａｎｄｏｍ  Ｗａｌｋ  ｗｉｔｈ  Ｒｅｓｔａｒｔ（ＲＷＲ）を用いる。このＲＷＲでは、問い合わせ分布に基づいた各ノードの存在確率に基づいて、非推薦ユーザを表す起点ノードからランダムウォークを開始し、隣接するノードにエッジの重みに比例した確率でランダムに移動する。ここで問い合わせ分布は、被推薦ユーザを表す起点ノードのみが「１」である１×Ｎの列ベクトルｑである。さらにＲＷＲでは、ノードに到達するたびに一定の確率（αで規定される）で起点ノードに戻る。
【００５９】
具体的には、式（３）の様に示される。
【数３】
0005519832.tif 000004
【００６０】
ここでｐは、アイテムの関連度を示すベクトルであって、起点ノードａから各ノードへの到達確率（関連度）を表す１×Ｎの列ベクトルである。Ａは、遷移行列取得手段２１２によって生成された遷移行列データ２２２に対応するＮ×Ｎの遷移行列である。ｑは、被推薦ユーザを表す起点ノードのみが「１」である１×Ｎの列ベクトルである。αは、０＜α＜１を満たす定数である。
【００６１】
推薦アイテム算出手段２１３は、式（３）の計算に基づいて、ｐを再帰的に更新する。例えば、ｔ回更新した後のベクトルｐからアイテムを表すノードについて関連度の高いものが、推薦アイテムとして出力される。ここでのｔは、例えば「３０」などであって、十分に大きな値であれば、この数値に限定されるものではない。
【００６２】
推薦データ出力手段２１４は、推薦データ２２３をユーザ推薦データ５に出力する。この結果、ユーザ推薦データ５に、各推薦サーバ２が算出した推薦データ２２３がマージされる。
【００６３】
（制御サーバ）
図１０に示すように、制御サーバ３の中央処理制御装置３１０は、被推薦ユーザＩＤ取得手段３１１、推薦サーバ状態取得手段３１２、計算依頼手段３１３および計算状況監視手段３１４を備える。記憶装置３２０は、被推薦ユーザＩＤデータ３２１、サーバ稼働状態データ３２２および計算状況データ３２３を記憶する。
【００６４】
被推薦ユーザＩＤ取得手段３１１は、推薦サーバ２に処理させる被推薦ユーザＩＤを決定して、問い合わせ分布の集合となる被推薦ユーザＩＤデータ３２１を生成する。被推薦ユーザＩＤデータ３２１は、被推薦ユーザＩＤのリストである。被推薦ユーザＩＤ取得手段３１１は例えば、所定のクエリに基づいて、履歴データ４から複数の被推薦ユーザのＩＤを抽出して、被推薦ユーザＩＤデータ３２１に記憶する。
【００６５】
推薦サーバ状態取得手段３１２は、推薦システム６に属する推薦サーバ２の稼働状態を保持し、サーバ稼働状態データ３２２に保持する。サーバ稼働状態データ３２２は、推薦サーバ２の識別子と、その推薦サーバ２が稼働中であるか否かを示す稼働状態とを対応づけたデータである。推薦サーバ状態取得手段３１２は、推薦サーバ２の稼働状態に応じて、逐次サーバ稼働状態データ３２２を更新する。
【００６６】
計算依頼手段３１３は、複数の推薦サーバ２のうち稼働中の推薦サーバ２に、処理対象の被推薦ユーザＩＤとともに処理リクエストを送信する。計算依頼手段３１３は、サーバ稼働状態データ３２２を読み出して、稼働中の推薦サーバ２の識別子を取得するとともに、被推薦ユーザＩＤデータ３２１の問い合わせ分布の集合から、未処理の被推薦ユーザＩＤを取得する。
【００６７】
計算依頼手段３１３は、取得した推薦サーバ２に、取得した被推薦ユーザＩＤを入力して、その推薦サーバ２に、被推薦ユーザＩＤに関する推薦データ２２３を生成させる。このとき計算依頼手段３１３は、被推薦ユーザＩＤ、依頼先の推薦サーバ２の識別子および依頼時刻を対応づけて、計算状況データ３２３に記憶する。その後、推薦サーバ２から処理が終了した旨が通知されると、計算依頼手段３１３は、計算状況データ３２３から、通知元の推薦サーバ２に関するレコードを削除するとともに、通知元の推薦サーバ２の処理対象の被推薦ユーザＩＤを、被推薦ユーザＩＤデータ３２１から削除する。
【００６８】
さらに計算依頼手段３１３は、被推薦ユーザＩＤデータ３２１から未処理の被推薦ユーザＩＤを取得して、通知元の推薦サーバ２に入力し、推薦データ２２３を算出させる。このように計算依頼手段３１３は、被推薦ユーザＩＤデータ３２１に含まれる全ての被推薦ユーザＩＤについて処理されるまで、推薦サーバ２に処理させる。
【００６９】
図１１を参照して、本発明の実施の形態に係る計算依頼手段３１３の計算依頼処理を説明する。
【００７０】
まずステップＳ２０１において、計算依頼手段３１３は、記憶装置３２０から、被推薦ユーザＩＤデータ３２１を読み出し、被推薦ユーザＩＤデータ３２１の各被推薦ユーザＩＤについて、ステップＳ２０２ないしステップＳ２０６の処理を繰り返す。
【００７１】
ステップＳ２０２において計算依頼手段３１３は、サーバ稼働状態データ３２２を参照して、稼働中の推薦サーバの識別子を取得する。ステップＳ２０３において、ステップＳ２０２で取得した稼働中の推薦サーバに、被推薦ユーザＩＤを送信して、処理を依頼する。このとき計算依頼手段３１３は、被推薦ユーザＩＤ、依頼先の推薦サーバ２の識別子および依頼時刻を対応づけたレコードを、計算状況データ３２３に挿入する。
【００７２】
その後ステップＳ１０５において計算依頼手段３１３は、ステップＳ２０３で処理依頼した推薦サーバ２から処理が終了した旨の通知を待機する。通知を受信すると、ステップＳ１０６において計算依頼手段３１３は、計算状況データ３２３から、通知元の推薦サーバ２に関する情報を削除する。
【００７３】
ここで、複数の推薦サーバ２が並列して処理する場合、計算依頼手段３１３は、各推薦サーバ２に、逐次処理依頼をするとともに、処理が終了した推薦サーバ２に対して、未処理の被推薦ユーザＩＤを入力する処理を繰り返す。
【００７４】
計算状況監視手段３１４は、計算状況データ３２３を参照して、各推薦サーバ２が円滑に処理しているか否かを監視する。計算状況監視手段３１４は、計算状況データ３２３に格納された各レコードについて、現在時刻と、計算状況データ３２３の依頼時刻とを比較して、所定の閾値以上の時間が経過しているか否かを判定する。
【００７５】
閾値を越えたレコードがある場合、このレコードに関する推薦サーバ２に不具合が生じていると考えられるので、サーバ稼働状態データ３２２に、この推薦サーバ２の稼働状態を、稼働していないことを示すデータに更新する。さらに、計算状況監視手段３１４は、稼働していない推薦サーバ２の処理対象の被推薦ユーザＩＤを、被推薦ユーザＩＤデータ３２１に挿入し、他の推薦サーバ２に処理させる。
【００７６】
このように本発明の実施の形態に係る推薦システム６は、ＲＷＲに用いる遷移行列データを、遷移部分行列データ１２１として、複数の遷移行列構築サーバ１に分散して処理する。また複数の推薦サーバ２はそれぞれ、ランダムに決めた順序で、各遷移行列構築サーバ１にアクセスして、各メモリに遷移行列データ２２２を複写する。これにより、特定の遷移行列構築サーバ１に負荷が偏ることなく、複数の推薦サーバ２が並列して処理することができる。
【００７７】
さらに制御サーバ３が、各推薦サーバ２の処理状況を監視する。これにより、推薦サーバ２において障害などにより処理が完結しなかった場合でも、制御サーバ３は、他の推薦サーバ２に処理させることができる。
【００７８】
このように、本発明の実施の形態に係る推薦システム６は、ユーザＩＤやアイテムＩＤが多く処理対象が膨大であっても、処理を分散化することで、効率的に推薦アイテムを算出することができる。
【００７９】
（その他の実施の形態）
上記のように、本発明の実施の形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
【００８０】
本発明の実施の形態において、複数の遷移行列構築サーバがそれぞれ、部分行列を算出して保持する場合を説明したが、これに限られない。例えば一つのサーバが算出した遷移行列を、複数のサーバの記憶装置に記憶するなど、遷移行列が、複数のサーバに分散して格納されていれば良い。
【００８１】
また、各サーバは、物理サーバであっても良いし、仮想サーバであっても良い。
【００８２】
さらに、制御サーバ３の各機能を、いずれかの推薦サーバや遷移行列構築サーバが実現しても良い。このほか、推薦システムの様々な実現方法が考えられる。
【００８３】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【００８４】
１  遷移行列構築サーバ
２  推薦サーバ
３  制御サーバ
４  履歴データ
５  ユーザ推薦データ
６  推薦システム
１１０、２１０、３１０  中央処理制御装置
１１１  遷移部分行列算出手段
１１２  通知手段
１２１  遷移部分行列データ
１２０、２２０、３２０  記憶装置
１３０、２３０、３３０  通信制御装置
２１１  分散ファイル制御手段
２１２  遷移行列取得手段
２１３  推薦アイテム算出手段
２１４  推薦データ出力手段
２２１  行列格納データ
２２２  遷移行列データ
２２３  推薦データ
３１１  被推薦ユーザＩＤ取得手段
３１２  推薦サーバ状態取得手段
３１３  計算依頼手段
３１４  計算状況監視手段
３２１  被推薦ユーザＩＤデータ
３２２  サーバ稼働状態データ
３２３  計算状況データ
【要約】
【課題】効率的に推薦アイテムを算出する。
【解決手段】
推薦システム６は、履歴データ４、複数の遷移行列構築サーバ１および複数の推薦サーバ２を備える。履歴データ４は、ユーザＩＤと、このユーザの利用したアイテムのアイテムＩＤと、この利用における評価値とを対応づける。遷移行列構築サーバ１は、履歴データ４から、遷移行列データの一部である遷移部分行列データ１２１を算出するとともに、遷移部分行列データ１２１を記憶する遷移部分行列算出手段１１１を備える。推薦サーバ２は、複数の遷移行列構築サーバ１から遷移部分行列データ１２１をランダムな順序で取得し、各遷移行列構築サーバ１から取得した遷移部分行列データから遷移行列データ２２２を生成する遷移行列取得手段２１２と、遷移行列データ２２２の各要素の関連に基づいて、ユーザの推薦データ２２３を生成する推薦アイテム算出手段２１３を備える。
【選択図】      図１【図１】
0005519832.tif 000005
【図２】
0005519832.tif 000006
【図３】
0005519832.tif 000007
【図４】
0005519832.tif 000008
【図５】
0005519832.tif 000009
【図６】
0005519832.tif 000010
【図７】
0005519832.tif 000011
【図８】
0005519832.tif 000012
【図９】
0005519832.tif 000013
【図１０】
0005519832.tif 000014
【図１１】
0005519832.tif 000015