(57)【要約】【課題】複数の事象に関して時間の経過に応じた特徴量の変化の傾向を抽出可能とすることができる。【解決手段】クラスタ抽出装置は、複数の事象に関して時間の経過に応じた特徴量を示す情報に基づいて、前記事象ごとに、単位期間ごとの前記特徴量の変化の継続時間に応じた非負値を含む配列を生成する生成部と、前記生成部によって生成された配列に対して因子分解を適用して、前記特徴量の変化の傾向をクラスタ抽出する抽出部と、を有する。【選択図】図１０
2016031639.tif 000002
【特許請求の範囲】
【請求項１】
複数の事象に関して時間の経過に応じた特徴量を示す情報に基づいて、前記事象ごとに、単位期間ごとの前記特徴量の変化の継続時間に応じた非負値を含む配列を生成する生成部と、
前記生成部によって生成された配列に対して因子分解を適用して、前記特徴量の変化の傾向をクラスタ抽出する抽出部と、
を有することを特徴とするクラスタ抽出装置。
【請求項２】
前記抽出部は、前記生成部によって生成された配列に対して非負値テンソル分解を適用して、前記特徴量の変化の傾向をクラスタ抽出する、
ことを特徴とする請求項１記載のクラスタ抽出装置。
【請求項３】
前記生成部は、複数の購買者に関して時間の経過に応じた各商品の購買傾向を示す情報に基づいて、前記購買者ごとに、前記単位期間ごとの各商品の購買傾向の変化の継続時間に応じた非負値を含む配列を生成する、
ことを特徴とする請求項１又は２記載のクラスタ抽出装置。
【請求項４】
コンピュータが、
複数の事象に関して時間の経過に応じた特徴量を示す情報に基づいて、前記事象ごとに、単位期間ごとの前記特徴量の変化の継続時間に応じた非負値を含む配列を生成する生成手順と、
前記生成手順において生成された配列に対して因子分解を適用して、前記特徴量の変化の傾向をクラスタ抽出する抽出手順と、
を実行することを特徴とするクラスタ抽出方法。
【請求項５】
コンピュータに、
複数の事象に関して時間の経過に応じた特徴量を示す情報に基づいて、前記事象ごとに、単位期間ごとの前記特徴量の変化の継続時間に応じた非負値を含む配列を生成する生成手順と、
前記生成手順において生成された配列に対して因子分解を適用して、前記特徴量の変化の傾向をクラスタ抽出する抽出手順と、
を実行させるクラスタ抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタ抽出装置、クラスタ抽出方法、及びクラスタ抽出プログラムに関する。
【背景技術】
【０００２】
負でない値を要素とする２次元の行列形式で表現可能なデータは、非負値行列分解（Non-negative Matrix Factorization：ＮＭＦ）と呼ばれる手法を用いて、その特徴（トピック）を抽出することができる（例えば、非特許文献１）。このようなデータの一例として、例えば、商品の購買履歴（いつ、何を購買したか）を示すデータが挙げられる。したがって、ＮＭＦについては、商品の購買履歴の分析等への展開が期待できる（例えば、非特許文献２）。しかし、２次元の範囲で取り扱えるデータには限界があり、データの次元数を増やした高度な分析を行うためには、分析手法の拡張が必要とされる。
【０００３】
ところで、商品の購買履歴等の構造化されたデータや、テキストデータ又は画像データ等の構造化されていないデータの多くは、テンソル形式により表現できることが知られている。テンソルとは行列の拡張であり、例えば、行、列、及び奥行きという３つの軸を有するデータのことをいう。４つ以上の軸を有するデータも、テンソルと呼ばれる。
【０００４】
テンソル形式のデータ中に存在するクラスタを発見するために、非負値テンソル分解（Non-negative Tensor Factorization：ＮＴＦ）と呼ばれる手法の有用性が認められている（例えば、非特許文献１及び非特許文献３）。クラスタとは、例えば、似たような特徴を有するグループをいう。或るテンソルデータに対してＮＴＦが適用にされると、当該テンソルデータは、より低次のランクの行列（以下、「低次行列」という。）の積に分解される。各低次行列は、それぞれ、テンソル形式のデータ中に存在する各行、各列、及び各奥行きに対応する事物のクラスタへの寄与度を示す。その結果、テンソル形式のデータ中に存在するクラスタの発見が可能となる。したがって、例えば、購買履歴データに対してＮＴＦを適用することで抽出されたクラスタに基づいて、お薦め商品のリストを作成したり、ニュース記事の集合に対してＮＴＦを適用することで抽出されたクラスタに基づいて、ニュース記事の自動分類等を行ったりすることが可能となる。
【０００５】
図１は、非負値テンソル分解（ＮＴＦ）の購買データへの適用例を示す図である。図１において、購買データを示す購買テンソルＸ＝｛ｘｉｊｋ｝は、ｉ番目の奥行きに対応するユーザが、ｊ行目に対応する商品を、ｋ列目に対応する時刻に購買していれば、ｘｉｊｋ＝１となり、そうでなければ、ｘｉｊｋ＝０の値となる、大きさがＩ×Ｊ×Ｋのテンソルである。Ｉは、奥行きの数を示し、Ｊは、行数を示し、Ｋは、列数を示す。すなわち、購買テンソルＸの各奥行き、各行、各列は、特定のユーザ、特定の商品、特定の時刻に対応している。購買テンソルＸに、ＮＴＦを適用することで、以下の数１を満たすＩ行Ｒ列のユーザ特徴行列Ａ＝｛ａｉｒ｝、Ｊ行Ｒ列の商品特徴行列Ｂ＝｛ｂｊｒ｝、及びＫ行Ｒ列の時刻特徴行列Ｃ＝｛ｃｋｒ｝が求まる。なお、図１において、時刻特徴行列Ｃについては、便宜上、時刻に関する配列方向を購買テンソルＸに合わせるため、時刻特徴行列Ｃの転置行列ＣＴが示されているが、時刻特徴行列Ｃにおいて、行方向は時刻に対応し、列方向はクラスタに対応する。
【０００６】
【数１】
2016031639.tif 000003
なお、数１の左辺と右辺との間の記号は、右辺と左辺とが類似していることを示す。また、クラスタの総数に相当する各特徴行列のランク数は、解析する前に予め決定される。
【０００７】
図１において、ユーザ特徴行列Ａのクラスタ１に対応する列に着目すると、ユーザ１に対応する行の値が０より大きい値となっている。これは、ユーザ１が、クラスタ１に所属することを示す。また、商品特徴行列Ｂのクラスタ１に対応する列に着目すると、商品１に対応する行の値が０より大きい値となっている。これは、商品１が、クラスタ１に所属することを示す。更に、時刻特徴行列Ｃのクラスタ１に対応する列に着目すると、時刻１の行と時刻２の行との値が、０より大きい値となっている。これは、時刻１及び時刻２において購買されやすいというクラスタ１が有する特徴を表しているといえる。そこで、時刻１と時刻２とをまとめて、「クラスタ１の時刻特徴」と呼ぶこととする。同様に、クラスタ１に所属するユーザを、「クラスタ１のユーザ特徴」と呼び、クラスタ１に所属する商品を、「クラスタ１の商品特徴」と呼ぶこととする。また、クラスタ１のユーザ特徴、クラスタ１の商品特徴、クラスタ１の時刻特徴をまとめて、「クラスタ１の特徴」と呼ぶこととする。ＮＴＦの適用によって得られるユーザ特徴行列Ａ、商品特徴行列Ｂ、及び時刻特徴行列Ｃに基づいて、図２に示されるようなクラスタ抽出（クラスタリング）が可能となる。
【０００８】
図２は、非負値テンソル分解（ＮＴＦ）を適用して得られるクラスタ抽出の結果の一例を示す図である。図２には、列方向にクラスタ１〜３が配列され、行方向にユーザ特徴、商品特徴、及び時刻特徴が配列されている。クラスタ１の列には、クラスタ１に属するユーザ、商品、及び時刻が示されている。クラスタ２の列には、クラスタ２に属するユーザ、商品、及び時刻が示されている。クラスタ３の列には、クラスタ３に属するユーザ、商品、及び時刻が示されている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】澤田宏, "非負値行列因子分解NMFの基礎とデータ／信号解析への応用", 電子情報通信学会誌, Vol. 95, No. 9, pp. 829-833, 2012.
【非特許文献２】幸島匡宏，江崎健司，高屋典子，澤田宏，"複数行列の行列分解に関する一考察"，電子情報通信学会技術研究報告, Vol. 113, No. 286, IBISML2013-50, pp. 107-114, 2013年11月.
【非特許文献３】A. Cichocki, R. Zdunek, A. H. Phan, and S. I.  Amari. Nonnegative matrix and tensor factorizations: applications to exploratory multi-way data analysis and blind source separation, John Wiley & Sons, 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、図１で示したＮＴＦの適用方法では、ユーザの購買の発生の傾向を捉えることはできるものの、ユーザの購買の変化の傾向を捉えることは困難である。
【００１１】
図３は、購買テンソルに対する非負値テンソル分解（ＮＴＦ）の適用では購買の変化の傾向を捉えることが困難であることを説明するための図である。図３において、（１）に示される購買テンソルＸと、（２）に示されるクラスタ抽出の結果とは、図１又は図２に示したものと同じである。但し、図３において、購買テンソルＸの各商品は、ビール関連の商品に対応し、各時刻は、２０１４年４月のような、年と月のとの組み合わせに対応する。
【００１２】
図３の購買テンソルＸからは、ユーザ１による購買対象が、時刻１（２０１４／４）及び時刻２（２０１４／５）において、商品１（ビール１）であり、時刻３（２０１４／６）及び時刻４（２０１４／７）において、商品２（ビール２）及び商品３（ビール３）に変化し、時刻５（２０１４／８）及び時刻６（２０１４／９）において、再び商品１（ビール１）に戻る、という購買行動の変化を読み取ることができる。ユーザ２に関しても、同様に、購買テンソルＸから購買行動の変化を読み取ることができる。
【００１３】
しかし、このような購買行動の変化の傾向を、（２）に示されるクラスタ抽出の結果から読み取るのは容易ではない。何故なら、時刻３（２０１４／６）及び時刻４（２０１４／７）において商品２（ビール２）及び商品３（ビール３）がユーザ１によって購買されるという傾向は、クラスタ２に含まれる一方で、時刻５（２０１４／８）及び時刻６（２０１４／９）において商品１（ビール１）がユーザ１によって購買されるという傾向は、クラスタ３に含まれるからである。すなわち、同一ユーザの購買行動が、複数のクラスタに跨ってしまうからである。
【００１４】
図３の例では、便宜上、クラスタ数が少数であるが、クラスタ数が５０や１００のように多数に設定される場合には、購買行動の変化前後に対応するクラスタを特定することは更に困難となる。
【００１５】
本発明は、上記の点に鑑みなされたもので、複数の事象に関して時間の経過に応じた特徴量の変化の傾向を抽出可能とすることを目的とする。
【課題を解決するための手段】
【００１６】
一態様によれば、クラスタ抽出装置は、複数の事象に関して時間の経過に応じた特徴量を示す情報に基づいて、前記事象ごとに、単位期間ごとの前記特徴量の変化の継続時間に応じた非負値を含む配列を生成する生成部と、前記生成部によって生成された配列に対して因子分解を適用して、前記特徴量の変化の傾向をクラスタ抽出する抽出部と、を有する。
【発明の効果】
【００１７】
一態様によれば、複数の事象に関して時間の経過に応じた特徴量の変化の傾向を抽出可能とすることができる。
【図面の簡単な説明】
【００１８】
【図１】非負値テンソル分解（ＮＴＦ）の購買データへの適用例を示す図である。
【図２】非負値テンソル分解（ＮＴＦ）を適用して得られるクラスタ抽出の結果の一例を示す図である。
【図３】購買テンソルに対する非負値テンソル分解（ＮＴＦ）の適用では購買の変化の傾向を捉えることが困難であることを説明するための図である。
【図４】購買テンソル及びスイッチテンソルの一例を示す図である。
【図５】購買テンソルの各要素の値とスイッチテンソルの各要素の値との一例を示す図である。
【図６】スイッチテンソルの一つの要素の値の算出方法の一例を説明するための図である。
【図７】スイッチテンソルに対する非負値テンソル分解（ＮＴＦ）の適用結果の一例を示す図である。
【図８】スイッチテンソルに非負値テンソル分解（ＮＴＦ）を適用して得られるクラスタ抽出の結果の一例を示す図である。
【図９】本発明の実施の形態におけるクラスタ抽出装置のハードウェア構成例を示す図である。
【図１０】本発明の実施の形態におけるクラスタ抽出装置の機能構成例を示す図である。
【図１１】クラスタ抽出装置が実行する処理手順の一例を説明するためのフローチャートである。
【図１２】購買情報テーブルの構成例を示す図である。
【図１３】スイッチ購買情報テーブルの構成例を示す図である。
【図１４】ユーザ特徴テーブルの構成例を示す図である。
【図１５】商品変化特徴テーブルの構成例を示す図である。
【図１６】時区間特徴テーブルの構成例を示す図である。
【図１７】特徴行列の推定処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、例えば、図１に示される購買テンソルＸ＝｛ｘｉｊｋ｝を、スイッチテンソルＹ＝｛ｙｉｊｋ｝に変換し、スイッチテンソルＹに対して、非負値テンソル分解（Non-negative Tensor Factorization：ＮＴＦ）を適用することで、購買の変化の傾向を特徴として有するクラスタの抽出を可能とする。クラスタとは、例えば、似たような特徴を有するグループをいう。スイッチテンソルＹは、例えば、以下の（１）〜（３）の条件を満たすように生成される。
（１）時刻の区間（以下、「時区間」という。）が、一つの列に対応するように列ｋを生成する。
（２）（１）において生成された、（或る一つの列に対応する）時区間ｋにおける、商品の購買の変化の仕方が、一つの行に対応するように、行ｊを生成する。
（３）ユーザｉに関して、（１）において生成された、（或る一つの列に対応する）時区間ｋにおいて、（２）において生成された、（或る一つの行に対応する）商品の購買の変化の仕方ｊが、購買テンソルＸにおいて発生しているか否かと、購買の変化の継続性又はインパクトの大きさとが反映されるように、スイッチテンソルＹの各要素の値を設定する。なお、本実施の形態において、商品の購買者を、便宜上、「ユーザ」という。
【００２０】
図４は、購買テンソル及びスイッチテンソルの一例を示す図である。図４において、スイッチテンソルＹ＝｛ｙｉｊｋ｝における列ｋは、時刻１及び時刻２、時刻２及び時刻３のように、隣り合った時刻を組み合わせた時区間（期間）に対応しており、（１）の条件を満たす。また、スイッチテンソルＹの行ｊは、列ｋに対応する時区間における商品の購買の変化の仕方に対応しており、（２）の条件を満たす。なお、「０→１」は、非購買から購買への変化を示し、「１→０」は、購買から非購買への変化を示す。
【００２１】
更に、（３）の条件を説明するため、購買テンソルＸの各要素の値と、スイッチテンソルＹの各要素の値との一例を図５に示す。
【００２２】
図５は、購買テンソルの各要素の値とスイッチテンソルの各要素の値との一例を示す図である。図５において、購買テンソルＸ＝｛ｘｉｊｋ｝は、ｉ番目の奥行きに対応するユーザが、ｊ行目に対応する商品を、ｋ列目に対応する時刻に購買していれば、ｘｉｊｋ＝１となり、そうでなければ、ｘｉｊｋ＝０の値となる、大きさがＩ×Ｊ×Ｋのテンソルである。一方、スイッチテンソルＹのサイズは、Ｉ×２Ｊ×（Ｋ−１）である。
【００２３】
図５において、スイッチテンソルＹの各要素の値は、当該要素の列の時区間において、当該要素の行に対応する商品の購買の変化の仕方が、購買テンソルＸにおいて発生していれば、非ゼロであり、当該変化の仕方が発生していなければ０である。ここで、非ゼロの値としては、例えば、前後における購買の継続期間が採用される。例えば、０（非購買）から１（購買）に変化する時区間であれば、当該時区間において、０から１に変化してから１が継続（連続）した時刻の数である。したがって、スイッチテンソルＹの各要素の値は、購買の変化後の状態が継続した時刻に比例した値となる。スイッチテンソルＹの要素の値を数式によって表現すると、以下の数２又は数３のようになる。なお、スイッチテンソルＹの行ｊ'が奇数行の場合、行ｊ'は、０（非購買）から１（購買）への変化に対応し、行ｊ'が、偶数行の場合、行ｊ'は、１（購買）から０（非購買）への変化に対応することとする。
ｊ'＝２ｊ−１の場合（奇数行の場合）
【００２４】
【数２】
2016031639.tif 000004
ｊ'＝２ｊの時（偶数行の場合）
【００２５】
【数３】
2016031639.tif 000005
図５に示されるスイッチテンソルＹの各要素の値は、数２又は数３によって算出された値である。例えば、ｙ１３２の値は、図６に示されるように算出される。
【００２６】
図６は、スイッチテンソルの一つの要素の値の算出方法の一例を説明するための図である。ｙ１３２は、時刻２から時刻３までの時区間における、ユーザ１による商品２の購買について、非購買から購買への変化の仕方をその値とする。したがって、ｙ１３２の値を求めるためには、購買テンソルＸにおいて、ユーザ１に関する商品２の行が参照される。当該行において、時刻２に対応する列（ｘ１２２）の値は０であり、時刻３に対応する列（Ｘ１２３の値）は１である。したがって、ｙ１３２の値は、０ではない。
【００２７】
また、ｙ１３２は、スイッチテンソルＹにおいて奇数行に対応する。したがって、ｙ１３２の値の算出には、数２が利用される。ここで、ｋ＝２である。したがって、Ｘ１２ｋ'＝０、及びｋ'＞２＋１を満たす最小のｋ'は、５である。すなわち、ｋ''は、５である。よって、数２より、ｙ１３２＝ｘ１２３＋ｘ１２４＋ｘ１２５＝２となる。
【００２８】
なお、スイッチテンソルＹの生成には、上記以外の方法が用いられてもよい。例えば、スイッチテンソルＹの列ｋを、例えば（時刻１、時刻２、及び時刻３）という３つの連続した時区間に対応させ、スイッチテンソルＹの行ｊの生成の際に、考えられる変化の仕方として、０→１→０、０→１→１、１→１→０、及び１→０→１の４通りの組み合わせが利用されてもよい。更に、スイッチテンソルＹの各要素ｙｉｊｋの算出は、単純な線形和でなく、重み付き和が利用されてもよい。
【００２９】
本実施の形態では、例えば、図５に示したスイッチテンソルＹに対して非負値テンソル分解を適用し、以下の数４を満たすＩ行Ｒ列のユーザ特徴行列Ａ＝｛ａｉｒ｝、２Ｊ行Ｒ列の商品変化特徴行列Ｂ＝｛ｂｊｒ｝、及び（Ｋ−１）行Ｒ列の時区間特徴行列Ｃ＝｛ｃｋｒ｝が算出される。
【００３０】
【数４】
2016031639.tif 000006
図７は、スイッチテンソルに対する非負値テンソル分解（ＮＴＦ）の適用結果の一例を示す図である。図７には、ＮＴＦが適用されたスイッチテンソルＹと、ＮＴＦの適用結果である、ユーザ特徴行列Ａ、商品変化特徴行列Ｂ、及び時区間特徴行列Ｃが示されている。なお、図７において、時区間特徴行列Ｃについては、便宜上、時区間に関する配列方向をスイッチテンソル＆に合わせるため、時区間特徴行列Ｃの転置行列ＣＴが示されているが、時区間特徴行列Ｃにおいて、行方向は時区間に対応し、列方向はクラスタに対応する。
【００３１】
また、図８は、スイッチテンソルに非負値テンソル分解（ＮＴＦ）を適用して得られるクラスタ抽出の結果の一例を示す図である。図８には、列方向にクラスタ１〜３が配列され、行方向にユーザ特徴、商品変化特徴、時区間特徴が配列されている。
【００３２】
図８において、例えば、クラスタ３に着目すると、ユーザ特徴として、ユーザ１及びユーザ２、商品変化特徴として、商品１［０→１］、商品２［１→０］、及び商品３［１→０］、時区間特徴として、時刻４−５が含まれている。すなわち、クラスタ３から、ユーザ１及びユーザ２が、時刻４〜時刻５の時区間において、商品２及び商品３から商品１へ、購買対を変更したことが読み取れる。これは、購買行動（購買傾向）の変化を特徴として有するクラスタが抽出できていることを示す。すなわち、本実施の形態によれば、購買行動（購買傾向）の変化の傾向を示すクラスタが抽出可能であることが分かる。
【００３３】
次に、上記したクラスタ抽出を実行するクラスタ抽出装置１０の一例について説明する。図９は、本発明の実施の形態におけるクラスタ抽出装置のハードウェア構成例を示す図である。図９のクラスタ抽出装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００３４】
クラスタ抽出装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００３５】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってクラスタ抽出装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００３６】
図１０は、本発明の実施の形態におけるクラスタ抽出装置の機能構成例を示す図である。図１０において、クラスタ抽出装置１０は、購買情報入力部１１、変換処理部１２、特徴行列推定部１３、特徴行列出力部１４、及び入出力制御部１５等を有する。これら各部は、クラスタ抽出装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。クラスタ抽出装置１０は、また、購買情報テーブル５１、スイッチ購買情報テーブル５２、ユーザ特徴テーブル５３、商品変化特徴テーブル５４、及び時区間特徴テーブル５５等を利用する。これら各テーブルは、補助記憶装置１０２、メモリ装置１０３、又はクラスタ抽出装置１０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００３７】
購買情報入力部１１は、購買テンソルを示す情報（以下、「購買情報」という。）の入力を受け付け、当該購買情報を、購買情報テーブル５１に記録する。変換処理部１２は、購買情報が示す購買テンソルをスイッチテンソルに変換し、変換結果をスイッチ購買情報テーブル５２に記録する。特徴行列推定部１３は、スイッチ購買情報テーブル５２が示すスイッチテンソルに対して非負値テンソル分解（ＮＴＦ）を適用して、ユーザ特徴行列、商品変化特徴行列、及び時区間特徴行列の推定値を算出し、それぞれの算出結果を、ユーザ特徴テーブル５３、商品変化特徴テーブル５４、又は時区間特徴テーブル５５に記録する。特徴行列出力部１４は、ユーザ特徴テーブル５３、商品変化特徴テーブル５４、及び時区間特徴テーブル５５の内容を出力する。入出力制御部１５は、指示入力や情報の出力に関する処理を制御する。
【００３８】
以下、クラスタ抽出装置１０が実行する処理手順について説明する。図１１は、クラスタ抽出装置が実行する処理手順の一例を説明するためのフローチャートである。
【００３９】
ステップＳ１００において、購買情報入力部１１は、購買情報の入力を受け付ける。購買情報入力部１１は、入力された購買情報を、購買情報テーブル５１に記録する。
【００４０】
図１２は、購買情報テーブルの構成例を示す図である。図１２において、購買情報テーブル５１は、ユーザＩＤフィールド、商品ＩＤフィールド、及び購買判定フィールドを有する。
【００４１】
ユーザＩＤフィールドには、ユーザＩＤが記録される。ユーザＩＤは、ユーザごとの識別子である。商品ＩＤフィールドには、商品ＩＤが記録される。商品ＩＤは、ユーザが購買した商品の識別子である。時刻ＩＤフィールドには、時刻ＩＤが記録される。時刻ＩＤは、ユーザが商品を購買した時刻（本実施の形態では、年月日）の識別子である。図１２において、時刻ＩＤは、数値によって示されているが、時刻を示す文字列であってもよい。購買判定フィールドには、購買判定値が記録される。購買判定値は、ユーザがその時刻に商品を購買したか否かを示す値である。１は、購買したことを示し、０は、購買していないことを示す。又は、購買判定値は、ユーザがその時刻に購買した当該商品の数が予め設定された閾値を超えていれば１、そうでなければ０であってもよい。購買判定値は購買の変化に対するインパクトの一例である。
【００４２】
ステップＳ１００において、購買情報入力部１１は、入力されたユーザＩＤ、商品ＩＤ、時刻ＩＤ、及び購買判定値の組数分の行を、購買情報テーブル５１に追加し、各行の各フィールに対して値を記録する。購買情報は、例えば、システム管理者等によって、入力装置１０７等を利用して手動で入力されてもよいし、ＰＯＳ（Point Of Sales system）システムから自動的に入力されてもよい。購買情報が自動的に入力される場合、商品の購買が発生するたびに、購買情報の入力が行われてもよい。この場合、同じ年月日における商品の購入に関する購買情報の時刻ＩＤは、同じ値となる。なお、各時刻ＩＤに対応する各時刻の間隔は、一定であるのが望ましい。したがって、仮に、或る日において、或る商品が購買されなかった場合、当該商品の商品ＩＤ及び当該日の年月日に対応する時刻ＩＤを含み、購買判定値を０とする購買情報が、各ユーザＩＤに関して購買情報テーブル５１に登録されてもよい。但し、各時刻ＩＤに対応する各時刻の間隔は一定間隔でなくてもよい。また、時刻ＩＤは、年月日ではなく日時等、他の時間単位に対応してもよい。
【００４３】
なお、購買情報テーブル５１の各フィールドに付与されているｉ、ｊ、ｋ、ｘｉｊｋは、購買テンソルにおける奥行き、行、列、及び要素のそれぞれの識別子である。すなわち、購買情報テーブル５１は、購買テンソルと等価である。
【００４４】
続いて、変換処理部１２は、購買情報テーブル５１が示す購買テンソルを、スイッチテンソルに変換する（Ｓ２００）。変換処理部１２は、変換結果を、スイッチ購買情報テーブル５２に記録する。
【００４５】
図１３は、スイッチ購買情報テーブルの構成例を示す図である。図１３において、スイッチ購買情報テーブル５２は、ユーザＩＤフィールド、商品変化ＩＤフィールド、時区間ＩＤフィールド、及び変化度フィールドを有する。ユーザＩＤフィールドには、ユーザＩＤが記録される。商品変化ＩＤフィールドには、商品変化ＩＤが記録される。商品変化ＩＤは、商品及び商品の購買の変化の仕方の組み合わせ（以下、「商品変化」という。）に対する識別子である。時区間ＩＤフィールドには、時区間ＩＤが記録される。時区間ＩＤは、時区間に対する識別子である。変化度フィールドには、変化度が記録される。変化度は、購買の変化の有無、及び変化が有る場合は、当該時区間において変化後の状態（購買又は非購買）が継続した時刻の数である。したがって、変化度は、０以上の実数値となる。
【００４６】
ステップＳ２００において、変換処理部１２は、購買情報テーブル５１に記録された各レコードに基づいて導出される値を、ユーザＩＤフィールド、商品変化ＩＤフィールド、時区間ＩＤフィールド、及び変化度フィールドに記録する。ステップＳ２００は、ステップＳ１００と同期的に実行されてもよい。又は、ステップＳ２００は、ステップＳ１００とは非同期に、システム管理者等による手動による指示に応じて実行されてもよいし、自動的に実行されてもよい。
【００４７】
なお、スイッチ購買情報テーブル５２の各フィールドに付与されているｉ、ｊ、ｋ、ｙｉｊｋは、スイッチテンソルにおける奥行き、行、列、要素のそれぞれの識別子である。すなわち、スイッチ購買情報テーブル５２は、スイッチテンソルと等価である。スイッチ購買情報テーブル５２は、表形式によって表現されているが、メモリ装置１０３内においては、３次元以上の配列データに、スイッチ購買情報テーブル５２の内容が格納されてもよい。
【００４８】
ステップＳ２００について更に詳しく説明する。
【００４９】
ここで、購買情報テーブル５１中に存在する全データを、以下の数５のように表す。
【００５０】
【数５】
2016031639.tif 000007
また、スイッチ購買情報テーブル５２に記録される全データを、以下の数６のように表す。
【００５１】
【数６】
2016031639.tif 000008
ｉは、ユーザを特定する識別子（ユーザＩＤ）に対応する。ｊは、商品を特定する識別子（商品ＩＤ）に対応する。ｋは、時刻を特定する識別子（時刻ＩＤ）に対応する。ｊ'は、商品変化を特定する識別子（商品変化ＩＤ）に対応する。ｋ'は、時区間を特定する識別子（時区間ＩＤ）に対応する。また、Ｉは、ユーザＩＤの総数を示す。Ｊは、商品ＩＤの総数を示す。Ｋは、時刻ＩＤの総数を示す。Ｊ'は、商品変化ＩＤの総数を示す。Ｋ'は、時区間ＩＤの総数を示す。
【００５２】
本実施の形態では、Ｊ'＝２Ｊ、及びＫ'＝Ｋ−１が成り立つように、スイッチテンソルが生成される例を示す。Ｋ'＝Ｋ−１であるのは、（時刻ｋ，時刻ｋ＋１）のように任意の隣り合う時刻の組を時区間ｋ'として扱うため、時区間ＩＤの総数は、時刻ＩＤの総数よりも１小さくなるからである。Ｊ'がＪの２倍になるのは、時区間（時刻ｋ，時刻ｋ＋１）における商品の購買の変化の仕方として、購買テンソルの要素の値が、ｘｉｊｋ＝０、ｘｉｊｋ＋１＝１のように、０から１に変化する場合と、ｘｉｊｋ＝１、ｘｉｊｋ＋１＝０のように、１から０に変化する場合とのそれぞれに関して、別個に商品変化ＩＤが設けられるからである。すなわち、一つの商品ＩＤに関して二つの商品変化ＩＤが設けられるからである。
【００５３】
ステップＳ２００において、ｊ'＝２ｊ−１である場合、すなわち、スイッチテンソルの奇数行に関しては、変換処理部１２は、上述した数２に基づいて各要素の値を算出する。一方、ｊ'＝２ｊである場合、すなわち、スイッチテンソルの偶数行に関しては、変換処理部１２は、上述した数３に基づいて各要素の値を算出する。
【００５４】
続いて、特徴行列推定部１３は、スイッチ購買情報テーブル５２が示すスイッチテンソルに対して非負値テンソル分解（ＮＴＦ）を適用して、ユーザ特徴行列、商品変化特徴行列、及び時区間特徴行列の推定値を算出し、それぞれの算出結果を、ユーザ特徴テーブル５３、商品変化特徴テーブル５４、又は時区間特徴テーブル５５に記録する（Ｓ３００）。
【００５５】
図１４は、ユーザ特徴テーブルの構成例を示す図である。図１４において、ユーザ特徴テーブル５３は、ユーザＩＤフィールド、クラスタＩＤフィールド、及びユーザ特徴値フィールドを有する。
【００５６】
ユーザＩＤフィールドには、ユーザＩＤが記録される。クラスタＩＤフィールドには、クラスタＩＤが記録される。クラスタＩＤは、クラスタごとの識別子である。ユーザ特徴値フィールドには、ユーザ特徴値が記録される。ユーザ特徴値は、当該ユーザＩＤに係るユーザの、当該クラスタＩＤに係るクラスタに対する特徴値（寄与度）である。なお、ユーザ特徴テーブル５３の各フィールドに付与されているｉ、ｒ、ａｉｒは、ユーザ特徴行列における行、列、要素のそれぞれの識別子である。すなわち、ユーザ特徴テーブル５３は、ユーザ特徴行列と等価である。
【００５７】
図１５は、商品変化特徴テーブルの構成例を示す図である。図１５において、商品変化特徴テーブル５４は、商品変化ＩＤフィールド、クラスタＩＤフィールド、及び商品変化特徴値フィールドを有する。
【００５８】
商品変化ＩＤフィールドには、商品変化ＩＤが記録される。クラスタＩＤフィールドには、クラスタＩＤが記録される。商品変化特徴値フィールドには、当該商品変化ＩＤに係る商品変化の、当該クラスタＩＤに係るクラスタに対する特徴値（寄与度）が記録される。なお、商品変化特徴テーブル５４の各フィールドに付与されているｊ、ｒ、ｂｊｒは、商品変化特徴行列における行、列、要素のそれぞれの識別子である。すなわち、商品変化特徴テーブル５４は、商品変化特徴行列と等価である。
【００５９】
図１６は、時区間特徴テーブルの構成例を示す図である。図１６において、時区間特徴テーブル５５は、時区間ＩＤフィールド、クラスタＩＤフィールド、及び時区間特徴値フィールドを有する。
【００６０】
時区間ＩＤフィールドには、時区間ＩＤが記録される。クラスタＩＤフィールドには、クラスタＩＤが記録される。時区間特徴値フィールドには、当該時区間ＩＤに係る時区間の、当該クラスタＩＤに係るクラスタに対する特徴値（寄与度）が記録される。なお、時区間特徴テーブル５５の各フィールドに付与されているｋ、ｒ、ｃｋｒは、時区間特徴行列における行、列、要素のそれぞれの識別子である。すなわち、時区間特徴テーブル５５は、時区間特徴行列と等価である。
【００６１】
続いて、特徴行列出力部１４は、ユーザ特徴テーブル５３、商品変化特徴テーブル５４、及び時区間特徴テーブル５５の内容を出力する（Ｓ４００）。ステップＳ４００は、上記の各ステップと同期的に実行されてもよいし、上記の各ステップとは非同期に実行されてもよい。例えば、入力装置１０７等を介して、システム管理者等によって出力指示が入力された際に、ステップＳ４００が実行されてもよい。出力形態は、表示装置１０６への表示であってもよいし、プリンタへの出力（印刷）であってもよい。又は、ネットワークを介して、所定の装置への転送であってもよい。
【００６２】
出力対象は、ユーザ特徴テーブル５３、商品変化特徴テーブル５４、及び時区間特徴テーブル５５の全ての行であってもよいし、出力指示において指定された範囲に限定されてもよい。例えば、出力対象を示す情報として、「商品変化特徴」及びクラスタＩＤが指定された場合は、商品変化特徴テーブル５４において当該クラスタＩＤを含む行の商品ＩＤフィールドの値、商品特徴値フィールドの値が出力されてもよい。更に、商品特徴値フィールドの値の降順にＮ件（例えば、１０件）の商品ＩＤが特定されることで、クラスタの商品変化特徴が分かりやすく出力されてもよい。
【００６３】
続いて、図１１のステップＳ３００の詳細について説明する。図１７は、特徴行列の推定処理の処理手順の一例を説明するためのフローチャートである。図１７の説明に関して、スイッチ購買情報テーブル５２に記録されている全データは、数６に示した通りである。ユーザ特徴テーブル５３に対応するユーザ特徴行列Ａ、商品変化特徴テーブル５４に対応する商品変化特徴行列Ｂ、時区間特徴テーブル５５に対応する時区間特徴テーブル５５Ｃを、それぞれ順番に、以下の数７、数８、数９として記す。
【００６４】
なお、以降の説明では、Ｉは、ユーザＩＤの総数、Ｊは、商品変化ＩＤの総数、Ｋは、時区間ＩＤの総数、Ｒは、クラスタＩＤの総数を示すこととする。また、ｉは、ユーザを特定する識別子（ユーザＩＤ）に対応し、ｊは、商品変化を特定する識別子（商品変化ＩＤ）に対応することとする。ｋは、時区間を特定する識別子（時区間ＩＤ）に対応する。ｒは、クラスタを特定する識別子（クラスタＩＤ）に対応することとする。
【００６５】
【数７】
2016031639.tif 000009
【００６６】
【数８】
2016031639.tif 000010
【００６７】
【数９】
2016031639.tif 000011
ステップＳ３１０において、特徴行列推定部１３は、ユーザ特徴行列Ａ、商品変化特徴行列Ｂ、及び時区間特徴行列Ｃのそれぞれの要素の値（ユーザ特徴値、商品変化特徴値、及び時区間特徴値）を初期化する。これらの値は、例えば、乱数を用いてランダムによって生成されてもよい。但し、各値は、０以上である。特徴行列推定部１３は、また、終了条件の閾値ε及び最大繰り返し回数を設定する。閾値εには、例えば、０．０１が設定されてもよいし、他の値が設定されてもよい。最大繰り返し回数には、例えば、５０又は１００が設定されてもよいし、他の値が設定されてもよい。
【００６８】
続いて、特徴行列推定部１３は、終了条件に用いる変数として、特徴更新の最大変化幅を示す変数δを、０に初期化する（Ｓ３２０）。
【００６９】
続いて、特徴行列推定部１３は、以下の数１０に示される更新式に基づいて、ユーザ特徴行列Ａを更新する（Ｓ３３０）。
【００７０】
【数１０】
2016031639.tif 000012
特徴行列推定部１３は、また、ユーザ特徴行列Ａの各要素について、更新前の値と更新後の値との差の絶対値を算出し、算出された絶対値の中の最大値がδより大きければ、当該最大値によってδを更新する。なお、当該最大値は、以下の数１１によって示される。また、当該最大値によるδの更新は、以下の数１２によって示される。
【００７１】
【数１１】
2016031639.tif 000013
【００７２】
【数１２】
2016031639.tif 000014
数１２において、記号「←」は、右辺の計算結果を左辺の変数に代入する処理を意味する。
【００７３】
続いて、特徴行列推定部１３は、以下の数１３に示される更新式に基づいて、商品変化特徴行列Ｂを更新する（Ｓ３４０）。
【００７４】
【数１３】
2016031639.tif 000015
特徴行列推定部１３は、また、商品変化特徴行列Ｂの各要素について、更新前の値と更新後の値との差の絶対値を算出し、算出された絶対値の中の最大値がδより大きければ、当該最大値によってδを更新する。なお、当該最大値は、以下の数１４によって示される。また、当該最大値によるδの更新は、以下の数１５によって示される。
【００７５】
【数１４】
2016031639.tif 000016
【００７６】
【数１５】
2016031639.tif 000017
続いて、特徴行列推定部１３は、以下の数１６に示される更新式に基づいて、時区間特徴行列Ｃを更新する（Ｓ３５０）。
【００７７】
【数１６】
2016031639.tif 000018
特徴行列推定部１３は、また、時区間特徴行列Ｃの各要素について、更新前の値と更新後の値との差の絶対値を算出し、算出された絶対値の中の最大値がδより大きければ、当該最大値によってδを更新する。なお、当該最大値は、以下の数１７によって示される。また、当該最大値によるδの更新は、数１８によって示される。
【００７８】
【数１７】
2016031639.tif 000019
【００７９】
【数１８】
2016031639.tif 000020
続いて、特徴行列推定部１３は、ステップＳ３２０〜Ｓ３５０に関する繰り返し回数に１を加算する（Ｓ３６０）。繰り返し回数の初期値は、０である。したがって、ステップＳ３２０〜Ｓ３５０が初めて実行された場合、繰り返し回数は１に更新される。
【００８０】
続いて、特徴行列推定部１３は、繰り返し回数が最大繰り返し回数を超えるか否か、又は変数δの値が閾値ε未満であるか否かを判定する（Ｓ３７０）。繰り返し回数が最大繰り返し回数以下であり、かつ、変数δの値が、閾値ε以上である場合（Ｓ３７０でＮｏ）、特徴行列推定部１３は、ステップＳ３２０以降を繰り返す。繰り返し回数が最大繰り返し回数を超える場合、又は変数δの値が閾値ε未満である場合（Ｓ３７０でＹｅｓ）、図１７の処理は終了する。
【００８１】
なお、数１０、数１３、及び数１６より明らかなように、ユーザ特徴値、商品変化特徴値、及び時区間特徴値は、相互に依存関係を有する。すなわち、いずれかの特徴値が変化すると、他の特徴値も変化する。そこで、図１７では、各特徴値を繰り返し更新しながら、数４を満たすような各特徴値の近似値が探索される。
【００８２】
なお、数１０、数１３、及び数１６の各更新式は、全てのユーザｉ、全ての商品ｊ、及び全ての時区間ｋについて、
【００８３】
【数１９】
2016031639.tif 000021
が成立する時に、左辺と右辺が一致し、更新の最大変化幅を示す変数δの値が閾値ε未満となるため、各特徴行列の更新が停止する。また、或るユーザｉについて、全てのｊ及び全てのｋについて、
【００８４】
【数２０】
2016031639.tif 000022
である時に、数１０の更新式に基づいてユーザ特徴行列Ａの更新が行われると、右辺の分子が右辺の分母より大きくなるため、ａｉｒが更新前の値よりも大きくなるように更新されることになる。すなわち、
【００８５】
【数２１】
2016031639.tif 000023
の値が大きくなるように（数１９の状態に近付くように）、ａｉｒが更新されることになる。
【００８６】
上述したように、本実施の形態によれば、複数のユーザに関して、時間の経過に応じた商品の購買傾向又は購買行動の変化の傾向を抽出可能とすることができる。
【００８７】
なお、本実施の形態では、ユーザごとの各時刻における商品の購買行動を示す購買テンソルに対するスイッチテンソルが生成され、当該スイッチテンソルからクラスタ抽出が行われる例を説明したが、本実施の形態は、ユーザごとの各時刻における商品の購買以外の情報に関して適用されてもよい。例えば、各ユーザが、いずれの店舗をいずれの時刻に訪問したのかを示すテンソル等、商品、ユーザ、時刻のように、それぞれに識別子を付与して識別可能であり、テンソル形式によって表現可能な情報であれば、各種の情報に関して本実施の形態が適用されてもよい。すなわち、本実施の形態は、複数の事象に関して、時間の経過に応じて変化する特徴量を含む情報に関して適用することができる。そして、当該情報は、３次元以上の情報であってもよい。したがって、本実施の形態によれば、複数の事象に関して時間の経過に応じた特徴量の変化の傾向を抽出可能とすることができる。
【００８８】
なお、本実施の形態において、複数のユーザ（による商品の購買）は、複数の事象の一例である。商品の購買傾向は、特徴量の一例である。購買テンソルは、複数の事象に関して時間の経過に応じた特徴量を示す情報の一例である。時区間は、単位期間の一例である。スイッチテンソルは、単位期間ごとの特徴量の変化の継続時間に応じた非負値を含む配列の一例である。変換処理部１２は、生成部の一例である。非負値テンソル分解は、因子分解の一例である。特徴行列推定部１３は、抽出部の一例である。
【００８９】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９０】
１０          クラスタ抽出装置
１１          購買情報入力部
１２          変換処理部
１３          特徴行列推定部
１４          特徴行列出力部
１５          入出力制御部
５１          購買情報テーブル
５２          スイッチ購買情報テーブル
５３          ユーザ特徴テーブル
５４          商品変化特徴テーブル
５５          時区間特徴テーブル
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
Ｂ            バス
【図１】
2016031639.tif 000024
【図２】
2016031639.tif 000025
【図３】
2016031639.tif 000026
【図４】
2016031639.tif 000027
【図５】
2016031639.tif 000028
【図６】
2016031639.tif 000029
【図７】
2016031639.tif 000030
【図８】
2016031639.tif 000031
【図９】
2016031639.tif 000032
【図１０】
2016031639.tif 000033
【図１１】
2016031639.tif 000034
【図１２】
2016031639.tif 000035
【図１３】
2016031639.tif 000036
【図１４】
2016031639.tif 000037
【図１５】
2016031639.tif 000038
【図１６】
2016031639.tif 000039
【図１７】
2016031639.tif 000040