以下、本発明の各実施形態について、添付の図面を参照しながら説明する。なお、各実施形態に係る明細書及び図面の記載に関して、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重畳した説明を省略する。
一実施形態に係るレコメンドシステム1000について、図1〜図13を参照して説明する。まず、レコメンドシステム1000の構成について説明する。図1は、レコメンドシステム1000の構成の一例を示す図である。図1のレコメンドシステム1000は、ユーザ端末1A〜1Bと、レコメンドサーバ2と、アプリマーケット3と、ネットワーク4と、を含む。
ユーザ端末1A〜1Cは、ユーザが各種のアプリを利用するためのコンピュータである。ユーザ端末1A〜1Cは、例えば、PC(Personal Computer)、スマートフォン、タブレット端末、スマートウォッチ、又はテレビであるが、これに限られない。以下、ユーザ端末1A〜1Cを区別しない場合、単にユーザ端末1と称する。図1の例では、レコメンドシステム1000には、3つのユーザ端末1が含まれるが、レコメンドシステム1000に含まれるユーザ端末1の数は任意である。なお、ユーザ端末1において利用可能な各アプリは、それぞれ複数のアプリ設定を有し、各アプリ設定は、デフォルト値として設定可能な複数の設定値をそれぞれ有する。
レコメンドサーバ2は、レコメンド装置の一例であり、ユーザ端末1のユーザに、当該ユーザにとってデフォルト値として有用な、アプリの設定値をレコメンドするサーバコンピュータである。レコメンドサーバ2は、レコメンドシステム1000に含まれる各ユーザ端末1から取得した情報に基づいて、各ユーザ端末1のユーザに、デフォルト値として有用な設定値をそれぞれレコメンドする。なお、本実施形態において、レコメンド装置は、例えば、PC、スマートフォン、タブレット端末などであってもよい。また、レコメンド装置は、複数のサーバコンピュータにより構成されてもよい。
アプリマーケット3は、ユーザに有料又は無料でアプリを提供するオンラインマーケットであり、1つ又は複数のサーバコンピュータにより構成される。ユーザは、アプリマーケット3から所望のアプリをユーザ端末1にダウンロードできる。
ネットワーク4は、LAN(Local Area Network)やインターネットなどを含み、ユーザ端末1、レコメンドサーバ2、及びアプリマーケット3を相互に接続する。
次に、本実施形態に係るユーザ端末1のハードウェア構成について説明する。図2は、ユーザ端末1のハードウェア構成の一例を示す図である。図2のユーザ端末1は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、HDD(Hard Disk Drive)104と、を備える。また、ユーザ端末1は、入力装置105と、表示装置106と、通信インタフェース107と、システムバス108と、を備える。
CPU101は、プログラムを実行することにより、ユーザ端末1の各構成を制御し、ユーザ端末1の機能を実現する。
ROM102は、CPU101が実行するプログラム(BIOS(Basic Input Output System)など)や各種のデータを記憶する。
RAM103は、CPU101に作業領域を提供する。
HDD104は、CPU101が実行するプログラム(OS(Operating System)など)や各種のデータを記憶する。
入力装置105は、ユーザの操作に応じた情報をユーザ端末1に入力する。入力装置105は、例えば、タッチパネル、キーボード、マウス、又はハードウェアボタンであるが、これに限られない。
表示装置106は、ユーザの操作に応じた画面を表示する。表示装置106は、例えば、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、又はプラズマディスプレイであるが、これに限られない。
通信インタフェース107は、ユーザ端末1をネットワーク4に接続するためのインタフェースである。ユーザ端末1は、通信インタフェース107を介して、ネットワーク4に接続されたレコメンドサーバ2やアプリマーケット3と通信する。
システムバス108は、CPU101、ROM102、RAM103、HDD104、入力装置105、表示装置106、及び通信インタフェース107を相互に接続する。
なお、レコメンドサーバ2は、ユーザ端末1と同様に、CPU201と、ROM202と、RAM203と、HDD204と、入力装置205と、表示装置206と、通信インタフェース207と、を備え、これらがシステムバス208を介して相互に接続される。各ハードウェアについては、ユーザ端末1と同様であるため、説明を省略する。
次に、本実施形態に係るレコメンドシステム1000の機能構成について説明する。図3は、レコメンドシステム1000の機能構成の一例を示す図である。
まず、ユーザ端末1の機能構成について説明する。図3のユーザ端末1は、端末制御部11と、アプリ記憶部12と、操作ログ記憶部13と、アップロード部14と、を備える。これらの各機能構成は、CPU101がプログラムを実行し、ユーザ端末1の各ハードウェアと協働することにより実現される。
端末制御部11は、ユーザ端末1の全体の動作を制御する。具体的には、端末制御部11は、アプリマーケット3からのアプリのダウンロード、アプリのインストール及びアンインストール、操作ログの更新、及びユーザへのアプリのレコメンドなどを行う。端末制御部11の動作について、詳しくは後述する。
アプリ記憶部12は、端末制御部11にインストールされたアプリ(プログラム)及び当該アプリのアプリ情報を記憶する。アプリ情報には、アプリ名やアプリIDなどの情報が含まれる。アプリIDは、アプリの識別情報である。
操作ログ記憶部13は、ユーザによるユーザ端末1の操作ログを記憶する。操作ログは、操作の実行日時と、操作内容と、が対応づけられたデータである。操作内容には、アプリのダウンロード、インストール、アンインストール、起動、終了、画面の切り替え、設定値の変更、ジョブの実行などが含まれる。
図4は、操作ログ記憶部13に記憶された操作ログの一例を示す図である。図4の各レコードが、各操作に対応する操作ログに相当する。図4の例では、2月1日の15:00にアプリAのダウンロードが実行され、2月1日の15:01にアプリAのインストールが実行されている。また、アプリAの起動後、画面切替と、設定aのデフォルト値a1から設定値a2への変更(設定値の変更)と、を経てジョブが実行されている。
なお、ユーザ端末1が複数のユーザにより利用される場合には、各操作に対応する操作ログに、当該操作を実行したユーザのユーザIDが含まれてもよい。ユーザIDは、ユーザの識別情報である。また、各操作ログにユーザIDが含まれる代わりに、操作ログを記憶される操作内容に、ユーザのログインが含まれてもよい。この場合、ユーザのログインに対応する操作ログには、実行日時(ログイン日時)と、ログインしたユーザのユーザIDと、が含まれる。以下、ユーザIDがXであるユーザを、ユーザXと称する。
アップロード部14は、定期的に又は所定のタイミング(操作ログが更新されたタイミングやユーザ端末1に電源が投入されたタイミングなど)で、操作ログ記憶部13に記憶された操作ログをレコメンドサーバ2にアップロードする。
次に、レコメンドサーバ2の機能構成について説明する。図3のレコメンドサーバ2は、レコメンド制御部21と、利用傾向記憶部22と、設定情報記憶部23と、分類部24と、レコメンド部25と、学習部26と、を備える。これらの各機能構成は、CPU201がプログラムを実行し、レコメンドサーバ2の各ハードウェアと協働することにより実現される。
レコメンド制御部21は、レコメンドサーバ2の全体の動作を制御する。具体的には、レコメンド制御部21は、ユーザ端末1からアップロードされた操作ログの受け付け、利用傾向の更新、及び各機能構成への動作要求などを行う。また、レコメンド制御部21は、ユーザ端末1から設定情報を取得する。レコメンド制御部21の動作について、詳しくは後述する。
利用傾向記憶部22は、所定期間ごとの各ユーザの各アプリの利用傾向を記憶する。所定期間は、1日、1週間、1ヶ月など、任意に設定可能である。また、利用傾向は、利用回数(起動回数又はジョブの実行回数)及び平均ステップ数を含む。
平均ステップ数は、アプリを起動してからジョブが実行されるまでのステップ数(操作回数)の平均値である。例えば、図4の例では、アプリAのジョブは、アプリAの起動後、画面切替、設定値の変更、及びジョブ実行という3つの操作を経て実行されているため、ステップ数は3である。ステップ数は、ユーザがジョブを実行するために要する手間の量に相当し、ステップ数が小さいほど、ユーザの手間が少ないことを意味する。このことから、平均ステップ数が小さいアプリのデフォルト値は、ユーザの手間を減らす、ユーザにとって有用なデフォルト値であると考えられる。
また、利用傾向記憶部22は、所定期間ごとの各ユーザの利用傾向が属するクラスタを記憶する。後述する通り、所定期間ごとの各ユーザの利用傾向は、分類部24により、複数のクラスタに分類される。利用傾向記憶部22は、分類部24により分類されたクラスタを、所定期間ごとの各ユーザの利用傾向と対応付けて記憶する。
図5は、利用傾向記憶部22に記憶された利用傾向の一例を示す図である。図5の例では、ユーザU001,U002による1週間ごとのアプリA,Bの利用傾向(利用回数及びステップ数)が、クラスタと対応付けて記憶されている。例えば、ユーザU001による2月1日から2月7日までのアプリAの利用回数は50回、平均ステップ数は5.0、アプリBの利用回数は100回、平均ステップ数は4.0であり、ユーザU001のアプリの利用傾向はクラスタ1に属している。図5において、アプリの利用回数の値「−」は、アプリがインストールされていないことを示している。インストールされていないにもかかわらず利用回数が記憶されるアプリとして、レコメンドされたもののインストールされていないアプリが考えられる。
利用傾向記憶部22に記憶される利用傾向は、例えば、各ユーザ端末1からアップロードされた操作ログに基づいて、レコメンド制御部21が更新する。具体的には、レコメンド制御部21は、ユーザ端末1からアップロードされた操作ログに基づいて、所定期間ごとの各アプリの利用傾向を集計し、当該利用傾向をユーザ端末1のユーザの各アプリの利用傾向に追加する。例えば、レコメンド制御部21は、利用傾向記憶部22に図5の利用傾向が記憶され、ユーザ端末1から図4の操作ログをアップロードされた場合、ユーザ端末1のユーザの2月1日から2月6日までの期間のアプリA,Bの利用回数を1ずつ追加する。また、レコメンド制御部21は、ユーザ端末1のユーザの2月1日から2月6日までの期間のアプリAの平均ステップ数を更新する。
また、ユーザ端末1のアップロード部14は、操作ログ記憶部13に記憶された操作ログに基づいて、所定期間ごとの各アプリの利用傾向を集計し、集計した利用傾向をレコメンドサーバ2にアップロードしてもよい。この場合、レコメンド制御部21は、アップロードされた利用傾向を、利用傾向記憶部22に記憶された利用傾向にそのまま追加すればよい。
設定情報記憶部23は、各ユーザ端末1の設定情報を記憶する。設定情報には、ユーザ端末1の端末ID、アドレス、インストールされたアプリのアプリID、及び設定中のデフォルト値などが含まれる。端末IDは、ユーザ端末1の識別情報である。デフォルト値は、設定日時と対応付けて、履歴情報として記憶される。レコメンド制御部21は、定期的に又は所定のタイミング(ユーザ端末1がレコメンドサーバ2に接続したタイミングやユーザ端末1から操作ログを取得したタイミングなど)で、ユーザ端末1から設定情報を取得し、設定情報記憶部23に記憶された設定情報を更新する。
分類部24は、定期的に又は所定のタイミング(利用傾向が更新されたタイミングなど)で、利用傾向記憶部22に記憶された複数のユーザの利用傾向に基づいて、所定期間ごとの各ユーザの利用傾向を複数のクラスタに分類する。クラスタは、類似する利用傾向の集合である。分類部24により分類されたクラスタは、そのクラスタに属する利用傾向と対応付けて、利用傾向記憶部22に記憶される。
分類部24は、利用傾向を分類するための分類方法を記憶する。分類部24は、利用傾向の分類方法として、最短距離法、ウォード法、k平均法などの任意のクラスタリング方法を利用できる。この場合、分類部24は、利用傾向間の距離(非類似度)を、アプリ毎の利用傾向の値に基づいて算出してもよいし、アプリ毎の利用傾向の値に基づいてアプリ毎の利用傾向の割合を算出し、アプリ毎の利用傾向の割合に基づいて算出してもよい。
図6及び図7は、利用傾向の一例を示す図である。図6の例では、ユーザU001〜U003のアプリA〜Dの利用回数が示されている。図6の例では、ユーザU001及びユーザのU002の利用回数の値が類似しており、ユーザU002とユーザのU003とは利用回数の割合が類似している。
また、図7の例では、ユーザU001〜U003のアプリA〜Dの平均ステップ数が示されている。図7の例では、ユーザU002及びユーザU003の平均ステップ数の値は、類似しているが、ユーザU001の平均ステップ数の値は類似していない。
図6の例では、分類部24が利用傾向の値に基づいて利用傾向間の距離を算出する場合、ユーザU001,U002の利用傾向は同一のクラスタに分類され、ユーザU003の利用傾向は異なるクラスタに分類される。一方、分類部24が利用傾向の割合に基づいて利用傾向間の距離を算出する場合、ユーザU002,U003の利用傾向は同一のクラスタに分類され、ユーザU001の利用傾向は異なるクラスタに分類される。
また、分類部24は、利用傾向の分類方法として、所定の分類条件に従った方法を利用してもよい。例えば、分類部24は、利用傾向の値又は割合が最大のアプリごとに、利用傾向を分類してもよいし、利用傾向の値又はその割合が閾値以上のアプリごとに利用傾向を分類してもよい。前者の分類条件の場合、図6の例では、ユーザU002,U003の利用傾向が同一のクラスタに分類され、図7の例では、ユーザU001〜U003の利用傾向が同一のクラスタに分類される。
レコメンド部25は、定期的に又は所定のタイミング(利用傾向やクラスタが更新されたタイミングなど)で、ユーザにとってデフォルト値として有用な設定値を選択し、選択した設定値をユーザにレコメンドする。具体的には、レコメンド部25は、ユーザにとってデフォルト値として有用な設定値を示す情報を、当該ユーザのユーザ端末1に送信する。
レコメンド部25は、利用傾向のクラスタごとの各設定値の有用度を記憶する。あるクラスタのある設定値の有用度は、利用傾向が当該クラスタに属するユーザが、当該設定値をデフォルト値として設定した場合の有用さの程度を示す指標である。有用度の算出方法については後述する。
図8は、レコメンド部25に記憶された有用度の一例を示す図である。図8の例では、クラスタ1〜3における、アプリAの設定a〜cの各設定値の有用度がそれぞれ示されている。例えば、クラスタ1における設定値a1の有用度は9、設定値a2の有用度は4、設定値a3の有用度は2である。これは、利用傾向がクラスタ1に属するユーザにとって、アプリAの設定aのデフォルト値として、設定値a1が最も有用であることを意味している。
また、レコメンド部25は、レコメンド条件を記憶する。レコメンド条件は、ユーザにレコメンドする設定値(有用な設定値)の選択条件に相当する。レコメンド条件として、有用度が最大であることや、有用度が閾値以上であることが挙げられる。
レコメンド部25は、その利用傾向があるクラスタに属するユーザに対して、当該クラスタにおける、有用度がレコメンド条件を満たす設定値を、デフォルト値として有用な設定値(有用なデフォルト値)としてレコメンドする。例えば、レコメンド条件が、有用度が7以上である場合、図8の例では、レコメンド部25は、利用傾向がクラスタ1に属するユーザに、設定値a1,c1を有用なデフォルト値としてレコメンドする。
なお、レコメンド部25は、有用度がレコメンド条件を満たす設定値であっても、当該設定値がデフォルト値として設定済みである場合には、当該設定値をレコメンドしないのが好ましい。これにより、ユーザに対する余計なレコメンドを抑制できる。レコメンド部25は、設定情報記憶部23に記憶されたユーザ端末1のデフォルト値を参照することにより、設定値がデフォルト値として設定済みであるか判断できる。
学習部26は、定期的に又は所定のタイミング(利用傾向やクラスタが更新されたタイミングなど)で、利用傾向記憶部22に記憶された利用傾向に基づいて、利用傾向の分類方法及び設定値のレコメンド条件を、レコメンドの成功確率が高まるように更新する。すなわち、学習部26が、レコメンドの成功確率が高い分類方法及びレコメンド条件を学習する。
分類方法を更新するとは、クラスタリング方法のパラメータ(k平均法におけるkなど)や分類条件のパラメータ(利用傾向の値や割合の閾値など)を更新することをいう。レコメンド条件を更新するとは、レコメンド条件のパラメータ(有用度の閾値など)を更新することをいう。レコメンドの成功確率とは、レコメンド部25による設定値のレコメンドが成功する確率のことである。レコメンドの成功とは、レコメンド部25がレコメンドした設定値がユーザによりデフォルト値として設定され、かつ、レコメンドした設定値に対応するアプリの利用傾向が所定の条件を満たすことをいう。所定の条件として、例えば、アプリの利用回数が増加することや、平均ステップ数が減少することなどが考えられる。
図9は、レコメンドの成功例及び失敗例を説明する図である。図9(A)は、ユーザXのレコメンド前の利用回数の一例を示し、図9(B)〜図9(D)は、ユーザXのレコメンド後の利用回数の一例を示している。図9(B),(C)はレコメンドの失敗例、図9(D)はレコメンドの成功例に相当する。図9の例では、ユーザXのレコメンド前のアプリAの設定aのデフォルト値はa1であり、レコメンドサーバ2は、ユーザXに対して、設定aのデフォルト値として設定値a2をレコメンドしている。また、上記の所定の条件は、アプリの利用回数の増加であるものとする。
図9(B)の例では、ユーザXは、レコメンドサーバ2からのレコメンドに応じず、設定aのデフォルト値を変更していない。この場合、ユーザが、設定値a2はデフォルト値として有用でない、と判断したと考えられるため、学習部26は、ユーザXへのレコメンドは失敗と判断する。
図9(C)の例では、ユーザXは、レコメンドサーバ2からのレコメンドに応じて、設定aのデフォルト値を設定値a2に変更したものの、レコメンド後のアプリAの利用回数が減少している。この場合、ユーザが、設定値a2はデフォルト値として有用である、と判断したものの、実際には有用ではなかったと考えられるため、学習部26は、ユーザXへのレコメンドは失敗と判断する。
図9(D)の例では、ユーザXは、レコメンドサーバ2からのレコメンドに応じて、設定aのデフォルト値を設定値a2に変更し、かつ、レコメンド後のアプリAの利用回数が増加している。この場合、ユーザが、設定値a2はデフォルト値として有用であると判断し、かつ、実際に有用であった、と考えられるため、学習部26は、ユーザXへのレコメンドは成功と判断する。
このように、学習部26は、レコメンド前後の利用傾向と、レコメンド前後のデフォルト値と、に基づいて、レコメンドの成否を判断することができる。なお、学習部26は、利用傾向記憶部22に記憶された利用傾向を参照することにより、レコメンド前後の利用傾向を取得することができる。また、学習部26は、設定情報記憶部23に記憶された設定情報を参照することにより、レコメンド前後のデフォルト値を取得することができる。
本実施形態において、レコメンド部25はユーザに設定値をレコメンドし、ユーザはレコメンドされた設定値をデフォルト値として設定する(又は設定しない)。また、アップロード部14はアプリの操作ログをレコメンドサーバ2に送信し、利用傾向記憶部22はユーザ端末1から受信した操作ログに基づいて集計されたアプリの利用傾向を記憶する。さらに、学習部26は利用傾向記憶部22に記憶されたアプリの利用傾向と、設定情報記憶部23に記憶されたデフォルト値と、に基づいて、分類部24が利用する分類方法及びレコメンド部25が利用するレコメンド条件を学習する。このように、学習部26は、アプリのレコメンド結果(レコメンド後のデフォルト値及び利用傾向)をフィードバックされ、当該レコメンド結果に基づいて、分類方法及びレコメンド条件を学習する。したがって、学習部26は、レコメンドの成功確率が高まるように分類方法及びレコメンド条件を学習できる。
学習部26は、サポートベクターマシン(SVM)、クラスタリング、ニューラルネットワーク、決定木などの、任意の学習方法を利用して、レコメンドの成功確率が高い分類方法及びレコメンド条件を学習できる。なお、学習部26は、分類方法及びレコメンド条件を学習するための機械学習エンジンを備えるのが好ましい。
また、学習部26は、定期的に又は所定のタイミング(利用傾向やクラスタが更新されたタイミングなど)で、利用傾向記憶部22に記憶された利用傾向と、設定情報記憶部23に記憶されたデフォルト値と、に基づいて、クラスタごとの各設定値の有用度を更新する。ここで、有用度の算出方法について、クラスタXにおける設定値a1の有用度を例に説明する。設定値a1は、アプリAの設定aの設定値であるものとする。
学習部26は、利用傾向がクラスタXに属するユーザによるアプリAの利用回数(又はその割合)の平均値が多いほど、クラスタXにおける設定値a1の有用度が高くなるように、有用度を算出する。また、学習部26は、利用傾向がクラスタXに属するユーザによるアプリAの平均ステップ数(又はその割合)の平均値が小さいほど、クラスタXにおける設定値a1の有用度が高くなるように、有用度を算出する。これは、アプリAの利用回数の平均値が多いほど、又はアプリAの平均ステップ数の平均値が小さいほど、クラスタXに属するユーザがアプリAを使い慣れており、当該ユーザの利用傾向に基づく有用度の信頼性が高くなる、と考えられるためである。
また、学習部26は、利用傾向がクラスタXに属するユーザのアプリAのデフォルト値における、設定値a1の割合が大きいほど、クラスタXにおける設定値a1の有用度が高くなるように、有用度を算出する。これは、デフォルト値として設定値a1を利用するユーザが多いほど、設定値a1が有用なデフォルト値である可能性が高い、と考えられるためである。
また、学習部26は、利用傾向がクラスタXに属するユーザに設定値a1がレコメンドされた後、当該ユーザがデフォルト値として設定値a1を設定した場合、クラスタXにおける設定値a1の有用度が高くなるように、有用度を算出してもよい。これは、レコメンドされた設定値a1がデフォルト値に設定された場合、ユーザにより設定値a1が有用なデフォルト値と判断された、と考えられるためである。
また、学習部26は、利用傾向がクラスタXに属するユーザが、デフォルト値を設定値a1から他の設定値に変更した場合、クラスタXにおける設定値a1の有用度が低くなるように、有用度を算出してもよい。これは、ユーザによりデフォルト値が設定値a1から他の設定値に変更された場合、当該ユーザにより設定値a1がデフォルト値として有用ではないと判断された、と考えられるためである。
また、学習部26は、利用傾向がクラスタXに属するユーザによりデフォルト値が設定値a1に設定された後、当該ユーザのアプリAの利用回数(又はその割合)が増加した場合、クラスタXにおける設定値a1の有用度が高くなるように、有用度を算出してもよい。これは、設定値a1をデフォルト値に設定することにより、アプリAの利便性が向上した結果、アプリAの利用回数(又はその割合)が増加した、と考えられるためである。
また、学習部26は、利用傾向がクラスタXに属するユーザによりデフォルト値が設定値a1に設定された後、当該ユーザのアプリAの平均ステップ数(又はその割合)が減少した場合、クラスタXにおける設定値a1の有用度が高くなるように、有用度を算出してもよい。これは、設定値a1をデフォルト値に設定することにより、ユーザがアプリAのジョブを実行するために要する手間が減少した、と考えられるためである。
次に、本実施形態に係るレコメンドシステム1000の処理について説明する。図10は、利用傾向及びクラスタの更新処理の一例を示すシーケンス図である。
ユーザ端末1のアップロード部14は、更新タイミングが到来すると、操作ログ記憶部13に、当該タイミングに送信する操作ログを要求する(ステップS101)。具体的には、アップロード部14は、前回の更新タイミング以降に操作ログ記憶部13に記憶された操作ログ(実行日時が前回の送信タイミング以降の操作ログ)を、操作ログ記憶部13に要求する。
操作ログ記憶部13は、操作ログを要求されると、要求された操作ログをアップロード部14に渡す(ステップS102)。
アップロード部14は、操作ログを受け取ると、受け取った操作ログをレコメンドサーバ2にアップロードする(ステップS103)。
アップロード部14が操作ログをアップロードすると、レコメンド制御部21は、アップロードされた操作ログを受け付け、当該操作ログに基づいて、所定期間ごとの各ユーザの各アプリの利用傾向を集計する(ステップS104)。
レコメンド制御部21は、利用傾向を集計すると、集計した利用傾向を、利用傾向記憶部22に保存する(ステップS105)。これにより、利用傾向記憶部22に記憶された利用傾向が更新される。
また、レコメンド制御部21は、分類部24に利用傾向の分類を要求する(ステップS106)。なお、図10の例では、分類部24が、レコメンド制御部21からの要求に応じて利用傾向を分類する場合を想定しているが、分類部24は、レコメンド制御部21とは独立したタイミングで利用傾向を分類してもよい。
分類部24は、利用傾向の分類を要求されると、利用傾向記憶部22に各ユーザの各アプリの利用傾向を要求する(ステップS107)。この際、分類部24は、更新タイミングを含む期間の利用傾向(ステップS107において更新された利用傾向)だけを要求してもよい。これにより、レコメンドサーバ2の負荷を低減し、処理を高速化できる。
また、分類部24は、更新タイミングを含む期間を含む、複数の期間の利用傾向を要求してもよい。これにより、複数の期間の利用傾向を、同一の分類方法で分類できる。
利用傾向記憶部22は、利用傾向を要求されると、要求された利用傾向を分類部24に渡す(ステップS108)。
分類部24は、利用傾向を受け取ると、受け取った利用傾向に基づいて、所定期間ごとの各ユーザの利用傾向を分類する(ステップS109)。利用傾向の分類方法は、上述の通りである。
分類部24は、利用傾向を分類すると、分類により得られたクラスタを、利用傾向記憶部22に保存する(ステップS110)。これにより、利用傾向記憶部22に記憶されたクラスタが更新される。
以上の処理により、レコメンドサーバ2は、最新の操作ログに基づいて、利用傾向及びクラスタを更新できる。これにより、図5のような利用傾向及びクラスタが、利用傾向記憶部22に記憶される。
図11は、設定値のレコメンド処理の一例を示すシーケンス図である。以下、設定値のレコメンド対象となるユーザを、対象ユーザと称する。対象ユーザは、1人であってもよいし、複数であってもよい。
レコメンドサーバ2のレコメンド制御部21は、レコメンドタイミングが到来すると、レコメンド部25に、対象ユーザへの設定値のレコメンドを要求する(ステップS201)。図11の例では、レコメンド部25が、レコメンド制御部21からの要求に応じて設定値をレコメンドする場合を想定しているが、レコメンド部25は、レコメンド制御部21とは独立したタイミングで設定値をレコメンドしてもよい。
レコメンド部25は、設定値のレコメンドを要求されると、利用傾向記憶部22にレコメンドタイミングを含む期間における、対象ユーザの利用傾向が属するクラスタを要求する(ステップS202)。
利用傾向記憶部22は、クラスタを要求されると、要求されたクラスタをレコメンド部25に渡す(ステップS203)。
レコメンド部25は、クラスタを受け取ると、受け取ったクラスタ(対象ユーザのクラスタ)における各設定値の有用度及びレコメンド条件を参照し、有用度がレコメンド条件を満たす設定値を、デフォルト値として有用な設定値として選択する(ステップS204)。
レコメンド部25は、設定値を選択すると、選択した設定値を示す情報を対象ユーザのユーザ端末1に送信する(ステップS206)。設定値を示す情報には、設定値や、当該設定値に対応するアプリ及び設定を示す情報が含まれる。
レコメンド部25が設定値を示す情報を送信すると、対象ユーザのユーザ端末1の端末制御部11は、当該情報を受け付け、操作ログ記憶部13に操作ログを保存する(ステップS206)。ここで保存される操作ログの操作内容は、設定値のレコメンドである。
また、端末制御部11は、受け付けた情報に基づいて、レコメンド部25が選択した設定値を、対象ユーザにデフォルト値として有用な設定値としてレコメンドする(ステップS207)。端末制御部11による設定値のレコメンド方法は任意である。端末制御部11は、例えば、ユーザ端末1の表示装置106にポップアップやダイアログを表示させることにより、設定値をレコメンドしてもよいし、プッシュ通知やメール送信により設定値をレコメンドしてもよい。
以上の処理により、レコメンドサーバ2は、対象ユーザにとってデフォルト値として有用な設定値をレコメンドできる。また、図5のような利用傾向及びクラスタが、利用傾向記憶部22に記憶される。
図12は、有用度の更新処理の一例を示すシーケンス図である。
レコメンドサーバ2のレコメンド制御部21は、有用度の更新タイミングが到来すると、学習部26に、有用度の更新を要求する(ステップS401)。図12の例では、学習部26が、レコメンド制御部21からの要求に応じて有用度を更新する場合を想定しているが、学習部26は、レコメンド制御部21とは独立したタイミングで有用度を更新してもよい。
学習部26は、有用度の更新を要求されると、利用傾向記憶部22に利用傾向及びクラスタを要求する(ステップS402)。学習部26は、有用度の算出方法に応じた利用傾向及びクラスタを要求すればよい。学習部26は、例えば、更新タイミングを含む複数の期間の利用傾向及びクラスタを要求する。
利用傾向記憶部22は、利用傾向及びクラスタを要求されると、要求された利用傾向及びクラスタを学習部26に渡す(ステップS403)。
また、学習部26は、設定情報記憶部23に、設定中のデフォルト値を要求する(ステップS404)。学習部26は、有用度の算出方法に応じたデフォルト値を要求すればよい。学習部26は、例えば、更新タイミングを含む複数の期間のデフォルト値を要求する。
設定情報記憶部23は、デフォルト値を要求されると、要求されたデフォルト値を学習部26に渡す(ステップS405)。
学習部26は、利用傾向、クラスタ、及びデフォルト値を受け取ると、受け取った利用傾向、クラスタ、及びデフォルト値に基づいて、クラスタごとの各設定値の有用度を算出する(ステップS406)。有用度の算出方法は、上述の通りである。
学習部26は、有用度を算出すると、算出した有用度をレコメンド部25に渡す(ステップS407)。レコメンド部25は、有用度を受け取ると、受け取った有用度を記憶し、元の有用度を削除する。これにより、レコメンド部25が記憶する有用度が更新される。以降、レコメンド部25は、更新された有用度を利用して、有用な設定値を選択する。
以上の処理により、有用度を更新できる。有用度を随時更新することにより、レコメンド部25は、最新の利用傾向及びデフォルト値に応じた有用な設定値をユーザにレコメンドできる。
図13は、分類方法及びレコメンド条件の学習処理の一例を示すシーケンス図である。
レコメンドサーバ2のレコメンド制御部21は、分類方法及びレコメンド条件の学習タイミングが到来すると、学習部26に、分類方法及びレコメンド条件の学習を要求する(ステップS501)。図13の例では、学習部26が、レコメンド制御部21からの要求に応じて分類方法及びレコメンド条件を学習する場合を想定しているが、学習部26は、レコメンド制御部21とは独立したタイミングで分類方法及びレコメンド条件を学習してもよい。
学習部26は、分類方法及びレコメンド条件の学習を要求されると、利用傾向記憶部22に利用傾向及びクラスタを要求する(ステップS502)。学習部26は、分類方法及びレコメンド条件の学習方法に応じた利用傾向及びクラスタを要求すればよい。
利用傾向記憶部22は、利用傾向及びクラスタを要求されると、要求された利用傾向及びクラスタを学習部26に渡す(ステップS503)。
また、学習部26は、設定情報記憶部23にデフォルト値を要求する(ステップS504)。学習部26は、分類方法及びレコメンド条件の学習方法に応じたデフォルト値を要求すればよい。
設定情報記憶部23は、デフォルト値を要求されると、要求されたデフォルト値を学習部26に渡す(ステップS505)。
学習部26は、利用傾向、クラスタ、及びデフォルト値を受け取ると、受け取った利用傾向、クラスタ、及びデフォルト値に基づいて、レコメンドの成功確率が高い分類方法及びレコメンド条件(パラメータ)をそれぞれ学習する(ステップS506)。分類方法及びレコメンド条件の学習方法は、上述の通りである。
学習部26は、分類方法を学習すると、学習した分類方法を分類部24に渡す(ステップS507)。分類部24は、分類方法を受け取ると、受け取った分類方法を記憶し、元の分類方法を削除する。これにより、分類部24が記憶する分類方法が更新される。以降、分類部24は、更新された分類方法を利用して、利用傾向を分類する。
また、学習部26は、レコメンド条件を学習すると、学習したレコメンド条件をレコメンド部25に渡す(ステップS508)。レコメンド部25は、レコメンド条件を受け取ると、受け取ったレコメンド条件を記憶し、元のレコメンド条件を削除する。これにより、レコメンド部25が記憶するレコメンド条件が更新される。以降、レコメンド部25は、更新されたレコメンド条件を利用して、有用な設定値をレコメンドする。
以上の処理により、分類方法及びレコメンド条件を更新できる。分類方法を随時更新することにより、分類部24は、最新の利用傾向及びデフォルト値に応じた分類方法により、ユーザの利用傾向を分類できる。また、レコメンド条件を随時更新することにより、レコメンド部25は、最新の利用傾向及びデフォルト値に応じたレコメンド条件により、有用な設定値をレコメンドできる。
以上説明した通り、本実施形態に係るレコメンドシステム1000は、利用傾向が対象ユーザと同一のクラスタに属するユーザ、すなわち、対象ユーザと類似する利用傾向を有するユーザ、にとって有用な設定値を、対象ユーザにレコメンドする。利用傾向が類似するユーザ間では、有用な設定値が同一である可能性が高いため、レコメンドシステム1000は、対象ユーザにとって有用な設定値をレコメンドすることができる。
なお、本実施形態において、レコメンドシステム1000に含まれるユーザ端末1の少なくとも一部がレコメンドサーバ2の機能を備え、レコメンドサーバ2の機能を備えたユーザ端末1がレコメンド装置として、他のユーザ端末1に有用な設定値をレコメンドしてもよい。
また、上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)や従来の回路モジュール等のデバイスを含むものとする。
また、上記実施形態に挙げた構成等に、その他の要素との組み合わせなど、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更可能であり、その応用形態に応じて適切に定めることができる。