以下、図面を参照して、本発明を適用した実施の形態について説明する。
まず、図1および図2を参照して、本発明を適用したコンテンツ推薦システムの概要について説明する。
このコンテンツ推薦システムにおいては、例えば図1に示すように、複数のユーザおよびコンテンツが予め登録されている。なお、図1において、横方向のC1乃至CMはコンテンツを示しており、縦方向のU1乃至UNはユーザを示している。
すなわち、コンテンツ推薦システムには、M個のコンテンツC1乃至コンテンツCMと、N人のユーザU1乃至ユーザUNとが予め登録されている。各ユーザは、登録されているコンテンツのうちのいくつかに対して、そのコンテンツの評価を示す評価値を入力する。例えば、コンテンツの評価は、大嫌い、嫌い、どちらでもない、好き、大好きの5段階とされ、各評価を示す1から5までの数値が評価値として入力される。ここでは、評価値が大きいほどユーザのコンテンツに対する評価が高いものとする。
例えば、図1では、ユーザU4は、コンテンツC1およびコンテンツC5に対して評価を行っており、コンテンツC5の評価値として「5」が入力されている。つまり、ユーザU4のコンテンツC5に対する評価が高いことが分かる。なお、ユーザの評価の対象となるコンテンツは、例えば動画像や書籍など、ユーザの嗜好により評価される評価対象物であればどのようなものであってもよい。
このようにして、各ユーザによりコンテンツに対する評価値が入力されると、ユーザごとのコンテンツに対する評価値を示す情報が得られる。このようにして得られた各ユーザのコンテンツに対する評価値を示す情報は、ユーザ評価行列としてコンテンツ推薦システムに保持される。
コンテンツ推薦システムは、ユーザ評価行列が得られると、ユーザ評価行列における既入力評価値に基づいて、まだ入力されていないコンテンツの評価値を予測(推定)し、予測により得られた予測評価値と、既入力評価値とからなる予測評価行列を生成する。
ここで、既入力評価値とは、ユーザにより入力された評価値をいう。例えば、図1では、ユーザU1のコンテンツC1に対する評価値として「1」が入力されており、この評価値「1」が既入力評価値とされる。また、以下の説明では、ユーザにより入力されていない評価値、つまり図1の空欄の値を未入力評価値と呼ぶこととする。例えば、ユーザU2のコンテンツC1に対する評価値は、実際には入力されていないので存在しないが、ユーザU2のコンテンツC1に対する未入力の評価値を未入力評価値と称する。
このようにして、コンテンツ推薦システムが、ユーザ評価行列における未入力評価値を予測して、その予測結果である予測評価値が得られると、予測評価値と、既入力評価値とからなる予測評価行列が得られる。これにより、例えば、図1のユーザ評価行列から、図2に示す予測評価行列が得られる。なお、図2において、斜線が施されている欄内の評価値は、予測評価値を表している。例えば、図2の予測評価行列では、ユーザU2のコンテンツC1に対する評価値は、予測により得られた予測評価値「2」とされている。
コンテンツ推薦システムは、ユーザ評価行列における各空欄の値、つまり未入力評価値について予測評価値を求めて予測評価行列が得られると、予測評価行列に基づいて、所定のユーザに対して、そのユーザが好むと推定されるコンテンツを示す情報を提示し、コンテンツを推薦する。
例えば、コンテンツ推薦システムは、ユーザU2にコンテンツを推薦する場合、登録されているコンテンツのうち、最も予測評価値の大きいコンテンツをユーザU2に対して推薦する。つまり、コンテンツC1乃至コンテンツCMのうち、ユーザU2の予測評価値が最も大きい値「5」であるコンテンツC5が、ユーザU2の好みのコンテンツであると推定されて、ユーザU2に推薦されることになる。
このように、ユーザ評価行列から予測評価行列を求めて、ユーザにコンテンツを推薦する推薦システムは、例えば、図3に示すように構成される。
図3では、コンテンツ推薦システムは、インターフェース処理装置11と、推薦装置12とから構成され、インターフェース処理装置11および推薦装置12は、相互に接続されている。
インターフェース処理装置11は、ユーザにより操作され、ユーザに対するインターフェース処理を行う。例えば、インターフェース処理装置11は、ユーザにより入力された評価値を推薦装置12に供給したり、推薦装置12から供給された、ユーザに対して推薦されたコンテンツを示す情報を表示したりする。
推薦装置12は、インターフェース処理装置11から供給された評価値に基づいて、ユーザ評価行列を生成するとともに、ユーザ評価行列に基づいて予測評価行列を生成し、ユーザにコンテンツを推薦する。推薦装置12は、入力受付部21、ユーザ評価行列保持部22、学習部23、推定式保持部24、予測評価値算出部25、予測評価行列保持部26、および推薦部27を備えている。
入力受付部21は、ユーザの評価値の入力を受け付ける。すなわち、入力受付部21は、インターフェース処理装置11から供給された評価値をユーザ評価行列保持部22に供給する。ユーザ評価行列保持部22は、入力受付部21から供給された評価値に基づいて、ユーザ評価行列を生成し、保持する。より詳細には、ユーザ評価行列保持部22は、入力受付部21から評価値が供給されるごとに、供給された評価値を用いて、保持しているユーザ評価行列を更新する。また、ユーザ評価行列保持部22は、保持しているユーザ評価行列を学習部23および予測評価値算出部25に供給する。
学習部23は、ユーザ評価行列保持部22から供給されたユーザ評価行列を用いて、ユーザ評価行列から予測評価行列を生成するときに用いられる推定式と、線形結合係数とを生成し、推定式保持部24に供給する。学習部23では、1または複数の推定式と、ユーザごとの線形結合係数とが生成される。推定式保持部24は、学習部23から供給された推定式および線形結合係数を保持し、保持している推定式および線形結合係数を予測評価値算出部25に供給する。
予測評価値算出部25は、ユーザ評価行列保持部22からのユーザ評価行列と、推定式保持部24からの推定式および線形結合係数とを用いて、ユーザ評価行列における未入力評価値に対する予測評価値を算出し、予測評価行列保持部26に供給する。
予測評価行列保持部26は、予測評価値算出部25からの予測評価値に基づいて、予測評価行列を生成して保持するとともに、保持している予測評価行列を推薦部27に供給する。推薦部27は、予測評価行列保持部26から供給された予測評価行列に基づいて、所定のユーザに対して推薦するコンテンツを検索し、その結果得られたコンテンツを示す推薦情報をインターフェース処理装置11に供給する。
図4は、図3の予測評価値算出部25の詳細な構成例を示すブロック図である。
予測評価値算出部25は、仮予測部51および予測部52を備えており、仮予測部51には、ユーザ評価行列保持部22および推定式保持部24からユーザ評価行列および推定式が供給され、予測部52には、推定式保持部24から線形結合係数が供給される。
ここで、推定式は、例えば協調フィルタリング(Collaborative Filtering)アルゴリズムにより、未入力評価値の予測評価値を求める演算を行うための演算式である。換言すれば、協調フィルタリングアルゴリズムを用いた所定の推定方法により予測評価値を求めるための演算式が、推定式とされる。また、推定式に対応するユーザごとの線形結合係数は、複数の推定式による予測結果を線形結合するときに用いられる係数である。
仮予測部51は、供給されたユーザ評価行列と推定式とを用いて、ユーザ評価行列における未入力評価値の仮の予測評価値を算出し、予測部52に供給する。より詳細には、仮予測部51は、ユーザ評価行列と同一の行列(情報)を仮予測行列とし、推定式を用いて仮予測行列に対する演算を行う。そして、仮予測部51は、仮予測行列のうちの1人のユーザの各コンテンツに対する評価値からなる情報を仮ユーザ予測行列とする。
したがって、仮ユーザ予測行列は、1人のユーザのコンテンツに対する既入力評価値と、仮の予測評価値とからなり、仮予測行列は各ユーザの仮ユーザ予測行列からなる。
例えば図1のユーザ評価行列が供給されたとすると、仮予測部51は、ユーザU1の未入力評価値について、つまりコンテンツC3およびコンテンツC5乃至コンテンツCMについて、1つの推定式Fkを用いてユーザU1の仮の予測評価値を求める。そして、仮予測部51は、コンテンツC1、コンテンツC2、およびコンテンツC4の既入力評価値と、コンテンツC3およびコンテンツC5乃至コンテンツCMの仮の予測評価値とからなる情報を、推定式Fkに対するユーザU1の仮ユーザ予測行列として予測部52に供給する。
したがって、例えば、仮予測部51にK個の推定式F1乃至推定式FKが供給された場合、仮予測部51から予測部52には、各ユーザU1乃至ユーザUNについて求められた、推定式Fk(但し1≦k≦K)ごとの仮ユーザ予測行列Tnk(但し1≦k≦K,1≦n≦N)が供給される。つまり、合計N×K個の仮ユーザ予測行列Tnkが予測部52に供給される。
予測部52は、仮予測部51からの仮の予測評価値と、推定式保持部24から供給された線形結合係数とを用いて最終的な予測評価値を求め、予測評価行列保持部26に供給する。より詳細には、予測部52は、ユーザごとの仮ユーザ予測行列をユーザごとの線形結合係数を用いて線形結合し、その結果得られたユーザ予測行列を予測評価行列保持部26に供給する。
例えば、ユーザUn(但し、1≦n≦N)について得られたK個の仮ユーザ予測行列Tn1乃至仮ユーザ予測行列TnKが、ユーザUnの線形結合係数により線形結合されて、ユーザUnのユーザ予測行列Anとされる。そして、N人のユーザについて求められた、合計N個のユーザ予測行列A1乃至ユーザ予測行列ANが予測評価行列保持部26に供給され、それらのユーザ予測行列からなる予測評価行列が生成される。
次に、図5は、図3の学習部23のより詳細な構成例を示すブロック図である。
学習部23は、遺伝的探索手法(Genetic Programming)により、予測評価行列を生成するのにより適した推定式および線形結合係数を生成する。換言すれば、学習部23は、遺伝的探索手法により、協調フィルタリングアルゴリズムを利用した推定式と、線形結合係数とを最適化することで、ユーザがより好むと推定されるコンテンツを、ユーザに対して推薦する推薦アルゴリズムを人手によらず構築する。
学習部23は、候補生成部91、推定結果計算部92、グループ生成部93、および推定式選別部94から構成され、ユーザ評価行列保持部22からのユーザ評価行列は、推定結果計算部92乃至推定式選別部94に供給される。
候補生成部91は、推定式選別部94から供給されたK個の推定式F1乃至推定式FKを用いて、新たな推定式の候補である推定式候補J1乃至推定式候補JS(但し、K≦S)を生成し、推定結果計算部92に供給する。つまり、候補生成部91は、遺伝的探索手法における前世代の推定式から、次世代の推定式の候補であるS個の推定式候補を生成する。
候補生成部91は、突然変異処理部111、交差処理部112、およびランダム処理部113を備えている。
突然変異処理部111は、推定式選別部94から供給された推定式を用いて突然変異処理を行うことにより、推定式候補を生成する。ここで、突然変異処理とは、1つの推定式の一部分を変更することにより、1つの新たな推定式を生成する処理をいう。
交差処理部112は、推定式選別部94から供給された推定式を用いて交差処理を行うことにより、推定式候補を生成する。ここで、交差処理とは、1つの推定式の一部分を、他の1つの推定式の一部分に変更することにより、1つの新たな推定式を生成する処理をいう。つまり交差処理では、1つの推定式の一部分が他の推定式の一部分に組み替えられることになる。
ランダム処理部113はランダム処理を行うことにより、推定式候補を生成する。ここで、ランダム処理とは、無作為に選択された演算子等を組み合わせることにより、1つの新たな推定式を生成する処理をいう。つまりランダム処理によれば、前世代の推定式が全く用いられずに、任意の新たな推定式候補が生成される。
候補生成部91は、推定式選別部94から供給された前世代の推定式と、突然変異処理、交差処理、およびランダム処理により生成された新たな推定式とからなる合計S個の推定式を、推定式候補として推定結果計算部92に供給する。
推定結果計算部92は、ユーザ評価行列保持部22から供給されたユーザ評価行列と、候補生成部91から供給された推定式候補とを用いて、推定式候補Js(但し、1≦s≦S)ごとに、ユーザ評価行列における評価値の推定を行い、その推定結果Hs(但し、1≦s≦S)を推定式選別部94に供給する。
すなわち、推定結果計算部92は、ユーザ評価行列と同一の行列(情報)を1つの推定式候補に対する推定結果(の行列)とし、その推定式候補を用いて、推定結果(ユーザ評価行列)における各ユーザの各コンテンツに対する評価値を推定する。そして、推定結果計算部92は、推定により各評価値が得られた推定結果を、用いた推定式候補に対する最終的な推定結果とする。したがって、推定結果計算部92から推定式選別部94には、推定式候補の数だけ推定結果が供給されることになる。
グループ生成部93は、ユーザ評価行列保持部22から供給されたユーザ評価行列を用いて、予め登録されているユーザU1乃至ユーザUNについてグループ分けを行い、各ユーザグループと、そのユーザグループに属すユーザとを示すユーザグループ情報を推定式選別部94に供給する。
例えば、グループ生成部93には、必要に応じて、各ユーザの年齢、性別、住所、好みのジャンル等を示す情報であるユーザプロファイルが供給される。グループ生成部93は、供給されたユーザプロファイルを適宜用いて、ユーザU1乃至ユーザUNのそれぞれが、予め定められたユーザグループG1乃至ユーザグループGQのうちの何れかのユーザグループに属すようにグルーピングを行う。
推定式選別部94は、ユーザ評価行列保持部22からのユーザ評価行列、推定結果計算部92からの推定結果Hs、およびグループ生成部93からのユーザグループ情報を用いて、次世代の推定式および線形結合係数を生成し、候補生成部91および推定式保持部24に供給する。
推定式選別部94は、結合係数算出部114、評価部115、および選択部116を備えている。
結合係数算出部114は、S個の推定結果のうちのいくつかを選択し、選択した推定結果のそれぞれを求めるのに用いた推定式候補のそれぞれの組み合わせを、推定式として採用すると仮定する。そして、結合係数算出部114は、供給されたユーザ評価行列、推定結果、およびユーザグループ情報を用いて、推定式候補の組み合わせを推定式とした場合におけるユーザグループごとの線形結合係数を、線形結合係数の候補である線形結合係数候補として求める。
評価部115は、結合係数算出部114により求められた、推定式候補の組み合わせと、線形結合係数候補とについて、推定式候補および線形結合係数候補に対する評価を求める。つまり、これらの推定式候補および線形結合係数候補が、予測評価行列の生成により適したものであるほど、その評価は高くなる。例えば、推定式候補および線形結合係数候補に対する評価指標として、情報量基準が算出される。
選択部116は、いくつか求められた、推定式候補の組み合わせと線形結合係数候補とのうち、最も評価の高い推定式候補の組み合わせと線形結合係数候補とを選択し、次の世代の推定式および線形結合係数として採用する。
推定式選別部94は、選択部116により選択された、次世代の推定式および線形結合係数を、候補生成部91および推定式保持部24に供給する。ここで、各世代の推定式の個数Kは常に一定の数になるとは限らず、1から、Kの上限の数Kmaxまでの間で世代ごとに変動する。
ところで、コンテンツ推薦システムに予め登録されているユーザUn(但し、1≦n≦N)が、インターフェース処理装置11を操作して、所定のコンテンツCm(但し、1≦m≦M)に対する評価値を入力すると、入力された評価値はインターフェース処理装置11から入力受付部21に供給される。すると、推薦装置12により、ユーザ評価行列を更新するユーザ評価行列の更新処理が開始される。以下、図6のフローチャートを参照して、推薦装置12によるユーザ評価行列の更新処理について説明する。
ステップS11において、入力受付部21は、インターフェース処理装置11から、ユーザにより入力された評価値を取得する。そして、入力受付部21は、取得した評価値をユーザ評価行列保持部22に供給する。
ステップS12において、ユーザ評価行列保持部22は、入力受付部21から供給された評価値に基づいて、保持しているユーザ評価行列を更新し、ユーザ評価行列の更新処理は終了する。例えば、ユーザ評価行列保持部22が図1に示したユーザ評価行列を保持しており、入力受付部21からユーザU1のコンテンツC3に対する評価値が供給された場合、ユーザ評価行列保持部22は、保持しているユーザ評価行列における、ユーザU1とコンテンツC3とにより特定される欄に、供給された評価値を書き込んでユーザ評価行列を更新する。
このようにして推薦装置12は、保持しているユーザ評価行列を更新する。このように、ユーザにより評価値が入力されるごとにユーザ評価行列を更新することで、より確からしい予測評価行列を得ることができるようになる。
予測評価値算出部25では、このようにして随時、更新されていくユーザ評価行列と、推定式保持部24からの推定式および線形結合係数とが用いられて、予測評価値の計算が行われる。
ところで、予測評価値の計算に用いられる推定式は、例えば図7に示すように、ユーザのコンテンツに対する評価の推定に用いられる、基本的なアルゴリズムによる演算を行うための演算子、つまりオペレータの組み合わせで構成される。また、推定式には、協調フィルタリングの演算、つまり協調フィルタリングアルゴリズムに従った演算を行う演算子が少なくとも1つ含まれている。
図7に示される推定式のW11乃至W14の部分には、それぞれ1つのオペレータが含まれており、推定式は、それらのオペレータの組み合わせにより構成される。例えば、W11の部分には、処理軸パラメータ「U#」と、オペレータ「Normalize Avg」とが含まれている。
ここで、処理軸パラメータとは、ユーザ評価行列(仮予測行列)の評価値(既入力評価値または未入力評価値の少なくとも何れか一方の評価値)のうち、処理の対象となる評価値を特定する情報である。すなわち、処理軸パラメータ「U#」は、同じユーザの評価値が処理対象とされることを示している。例えば、ユーザU1のコンテンツC1乃至コンテンツCMに対する評価値が処理の対象となる。また、オペレータ「NormalizeAvg」は、ユーザ評価行列における評価値を、評価値の平均値により正規化することを示している。
推定式におけるW12の部分には、同じコンテンツに対する評価値を処理の対象とすることを示す処理軸パラメータ「C#」と、ユーザ評価行列(仮予測行列)における空欄、つまり未入力評価値の欄を評価値の平均値で埋めることを示すオペレータ「FillAvg」とが含まれている。
また、推定式のW13の部分には、同じユーザの評価値を処理対象とした後、さらに同じコンテンツに対する評価値を処理対象とすることを示す処理軸パラメータ「U;C#」と、ピアソン相関の高い順に8人のユーザの評価値から予測評価値を算出するオペレータ「CF‐Pearson(8)」とが含まれている。このオペレータにより実行されるピアソン相関を利用した演算は、協調フィルタリングアルゴリズムの代表的な例である。
なお、オペレータ「CF‐Pearson(8)」における数字「8」は、オペレータによる演算処理における変数の値を示すパラメータを示している。つまり、ここでは、パラメータ「8」は、8人のユーザの評価値を用いることを示している。
さらに、推定式のW14の部分には、各評価値の平方根を求めることを示すオペレータ「Sqrt」が含まれている。
このように、複数のオペレータからなる推定式は、図中、左側のオペレータから右端のオペレータまで順番に演算が行われていく。すなわち、図7に示す推定式によれば、まずユーザごとにユーザ評価行列(仮予測行列)の既入力評価値が正規化され、コンテンツごとの評価値の平均が、そのコンテンツの未入力評価値とされる。そして、ユーザ同士のピアソン相関が求められ、ユーザごとに、そのユーザとピアソン相関の高い8人のユーザの評価値から、そのユーザの未入力評価値が求められ、最後に各評価値の平方根が求められ、求められた値が最終的な既入力評価値または予測評価値とされる。
このように、ユーザ評価行列(仮予測行列)における既入力評価値は、推定式に含まれるオペレータによっては、オペレータの演算処理により加工される場合がある。
また、推定式に含まれるオペレータには、例えば図8に示すものが考えられる。図8では、図中、左側のオペレータ名の欄にはオペレータが示されており、右側の処理内容の欄には、左側の欄のオペレータにより示される演算の処理内容が示されている。
すなわち、オペレータ「NormalizeMaxMin」は、評価値を最大値および最小値により正規化するオペレータであり、オペレータ「NormalizeAvg」は、評価値の平均値により評価値を正規化するオペレータである。
また、オペレータ「FillMax」は、ユーザ評価行列の空欄を評価値の最大値で埋めるオペレータであり、オペレータ「FillMin」は、ユーザ評価行列の空欄を評価値の最小値で埋めるオペレータである。さらに、オペレータ「FillMedian」は、ユーザ評価行列の空欄を評価値の中央値で埋めるオペレータであり、オペレータ「FillAvg」は、ユーザ評価行列の空欄を評価値の平均値で埋めるオペレータである。
さらに、オペレータ「CF‐Correl(num)」は、コサイン距離による相関の高い方からnum個の評価値の平均値を予測評価値とするオペレータであり、オペレータ「CF‐Pearson(num)」は、ピアソン相関の高い方からnum個の評価値の平均値を予測評価値とするオペレータである。さらに、また、オペレータ「CF‐Euclid(num)」は、ユークリッド距離の近い方からnum個の評価値の平均値を予測評価値とするオペレータである。ここで、オペレータ「CF‐Correl(num)」、オペレータ「CF‐Pearson(num)」、およびオペレータ「CF‐Euclid(num)」における「num」は、パラメータを表している。
また、オペレータには、対数を演算するオペレータ「Log」、指数関数を演算するオペレータ「Exp」、平方根を演算するオペレータ「Sqrt」などの指数関数に関する演算を行うものがある。さらにオペレータには、正弦関数の演算を行うオペレータ「Sin」、余弦関数の演算を行うオペレータ「Cos」、正接関数の演算を行うオペレータ「Tan」などの三角関数の演算を行うものなどもある。
なお、ユーザ評価行列(仮予測行列Tkまたは推定結果Hs)の空欄を埋めるオペレータ、つまり未入力評価値の予測評価値を求めるオペレータの演算においては、演算対象の欄の評価値は、その欄の予測評価値を求める演算には用いられないものとする。
このようなオペレータを組み合わせてできる推定式の他の例として、例えば、図9A乃至図9Cに示す推定式がある。
図9Aに示す推定式では、まずユーザ評価行列(仮予測行列)の評価値が、ユーザごとに0から1までの値に正規化された後、各評価値に対して正弦関数の演算が行われ、ユーザ同士のコサイン距離が求められる。そして、各ユーザについて、コンテンツCmを評価しているユーザのうち、処理対象のユーザと最もコサイン距離による相関の高い1人のユーザのコンテンツCmに対する評価値が、その処理対象のユーザのコンテンツCmに対する予測評価値とされる。
また、図9Bに示す推定式では、ユーザが評価したコンテンツのうち、処理対象のコンテンツと最もユークリッド距離による相関の高い3つのコンテンツが選択され、選択されたコンテンツに対するユーザの評価値の平均値が、処理対象のコンテンツの予測評価値とされる。
さらに、図9Cに示す推定式では、ユーザ評価行列(仮予測行列)の各評価値に対して対数関数の演算が行われ、コンテンツごとに、コンテンツに対する各ユーザの評価値の平均値が求められ、求められた平均値がコンテンツの予測評価値とされる。
推薦装置12では、以上において説明した推定式と、線形結合係数とを用いてユーザ評価行列における未入力評価値の予測評価値を求めることにより、各ユーザにコンテンツを推薦することが可能となる。
例えば、推薦装置12は、定期的に、またはインターフェース処理装置11からの指示に応じて推薦処理を行い、ユーザに対して推薦するコンテンツを示す推薦情報を生成する。以下、図10のフローチャートを参照して、推薦装置12による推薦処理について説明する。
ステップS41において、予測評価値算出部25は、推定式保持部24から供給された推定式Fk(但し、1≦k≦K)を特定するための推定式パラメータkを1とする。すなわち、推定式パラメータkを1とすると、推定式パラメータk=1により推定式F1が特定され、推定式F1が処理に用いられる。
ステップS42において、仮予測部51は、ユーザU1乃至ユーザUNのコンテンツに対する評価値を示す仮予測行列Tkに、ユーザ評価行列保持部22から供給されたユーザ評価行列の評価値を代入する。すなわち、ユーザ評価行列と同一の情報(行列)が、推定式Fkに対する仮予測行列Tk(但し、1≦k≦K)とされる。例えば、推定式パラメータk=1である場合、ユーザ評価行列と同一の情報が、推定式F1に対する仮予測行列T1とされる。
ステップS43において、仮予測部51は、処理に用いる推定式として選択されている推定式Fkを構成する1つのオペレータを選択する。例えば、図7に示す推定式が推定式Fkとして供給された場合、図7中、左側のオペレータから右側のオペレータまで、右方向に順番に選択されていく。したがって、例えば図7の推定式においては、オペレータ「NormalizeAvg」が最初に選択される。
ステップS44において、仮予測部51は仮予測行列Tkに対して、選択したオペレータにより示される演算処理を施す。
ステップS45において、仮予測部51は処理に用いる推定式Fk、つまり推定式パラメータkにより特定される推定式Fkについて、推定式Fkを構成する全てのオペレータによる演算処理を行ったか否かを判定する。
ステップS45において、全てのオペレータによる演算処理を行っていないと判定された場合、つまりまだ全てのオペレータが選択されていない場合、処理はステップS43に戻り、上述した処理が繰り返される。すなわち、推定式Fkを構成する次のオペレータが選択されて、そのオペレータによる演算処理が行われる。
これに対して、ステップS45において、全てのオペレータによる演算処理を行ったと判定された場合、処理に用いる推定式Fkを用いて仮予測行列Tkに対する演算が行われたので、仮予測部51は、推定式Fkを用いて演算処理が施された仮予測行列Tkを、予測部52に供給する。そして、その後、処理はステップS46に進む。
すなわち、例えば図7の推定式Fkが選択されていたとすると、推定式Fkに含まれる4つのオペレータが順番に選択されて仮予測行列Tkに対する演算が行われたことになる。
より具体的には、図1のユーザ評価行列が供給され、図7に示す推定式Fkが選択されたとすると、図11の図中、左側に示すように図1のユーザ評価行列と同一の情報が仮予測行列Tkとされる。そして、仮予測行列Tkに対して図7のW11の部分に含まれるオペレータによる演算が行われ、各ユーザについて、ユーザの各コンテンツに対する評価値の平均値が1となるように、ユーザごとに評価値が正規化される。これにより、図11中、右側に示す仮予測行列Tkが得られる。
例えば、正規化前の仮予測行列TkにおいてユーザU1に注目すると、ユーザU1によりコンテンツC1、コンテンツC2、およびコンテンツC4に対して評価値「1」、「2」、および「4」が入力されている。そこで、仮予測部51は、これらのコンテンツに対する評価値の平均値が1となるように、コンテンツC1、コンテンツC2、およびコンテンツC4の評価値を正規化する。
これにより、例えば図11中、右側に示すように、オペレータの演算後におけるユーザU1のコンテンツC1に対する評価値として、評価値「0.43」(0.43≒1×3/(1+2+4))が得られる。
このようにして、図7の推定式FkのW11の部分に含まれるオペレータの演算が行われると、次に、W12の部分に含まれるオペレータが選択され、図12に示すように、そのオペレータによる演算が仮予測行列Tkに施される。
すなわち、図12中、左側に示される、評価値が正規化された仮予測行列Tkにおける空欄が、各コンテンツの評価値の平均値で埋められ、図中、右側に示す仮予測行列Tkが得られる。例えば、正規化された仮予測行列TkにおいてコンテンツC1に注目すると、ユーザU1、ユーザU4、およびユーザU6により評価がされており、それらの評価値は、「0.43」、「0.89」、および「0.57」となっている。
そこで仮予測部51は、それらの評価値の平均値を求め、仮予測行列TkのコンテンツC1に対する評価値のうちの未入力評価値の予測評価値を、求められた平均値「0.63」(0.63≒(0.43+0.89+0.57)÷3)とする。これにより、図中、右側に示すように、ユーザU1、ユーザU4、およびユーザU6を除く、他の全てのユーザのコンテンツC1に対する評価の欄が予測評価値「0.63」で埋められる。なお、図12中、右側に示す仮予測行列Tkにおいて、斜線の施されている欄は、未入力評価値に対する予測評価値で埋められた欄を示している。
図7のW12の部分の演算が行われると、さらにW13の部分に含まれるオペレータが選択され、選択されたオペレータによる演算が仮予測行列Tkに施される。つまり、まず、各コンテンツについて、コンテンツに対する評価を行ったユーザ同士のピアソン相関が計算される。
例えば、仮予測行列の空欄が埋められた結果、図13に示す仮予測行列が得られたとする。なお、図13において、斜線が施されている欄は、未入力評価値に対する予測評価値で埋められた欄を示している。仮予測部51が仮予測行列において、ユーザU2のコンテンツC1に対する評価(予測評価値)に注目し、ユーザU2と、コンテンツC1に対する評価を行った他のユーザとのピアソン相関を求めるものとする。
そのような場合、コンテンツC1に対して評価値を入力したユーザは、ユーザU1、ユーザU4、およびユーザU6であるので、それらのユーザと、ユーザU2とのピアソン相関が求められる。例えば、ユーザU1とユーザU2とのピアソン相関が求められる場合、ユーザU1のコンテンツC2乃至コンテンツCMに対する評価値(既入力評価値または予測評価値)と、ユーザU2のコンテンツC2乃至コンテンツCMに対する評価値とが用いられてピアソン相関が求められる。
図13では、図中、右側に示されるように、ユーザU2と、ユーザU1、ユーザU4、およびユーザU6とのピアソン相関の度合いを示す相関値「0.593014」、「0.83773」、および「0.761491」が得られている。
ユーザごとに、そのユーザが評価を行っていないコンテンツについて、ユーザと、コンテンツに対する評価を行った他のユーザとのピアソン相関が求められると、仮予測部51は、得られた相関値に基づいて、評価値のソートを行う。つまり、仮予測部51は、ユーザごとに、そのユーザが評価を行っていないコンテンツについて、他のユーザの評価値を相関値の高い順に並べる。
例えば、ユーザU2のコンテンツC1に対する評価に注目した場合、図14に示すように、ユーザU2とのピアソン相関の高い順に各ユーザの評価値が並べられる。図14では、図中、右側にユーザU2とのピアソン相関の相関値が示されている。仮予測部51は、他のユーザの評価値を相関値の高い順に並べると、注目しているユーザとの相関の高い順に8人のユーザを選択し、選択された8人のユーザの注目しているコンテンツに対する評価値の平均値を求める。そして、仮予測部51は、求めた平均値を、注目しているユーザの注目しているコンテンツに対する予測評価値とする。
したがって、例えば、図14の例では、ユーザU2との相関の高い8人のユーザU124、ユーザU987、ユーザU25、ユーザU539、ユーザU235、ユーザU1694、ユーザU206、およびユーザU83が選択される。そして、それらの選択されたユーザのコンテンツC1に対する評価値「0.55」、「0.83」、「0.9」、「1.21」、「0.41」、「0.88」、「0.52」、および「0.46」の平均値が求められる。さらに、仮予測部51は、求められた平均値「0.72」(0.72=(0.55+0.83+0.9+1.21+0.41+0.88+0.52+0.46)/8)を、ユーザU2のコンテンツC1に対する予測評価値とする。
このように、図7の推定式FkのW13の部分の演算が行われ、各ユーザについて、未評価のコンテンツに対する予測評価値が求められると、図15に示す仮予測行列Tkが得られる。なお、図15において、斜線が施されている欄は、未入力評価値に対する予測評価値で埋められた欄を示している。
図15の仮予測行列Tkでは、ユーザU2のコンテンツC1に対する評価の欄は、上述した図7の推定式FkのW13の部分の演算により求められた、相関の高い上位8人のユーザの評価値の平均値「0.72」で埋められている。また、各ユーザについて、未評価のコンテンツの欄が、ピアソン相関を用いて求められた予測評価値で埋められている。
仮予測行列Tkに対して、図7の推定式FkのW13の部分の演算が行われると、さらに、仮予測部51は、図7の推定式FkのW14に示されるオペレータの演算を、仮予測行列Tkに施す。これにより、図16に示すように、図中、左側の仮予測行列Tkの各欄の評価値の平方根が求められ、図中、右側に示す仮予測行列Tkが得られる。なお、図16において、斜線が施されている欄は、未入力評価値に対する予測評価値で埋められた欄を示している。
例えば、仮予測行列TkにおけるユーザU1のコンテンツC1に対する評価の欄に注目すると、図中、左側に示される仮予測行列Tkの欄の評価値「0.43」の平方根が求められ、求められた平方根の値「0.66」(0.66≒(0.43)1/2)で、図中、右側に示される仮予測行列Tkの欄が埋められている。
図10のフローチャートの説明に戻り、以上のように推定式Fkを構成する全てのオペレータの演算が行われると、ステップS45において、全てのオペレータによる演算処理を行ったと判定され、処理はステップS46に進む。
ステップS46において、仮予測部51は、供給された全ての推定式Fkについて、仮予測行列Tkを求めたか否か、つまり全ての仮予測行列Tkに対して、対応する推定式Fkを用いた演算を行ったか否かを判定する。例えば、仮予測部51が保持している推定式パラメータが、供給された推定式の数Kである場合に、全ての推定式Fkについて仮予測行列Tkを求めたと判定される。
ステップS46において、まだ全ての推定式Fkについて仮予測行列Tkを求めていないと判定された場合、仮予測部51は、保持している推定式パラメータkをインクリメントし、その後、処理はステップS42に戻る。推定式パラメータがインクリメントされると、推定式パラメータにより特定される新たな推定式Fkが選択され、選択された推定式Fkが用いられて仮予測行列Tkに対する処理が行われる。
一方、ステップS46において、全ての推定式Fkについて仮予測行列Tkを求めたと判定された場合、処理はステップS47に進む。全ての推定式Fkについて仮予測行列Tkを求めたと判定された場合には、例えば、図17に示すように、供給されたK個の推定式F1乃至推定式FKのそれぞれに対して、対応するK個の仮予測行列T1乃至仮予測行列TKのそれぞれが生成されたことになる。つまり、K通りの推定方法のそれぞれにより、合計K個の仮予測行列のそれぞれが生成されたことになる。
ステップS47において、予測部52は、仮予測部51からの仮予測行列Tkと、推定式保持部24からの線形結合係数とを用いて、ユーザUn(但し、1≦n≦N)の各コンテンツに対する最終的な予測評価値を算出する。
すなわち、予測部52は、予め登録されているユーザU1乃至ユーザUNのうちの1人のユーザUnを選択する。例えば、ユーザU1からユーザUNまで順番に選択されていく。そして、予測部52は、仮予測部51から供給された仮予測行列Tkにおける、選択したユーザUnの各コンテンツに対する評価値のそれぞれからなる情報を、仮ユーザ予測行列Tnkとして抽出する。これにより、K個の仮予測行列Tkのそれぞれから、ユーザUnの合計K個の仮ユーザ予測行列Tnkのそれぞれが得られることになる。
さらに、予測部52は、図18に示すように、得られたK個の仮ユーザ予測行列Tn1乃至仮ユーザ予測行列TnKを、推定式保持部24からのユーザUnの線形結合係数bnk(但し、0≦k≦K)を用いて線形結合する。これにより、ユーザUnの最終的な予測評価値と既入力評価値(演算により加工された既入力評価値)とからなるユーザ予測行列Anが得られる。
より具体的には、予測部52は、次式(1)を演算することにより、ユーザUnのユーザ予測行列Anを求める。
なお、式(1)において、(Σbnk×Tnk)は、線形結合係数bnkおよび仮ユーザ予測行列Tnkの変数kを1からKまで変えて、線形結合係数bnkが乗算された仮ユーザ予測行列Tnkの総和を求めることを示している。また、線形結合係数bn1乃至線形結合係数bnKは、仮ユーザ予測行列Tn1乃至仮ユーザ予測行列TnKに対応する線形結合係数であり、線形結合係数bn0は、仮ユーザ予測行列Tnkの線形和に加算される係数である。
したがって、線形結合係数bnkが乗算された仮ユーザ予測行列Tnkの総和に、線形結合係数bn0を加算することにより、ユーザUnのユーザ予測行列Anが求められる。例えば、ユーザUnのコンテンツCmに対する最終的な予測評価値は、仮ユーザ予測行列TnkのそれぞれにおけるユーザUnのコンテンツCmに対する予測評価値のそれぞれに、線形結合係数bnkのそれぞれが乗算されて、線形結合係数bnkが乗算された予測評価値の総和が求められ、さらにその総和に線形結合係数bn0が加算されたものとされる。
予測部52は、ユーザ予測行列Anを求めると、求めたユーザ予測行列Anを予測評価行列保持部26に供給する。
ステップS48において、予測部52は、全てのユーザについてユーザ予測行列Anを求めたか否かを判定する。ステップS48において、まだ全てのユーザについてユーザ予測行列Anを求めていないと判定された場合、処理はステップS47に戻り、まだ選択されていないユーザUnが選択されて、そのユーザUnのユーザ予測行列Anが求められる。
これに対して、ステップS48において、全てのユーザについてユーザ予測行列Anを求めたと判定された場合、処理はステップS49に進む。全てのユーザU1乃至ユーザUNについてのユーザ予測行列A1乃至ユーザ予測行列ANが、予測部52から予測評価行列保持部26に供給されると、予測評価行列保持部26は、供給されたN個のユーザ予測行列A1乃至ユーザ予測行列ANからなる、1つの予測評価行列Aを生成する。そして、予測評価行列保持部26は、生成した予測評価行列Aを保持するとともに、予測評価行列Aを推薦部27に供給する。
ステップS49において、推薦部27は、予測評価行列保持部26から供給された予測評価行列に基づいてユーザにコンテンツを推薦し、推薦処理は終了する。例えば、推薦部27は、各ユーザUnについて、ユーザUnの予測評価値の最も高いコンテンツを、そのユーザUnに推薦するコンテンツとして、推薦するコンテンツを示す推薦情報を生成する。そして、推薦部27は、生成した推薦情報をインターフェース処理装置11に供給して表示させる。これにより、ユーザは、表示された推薦情報を見ることで、興味のありそうな新たなコンテンツを探し出すことができる。
以上のようにして、推薦装置12は、複数の推定式を用いて、それらの推定式に対応する仮予測行列を生成し、仮予測行列を線形結合係数により線形結合することにより、最終的な予測評価行列を生成する。
このように、複数の推定式に対応する、複数の仮予測行列を線形結合係数により線形結合することで、複数のアルゴリズムにより得られる推薦結果のそれぞれを考慮して、ユーザがより好むと推定されるコンテンツを、より高い精度で検出できるようになる。
例えば、所定のユーザUnに対して、ユーザUnが好むと推定されるコンテンツを検出したい場合に、全体のユーザが高く評価するコンテンツを抽出する推定式F1と、ユーザUnとの相関の高いユーザが高く評価するコンテンツを抽出する推定式F2とがあるとする。この場合、仮に推定式F1だけを用いてユーザUnに推薦するコンテンツを検出すると、検出により得られるコンテンツは、ユーザ全体での評価が高くても、ユーザUnの好みのものであるとは限らない。
逆に、推定式F2だけを用いてユーザUnに推薦するコンテンツを検出すると、ユーザ全体が考慮されずに、一部のユーザの好みだけが考慮されてコンテンツの検索が行われるため、やはり検出により得られるコンテンツは、ユーザUnが好むものとなるとは限らない。
これに対して、推薦装置12では、学習部23により最適化された複数の推定式を用いて、それらの推定式による推定結果を線形結合することで最終的な推定結果が求められる。そのため、ユーザ全体や、ユーザUnとの相関の高いユーザなど、複数の推定方法が考慮されて最終的な推定結果(予測評価行列)が得られることになり、ユーザUnが好むと推定されるコンテンツを、より精度よく得ることができるようになる。
ところで、予測評価行列の生成に用いられる各世代の推定式および線形結合係数は、学習部23が前世代の推定式を用いた学習処理を行うことにより、順次、生成されていく。以下、図19のフローチャートを参照して、学習部23による学習処理について説明する。
ステップS81において、候補生成部91は、推定式選別部94から供給された前世代のK個の推定式を用いて推定式候補生成処理を行い、次世代の推定式の候補であるS個の推定式候補Jsを生成する。そして、候補生成部91は、生成した推定式候補Jsを推定結果計算部92に供給する。
ステップS82において、推定結果計算部92は、候補生成部91からの推定式候補Jsと、ユーザ評価行列保持部22からのユーザ評価行列とを用いて推定処理を行い、ユーザ評価行列における各評価値を推定して、推定式候補ごとの推定結果Hsを算出する。推定結果計算部92は、算出したS個の推定結果Hsおよび推定式候補Jsを推定式選別部94に供給する。
なお、推定式候補生成処理および推定処理の詳細は後述する。
ステップS83において、グループ生成部93は、ユーザ評価行列保持部22から供給されたユーザ評価行列に基づいて、ユーザのクラスタリングを行う。すなわち、グループ生成部93は、必要に応じて供給されるユーザプロファイルを用いて、予め登録されたユーザU1乃至ユーザUNのそれぞれを、予め定められたQ個のユーザグループG1乃至ユーザグループGQの何れかに分類する。
例えば、グループ生成部93は、供給されたユーザ評価行列の各ユーザのコンテンツに対する評価値に基づいて、K−means法によりクラスタリングを行って、ユーザU1乃至ユーザUNのグループ分けを行う。これにより、図20に示すように、各ユーザがユーザグループG1乃至ユーザグループGQのうちの何れかのユーザグループに分類される。例えば、図20では、ユーザU1、ユーザU3、ユーザU10、およびユーザU1520はユーザグループG1に属すようにグループ分けされている。
図19のフローチャートの説明に戻り、グループ生成部93は、ユーザのグループ分けを行うと、そのグループ分けの結果を示すユーザグループ情報を推定式選別部94に供給する。
ステップS84において、推定式選別部94は、ユーザ評価行列保持部22からのユーザ評価行列、推定結果計算部92からの推定結果Hsおよび推定式候補Js、並びにグループ生成部93からのユーザグループ情報を用いて推定式選別処理を行い、次世代の推定式および線形結合係数を生成する。そして、推定式選別部94は、生成した推定式および線形結合係数を候補生成部91および推定式保持部24に供給する。推定式保持部24は、推定式選別部94からの推定式および線形結合係数を保持する。なお、推定式選別処理の詳細は後述する。
ステップS85において、学習部23は、次世代の推定式および線形結合係数を生成する処理を終了するか否かを判定する。例えば、コンテンツ推薦システムの動作の停止が指示された場合、処理を終了すると判定される。
ステップS85において、処理を終了しないと判定された場合、処理はステップS81に戻り、次の世代の推定式および線形結合係数が生成される。
これに対して、ステップS85において、処理を終了すると判定された場合、学習部23の各部は行っている処理を停止して、学習処理は終了する。
このようにして、学習部23は、前世代の推定式を用いて遺伝的探索手法により、次世代の推定式および線形結合係数を生成する。このように、遺伝的探索手法により次世代の推定式および線形結合係数を生成することで、ユーザの各コンテンツに対するより適切な予測評価値を得ることができるようになる。
しかも、学習部23では、推薦装置12の管理者等の指示を必要とせずに、より簡単かつ迅速に、コンテンツをユーザに推薦する推薦アルゴリズムを構築することができる。つまり、より精度よく予測評価値を推定できる推定式を得ることができるとともに、より適切な推定式の組み合わせと、線形結合係数とを得ることができる。
次に、図21のフローチャートを参照して、図19のステップS81の処理に対応する推定式候補生成処理について説明する。
ステップS121において、候補生成部91は、初めての学習であるか否かを判定する。すなわち、学習が行われると、推定式および線形結合係数が生成されて、推定式が推定式選別部94から候補生成部91に供給される。一方、全く初めての学習の場合は、推定式および線形結合係数は生成されたことがないので、候補生成部91には、推定式は供給されない。そこで、候補生成部91は、推定式選別部94から推定式が供給されなかった場合、初めての学習であると判定する。
ステップS121において、初めての学習であると判定された場合、ステップS122において、候補生成部91は、選択数NumSlct=0、突然変異数NumMts=0、交差数NumCrs=0、およびランダム生成数NumRnd=Sとする。
ここで、選択数NumSlctは、前世代の推定式のうち、次世代の推定式候補Jsとして選択される推定式の数を示している。また、突然変異数NumMts、交差数NumCrs、およびランダム生成数NumRndのそれぞれは、突然変異処理、交差処理、およびランダム処理のそれぞれにより生成される推定式候補Jsの数を示している。
初めての学習時には前世代の推定式は存在しないため、ランダム生成数NumRndがSとされて、S個全ての推定式候補がランダム処理により生成される。選択数、突然変異数、交差数、およびランダム生成数が定められると、処理はステップS124に進む。
一方、ステップS121において、初めての学習ではないと判定された場合、ステップS123において、候補生成部91は、選択数NumSlct=K、突然変異数NumMts=(S−K)/3、交差数NumCrs=(S−K)/3、およびランダム生成数NumRnd=S−(2×(S−K)/3)−Kとする。
すなわち、推定式選別部94から供給された前世代のK個の推定式、つまり前世代の全ての推定式が次世代の推定式候補とされる。また、突然変異処理、交差処理、およびランダム処理により、それぞれ推定式候補の総数SからKを減算した数の3分の1の個数ずつ推定式候補Jsが生成されることになる。選択数、突然変異数、交差数、およびランダム生成数が定められると、その後、処理はステップS124に進む。
ステップS122またはステップS123において、選択数、突然変異数、交差数、およびランダム生成数が定められると、ステップS124において候補生成部91は、推定式選別部94から供給された前世代の推定式から、選択数NumSlctの数だけ推定式候補を選択する。例えば、選択数NumSlct=Kである場合、供給されたK個の前世代の推定式F1乃至推定式FKの全てが、推定式候補J1乃至推定式候補JKとされる。
ステップS125において、突然変異処理部111は、推定式選別部94から供給された推定式を用いて突然変異処理を行うことにより、突然変異数NumMtsに示される数だけ推定式候補Jsを生成する。
すなわち、突然変異処理部111は、前世代の推定式F1乃至推定式FKから任意に1つの推定式を選択する。そして、突然変異処理部111は選択した推定式に対して、任意にオペレータの挿入、オペレータの削除、処理軸パラメータの変更、オペレータ内のパラメータの変更、オペレータの順序の入れ替え等を行うことにより、1つの推定式候補を生成する。
例えば、前世代の推定式から、図22Aに示す推定式が選択されたとする。図22Aに示す推定式は、W31乃至W33の3つの部分からなり、W31乃至W33の部分のそれぞれには、オペレータ「NormalizeMaxMin」、「Sin」、および「CF-Correl(1)」のそれぞれが含まれている。
例えば、突然変異処理により、図22Aの推定式におけるW32の部分と、W33の部分との間に、新たな処理軸パラメータおよびオペレータが追加されると、図22Bに示す推定式候補が生成される。図22Bに示される推定式候補は、図22Aの推定式のW32の部分と、W33の部分との間に、新たな処理軸パラメータ「C#」と、オペレータ「FillAvg」とが追加されたものとなっている。
また、突然変異処理により、図22Aの推定式の一部が削除されると、例えば図22Cに示す推定式候補が生成される。図22Cに示される推定式候補は、図22Aの推定式のW31の部分が削除されたものとなっている。
さらに、突然変異処理により、図22Aの推定式におけるW31の部分の処理軸パラメータが変更されると、図22Dに示す推定式候補が生成される。図22Dに示される推定式候補は、図22Aの推定式のW31の部分の処理軸パラメータ「U#」が「C#」に変更されたものとなっている。
さらに、突然変異処理により、図22Aの推定式が図22Dの状態となった後、さらに推定式におけるオペレータ「CF-Correl(1)」内のパラメータが変更されると、例えば図22Eに示す推定式候補が生成される。図22Eに示す推定式候補は、図22Dの推定式の図中、右端のオペレータ「CF-Correl(1)」のパラメータが変更されて「CF-Correl(5)」とされたものとなっている。
さらに、また、突然変異処理により、図22Aの推定式が図22Eの状態となった後、さらにオペレータの順番が入れ替えられると、例えば図22Fに示す推定式候補が生成される。図22Fに示す推定式候補は、図22Eの推定式のオペレータ「Sin」と、オペレータ「CF-Correl(5)」との順番が入れ替えられて、「U;C#CF-Correl(5),Sin」とされたものとなっている。
このように、突然変異処理によって、推定式の一部が変更されて新たな推定式候補とされる。なお、生成された推定式候補を用いたユーザ評価行列に対する演算を行った場合に、ユーザ評価行列の空欄が埋まらないような推定式候補、つまり未入力評価値の予測評価値が求まらない推定式候補が生成されたときには、その推定式候補は採用されず、推定式候補が再生成される。
図21のフローチャートの説明に戻り、突然変異処理により推定式候補が生成されると、ステップS126において、交差処理部112は、推定式選別部94から供給された推定式を用いて交差処理を行うことにより、交差数NumCrsに示される数だけ推定式候補Jsを生成する。
すなわち、交差処理部112は、前世代の推定式F1乃至推定式FKから任意に2つの推定式を選択する。そして、交差処理部112は、選択した2つの推定式の一部を組み替えることにより、1つの新たな推定式候補を生成する。
例えば、図23に示すように、W51およびW52の部分からなる推定式と、W53およびW54の部分からなる推定式とが選択されたとする。ここで、W52には、2つのオペレータ「Sin」と「CF-Correl(1)」とが含まれており、W53の部分には、1つのオペレータ「CF‐Pearson(3)」が含まれている。そして、W51およびW52の部分からなる推定式のW51の部分が、他の推定式のW53の部分に組み替えられると(変更されると)、図中、下側に示す新たな推定式候補「C;U#CF‐Pearson(3),Sin,U;C#CF-Correl(1)」が生成される。
このように、交差処理によって、推定式の一部が、他の推定式の一部に組み替えられて新たな推定式候補とされる。なお、生成された推定式候補を用いたユーザ評価行列に対する演算を行った場合に、ユーザ評価行列の空欄が埋まらないような推定式候補が生成されたときには、その推定式候補は採用されず、推定式候補が再生成される。
図21のフローチャートの説明に戻り、交差処理により推定式候補が生成されると、ステップS127において、ランダム処理部113はランダム処理を行うことにより、ランダム生成数NumRndに示される数だけ推定式候補Jsを生成する。
すなわち、ランダム処理部113は、任意の処理軸パラメータや、任意のパラメータの任意のオペレータを無作為に組み合わせて推定式候補を生成する。この場合、オペレータの数や順番も無作為に定められる。なお、生成された推定式候補を用いたユーザ評価行列に対する演算を行った場合に、ユーザ評価行列の空欄が埋まらないような推定式候補が生成されたときには、その推定式候補は採用されず、推定式候補が再生成される。
選択数、突然変異数、交差数、およびランダム生成数だけ推定式候補が生成されると、それらの生成された推定式候補J1乃至推定式候補JSは、候補生成部91から推定結果計算部92に供給されて推定式候補生成処理は終了し、処理は図19のステップS82に進む。
このようにして、候補生成部91は、前世代の推定式を用いて、次世代の推定式候補を生成する。このように、前世代の推定式から次世代の推定式候補を生成することで、その推定式候補のいくつかの組み合わせを評価して、ユーザのコンテンツに対する評価を推定するのに、より適した推定式を得ることができるようになる。
次に、図24のフローチャートを参照して、図19のステップS82の処理に対応する処理である推定処理について説明する。
ステップS151において、推定結果計算部92は、候補生成部91から供給されたS個の推定式候補J1乃至推定式候補JSのうちの1つを、処理に用いる推定式候補として選択する。例えば、処理に用いる推定式候補Js(但し、1≦s≦S)は、推定式候補J1から推定式候補JSまで順番に選択される。
ステップS152において、推定結果計算部92は、ユーザ評価行列保持部22から供給されたユーザ評価行列と同一の行列(情報)を、選択した推定式候補Jsに対する推定結果Hsとし、推定結果Hsの各欄にユーザ評価行列の各欄の評価値を代入する。すなわち、ユーザ評価行列と同一の情報が推定結果Hsとされる。
ステップS153において、推定結果計算部92は、処理に用いる推定式候補Jsのオペレータを1つ選択する。例えば、図25に示す推定式候補が推定式候補Jsとされている場合、図25中、左側のオペレータから右側のオペレータまで、右方向に順番に選択される。図25では、推定式候補Jsには、4つのオペレータ「CF‐Pearson(3)」、「Sin」、「CF-Correl(1)」、および「Cos」が含まれているため、オペレータ「CF‐Pearson(3)」、「Sin」、「CF-Correl(1)」、および「Cos」の順番で選択されていく。
ステップS154において、推定結果計算部92は、選択したオペレータは、推定結果Hsの空欄を埋める最後のオペレータか否かを判定する。
例えば、図25に示した推定式候補Jsには、4つのオペレータが含まれている。そして、オペレータ「CF‐Pearson(3)」および「CF-Correl(1)」は、それぞれピアソン相関およびコサイン距離による相関を利用して、推定結果Hsの空欄を埋めるオペレータ、つまり未入力評価値の予測評価値を求めるオペレータである。これに対して、オペレータ「Sin」および「Cos」は、評価値の正弦および余弦を求めるオペレータであって、推定結果Hsの空欄を埋めるオペレータではない。
また、推定式候補Jsでは、オペレータ「CF‐Pearson(3)」、「Sin」、「CF-Correl(1)」、および「Cos」の順番で、それらのオペレータが選択されて処理に用いられる。したがって、推定式候補Jsでは、推定結果Hsの空欄を埋める最後のオペレータはオペレータ「CF-Correl(1)」であり、このオペレータが選択されている場合に、ステップS154において、最後のオペレータであると判定される。
ステップS154において、空欄を埋める最後のオペレータでないと判定された場合、ステップS155において、推定結果計算部92は、選択されているオペレータに示される演算を推定結果Hsに対して行う。
ここで、選択されているオペレータが、推定結果Hsの全ての欄の評価値を対象とするオペレータ、例えば各欄の評価値の正弦を演算するオペレータ「Sin」である場合、推定結果計算部92は、推定結果Hsの各欄の評価値に対して選択されたオペレータによる演算を行う。また、選択されているオペレータが、推定結果Hsの空欄を埋めるオペレータである場合、推定結果計算部92は、適宜、推定結果Hsの各欄の評価値、つまり既入力評価値および未入力評価値を用いて、未入力評価値の予測評価値を求める。
選択されたオペレータの演算が行われると、処理はステップS155からステップS157に進む。
これに対して、ステップS154において、空欄を埋める最後のオペレータであると判定された場合、ステップS156において、推定結果計算部92は、選択されているオペレータに示される演算を推定結果Hsの全ての評価値に対して行う。
すなわち、推定結果計算部92は、空欄を埋める最後のオペレータでの演算時には、推定結果Hsの各欄の評価値のうち、未入力評価値だけでなく既入力評価値の予測評価値も求める。なお、この場合においても、推定結果Hsの空欄を埋めるオペレータの演算においては、演算対象の欄の評価値は、その欄の予測評価値を求める演算には用いられない。
このように、空欄を埋める最後のオペレータでの演算時に、既入力評価値が入力された欄についても予測評価値を求めることで、その欄について求めた予測評価値と、ユーザ評価行列における対応する欄の既入力評価値とを用いて、推定式候補の予測(推定)の精度を評価できるようになる。ステップS156において、選択されたオペレータの演算が行われると、その後、処理はステップS157に進む。
ステップS157において、推定結果計算部92は、選択されている推定式候補Jsのオペレータは、推定式候補Jsに含まれる最後のオペレータであるか否かを判定する。例えば、図25に示す推定式候補Jsが選択されている場合、推定式候補Jsの選択されているオペレータが、最後に演算が行われるオペレータ「Cos」であるときに、最後のオペレータであると判定される。
ステップS157において、最後のオペレータでないと判定された場合、処理はステップS153に戻り、次のオペレータが選択されて推定結果Hsに対する演算が行われる。
これに対して、ステップS157において、最後のオペレータであると判定された場合、ステップS158において、推定結果計算部92は、供給された全ての推定式候補Jsについて推定結果Hsを求めたか否かを判定する。
例えば、全ての推定式候補Jsについて推定結果Hsを求めたと判定された場合には、図26に示すように、供給されたS個の推定式候補J1乃至推定式候補JSのそれぞれに対して、対応するS個の推定結果H1乃至推定結果HSのそれぞれが得られたことになる。つまり、S通りの推定方法のそれぞれにより、合計S個の推定結果のそれぞれが生成されたことになる。
ステップS158において、まだ全ての推定式候補Jsについて推定結果Hsを求めていないと判定された場合、処理はステップS151に戻り、上述した処理が繰り返される。すなわち、次の推定式候補Jsが選択されて、その推定式候補Jsに対応する推定結果Hsが生成される。
これに対して、ステップS158において、全ての推定式候補Jsについて推定結果Hsを求めたと判定された場合、推定結果計算部92は、得られたS個の推定結果H1乃至推定結果HSと、推定式候補J1乃至推定式候補JSとを推定式選別部94に供給する。そして、推定結果計算部92から推定式選別部94に推定式候補および推定結果が供給されると推定処理は終了し、処理は図19のステップS83に進む。
このようにして、推定結果計算部92は、S個の推定式候補のそれぞれを用いて、対応する推定結果のそれぞれを生成する。このように、推定式候補を用いて、対応する推定結果を生成することで、推定式候補の組み合わせを評価して、ユーザのコンテンツに対する評価を推定するのに、より適した推定式の組み合わせを得ることができるようになる。
次に、図27のフローチャートを参照して、図19のステップS84の処理に対応する推定式選別処理について説明する。
ステップS191において、結合係数算出部114は、推定結果計算部92から供給された推定結果Hsごとの使用状況を示す変数Zを初期化する。
すなわち、推定式選別部94では、S個の推定式候補のうちのいくつかが選択されて、選択された推定式候補Jsが次世代の推定式として採用されると仮定される。そして、選択された推定式候補Jsを用いて各ユーザの予測評価値を求めた場合について、その予測評価値、つまり推定結果Hsの予測の精度が評価される。
変数Zは、各推定式候補Jsに対応する推定結果Hsの使用状況を示す情報からなり、それらの使用状況は、推定結果に対応する推定式候補が次世代の推定式として仮に採用されているか否かを示している。つまり、変数Zにおいて、使用状況が「使用」とされている推定結果に対応する推定式候補は、次世代の推定式として仮に採用されている推定式候補である。また、変数Zにおいて、使用状況が「未使用」とされている推定結果に対応する推定式候補は、次世代の推定式として仮に採用されていない推定式候補である。
結合係数算出部114は、変数Zにおける各推定結果の使用状況を「未使用」とすることにより、変数Zを初期化する。
ステップS192において、結合係数算出部114は、推定結果計算部92から供給された推定式候補Js(但し、1≦s≦S)を1つ選択する。例えば、推定式候補Jsは、推定式候補J1から推定式候補JSまで順番に選択される。
ステップS193において、結合係数算出部114は、変数Zにおける、選択した推定式候補Jsに対応する推定結果Hsの使用状況を反転させ、使用状況の反転された変数Zを、変数Zs’(但し、1≦s≦S)とする。例えば、変数Zにおける選択された推定式候補Jsに対応する推定結果Hsの使用状況が「未使用」である場合、使用状況が反転されて「使用」とされ、逆に使用状況が「使用」である場合、使用状況が反転されて「未使用」とされる。
ステップS194において、結合係数算出部114は、変数Zs’において、「使用」となっている使用状況の数、つまり使用状況が「使用」である推定結果に対応する推定式候補の数が、予め定められた推定式の数Kの上限の数Kmax以下であるか否かを判定する。
ステップS194において、「使用」である使用状況の数が、上限の数Kmax以下であると判定された場合、ステップS195において、結合係数算出部114は、グループ生成部93から供給されたユーザグループ情報を参照して、ユーザグループGqを1つ選択する。例えば、ユーザグループGq(但し、1≦q≦Q)は、ユーザグループG1からユーザグループGQまで順番に選択される。
ステップS196において、結合係数算出部114は、推定結果計算部92から供給された推定結果Hsのうち、変数Zs’における使用状況が「使用」となっている推定結果Hsを選択し、選択した推定結果Hsを新たに推定結果Hv’とする。なお、新たな推定結果Hv’が複数ある場合、それらの推定結果Hv’における変数vは、連続する番号となるように付されるものとする。
例えば、変数Zs’において、推定結果H1乃至推定結果HV(但し、1≦V≦S)の使用状況が「使用」となっており、他の推定結果H(V+1)乃至推定結果HSの使用状況が「未使用」となっていたとする。この場合、結合係数算出部114は、推定結果H1乃至推定結果HVを新たに推定結果H1’乃至推定結果HV’とするとともに、推定結果H1’乃至推定結果HV’に対応する推定式候補Jsを新たに推定式候補J1’乃至推定式候補JV’とする。
ステップS197において、結合係数算出部114は推定結果Hv’、ユーザ評価行列保持部22からのユーザ評価行列、およびグループ生成部93からのユーザグループ情報を用いて、選択されているユーザグループGqについての線形結合係数候補Bsqを求める。
ここで、ユーザグループGqについての線形結合係数候補Bsqは、ユーザグループGqに属すユーザUnの線形結合係数の候補であり、線形結合係数候補Bsqは、線形結合係数bnkに対応する、(V+1)個の線形結合係数bsq0乃至線形結合係数bsqVからなる。つまり、線形結合係数候補Bsqは、推定式候補J1’乃至推定式候補JV’を次世代の新たな推定式として採用した場合における線形結合係数である。
なお、各線形結合係数bsqv(但し、0≦v≦V)における変数s,q,vは、変数Zs’のs,ユーザグループGqのq,推定結果Hv’のvに対応している。また、線形結合係数bsq0は、線形結合係数bn0に対応する係数である。
例えば、結合係数算出部114は、線形回帰により、次式(2)における所定の要素からなるエラー行列Eqが最小となる線形結合係数候補Bsq、つまり線形結合係数bsqvの組み合わせを求める。
式(2)において、行列Rqは、ユーザ評価行列におけるユーザグループGqに属すユーザのコンテンツに対する既入力評価値を要素とする行列(ベクトル)である。
また、式(2)における行列Hqv’は、推定結果Hv’の予測評価値のうち、ユーザ評価行列におけるユーザグループGqに属すユーザのコンテンツに対する既入力評価値に対応する予測評価値を要素とする行列(ベクトル)である。つまり、行列Rqの所定の要素rqは、所定のユーザUnの所定のコンテンツCmに対する真の評価値であり、その要素rqに対応する行列Hqv’の要素hqvは、推定式候補Jv’を用いて推定されたユーザUnのコンテンツCmに対する評価の予測評価値である。
さらに、式(2)において、(Σbsqv×Hqv’)は、線形結合係数bsqvおよび行列Hqv’の変数vを1からVまで変えて、線形結合係数bsqvが乗算された行列Hqv’の総和を求めることを示している。
式(2)によれば、行列Rqの要素rqに対応する、行列Hq1’乃至行列HqV’の要素hq1乃至要素hqVのそれぞれに対して、線形結合係数bsq1乃至線形結合係数bsqVのそれぞれが乗算されたものの和に、線形結合係数bsq0およびエラー行列Eqの要素eqが加算されたものが、要素rqに等しいとされている。つまり、要素eqは、線形結合係数bsqvが乗算された要素hqvの総和に線形結合係数bsq0が加算されたもの、すなわち要素rqの推定値と、真の要素rqとの誤差を示している。
したがって、要素eqがより小さくなるほど、そのときの線形結合係数bsqvの組と、推定結果Hv’に対応する推定式候補Jv’とを用いて、ユーザのコンテンツに対する評価をより精度よく推定できるはずである。そこで、結合係数算出部114は、式(2)の関係が成立し、各要素eqが最小となる線形結合係数bsqvの組み合わせを求め、それらの組み合わせを線形結合係数候補Bsqとする。
変数Zs’についてのユーザグループGqの線形結合係数候補Bsqが求められると、処理は、ステップS197からステップS198に進む。
ステップS198において、結合係数算出部114は、全てのユーザグループGqについて、線形結合係数候補Bsqを求めたか否かを判定する。
ステップS198において、まだ全てのユーザグループGqについて、線形結合係数候補Bsqを求めていないと判定された場合、処理はステップS195に戻り、上述した処理が繰り返される。つまり、次のユーザグループGqが選択され、変数Zs’についての新たに選択されたユーザグループGqの線形結合係数候補Bsqが求められる。
これに対して、ステップS198において、全てのユーザグループGqについて、線形結合係数候補Bsqを求めたと判定された場合、処理はステップS199に進む。例えば、全てのユーザグループについて、線形結合係数候補を求めたと判定された場合、変数Zs’について、各ユーザグループG1乃至ユーザグループGQのそれぞれに対して、線形結合係数候補Bs1乃至線形結合係数候補BsQのそれぞれが得られたことになる。
ステップS199において、評価部115は、ユーザ評価行列と、推定結果Hv’、つまり式(2)による線形結合係数の演算結果とに基づいて、変数Zs’について、AIC(Akaike Information Criteria)を算出する。すなわち、評価部115は、ユーザのコンテンツに対する評価を推定するための推定式候補Jv’および線形結合係数候補Bsqの評価の指標である情報量基準として、次式(3)を計算することにより、変数Zs’についてのAICを算出する。
式(3)において、Wは、ユーザ評価行列における既入力評価値の数を示しており、PIはπを示している。また、式(3)において、||E||は、エラー行列E1乃至エラー行列EQの要素からなる行列Eのノルム、つまり行列Eの各要素の二乗和を示している。さらに、式(3)において、QおよびVは、ユーザグループGqの数、および推定結果Hv’の数を示している。
式(3)により示されるAICは、行列Eの要素が小さくなればなるほど小さくなる。つまり、ユーザのコンテンツに対する評価をより精度よく推定することができる推定式候補Jv’および線形結合係数候補Bsqに対する変数Zs’ほど、その変数Zs’のAICは小さくなる。
また、推定式候補Jv’の数(自由パラメータの数)が多いほど、式(3)により示される変数Zs’のAICは大きくなる。推薦装置12が予測評価行列を生成する場合、推定式候補Fkの数が多いほど、予測評価行列を求めるための演算量は多くなるので、推定式候補Fk、つまり推定式候補Jv’の数は少なければ少ないほどよい。すなわち、演算量の観点からは、変数Zs’のAICがより小さいほど、変数Zs’の推定式候補Jv’および線形結合係数候補Bsqは、ユーザのコンテンツに対する評価の推定に用いる場合に、より適しているといえる。
したがって、結局、変数Zs’のAICが小さいほど、その変数Zs’について求められた推定式候補Jv’および線形結合係数候補Bsqに対する評価は高く、推定式および線形結合係数とするのに適しているといえる。
ステップS199において、変数Zs’のAICが算出されると、その後、処理はステップS200に進む。
また、ステップS194において、変数Zs’で「使用」となっている使用状況の数が、推定式の数Kの上限の数Kmax以下でないと判定された場合、ステップS195乃至ステップS199の処理はスキップされて、処理はステップS200に進む。
すなわち、変数Zs’で「使用」となっている使用状況の数が、上限の数Kmaxより多い場合、それらの「使用」となっている推定結果を用いて推定式を生成すると、推定式の上限の数Kmaxを超える数の推定式が生成されてしまうことになる。そこで、「使用」となっている使用状況の数が上限の数Kmaxより多い場合には、ステップS195乃至ステップS199の処理はスキップされる。
ステップS199においてAICが算出されたか、またはステップS194において上限の数Kmax以下でないと判定されると、ステップS200において、結合係数算出部114は、全ての推定式候補Jsを選択したか否かを判定する。すなわち、ステップS192の処理において、S個全ての推定式候補Jsが選択された場合、全ての推定式候補が選択されたと判定される。
ステップS200において、まだ全ての推定式候補Jsが選択されていないと判定された場合、処理はステップS192に戻り、上述した処理が繰り返される。すなわち、次の推定式候補Jsが選択されて、これまでの変数Zs’における、新たに選択された推定式候補Jsに対応する推定結果Hsの使用状況が反転されたものが、新たな変数Zs’とされる。そして、選択された推定式候補Jsに対応する変数Zs’について、ユーザグループGqごとに線形結合係数候補Bsqが求められ、変数Zs’のAICが算出される。
これに対して、ステップS200において、全ての推定式候補Jsを選択したと判定された場合、処理はステップS201に進む。全ての推定式候補J1乃至推定式候補JSが選択されると、それらの推定式候補に対応する変数Z1’乃至変数ZS’のそれぞれに対するAICのそれぞれが得られたことになる。なお、より詳細には、変数Zs’において「使用」となっている使用状況の数がKmax以下でないときには、線形結合係数候補およびAICは求められない。
ステップS201において、選択部116は、各変数Z1’乃至変数ZS’のうち、求めたAICが最も小さい変数Zs’を選択する。ここで、選択された変数Zs’の推定式候補Jv’および線形結合係数候補Bsqは、変数Z1’乃至変数ZS’について求めた推定式候補および線形結合係数候補のうち、推定式および線形結合係数とするのに最も適したものであるといえる。
ステップS202において、選択部116は、選択された変数Zs’のAICが、これまでの処理において最小であったAICよりも小さいか否かを判定する。例えば、選択部116は、これまでの処理において、最もAICが小さかった変数Zs’、その変数Zs’についてのAIC、推定式候補Jv’、および線形結合係数候補Bsqを保持している。そして、選択部116は、今回最小であったAIC、つまりステップS201で選択された変数Zs’のAICと、保持しているAICとを比較する。
ステップS202において、選択された変数Zs’のAICが、これまでの処理において最小であったAICよりも小さいと判定された場合、ステップS203において、結合係数算出部114は、選択された変数Zs’を新たな変数Zとする。そして、変数Zs’が新たな変数Zとされると、その後、処理はステップS192に戻り、上述した処理が繰り返される。
すなわち、選択された変数Zs’のAICが、これまでのAICよりも小さい場合、今回得られた変数Zs’の推定式候補Jv’および線形結合係数候補Bsqは、これまでに得られた推定式候補および線形結合係数候補よりも、推定式および線形結合係数により適している。したがって、変数Zs’の一部の使用状況を変更して得られる新たな変数Zs’のAICは、今回選択された変数Zs’のAICよりもさらに小さくなり、推定式および線形結合係数により適した推定式候補Jv’および線形結合係数候補Bsqが得られる可能性がある。
そこで、推定式選別部94は、今回選択された変数Zs’を新たな変数Zとして、AICが改善されなくなるまで、つまりステップS202において、選択された変数Zs’のAICが、これまでの最小であったAIC以上であると判定されるまで、上述した処理を繰り返し行う。
一方、ステップS202において、選択された変数Zs’のAICが、これまでの最小であったAIC以上であると判定された場合、選択された変数Zs’を新たに変数Zとして推定式候補および線形結合係数候補を求めてもAICが改善される可能性は低いので、処理はステップS204に進む。
ステップS204において、選択部116は、これまでの処理でAICが最小となった変数Zs’の推定式候補Jv’および線形結合係数候補Bsqを、次世代の推定式および線形結合係数として出力する。
すなわち、選択部116は、AICが最小となった変数Zs’に対するV個の推定式候補J1’乃至推定式候補JV’を、次世代の推定式とするとともに、変数Zs’に対して求められた線形結合係数候補Bsqを次世代の線形結合係数とする。このとき、ユーザUn(但し、1≦n≦N)が属すユーザグループGq(但し、1≦q≦Q)の線形結合係数候補Bsq、つまり線形結合係数bsq0乃至線形結合係数bsqVがユーザUnの次世代の線形結合係数とされる。
このようにして得られた次世代の推定式は、推定式選別部94から候補生成部91および推定式保持部24に供給され、次世代のユーザごとの線形結合係数は、推定式選別部94から推定式保持部24に供給される。
次世代の推定式および線形結合係数が出力されると、推定式選別処理は終了し、処理は図19のステップS85に進む。
このようにして、学習部23は、推定式候補を生成して、推定式候補のうちのいくつかを次世代の推定式として採用すると仮定する。そして、学習部23は、それらの推定式候補と、推定式候補に対応する線形結合係数候補との評価を行い、ユーザのコンテンツに対する評価の推定に、より適した推定式候補および線形結合係数候補を、次世代の推定式および線形結合係数として選択する。
このように、繰り返し推定式候補の生成を行うとともに、推定式候補および線形結合係数候補の評価を行って、より適した推定式候補および線形結合係数候補を選択していくことで、推定式選別処理を行うごとに、より精度よくユーザのコンテンツに対する評価を推定できる推定式および線形結合係数を得ることができる。
すなわち、ユーザのコンテンツに対する評価を推定するのに、より適した協調フィルタリングアルゴリズム、つまり推定式を簡単に構築することができ、評価の推定の精度を簡単に向上させることができる。そして、推定式候補の組み合わせおよび線形結合係数候補の評価を行って、より適した推定式候補および線形結合係数候補を選択し、次世代の推定式および線形結合係数とすることで、さらに、ユーザのコンテンツに対する評価の推定精度を向上させることができる。これにより、簡単かつ迅速に、より精度よくユーザの評価を推定する推薦アルゴリズムを構築することが可能となる。
また、学習部23によれば、推薦アルゴリズムの構築、つまり推定式および線形結合係数を生成するにあたって、ユーザ(管理者)による操作は必要とされない。特に、推薦アルゴリズムの一部を変更する必要がある場合、例えば、ユーザがコンテンツに対する評価をし直した場合や、評価対象として新たなコンテンツが追加された場合などにおいても、学習部23による学習処理によって、人手によらず適切な推定式および線形結合係数が得られる。つまり、管理者は、推薦アルゴリズムを構築し直す必要はない。
なお、以上において、推定式の数Kは、上限の数Kmax以下であると説明した。したがって、推定式の数Kが1である場合には、仮ユーザ予測行列Tn1に乗算される線形結合係数bn1と、線形結合係数が乗算された仮ユーザ予測行列、つまり予測評価値に加算される線形結合係数bn0とが生成される。また、推定式の数Kが1である場合には、線形結合係数bn0は常に0とされるようにしてもよい。
さらに、推定式の数Kが1である場合には、線形結合係数は用いられず、推定式F1だけが用いられて予測評価行列が求められるようにしてもよい。そのような場合、推定式候補の評価は、ユーザ評価行列と、推定結果Hsとが用いられて行われ、複数の推定式候補のうち、推定式候補を用いて得られた予測評価値と、実際の既入力評価値との誤差が小さい推定式候補ほど高い評価とされる。
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図28は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)201,ROM(Read Only Memory)202,RAM(Random Access Memory)203は、バス204により相互に接続されている。
バス204には、さらに、入出力インターフェース205が接続されている。入出力インターフェース205には、キーボード、マウス、マイクロホンなどよりなる入力部206、ディスプレイ、スピーカなどよりなる出力部207、ハードディスクや不揮発性のメモリなどよりなる記録部208、ネットワークインターフェースなどよりなる通信部209、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア211を駆動するドライブ210が接続されている。
以上のように構成されるコンピュータでは、CPU201が、例えば、記録部208に記録されているプログラムを、入出力インターフェース205及びバス204を介して、RAM203にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU201)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア211に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア211をドライブ210に装着することにより、入出力インターフェース205を介して、記録部208にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部209で受信し、記録部208にインストールすることができる。その他、プログラムは、ROM202や記録部208に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
12 推薦装置, 22 ユーザ評価行列保持部, 23 学習部, 24 推定式保持部, 25 予測評価値算出部, 26 予測評価行列保持部, 27 推薦部, 51 仮予測部, 52 予測部, 91 候補生成部, 92 推定結果計算部, 93 グループ生成部, 94 推定式選別部, 111 突然変異処理部, 112 交差処理部, 113 ランダム処理部, 114 結合係数算出部, 115 評価部, 116 選択部