(57)【要約】【課題】ユーザが明示的な評価を与えなくても、レコメンド対象ユーザへ推薦するアイテムを自動的に高効率かつ良好に抽出できるレコメンダシステムを提供すること。【解決手段】アイテム間相関値処理(S22)で、ユーザごとに、ユーザが利用した全てのアイテムについて、２つのアイテムの利用時刻の差分および該アイテムの最古利用時刻に関する情報に基づいてアイテム間相関値を算出する。次に、レコメンド結果算出処理(S23)で、アイテム間相関値を全ユーザについて総合して総合アイテム間相関値を算出し、レコメンド対象ユーザのアイテム利用履歴に含まれるアイテムとの間の総合アイテム間相関値の総計が高い、レコメンド対象ユーザのアイテム利用履歴に含まれないアイテムを推薦アイテムとして算出する。【選択図】図２
2008242966.tif 000002
【特許請求の範囲】
【請求項１】
全ユーザのアイテム利用履歴に基づいてレコメンド対象ユーザへの推薦アイテムを抽出するレコメンダシステムにおいて、
ユーザごとに、ユーザが利用した全てのアイテムについて、各アイテム間での利用時刻の差分および該アイテムについての最古利用時刻に関する情報に基づいてアイテム間相関値を算出するアイテム間相関値算出手段と、
前記アイテム間相関値算出手段により算出されたアイテム間相関値に基づいてレコメンド対象ユーザのアイテム利用履歴に含まれるアイテムとの間の相関値が高いアイテムを推薦アイテムとして抽出する推薦アイテム抽出手段を備えたことを特徴とするレコメンダシステム。
【請求項２】
前記推薦アイテム抽出手段は、
前記アイテム間相関値算出手段により算出されたアイテム間相関値を全ユーザについて総合して総合アイテム間相関値を算出する総合アイテム相関値算出手段と、前記総合アイテム相関値算出手段により算出された総合アイテム間相関値において、レコメンド対象ユーザのアイテム利用履歴に含まれるアイテムとの間の総合アイテム間相関値の総計が高い、レコメンド対象ユーザのアイテム利用履歴に含まれないアイテムを推薦アイテムとして抽出する抽出手段を備えたことを特徴とする請求項１に記載のレコメンダシステム。
【請求項３】
前記アイテムについての最古利用時刻に関する情報には重み係数を掛けることを特徴とする請求項１または２に記載のレコメンダシステム。
【請求項４】
前記アイテム間相関値算出手段は、
前記アイテムについての最古利用時刻に関する情報として前記アイテムの最古利用時刻の差分を利用することを特徴とする請求項１ないし３のいずれかに記載のレコメンダシステム。
【請求項５】
前記アイテム間相関値算出手段は、
前記アイテムについての最古利用時刻に関する情報として前記アイテムの最古利用時刻と分析対象利用履歴取得の開始時刻との差分を利用することを特徴とする請求項１ないし３のいずれかに記載のレコメンダシステム。
【請求項６】
前記アイテム間相関値算出手段は、
前記アイテムについての最古利用時刻に関する情報として前記アイテムの提供開始時刻を利用することを特徴とする請求項１ないし３のいずれかに記載のレコメンダシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レコメンダシステムに関し、特に、アイテム利用時刻の差分および該アイテムの最古利用時刻に関する情報に基づいて、レコメンド対象ユーザへの推薦アイテムを自動的に高効率かつ良好に抽出できるレコメンダシステムに関する。
【背景技術】
【０００２】
近年、ユーザの商品購入履歴などを基にユーザの嗜好を推測し、ユーザの嗜好に適合すると推測される商品などを自動的にレコメンドする「レコメンドサービス」が盛んに行われている。代表的な実現例としては、amazon.comでの書籍レコメンドがあげられる。Amazon.comでは、書籍の購入時に、「この本を買った人はこんな本も買っています」という形で書籍をレコメンドする。
【０００３】
このようなレコメンドサービスにおいて利用されている代表的な技術が「協調フィルタリング」と呼ばれているものである。協調フィルタリングは、ユーザの購入履歴などのログデータを基にユーザ間の相関を算出し、相関が高いユーザの購入履歴を元に、レコメンド対象ユーザへの推薦アイテム(商品など)を抽出する方式である。
【０００４】
図８は、従来の協調フィルタリングの概念図である。図８では、アイテム(item:商品など)に対して与える評価値を５段階「1」〜「5」とし、例えば、ユーザBは、自分が購入したアイテムa,b,c,d,e,hに対して評価値「2」,「4」,「1」,「3」,「3」,「2」を与えている。ユーザAは、アイテムa,b,c,d,eを既に購入していてそれらに対して評価値「5」,「1」,「4」,「2」,「3」を与えているが、その他のアイテム・・・,hは未購入である。
【０００５】
ここで、ユーザAへの推薦アイテムを抽出する場合、ユーザA,B,C,Dが各アイテムに対して与えた評価値を購入履歴とし、ユーザAの購入履歴と相関が高い購入履歴を有するユーザCの購入履歴を利用し、ユーザCが高い評価値を与えた最右のアイテムhを推薦アイテムとして抽出する。
【０００６】
このようなレコメンドを実現するための協調フィルタリングの具体的なアルゴリズムは、非特許文献１に記載されている。図８の協調フィルタリングでは、個々のアイテムに対してユーザが明示的な評価(５段階評価値)を与えていることを前提としているが、非特許文献１には、協調フィルタリング自体は、ユーザが明示的な評価を与えていない暗示的なデータ、例えば、購入の有無を1,0としたバイナリ形式のデータを購入履歴として用いても有効であることが記載されている。
【０００７】
本発明者らは、この暗示的なバイナリ形式のデータをアイテム購入時刻を元に明示化(実数値化)して評価値とすることにより、協調フィルタリングをさらに進化させた方法を特許文献１で提案した。特許文献１の協調フィルタリング方法では、個々のアイテムの購入の有無を示す数値(購入があった場合は“1”、未購入の場合は“0”の暗示的なデータ)に、式(1)で算出される時間情報を示す係数Tを乗じてアイテム評価値を算出する。
【０００８】
式(1)は、アイテムの購入時刻tｄｌとレコメンド結果算出時刻tｎｏｗとの差分を利用した半減期関数であり、定数αは、係数Tの値が0.5になる半減期を規定する数値である。
【０００９】
【数１】
2008242966.tif 000003
【００１０】
特許文献１や非特許文献１の協調フィルタリング方式では、大量の購入履歴を対象としてユーザ間の相関値を算出する必要があるが、ユーザ間の相関値を算出する必要をなくした協調フィルタリング方式も提案されている。
【００１１】
非特許文献２には、個々のユーザの評価履歴にのみ着目してレコメンドを行うSlopeOneアルゴリズムが提案されている。SlopeOneアルゴリズムでは、個々のユーザのアイテム評価値間差分を算出し、全ユーザについて算出されたアイテム評価値間差分の平均値を算出し、この算出結果を元にレコメンド結果を算出するので、ユーザ間の相関値を算出する必要がない。
【００１２】
図９は、SlopeOneアルゴリズムの概念図である。図９は、ユーザAが購入済アイテムI,Jに対してそれぞれ、「1」,「1.5」という評価値を与え、ユーザBが購入済アイテムIに対して「2」という評価値を与えた場合を示している。この例の場合、ユーザAが、アイテムI, J に対してそれぞれ、「1」,「1.5」という評価値を与えているため、両アイテムの評価値間の差分は 1.5 - 1 = 0.5 となる。ユーザBに対するアイテムJの評価値を予測する場合、ユーザのBのアイテムIに対する評価値に対してユーザAのアイテムI, J 評価値間差分「0.5」を加える。ユーザAはアイテムIに対し「2」という評価値を与えているので、アイテムJに対するユーザBの予測評価値は、2 + 0.5 = 2.5 と算出される。このようにして算出された予測評価値の大きいアイテムユーザBにレコメンドする。なお、この例は、ユーザが２人の場合であるが、３人以上の場合には、全ユーザについてのアイテム評価値間差分の平均値を利用する。
【００１３】
SlopeOneアルゴリズムは、個々のユーザのアイテム評価値のみをベースにしてレコメンド結果を算出できるので、ユーザ間の相関値を算出する必要がある従来の協調フィルタリング方式よりも効率的な手法である。また、非特許文献２には、レコメンド結果の精度も従来の協調フィルタリング方式と同等であると報告されている。
【特許文献１】特開２００３−１６７９０１号公報
【非特許文献１】Breese, J.; Heckerman, D. and C. Kadie, "Empirical analysis of predictive algorithms for collaborative filtering," Uncertainty in Artificial Intelligence. Proceedings of the Fourteenth Conference (1998), Morgan Kaufman, 1998, pp. 43-52.
【非特許文献２】D. Lemire, A. Maclachlan: Slope One Predictors for Online Rating-Based Collaborative Filtering, Proc SIAM Data Mining (SDM’05), 2005.
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上述したように、非特許文献１や特許文献１の協調フィルタリング方式は、大量の購入履歴を対象としてユーザ間の相関値を算出するので、膨大な計算を必要とし、レコメンド結果算出の処理負担が重い。このため、大規模なユーザ数やアイテム数が含まれたデータに基づいてアイテムをレコメンドする場合には適さないという課題がある。
【００１５】
非特許文献２に示されるSlopeOneアルゴリズムを利用すれば、レコメンド結果算出の処理負担を大幅に軽減することができるので、大規模なデータに対しても協調フィルタリングを容易に適用できるようになる。しかしながら、SlopeOneアルゴリズムは、個々のユーザのアイテム評価値間差分に基づいてレコメンド結果を算出する方式であるため、ユーザが明示的な評価を与える形式のデータ以外へは適用できないという課題がある。すなわち、購入の有無を1,0のバイナリ形式のデータで表して分析用データを構築した場合、個々のユーザの購入済アイテム間での評価値の差分は常に0となり、適切なレコメンド算出結果を算出することができない。
【００１６】
特許文献１の協調フィルタリング方式と非特許文献２のSlopeOneアルゴリズムを組み合わせて、暗示的なデータに対してもレコメンドできるシステムを実現することも考えられる。
【００１７】
しかしながら、特許文献２の半減期関数(上記式(1))によれば、レコメンド結果算出時刻に近い時刻に購入されたアイテムの評価値は高く、購入時刻がレコメンド結果算出時刻から離れるに従ってそのアイテムに対する評価値は徐々に低くなる。したがって、アイテム評価値間の差分を求めた場合、アイテムの購入時刻の差分が小さいアイテム同士の評価値の差が小さくなってしまうので、それらを単純に結合させただけでは良質なレコメンド結果を得ることはできないという課題がある。
【００１８】
例えば、あるユーザが立て続けにアイテムIとJを購入している場合、アイテムI, J間の相関は高いとみなすことができるが、特許文献２の協調フィルタリング方式ではこうしたアイテム間の評価値の差は低くなってしまうため、アイテムIのみを購入しているユーザにアイテムJをレコメンドすることが難しくなる。
【００１９】
また、特許文献２の協調フィルタリング方式では、レコメンド結果算出時刻に近い時刻に販売が開始されたアイテムの評価値が他のアイテムと比較して相対的に高くなり、必然的に他のアイテム評価値との差が大きくなるが、特許文献２の協調フィルタリング方式にはこの値を是正するロジックが含まれていないため、レコメンド結果にこの影響が出てしまう。例えば、近々に販売が開始されたアイテムがレコメンドされる割合が高くなる。
【００２０】
本発明の目的は、上記課題を解決し、ユーザが明示的な評価を与えなくても、レコメンド対象ユーザへ推薦するアイテムを自動的に高効率かつ良好に抽出できるレコメンダシステムを提供することにある。
【課題を解決するための手段】
【００２１】
本発明は、上記課題を解決するため、全ユーザのアイテム利用履歴に基づいてレコメンド対象ユーザへの推薦アイテムを抽出するレコメンダシステムにおいて、ユーザごとに、ユーザが利用した全てのアイテムについて、各アイテム間での利用時刻の差分および該アイテムについての最古利用時刻に関する情報に基づいてアイテム間相関値を算出するアイテム間相関値算出手段と、前記アイテム間相関値算出手段により算出されたアイテム間相関値に基づいてレコメンド対象ユーザのアイテム利用履歴に含まれるアイテムとの間の相関値が高いアイテムを推薦アイテムとして抽出する推薦アイテム抽出手段を備えた点に第１の特徴がある。
【００２２】
また、本発明は、前記推薦アイテム抽出手段が、前記アイテム間相関値算出手段により算出されたアイテム間相関値を全ユーザについて総合して総合アイテム間相関値を算出する総合アイテム相関値算出手段と、前記総合アイテム相関値算出手段により算出された総合アイテム間相関値において、レコメンド対象ユーザのアイテム利用履歴に含まれるアイテムとの間の総合アイテム間相関値の総計が高い、レコメンド対象ユーザのアイテム利用履歴に含まれないアイテムを推薦アイテムとして抽出する抽出手段を備えた点に第２の特徴がある。
【００２３】
また、本発明は、前記アイテムについての最古利用時刻に関する情報には重み係数を掛ける点に第３の特徴がある。
【００２４】
また、本発明は、前記アイテム間相関値算出手段が、前記アイテムについての最古利用時刻に関する情報として前記アイテムの最古利用時刻の差分を利用する点に第４の特徴がある。
【００２５】
また、本発明は、前記アイテム間相関値算出手段が、前記アイテムについての最古利用時刻に関する情報として前記アイテムの最古利用時刻と分析対象利用履歴取得の開始時刻との差分を利用する点に第５の特徴がある。
【００２６】
さらに、本発明は、前記アイテム間相関値算出手段が、前記アイテムについての最古利用時刻に関する情報として前記アイテムの提供開始時刻を利用する点に第６の特徴がある。
【発明の効果】
【００２７】
本発明によれば、アイテムの利用時刻の差分だけでなくアイテムの最古利用時刻に関する情報も用いてアイテム間相関値が算出されるので、ユーザが明示的な評価を与えなくても、レコメンド対象ユーザへ推薦するアイテムを自動的に高効率かつ良好に抽出できる。また、ユーザ間の相関値を算出する必要がないので、レコメンド結果算出の処理負担を大幅に軽減できる。
【００２８】
アイテムの最古利用時刻に関する情報に重み係数を掛けるようにした場合、この重み係数をパラメータとすることにより、最古利用時期の新しいアイテムがレコメンドされる割合を調整することができる。
【００２９】
アイテムの最古利用時刻に関する情報としてアイテムの最古利用時刻の差分を利用した場合、アイテムの最古利用時刻が接近していればアイテム間相関値が大きくなるので、ユーザにより立て続けに購入されたアイテムがレコメンドされる割合を高くすることができる。
【００３０】
また、アイテムの最古利用時刻に関する情報としてアイテムの最古利用時刻と分析対象利用履歴取得の開始時刻の差分を利用した場合、分析対象利用履歴取得の開始時刻と最古利用時刻がかけ離れているアイテムがレコメンドされる割合を低くすることができる。
【００３１】
さらに、アイテムの最古利用時刻に関する情報としてアイテムの提供開始時刻を利用した場合、提供開始時刻が互いにかけ離れているアイテムや提供開始時刻と最古利用時刻がかけ離れているアイテムがレコメンドされる割合を低くすることができる。
【発明を実施するための最良の形態】
【００３２】
以下、図面を参照して本発明を説明する。図１は、本発明に係るレコメンダシステムの一実施形態を示すブロック図である。本実施形態のレコメンダシステムは、購入履歴情報収集モジュール11、アイテム間相関値算出モジュール12、レコメンド結果算出モジュール13およびレコメンド結果提示モジュール14の４つのモジュールを備える。各モジュールは、その機能を実行するハードウエアとしてもソフトウエアとしても実現できる。
【００３３】
購入履歴情報収集モジュール11は、全てのユーザUのアイテム購入履歴情報を収集し、購入履歴情報データベース(DB)15に格納する。購入履歴情報DB15に格納されるアイテム購入履歴情報には、ユーザUを示すユーザID、ユーザUが購入したアイテムを示すアイテムID、アイテム購入が発生したアイテム購入時刻などが含まれる。また、購入履歴情報収集モジュール11は、各アイテムの最古購入時刻を算出し、これを購入履歴情報データベース(DB)15に格納する。
【００３４】
アイテム間相関値算出モジュール12は、購入履歴DB15に格納された個々のユーザUのアイテム購入時刻や各アイテムの最古購入時刻を元に、ユーザごとにアイテム間相関値を算出し、アイテム間相関値DB16に格納する。
【００３５】
レコメンド結果算出モジュール13は、アイテム間相関値DB16に格納されたアイテム間相関値とレコメンド対象ユーザのアイテム購入履歴情報に基づき、レコメンド対象ユーザに対するレコメンド結果を算出する。
【００３６】
レコメンド結果提示モジュール14は、レコメンド結果算出モジュール13により算出されたレコメンド結果をレコメンド対象ユーザに提示する。
【００３７】
図２は、図１のレコメンドシステムにおける処理を示すフローチャートである。図２の購入履歴取込処理(S21)、アイテム間相関値算出処理(S22)、レコメンド結果算出処理(S23)はそれぞれ、図１の購入履歴情報収集モジュール11、アイテム間相関値算出モジュール12、レコメンド結果算出モジュール13が実行する処理である。
【００３８】
購入履歴情報取込処理(S21)では、分析対象の購入履歴情報を取り込むと共に統計的情報を算出し、これらを購入履歴情報データベース(DB)15に格納する。統計的情報は、各アイテムの最古購入時刻を含み、アイテム間相関値算出で使用される。
【００３９】
アイテム間相関値算出処理(S22)では、購入履歴取込処理(S21)で読み込まれた購入履歴情報を元に、ユーザごとに、全てのアイテムについて２つアイテム間の相関値を個々に算出し、その結果をアイテム間相関値DB16に格納する。アイテム間相関値算出処理(S22)の詳細は後述する。
【００４０】
レコメンド結果算出処理(S23)では、アイテム間相関値算出処理(S22)で算出されたアイテム間相関値とレコメンド対象ユーザの購入履歴情報を基に、レコメンド対象ユーザに対するレコメンド結果を算出し、その結果を出力する。レコメンド結果算出処理(S23)の詳細は後述する。
【００４１】
レコメンド結果算出処理(S23)を定期的に全てのユーザについて実行するようにすれば、全てのユーザに対して定期的にレコメンドサービスを提供する形態にでき、ユーザからリクエストが送出された際に該ユーザについて実行するようにすれば、ユーザからのリクエストに応じてレコメンドサービスを提供する形態にできる。もちろん、両方の形態を備えるようにすることもできる。
【００４２】
次に、アイテム間相関値算出処理(S22)について説明する。まず、アイテム間相関値算出のアルゴリズムについて説明する。以下では、あるユーザUが購入したアイテムi,j間のアイテム間相関値を算出する場合を例にあげる。
【００４３】
アイテム間相関値算出のアルゴリズムでは、あるユーザUが購入した全てのアイテムについて、２つのアイテムi,jの購入時刻の差分および該アイテムi,jについての最古購入時刻に関する情報に基づいてアイテム間相関値を算出する。アイテム間相関値を算出において、アイテムの購入時刻の差分の他にアイテムの最古利用時刻を考慮することにより、発売時期が新しいアイテムがレコメンドされがちな傾向を調整することができ、レコメンドの精度を高めることができる。
【００４４】
ユーザUが購入したアイテムi,j間のアイテム間相関値Diff(U,i,j)は、例えば、下記式(2)によって算出できる。
【００４５】
【数２】
2008242966.tif 000004
【００４６】
ここで、t_diff(i,j)は、ユーザUがアイテムi,jをそれぞれ購入した時刻の差分を表す値を示し、t_comp(i,j)は、アイテムi,jの最古購入時刻を表す値(最古購入時刻に関する情報)を示す。
【００４７】
また、αとβは、予め定められた定数である。βは、発売期間が新しいアイテムがレコメンドされる割合を調整するためのパラメータとして利用できる。例えば、βを低い値に設定すると、他のアイテムと比較してt_diff(i,j)の値が相対的に高いと推測される新発売アイテムのスコアが高くなり、レコメンド結果に多くの新発売アイテムが含まれることになる。逆に、βの値を上げることにより、新発売アイテムのレコメンドを減少させることも可能になる。このように、アイテムの最古利用時刻に関する情報に掛ける重み係数を調整可能にすることにより、具体的にはβをパラメータとして調整可能にすることにより、レコメンド結果に含まれるアイテムの内容を変更させる機能を持たせることができる。
【００４８】
ユーザUがアイテムi,jをそれぞれ購入した時刻の差分を表すt_diff(i,j)の値は、下記(3)式に示すように、日時を単位として算出できる。
【００４９】
【数３】
2008242966.tif 000005
【００５０】
ここで、t_buy(U,i)、t_buy(U,j)はそれぞれ、ユーザUがアイテムi,jを購入した日時を示す。上記式(3)では、t_buy(U,i)とt_buy(U,j)の差分の絶対値を算出することにより、アイテム間の負の相関が発生しないように考慮している。
【００５１】
アイテムi,jの最古購入時刻を表すt_comp(i,j)の値は、下記式(4)あるいは式(5)によって算出できる。
【００５２】
【数４】
2008242966.tif 000006
【００５３】
【数５】
2008242966.tif 000007
【００５４】
ここで、min(t_buy(i))、min(t_buy(j))はそれぞれ、分析対象購入履歴の中で、アイテムi,jが購入された最古の時刻を示す。また、t_startは、分析対象購入履歴の開始時刻を示す。例えば、１ヶ月前からの購入履歴を分析対象とする場合、１ヶ月前の日時である。
【００５５】
上記式(4)では、アイテムi,jの最古購入時刻を表すt_comp(i,j)を、アイテムi,jそれぞれの最古の購買時刻の差分(アイテムの最古利用時刻の差分)として算出する。そして、上記式(2)により、ユーザUがアイテムi,jをそれぞれ購入した時刻の差分t_diff(i,j)とアイテムi,jそれぞれの最古の購買時刻の差分t_comp(i,j)との差を用いてアイテム間相関値Diff(U,i,j)を算出する。
【００５６】
一方、上記式(5)では、アイテムi,jの最古購入時刻を表すt_comp(i,j)の値を、アイテムi,jそれぞれの最古の購入時刻のうちの新しい方の購入時刻を基準に、分析対象購入期間の開始時刻からの差分(アイテムの最古利用時刻と分析対象利用履歴取得の開始時刻との差分)として算出する。上記式(5)によれば、アイテムi,jに、販売開始時刻が最近のアイテムが含まれている場合、その購入時刻も遅くなってt_comp(i,j)の値が大きくなり、最終的に算出されるアイテム間相関値Diff(U,i,j)が小さくなるので、そのようなアイテムがレコメンドされやすい傾向を抑えることができる。
【００５７】
図３は、上記式(4)および(5)によるt_comp(i,j)の算出を概念的に示す説明図である。ここで、上記式(4)のt_comp(i,j)は、min(t_buy(i))とmin(t_buy(j))の間の区間を表す。また、アイテムjの最古購入時刻min(t_buy(j))がアイテムiの最古購入時刻min(t_buy(i))よりも新しく、max(min(t_buy(i)),min(t_buy(j))=min(t_buy(j))となるので、上記式(5)のt_comp(i,j)は、t_startとmin(t_buy(j))の間の区間を表す。
【００５８】
上記実施形態では、t_comp(i,j)を算出するのに、購入履歴データから導出可能なアイテムの最古利用時刻や分析対象利用履歴取得の開始時刻といった指標を利用しているが、その他、アイテムの提供開始時刻に関する情報があれば、その情報を利用し、t_comp(i,j)をアイテムの最古利用時刻とアイテムの提供開始時刻との差分として算出することもできる。具体的には、例えばアイテムi,jの提供開始時刻が分かっている場合、上記式(4)におけるmin(t_buy(i)),min(t_buy(j))に代えてアイテムi,jの提供開始時刻を利用することができる。min(t_buy(i)),min(t_buy(j))の一方だけに提供開始時刻を利用することもできる。また、アイテムi,jの提供開始時刻が同じであれば、上記式(5)におけるt_startに代えてその提供開始時刻を利用することもできる。
【００５９】
次に、アイテム間相関値算出処理(S22)について説明する。図４は、アイテム間相関値算出処理(S22)を示すフローチャートである。
【００６０】
アイテム間相関値算出処理では、ユーザごとに、ユーザが購入した全てのアイテムを分析対象とし、２つのアイテムの全ての組み合わせについて(S42)、上述したアルゴリズムに従って、アイテム間相関値Diff(U,i,j)を算出する(S43)。なお、S44は、S42に戻って、分析対象のアイテム全てについての処理が済むまで繰り返すことを表す。
【００６１】
このアイテム間相関値Diff(U,i,j)を、購入履歴情報取込処理(S21)で取り込まれた購買履歴情報に含まれる全てのユーザについて算出する(S41)。なお、S45は、S41に戻って、全てのユーザについての処理が済むまで繰り返すことを表す。
【００６２】
次に、全ユーザのアイテムi,jに対するアイテム間相関値Diff(U,i,j)の平均値AvgDiff(U,i,j)を算出する(S47)。平均値AvgDiff(U,i,j)は、２つのアイテムの全ての組み合わせごとに算出し(S46)、それぞれアイテム間相関値DB16に格納する(S48)。この結果は、次のレコメンド結果算出処理(S23)にて利用される。なお、S49は、S46に戻って、２つのアイテム全ての組み合わせについての処理が済むまで繰り返すことを表す。
【００６３】
次に、レコメンド結果算出処理(S23)について説明する。図５は、レコメンド結果算出処理(S23)を示すフローチャートである。
【００６４】
レコメンド結果算出処理では、レコメンド対象ユーザUの購入履歴に含まれている購入アイテム群をIＵとし(S51)、それ以外の未購入アイテムkに対するスコアScore(k)を算出する(S53)。スコアScore(k)は、未購入アイテムkと全ての購入済みアイテムiとの間の平均値AvgDiff(i,k)の和として算出できる。このスコアScore(k)を、全ての未購入アイテムについて算出する(S52)。なお、S54は、S52に戻って、未購入アイテム全てについての処理が済むまで繰り返すことを表す。
【００６５】
S52〜S54で全ての未購入アイテムについてのスコアScore(k)が算出されたら、算出されたスコアScore(k)が上位のアイテムあるいはアイテム群をレコメンド結果として出力する(S55)。
【００６６】
図６は、図４に従って算出されるユーザAについてのアイテムi,jに対するアイテム間相関値Diff(U,i,j)を示し、図７は、全ユーザのアイテムi,jに対するアイテム間相関値Diff(U,i,j)の平均値AvgDiff(U,i,j)を示す。なお、Diff(U,j,i)はDiff(U,i,j)と等しく、AvgDiff(U,j,i)はAvgDiff(U,i,j)と等しいので、図示を省略している。
【００６７】
ここでは、ユーザAは、アイテムa〜fのうちa,b,d,e,fを既に購入しており、c,fは未購入であるとする。したがって、アイテムc,fと他のアイテムとの間のアイテム間相関値Diff(U,i,j)は算出されていない。全ユーザのアイテムi,jに対するアイテム間相関値Diff(U,i,j)の平均値AvgDiff(U,i,j)は、全てのアイテム間で算出されている。
【００６８】
この場合、ユーザAの未購入アイテムc,fに対するスコアScore(c),スコアScore(f)はそれぞれ、下記式(6)、(7)で算出される。このうちスコアが大きい方のアイテムがユーザAにレコメンドされる。
【００６９】
【数６】
2008242966.tif 000008
【００７０】
【数７】
2008242966.tif 000009
【００７１】
本発明におけるレコメンド手法は、基本的には単一ユーザの購買履歴内で共起しているアイテムの評価値の差分を算出する処理とみなすことができるので、レコメンド結果算出の処理負担を大幅に軽減できる。
【００７２】
例えば、あるユーザUが購入したアイテムの数をN_Uとすると、アイテム間評価値の算出回数は、N_U*(N_U-1)/2となる。この処理を全ユーザに対して行うので全ユーザ数をKとすると、総計算数は、K*N_U*(N_U-1)/2である。全ユーザの平均購入アイテム数をN_avgとすると、計算量のオーダーは、O(K*(N_avg)２)とみなされる。
【００７３】
一方、全ユーザ間の相関を計算する従来の協調フィルタリングでは、ユーザ間相関の計算回数は、K*(K-1)/2である。ユーザ間相関の計算に、代表的なベクトル類似度に基づく手法を用いた場合、ベクトル(ユーザの購買履歴)間の内積を算出して相関値を求める。ベクトルの内積は、相関値を算出するユーザが共通して購入しているアイテムの評価値同士を掛ければよいので、平均共起購入件数をmとすると、協調フィルタリングにおける総計算量は、(K*(K-1)/2)*mとなり、計算量のオーダーは、O(K２*m)とみなされる。
【００７４】
両手法の計算量を比較すると、本発明における計算量のオーダーは、O(K*(N_avg)２)となるのに対し、従来の協調フィルタリングにおける計算量のオーダーは、O(K２*m)となる。一般的には、m≒N_avg<<Kであるので、本発明のレコメンド手法の方が大幅に計算量が少なくなる。
【００７５】
また、本発明は、SlopeOneアルゴリズムを直接適用することが困難な暗示的な評価履歴のデータであってもレコメンドが可能であるという点で、SlopeOneアルゴリズムより優れている。具体的には、購入時刻情報を利用して暗示的な情報を明示化(実数化)しているだけでなく、２つのアイテムの最古利用時刻の差分あるいは２つのアイテムが利用された最古利用時刻うちの古い方の時刻と分析対象利用履歴取得の開始時刻との差分などのアイテムの最古利用時刻に関する情報により評価値を補正しているので、高精度なレコメンドが可能になる。
【００７６】
以上では、e-コマースサイトなどへの適用を勘案し、使用する履歴データを「購買履歴」として説明したが、本発明は、実際には購買が発生していない履歴データにおいても利用することが可能である。具体的には、例えば、家庭内のテレビに接続されたセットトップボックス(STB)を利用したテレビ番組を含む動画像コンテンツの選択・視聴履歴データなどに基づいて他の動画像コンテンツをレコメンドするシステムやサービスなどへ利用することも可能である。つまり本発明は、ユーザの購買履歴や選択・視聴履歴などの利用履歴情報が蓄積されるレコメンドサービスに広く適用することができる。
【図面の簡単な説明】
【００７７】
【図１】本発明に係るレコメンダシステムの一実施形態を示すブロック図である。
【図２】図１のレコメンドシステムにおける処理を示すフローチャートである。
【図３】アイテムの最古利用時刻に関する情報の算出を概念的に示す説明図である。
【図４】アイテム間相関値算出処理を示すフローチャートである。
【図５】レコメンド結果算出処理を示すフローチャートである。
【図６】図４で算出されるアイテム間相関値の説明図である。
【図７】図４で算出されるアイテム間相関値の平均値の説明図である。
【図８】従来の協調フィルタリングの概念図である。
【図９】SlopeOneアルゴリズムの概念図である。
【符号の説明】
【００７８】
11・・・購入履歴情報収集モジュール、12・・・アイテム間相関値算出モジュール、13・・・レコメンド結果算出モジュール、14・・・レコメンド結果提示モジュール、U・・・ユーザー
【図１】
2008242966.tif 000010
【図２】
2008242966.tif 000011
【図３】
2008242966.tif 000012
【図４】
2008242966.tif 000013
【図５】
2008242966.tif 000014
【図６】
2008242966.tif 000015
【図７】
2008242966.tif 000016
【図８】
2008242966.tif 000017
【図９】
2008242966.tif 000018