(57)【要約】【課題】多様な情報を反映したクラスタリングを可能とする。【解決手段】データ分生方法は、Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して第１対象物および前記第２対象物の少なくとも一つをクラスタリングする。データ分析方法は、基礎行列の各要素に対して、関連度を示す値が入力された基礎行列を取得する取得ステップと、第１対象物のクラスタ数を示すＫと、第２対象物のクラスタ数を示すＬとを設定する設定ステップと、３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列の第２行列と、Ｌ行Ｍ列の第３行列とし、第１行列、第２行列および第３行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列に分解する分解ステップと、第１行列、第２行列および第３行列の少なくとも一つを出力することで、クラスタリング結果を出力する出力ステップと、を含む。【選択図】図６
2017004493.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して前記第１対象物および前記第２対象物のうち少なくとも一つをクラスタリングするデータ分析方法であって、
前記基礎行列の各要素に対して、前記関連度を示す値が入力された前記基礎行列を取得する取得ステップと、
前記第１対象物のクラスタ数を示すＫと、前記第２対象物のクラスタ数を示すＬとを設定する設定ステップと、
前記３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の１行および特定の１列の少なくとも一方の各要素に、所定範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、前記第１行列、前記第２行列および前記第３行列の積が、前記基礎行列に近似するように、前記第１行列、前記第２行列および前記第３行列に分解する分解ステップと、
前記第１行列、前記第２行列および前記第３行列の少なくとも一つを出力することで、前記第１対象物および前記第２対象物のうち少なくとも一つのクラスタリング結果を出力する出力ステップと、
を含むデータ分析方法。
【請求項２】
前記特定の１行および前記特定の１列の各要素に前記所定範囲に収まる数値が格納されている
請求項１に記載のデータ分析方法。
【請求項３】
前記所定範囲に収まる数値は、実質的に０となる正の値である
請求項１又は２に記載のデータ分析方法。
【請求項４】
前記第１行列は、各行における各要素の総和が全ての行で実質的に同じ値である
請求項１〜３のいずれか一項に記載のデータ分析方法。
【請求項５】
前記第３行列は、各列における各要素の総和が全ての列で実質的に同じ値である
請求項１〜４のいずれか一項に記載のデータ分析方法。
【請求項６】
前記分解ステップは、
前記第１行列、前記第２行列および前記第３行列の積と、前記基礎行列との差が小さくなるように、前記第１行列、前記第２行列および前記第３行列を更新することを繰り返す
請求項１〜５のいずれか一項に記載のデータ分析方法。
【請求項７】
前記分解ステップは、
前記第２行列の前記特定の１行以外の行において、ｋ行目における各要素が前記所定範囲に収まる数値である場合には、前記第２行列におけるｋ行目を削除し、前記第１行列におけるｋ列目を削除することで、Ｎ行Ｋ−１列の前記第１行列と、Ｋ−１行Ｌ列の前記第２行列と、Ｌ行Ｍ列の第３行列とに更新する
請求項１〜６のいずれか一項に記載のデータ分析方法。
【請求項８】
前記分解ステップは、
前記第２行列の前記特定の１列以外の列において、ｌ行目における各要素が前記所定範囲に収まる数値である場合には、前記第２行列におけるｌ列目を削除し、前記第３行列におけるｌ行目を削除することで、Ｎ行Ｋ列の前記第１行列と、Ｋ行Ｌ−１列の前記第２行列と、Ｌ−１行Ｍ列の第３行列とに更新する
請求項１〜７のいずれか一項に記載のデータ分析方法。
【請求項９】
前記第１対象物はユーザであり、前記基礎行列の各要素に対する関連度は、Ｍ個の前記第２対象物のそれぞれに対するＮ人のユーザの関心の有無を示す
請求項１〜８のいずれか一項に記載のデータ分析方法。
【請求項１０】
Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとのの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して前記第１対象物および前記第２対象物のうち少なくとも一つをクラスタリングするデータ分析装置であって、
前記基礎行列の各要素に対して、前記関連度を示す値が入力された前記基礎行列を取得する取得部と、
前記第１対象物のクラスタ数を示すＫと、前記第２対象物のクラスタ数を示すＬとを設定する設定部と、
前記３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の行および特定の列の少なくとも一方の各要素に、所定の範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、前記第１行列、前記第２行列および前記第３行列の積が、前記基礎行列に近似するように、前記第１行列、前記第２行列および前記第３行列に分解する分解部と、
前記第１行列、前記第２行列および前記第３行列の少なくとも一つを出力することで、前記第１対象物および前記第２対象物のうち少なくとも一つのクラスタリング結果を出力する出力部と、
を有するデータ分析装置。
【請求項１１】
コンピュータに、請求項１に記載のデータ分析方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分析方法、データ分析装置およびプログラムに関する。
【背景技術】
【０００２】
近年、ネットワーク化が進み、様々な機器を介して様々なデータが収集され蓄積されるようになった。様々なデータとはＷＥＢサイトのアクセス情報であったり、顧客の購買履歴であったり、番組の録画視聴履歴であったり、顧客の年齢・性別などの情報である。そのなかで、購買履歴や録画履歴などを用いて、ユーザを、好みなどの属性ごとにクラスタリングし、商品をお勧めするなどのレコメンドサービスが行われている。現在知られているクラスタリングの方法として、ＮＭＦや、さらにそのＮＭＦを拡張したＴｒｉ−ＮＭＦという行列分解方法が提案されている(例えば非特許文献１)。非特許文献１では、入力データとなる行列を３つの行列の積で近似できるような行列分解を行うことで、その３つの内の１つの行列を用いてクラスタリングを行っている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Orthogonal Nonnegative Matrix Tri-Factorizations for Clustering
【発明の概要】
【発明が解決しようとする課題】
【０００４】
より多様な情報を反映したクラスタリングが求められている。
【０００５】
そこで、本発明は、多様な情報を反映したクラスタリングが可能なデータ分析方法、データ分析装置およびプログラムを提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様に係るデータ分析方法は、Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して第１対象物および第２対象物のうち少なくとも一つをクラスタリングするデータ分析方法であって、基礎行列の各要素に対して、関連度を示す値が入力された基礎行列を取得する取得ステップと、第１対象物のクラスタ数を示すＫと、第２対象物のクラスタ数を示すＬとを設定する設定ステップと、３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の１行および特定の１列の少なくとも一方の各要素に、所定範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、第１行列、第２行列および第３行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列に分解する分解ステップと、第１行列、第２行列および第３行列の少なくとも一つを出力することで、第１対象物および第２対象物のうち少なくとも一つのクラスタリング結果を出力する出力ステップと、を含む。
【０００７】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【０００８】
本発明のデータ分析方法、データ分析装置およびプログラムは、多様な情報を反映したクラスタリングが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るデータ分析方法を実行するためのデータ分析システムの概略構成を示すブロック図である。
【図２】実施の形態１に係る基礎行列の一例を示す説明図である。
【図３】実施の形態１に係る基礎行列の変形例を示す説明図である。
【図４】実施の形態１に係るデータ分析装置の概略構成を示すブロック図である。
【図５】実施の形態１に係る基礎行列、第１行列、第２行列および第３行列の概念を示す説明図である。
【図６】実施の形態１に係るデータ分析方法の流れを示すフローチャートである。
【図７】実施の形態１に係る分解処理の流れを示すフローチャートである。
【図８】実施の形態１に係る基礎行列の一例を示す説明図である。
【図９】図８の基礎行列を基にしてデータ分析方法を行い、得られた第１行列、第２行列、第３行列の一例を示す説明図である。
【図１０】実施の形態２に係る分解処理の流れを示すフローチャートである。
【図１１】実施の形態２に係る削除処理の流れを示すフローチャートである。
【図１２】データ分析装置の変形例を示すブロック図である。
【発明を実施するための形態】
【００１０】
（本発明の基礎となった知見）
本発明者は、「背景技術」の欄において記載した方法に関し、以下の問題が生じることを見出した。
【００１１】
購買履歴や録画履歴などを収集する場合、収集できるデータは、ある人が、「ある商品を購入した」、または「ある番組を録画した」という情報のみが収集されていて、「商品を購入していない」、「番組を録画していない」という情報は直接的には収集できてはいない。以下、説明の便宜上、収集データが録画履歴に関するデータである場合を例示して説明する。すなわち、「録画していない」という情報は、「録画した」という情報が蓄積されているため、「蓄積されていない」＝「録画していない」というように逆算で求められる。つまり、「録画した」という情報は、「ユーザがその番組が好きだから録画した」というように考えられるが、「録画していない」という情報には、「ユーザがその番組が嫌いだから録画していない」という意味と、「ユーザがそもそもその番組の存在を知らない」という意味との２種類の意味が考えられる。しかしながら、非特許文献１の方法では、それらの２種類の「録画していない」という情報は考慮されず、「録画した」＝「その番組が好き」という情報のみを考慮してクラスタリングが行われている。つまり、その番組が「嫌いである」という情報は全く考慮されていないことになる。
【００１２】
このため、「嫌いである」という情報を考慮したクラスタリングを可能とすることで、多様な情報を反映したクラスタリングを可能とする。
【００１３】
このような問題を解決するため、本発明の一態様にかかるデータ分析方法は、Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して第１対象物および第２対象物のうち少なくとも一つをクラスタリングするデータ分析方法であって、基礎行列の各要素に対して、関連度を示す値が入力された基礎行列を取得する取得ステップと、第１対象物のクラスタ数を示すＫと、第２対象物のクラスタ数を示すＬとを設定する設定ステップと、３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の１行および特定の１列の少なくとも一方の各要素に、所定範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、第１行列、第２行列および第３行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列に分解する分解ステップと、第１行列、第２行列および第３行列の少なくとも一つを出力することで、第１対象物および第２対象物のうち少なくとも一つのクラスタリング結果を出力する出力ステップと、を含む。
【００１４】
これにより、ユーザが対象物を取得しなかった要因を考慮したクラスタリングを行うことが可能となる。したがって、多様な情報を反映したクラスタリングが可能となる。
【００１５】
例えば、特定の１行および特定の１列の各要素に所定範囲に収まる数値が格納されていてもよい。
【００１６】
これにより、第２行列の特定の１行および特定の１列の各要素に所定範囲に収まる数値が格納されているので、異なる情報（対象物の周知度、ユーザの取得頻度）を反映させたクラスタリングが可能となる。
【００１７】
例えば、所定の範囲に収まる数値を、実質的に０となる正の値としてもよい。
【００１８】
これにより、所定の範囲に収まる数値が実質的に０となる正の値であるので、クラスタとの関連度をほとんどなくすことができ、多様な情報に特化した値を求めることができる。
【００１９】
例えば、第１行列の各行における各要素の総和を全ての行で実質的に同じ値としてもよい。
【００２０】
これにより、第１行列の各行における各要素の総和が全ての行で実質的に同じ値であるので、第１行列の各列の値の比較を容易に行うことができる。
【００２１】
例えば、第３行列の各列における各要素の総和を全ての列で実質的に同じ値としてもよい。
【００２２】
これにより、第３行列の各列における各要素の総和が全ての列で実質的に同じ値であるので、第３行列の各行の値の比較を容易に行うことができる。
【００２３】
例えば、分解ステップは、第１行列、第２行列および第３行列の積と、基礎行列との差が小さくなるように、第１行列、第２行列および第３行列を更新することを繰り返すことにしてもよい。
【００２４】
これにより、第１行列、第２行列および第３行列の積と、基礎行列との差が小さくなるように、第１行列、第２行列および第３行列を更新しているので、行列分解をスムーズに行うことができる。
【００２５】
例えば、分解ステップは、第２行列の特定の１行以外の行において、ｋ行目における各要素が所定範囲に収まる数値である場合には、第２行列におけるｋ行目を削除し、第１行列におけるｋ列目を削除することで、Ｎ行Ｋ−１列の第１行列と、Ｋ−１行Ｌ列の第２行列と、Ｌ行Ｍ列の第３行列とに更新することにしてもよい。
【００２６】
これにより、処理の高速化、クラスタリングの正確性を高めることができる。
【００２７】
例えば、分解ステップは、第２行列の特定の１列以外の列において、ｌ行目における各要素が所定範囲に収まる数値である場合には、第２行列におけるｌ列目を削除し、第３行列におけるｌ行目を削除することで、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ−１列の第２行列と、Ｌ−１行Ｍ列の第３行列とに更新することとしてもよい。
【００２８】
これにより、処理の高速化、クラスタリングの正確性を高めることができる。
【００２９】
例えば、第１対象物はユーザであり、Ｎ行Ｍ列の基礎行列の各要素に対する関連度は、Ｍ個の第２対象物のそれぞれに対するＮ人のユーザの関心の有無を示すのでもよい。
【００３０】
また、本発明の一態様にかかるデータ分析装置は、Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して第１対象物および第２対象物のうち少なくとも一つをクラスタリングするデータ分析装置であって、基礎行列の各要素に対して、関連度を示す値が入力された基礎行列を取得する取得部と、第１対象物のクラスタ数を示すＫと、第２対象物のクラスタ数を示すＬとを設定する設定部と、３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の行および特定の列の少なくとも一方の各要素に、所定の範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、第１行列、第２行列および第３行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列に分解する分解部と、第１行列、第２行列および第３行列の少なくとも一つを出力することで、前記第１対象物および前記第２対象物のうち少なくとも一つのクラスタリング結果を出力する出力部と、を有する。
【００３１】
これにより、ユーザが対象物を取得しなかった要因を考慮したクラスタリングを行うことが可能となる。したがって、多様な情報を反映したクラスタリングが可能となる。
【００３２】
また、本発明の一態様にかかるプログラムは、コンピュータに、上記の記載のデータ分析方法を実行させるためのプログラムである。
【００３３】
これにより、ユーザが対象物を取得しなかった要因を考慮したクラスタリングを行うことが可能となる。したがって、多様な情報を反映したクラスタリングが可能となる。
【００３４】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【００３５】
（実施の形態１）
以下、実施の形態に係るデータ分析方法について、図面を参照しながら具体的に説明する。なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置および接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００３６】
[システムの全体構成]
図１は、実施の形態１に係るデータ分析方法を実行するためのデータ分析システムの概略構成を示すブロック図である。
【００３７】
データ分析システム１は、Ｍ個の対象物のそれぞれに対するＮ人のユーザの関心の有無を示すＮ行Ｍ列の基礎行列を３つの行列に分解して、ユーザをクラスタリングするデータ分析方法を実行する。対象物は、ユーザが関心を持つ対象物であり、例えばユーザによって購入或いはレンタルされる商品と、ユーザによって視聴又は録画・録音されるテレビ番組、ラジオ番組などの番組とが挙げられる。関心の有無としては、対象物が商品の場合では、購入したことを「関心有り」とし、購入していないことを「関心無し」とする。他方、対象物が番組の場合では、番組を視聴又は録画・録音したことを「関心有り」とし、番組を見ていないこと又は録画・録音していないことを「関心無し」とする。
【００３８】
図２は、基礎行列の一例を示す説明図である。
【００３９】
図２に示す基礎行列では、Ｎ人のユーザＵ１，Ｕ２，Ｕ３，Ｕ４，Ｕ５…がＭ個の対象物Ｏ１，Ｏ２，Ｏ３，Ｏ４，Ｏ５，Ｏ６…のそれぞれに対する関心の有無を示している。基礎行列の各要素に対しては、関心の有無を示す値が入力されている。具体的に、関心がある要素に対しては「１」が代入されており、関心のない要素には「０」が代入されている。例えば、対象物を番組として、当該番組に対する録画の有無を関心の有無とした場合には、ユーザが録画している番組に対しては「１」が入力され、ユーザが録画していない番組に対しては「０」が入力される。なお、データの値と形式は、あくまでも一例であり、これに限定されるものではない。各要素に入力される値は非負の値であればよい。
【００４０】
図３は、基礎行列の変形例を示す説明図である。
【００４１】
図３の例では、番組に対する関心の有無を５段階評価で示した場合を示している。この場合においても、最大値である「５」が「１」となるように、各要素の値を正規化すればよい。
【００４２】
そして、データ分析システム１は、この基礎行列を３つの行列に分解することで、ユーザ或いは対象物をクラスタリングする。
【００４３】
具体的に、データ分析システム１は、図１に示すように、入力装置２００と、表示装置３００と、データ分析装置４００とを備えている。入力装置２００と、表示装置３００と、データ分析装置４００とはネットワーク５００を介して通信可能に接続されている。
【００４４】
ネットワーク５００とは、イーサネット（登録商標）等の有線ネットワーク、無線ＬＡＮ等の無線ネットワーク、公衆網、または、これらのネットワークが組み合わされたネットワーク等である。公衆網とは、電気通信事業者が、不特定多数の利用者の通信のために提供している通信回線のことであり、例えば、一般電話回線またはＩＳＤＮなどが挙げられる。
【００４５】
入力装置２００は、Ｎ行Ｍ列の基礎行列が入力される装置である。入力装置２００は、例えばキーボード、タッチパネル、ポインティングデバイスなどの入力部２１０を備えたパーソナルコンピューター、スマートフォン、フィーチャーフォン、タブレット端末などである。入力装置２００は、Ｎ行Ｍ列の基礎行列が入力されると、当該基礎行列をネットワーク５００を介してデータ分析装置４００に送信する。
【００４６】
表示装置３００は、基礎行列と、３つの行列とのうち少なくとも一つの行列がデータ分析装置４００から入力されると、当該少なくとも一つの行列を表示する装置である。表示装置３００は、例えばディスプレイなどの表示部３１０を備えたパーソナルコンピューター、スマートフォン、フィーチャーフォン、タブレット端末などである。表示装置３００の表示部３１０に表示された少なくとも一つの行列を解析者が閲覧することで、クラスタリングされた結果を解析することができる。
【００４７】
なお、本実施の形態では、入力装置２００と表示装置３００とが独立した異なる端末である場合を例示しているが、入力装置２００と表示装置３００とが一台の端末であってもよい。
【００４８】
［データ分析装置］
データ分析装置４００は、Ｎ行Ｍ列の基礎行列を３つの行列に分解する処理装置である。データ分析装置４００は、例えば、サーバ、パーソナルコンピューター、スマートフォン、フィーチャーフォン、タブレット端末などである。
【００４９】
図４は、データ分析装置４００の概略構成を示すブロック図である。
【００５０】
図４に示すように、データ分析装置４００は、取得部４１０と、処理部４２０と、出力部４３０とを備えている。
【００５１】
取得部４１０は、入力装置２００からネットワーク５００を介して入力された基礎行列を取得し、処理部４２０に出力する。
【００５２】
処理部４２０は、取得部４１０から入力された基礎行列を３つの行列に分解する処理部であり、ＣＰＵ、ＲＡＭ、ＲＯＭ等を備える。処理部４２０は、格納部４２１と、設定部４２２と、分解部４２３とを備える。
【００５３】
格納部４２１は、取得部４１０から入録された基礎行列を記憶する記憶領域であり、例えば不揮発性メモリまたは揮発性メモリである。
【００５４】
設定部４２２は、分解部４２３での分解処理で用いられる設定項目を記憶している。設定項目としては、例えば３つの行列のサイズを決める値であるＫとＬとが挙げられる。また、設定項目としては、分解処理時における収束判定条件などが挙げられる。設定部４２２は、分解部４２３で分解処理が行われる際に、設定項目を分解部４２３に出力することで、設定項目を設定する。
【００５５】
なお、設定項目は、設定部４２２に予め記憶されていなくとも、入力装置２００から入力された設定値を設定項目としてもよい。この場合、入力装置２００から取得部４１０を介して受信した設定項目を設定部４２２が記憶する。
【００５６】
分解部４２３は、３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の１行および特定の１列の少なくとも一方の各要素に、所定範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、第１行列、第２行列および第３行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列に分解する。
【００５７】
図５は、本実施の形態に係る基礎行列、第１行列、第２行列および第３行列の概念を示す説明図である。
【００５８】
例えばＮ行Ｍ列の基礎行列を１４行２０列の行列とし、Ｋ＝３、Ｌ＝３とすると、Ｎ行Ｋ列の第１行列は２０行３列の行列となり、Ｋ行Ｌ列の第２行列は３行３列の行列となり、Ｌ行Ｍ列の第３行列は３行１４列の行列となる。
【００５９】
Ｋとは、ユーザクラスタ数の値である。Ｌとは、対象物クラスタ数の値である。ただし、ユーザクラスタ（第１対象物のクラスタ）および対象物クラスタ（第２対象物クラスタ）とは直接関係の無い要素（クラスタ）が１列或いは１行分だけ第１行列、第２行列および第３行列に含まれる。
【００６０】
図５の場合においては、第１対象物のクラスタ数を示すＫを「３」として、第２対象物のクラスタ数を示すＬを「３」としており、今後の説明においては、それぞれ３つのクラスタのうち、２つは第１対象物と第２対象物とのそれぞれのクラスタに直接関係があり、１つはそれぞれのクラスタに直接関係の無いクラスタであるものとして説明する。なお、解析者によって、分類したいクラスタのうちで、それぞれのクラスタに直接関係のあるユーザクラスタ数と対象物クラスタ数だけが入力された場合においては、設定部４２２或いは分解部４２３で各クラスタ数に１を加えた値（直接関係の無い要素を加えた値）をＫ、Ｌとするようにしてもよい。
【００６１】
ここで、所定範囲に収まる数値とは、実質的に０となる正の値であり、具体的には０以上０．１以下の範囲に収まる値であり、好ましくは０以上０．０１以下の範囲に収まる値である。また、第２行列における特定の１行および特定の１列の少なくとも一方の各要素の値は、所定の範囲に収まる数値であれば同一でなくともよい。本実施の形態では、第２行列におけるＫ行目およびＬ列目の各要素の値を０とする場合を例示して説明する。しかし、第２行列におけるＫ行目およびＬ列目の一方の各要素の値を所定の範囲に収まる数値としてもよい。なお、特定の１行はＫ行目以外の行であってもよいし、特定の１列はＬ列目以外の列であってもよい。
【００６２】
また、第２行列の特定の１列の各要素を所定の範囲に収まる数値とする場合、第３行列では、各列における各要素の総和が全ての列で同じ値とする条件を付与する。他方、第２行列の特定の１行の各要素を所定の範囲に収まる数値とする場合、第１行列では、各行における各要素の総和が全ての行で同じ値とする条件を付与する。「同じ値」としては、完全に一致する値でなくともよく、わずかに許容範囲を有した実質的に「同じ値」であればよい。「同じ値」は、如何なる値でもよいが、ユーザと対象物と各クラスタとの関係性が認識しやすくするべく「１」、「１００」などを用いてもよい。
【００６３】
なお、第１行列、第２行列および第３行列のより具体的は説明については後述する。
【００６４】
そして、分解部４２３は、第１行列、第２行列および第３行列の積と、基礎行列との誤差が小さくなるように第１行列、第２行列および第３行列を繰り返し更新するが、設定部４２２に記憶された収束判定条件を満たすと更新を終了する。例えば所定回数（１０００回など）以上の繰り返しが行われた場合に収束判定条件を満たしたと判定する方式、第１行列、第２行列および第３行列の積と、基礎行列との誤差が所定値（例えば１ｅ−６）以下となった場合に収束判定条件を満たしたと判定する方式、一回の更新の前後での第１行列、第２行列および第３行列の積の誤差が所定値（例えば１ｅ−６）以下となった場合に収束判定条件を満たしたと判定する方式などが挙げられる。各方式を一つだけ用いてもよいし、組み合わせて用いてもよい。また、誤差とは、各行列要素の引き算で得られた値の和であってもいいし、各要素の引き算で得られた値の二乗和であってもよい。
【００６５】
図４に示すように、出力部４３０は、基礎行列、第１行列、第２行列および第３行列の少なくとも一つを表示装置３００に出力する。出力部４３０は、基礎行列、第１行列、第２行列および第３行列を一括して出力してもよいし、これらを組み合わせて出力してもよい。また、出力部４３０は、最終的な、第１行列、第２行列および第３行列の積と、基礎行列との誤差も表示装置３００に出力してもよい。
【００６６】
［データ分析方法］
次に、本実施の形態に係るデータ分析方法について説明する。
【００６７】
図６は、本実施の形態に係るデータ分析方法の流れを示すフローチャートである。
【００６８】
入力装置２００では、基礎行列の各要素に、関心の有無を示す値が入力される。また、入力装置２００では、Ｋ、Ｌ、収束判定条件も入力される。これらの入力後においては、入力装置２００は、基礎行列、Ｋ、Ｌおよび収束判定条件をデータ分析装置４００に出力する。なお、設定項目がすでにデータ分析装置４００の設定部４２２に設定されていて、それが以降の処理に用いられる場合には、入力装置２００での設定項目の入力は不要である。
【００６９】
データ分析装置４００の取得部４１０は、入力装置２００からネットワークを介して入力された基礎行列、Ｋ、Ｌおよび収束判定条件を取得する（ステップＳ１）。取得後においては、取得部４１０は、基礎行列を格納部４２１に格納する。
【００７０】
また、設定部４２２は、取得部４１０で取得したＫとＬと収束判定条件とを設定項目として記憶する（ステップＳ２，Ｓ３）。
【００７１】
データ分析装置４００の分解部４２３は、基礎行列と設定項目とに基づいて分解処理を実行する。
【００７２】
図７は本実施の形態に係る分解処理の流れを示すフローチャートである。
【００７３】
分解部４２３は、Ｎ、Ｍ、Ｋ、Ｌに基づいて第１行列、第２行列および第３行列を生成する。このとき、分解部４２３は、第１行列、第２行列、第３行列の各要素に対してランダムな値を代入し、初期化する（ステップＳ１１）。
【００７４】
次いで、分解部４２３は、ｉを０とする（ステップＳ１２）。
【００７５】
次いで、分解部４２３は、ｉが収束判定条件の所定回数以上であるか否かを判定し、所定回数未満である場合にはステップＳ１４に移行し、所定回数以上である場合には分解処理を終了する。
【００７６】
ステップＳ１４では、分解部４２３は、第１行列、第２行列および第３行列を更新する。
【００７７】
更新時においては、分解部４２３は、初期化した第１行列、第２行列および第３行列を、所定の行列更新式を用いて、更新を行うことで、第１行列、第２行列および第３行列の積が基礎行列に近似する第１行列、第２行列および第３行列を求める。このとき、分解部４２３は、第２行列のＫ行目およびＬ列目の各要素の値が０となるように更新する。
【００７８】
以下に行列更新式の一例を示す。
【００７９】
なお、以下の行列更新式（１）では基礎行列がＸであり、第１行列がＦであり、第２行列がＳであり、第３行列がＧＴである。またα、β、γは定数である。Ｓ*は、Ｓの特定
の１行および特定の１列の少なくとも一方の各要素の値に所定の範囲に収まる値（本実施の形態では０）を入れた行列である。
【数１】
2017004493.tif 000003
【００８０】
分解部４２３はこの行列更新式（１）が最小となるように第１行列、第２行列および第３行列を更新する。
【００８１】
行列更新式（１）の詳細を示した数式の一例を下記に示す。
【数２】
2017004493.tif 000004
但し、Ｆｗ,ｋは、Ｆのｗ行ｋ列の要素の値示す（１≦ｗ≦Ｎ、１≦ｋ≦Ｋ）。
Ｓｋ,ｌは、Ｓのｋ行ｌ列の要素の値を示す（１≦ｋ≦Ｋ、１≦ｌ≦Ｌ）。
Ｇｔ,ｌは、Ｇのｔ行ｌ列の要素の値の値を示す（１≦ｔ≦Ｍ、１≦ｌ≦Ｌ）。
ＦＴは、Ｆの転置行列を示す。
ＧＴは、Ｇの転置行列を示す。
ＳＴは、Ｓの転置行列を示す。
ＸＴは、Ｘの転置行列を示す。
ＡＴは、Ａの転置行列を示す。
【００８２】
分解部４２３は、式（２）〜（４）を用いて第１行列、第２行列および第３行列を更新することで、誤差が小さくなるように更新することができる。
【００８３】
次いで、分解部４２３は、更新後の第１行列、第２行列、第３行列の積と、基礎行列との誤差を算出する（ステップＳ１５）。
【００８４】
次いで、分解部４２３は、ステップＳ１５で求めた誤差が所定値以下か否かを判定し、所定値以下の場合にはステップＳ１７に移行し、所定値よりも大きい場合には分解処理を終了する。
【００８５】
ステップＳ１７では、分解部４２３は、ｉに１を加えてステップＳ１３に移行する。これにより、誤差が所定値以下となるまで、或いはｉが所定回数となるまで、第１行列、第２行列および第３行列の更新が繰り返されることになる。分解処理の終了時においては、第１行列、第２行列および第３行列の積と基礎行列との誤差がほとんどない第１行列、第２行列および第３行列が求められる。
【００８６】
分解処理が終了し、図５のステップＳ５に移行すると、出力部４３０を表示装置３００に対して基礎行列、第１行列、第２行列および第３行列を出力する。表示装置３００では、基礎行列、第１行列、第２行列および第３行列が表示されるので、解析者がこれらを閲覧することで、クラスタリングされた結果を解析することができる。
【００８７】
［各行列の一例］
次に、データ分析方法で用いた基礎行列と、データ分析方法によって得られた第１行列、第２行列および第３行列の一例について説明する。
【００８８】
図８は、基礎行列の一例を示す説明図である。
【００８９】
図８に示す基礎行列は、２０行１４列の行列である。２０人のユーザＵ１〜Ｕ２０が１４個の対象物としての番組Ｐ１〜Ｐ１４を録画したか否かを図７の基礎行列に示している。各ユーザが録画をした番組に対しては「１」が入力され、録画していない番組に対しては「０」が入力されている。この「１」および「０」が関心の有無を示す値である。
【００９０】
図９は、図８の基礎行列を基にしてデータ分析方法を行い、得られた第１行列、第２行列、第３行列の一例を示す説明図である。なお、同じ基礎行列を用いたとしても、最終的な第１行列、第２行列、第３行列は、初期化時の各要素の値、収束判定条件、行列更新式によって異なる。
【００９１】
図８の例では、Ｋを３とし、第２行列の３列（Ｋ列）目を特定の１列としている。つまり、第２行列の１列目、２列目はユーザクラスタＵＣ１，ＵＣ２に関する列となる。また、Ｌを３とし、第２行列の３行（Ｌ行）目を特定の１行としている。つまり、第２行列の１行目、２行目は番組クラスタＰＣ１，ＰＣ２に関する列となる。
【００９２】
第１行列では、２０人のユーザＵ１〜Ｕ２０と、ユーザクラスタＵＣ１，ＵＣ２および録画頻度とのそれぞれの関連度合いが各要素に格納されている。第２行列では、ユーザクラスタＵＣ１，ＵＣ２および録画頻度と、番組クラスタＰＣ１，ＰＣ２および周知度とのそれぞれの関連度合いが各要素に格納されている。第３行列では、番組クラスタＰＣ１，ＰＣ２および周知度と、１４個の番組Ｐ１〜Ｐ１４とのそれぞれの関連度合いが各要素に格納されている。
【００９３】
ここで、本発明者は、第２行列の特定の１列に対して、ユーザクラスタＵＣ１，ＵＣ２との関連度が殆どないことを示す数値（所定範囲に収まる数値）を格納することで、結果的に番組（対象物）の周知度を示す行（図９に示す第３行列では３行目）が生成されることを見出した。図９の第３行列の場合、周知度を示す行（３行目）の各値が大きければ周知度の度合いは小さく、各値が小さければ周知度の度合いは大きいことを示している。周知度とは、その番組（対象物）がどれだけ知られているかを示す指標であり、その番組の人気度として用いてもよい。周知度が高い番組を録画しないユーザは、「その番組を知らないから録画していない」のではなく、「知っているのに録画しない」と推測することができる。「人気がある番組をあえて録画しない」とも考えられるので、「このユーザはこの番組を嫌い」であると推察することができる。この周知度を示す行が第３行列に生成されているために、分解処理では周知度が反映されて第１行列、第２行列および第３行列が更新される。したがって、「嫌い」という情報を考慮したクラスタリングが可能となる。
【００９４】
さらに、本発明者は、第２行列の特定の１行に対して番組クラスタＰＣ１，ＰＣ２との関連度が殆どないことを示す数値（所定範囲に収まる数値）を格納することで、結果的にユーザの録画頻度を示す行（図９に示す第１行列では３列目）が生成されることを見出した。図９の第１行列の場合、録画頻度を示す行（３列目）の各値が大きければユーザの録画頻度が小さく、各値が小さければ録画頻度が大きいことを示している。録画頻度とは、ユーザが番組を録画する度合いを示す指標である。そして、本発明者は、録画頻度を示す列が第１行列に生成されると、分解処理後の第１行列のその他の列には、各ユーザＵ１〜Ｕ２０と、ユーザクラスタＵＣ１，ＵＣ２との関連度が、録画頻度の影響を極力除いた値として格納されることを見出した。これにより、録画頻度によらず、嗜好の似通ったユーザのクラスタリングが可能となる。
【００９５】
なお、本実施の形態では、対象物が番組であるので、所定範囲に収まる数値を第２行列の特定の１行に格納することで、第１行列の１つの行に録画頻度が出現することになった。しかし対象物が商品である場合には、ユーザが商品を購入（或いはレンタル）する購入頻度が第１行列の１つの行に出現することになる。購入頻度、録画頻度ともにユーザが対象物を取得する度合いを示す指標であるため、これらをまとめて取得頻度と称してもよい。
【００９６】
また、本実施の形態では、各ユーザＵ１〜Ｕ２０が第１行列における各行に対応し、各番組Ｐ１〜Ｐ１４が第３行列の各列に対応しているため、第２行列の特定の１列が周知度に対応し、特定の１行が録画頻度に対応している。逆に、各ユーザＵ１〜Ｕ２０が第３行列における各列に対応し、各番組Ｐ１〜Ｐ１４が第１行列の各行に対応している場合には、第２行列の特定の１行が周知度に対応し、特定の１列が録画頻度に対応する。つまり、クラスタリングしたい対象と、第１行列、第２行列および第３行列との関係性によって、周知度や録画頻度に対応する要素が第２行列の一つの行となったり、一つの列となったりする。周知度や録画頻度（取得頻度）の一方のみを考慮したクラスタリングを行うのであれば、上述の関係性を考慮して、第２行列の特定の１行および特定の１列の一方の各要素に対して、所定の範囲に収まる数値を格納すればよい。
【００９７】
［効果等］
以上のように、本実施の形態によれば、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の１行および特定の１列の少なくとも一方の各要素に、所定範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列との３つの行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列が分解されている。これにより、ユーザが対象物（番組、商品）を取得しなかった要因を考慮したクラスタリングを行うことが可能となる。したがって、多様な情報を反映したクラスタリングが可能となる。
【００９８】
そして、本実施の形態の場合では、ユーザの録画履歴から「嫌い」といった情報が推察できていたが、上述したデータ分析方法がなければ「嫌い」という情報も収集しなければならない。つまり、多様な情報を反映したクラスタリングを行えるのであれば、それだけ情報収集に関するエネルギー消費を低減することができる。
【００９９】
また、第２行列の特定の１行および特定の１列の各要素に所定範囲に収まる数値が格納されているので、対象物の周知度と、ユーザの取得頻度とを反映させたクラスタリングが可能となる。
【０１００】
また、所定の範囲に収まる数値が実質的に０となる正の値であるので、ユーザクラスタや番組クラスタとの関連度をほとんどなくすことができ、周知度、取得頻度に特化した値を求めることができる。
【０１０１】
また、第１行列の各行における各要素の総和が全ての行で実質的に同じ値であるので、取得頻度を示す各列の値を前記同じ値を基準にして算出することができる。したがって、前記各列の値の比較を容易に行うことができる。
【０１０２】
また、第３行列の各列における各要素の総和が全ての列で実質的に同じ値であるので、周知度を示す各行の値を前記同じ値を基準にして算出することができる。したがって、前記各行の値の比較を容易に行うことができる。
【０１０３】
また、第１行列、第２行列および第３行列の積と、基礎行列との差が小さくなるように、第１行列、第２行列および第３行列を更新しているので、行列分解をスムーズに行うことができる。
【０１０４】
（実施の形態２）
実施の形態１で例示したデータ分析方法では、ある程度大きなＫ、Ｌが設定された場合、更新時に特定の１行と同じような行が発生したり、特定の１列と同じような列が発生したりすることが想定される。こうなった場合、クラスタリングの正確性が低下するおそれがあるため、この実施の形態２では、データ分析方法の実行時に、特定の１行と同じような性質の行が第２行列に発生した場合又は特定の１列と同じような性質の列が第２行列に発生した場合には、同じ性質となった行又は列を削除する方法について説明する。
【０１０５】
図１０は、実施の形態２に係る分解処理の流れを示すフローチャートである。
【０１０６】
図１０に示すフローチャートは、実施の形態１に係る分解処理のステップＳ１４とステップＳ１５との間に、削除処理を行うステップＳ１８を追加している。このため、ここではステップＳ１８についてのみ説明し、他のステップについては説明を省略する。
【０１０７】
ステップＳ１８の削除処理では、分解部４２３は、特定の１行と同じような性質の行が第２行列に発生した場合又は特定の１列と同じような性質の列が第２行列に発生した場合には、同じ性質となった行又は列を削除する。
【０１０８】
図１１は削除処理の流れを示すフローチャートである。
【０１０９】
分解部４２３は、第２行列における特定の１列（Ｌ列目）の各値と、他の各列の各値との差を計算する（ステップＳ２１）。
【０１１０】
次いで、分解部４２３は、全ての要素で差の絶対値が一定値以下となる列（ｌ列目）があるか否かを判定し（ステップＳ２２）、ｌ列目があった場合にはステップＳ２３に移行し、ｌ列目がない場合にはステップＳ２４に移行する。
【０１１１】
ステップＳ２３では、分解部４２３は、第２行列のｌ列目を削除し、第３行列のｌ行目を削除することで、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ−１列の第２行列と、Ｌ−１行Ｍ列の第３行列とに更新する。
【０１１２】
ステップＳ２４では、分解部４２３は、第２行列における特定の１行（Ｋ行目）の各値と、他の各行の各値との差を計算する。
【０１１３】
次いで、分解部４２３は、全ての要素で差の絶対値が一定値以下となる行（ｋ行目）があるか否かを判定し（ステップＳ２５）、ｋ行目があった場合にはステップＳ２６に移行し、ｋ行目がない場合には削除処理を終了する。
【０１１４】
ステップＳ２６では、分解部４２３は、第２行列のｋ行目を削除し、第１行列のｋ列目を削除することで、Ｎ行Ｋ−１列の第１行列と、Ｋ−１行Ｌ列の第２行列と、Ｌ行Ｍ列の第３行列とに更新し、削除処理を終了する。
【０１１５】
なお、一定値は例えば０．１以下の値である。また、ステップＳ２１からステップＳ２３までの処理と、ステップＳ２４からステップＳ２６までの処理とが逆の順序でもよい。さらに、ステップＳ２２，Ｓ２５では差の絶対値を基に判定を行ったが、特定の１行や特定の１列の各要素が０に近い値である場合には、ある行やある列の各要素の総和が一定値以下であるか否かで判定を行ってもよい。
【０１１６】
［効果等］
以上のように、本実施の形態によれば、第２行列の特定の１行以外の行において、ｋ行目における各要素が所定範囲に収まる数値である場合には、第２行列におけるｋ行目を削除し、第１行列におけるｋ列目を削除することで、Ｎ行Ｋ−１列の第１行列と、Ｋ−１行Ｌ列の第２行列と、Ｌ行Ｍ列の第３行列とに更新する。これにより、分割処理の高速化、クラスタリングの正確性を高めることができる。
【０１１７】
また、第２行列の特定の１列以外の列において、ｌ行目における各要素が所定範囲に収まる数値である場合には、第２行列におけるｌ列目を削除し、第３行列におけるｌ行目を削除することで、Ｎ行Ｋ列の前記第１行列と、Ｋ行Ｌ−１列の前記第２行列と、Ｌ−１行Ｍ列の第３行列とに更新する。これにより、分割処理の高速化、クラスタリングの正確性を高めることができる。
【０１１８】
（その他の実施の形態）
以上のように、本出願において開示する技術の例示として、実施の形態１，２を説明した。しかしながら、本実施の形態における技術は、これに限定されず、適宜、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。また、上記各実施の形態で説明した各構成要素を組み合わせて、新たな実施の形態とすることも可能である。
【０１１９】
以下の説明において上記実施の形態と同一部分については同一の符号を付してその説明を省略する場合がある。
【０１２０】
例えば、上記の実施の形態では、ネットワーク５００を介して基礎行列がデータ分析装置４００に入力される場合を例示して説明したが、データ分析装置に直接基礎行列が入力（作成）されてもよい。
【０１２１】
図１２はデータ分析装置の変形例を示すブロック図である。
【０１２２】
図１２に示すように、データ分析装置４００Ａには、入力部４５０と、処理部４２０と、表示部４６０とが設けられている。入力部４５０はキーボード、タッチパネル、マウスなどの入力デバイスであり、解析者が入力部４５０を操作することにより基礎行列が入力（作成）される。つまり、入力部４５０が取得部である。また、表示部４６０は、ディスプレイであり、基礎行列、第１行列、第２行列および第３行列の少なくとも一つを表示することで出力する。つまり、表示部４６０が出力部である。さらに、データ分析装置４００Ａは、基礎行列、第１行列、第２行列および第３行列を蓄積するハードディスクやメモリなどの蓄積部を備えていてもよい。
【０１２３】
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の画像復号化装置などを実現するソフトウェアは、次のようなプログラムである。
【０１２４】
すなわち、このプログラムは、コンピュータに、Ｎ個の第１対象物のそれぞれと、Ｍ個の第２対象物のそれぞれとの関連度を示すＮ行Ｍ列の基礎行列を、３つの行列に分解して第１対象物および前記第２対象物のうち少なくとも一つをクラスタリングするデータ分析方法であって、基礎行列の各要素に対して、関連度を示す値が入力された基礎行列を取得する取得ステップと、第１対象物のクラスタ数を示すＫと、前記第２対象物のクラスタ数を示すＬとを設定する設定ステップと、３つの行列を、Ｎ行Ｋ列の第１行列と、Ｋ行Ｌ列の行列であって、特定の１行および特定の１列の少なくとも一方の各要素に、所定範囲に収まる数値が格納されている第２行列と、Ｌ行Ｍ列の第３行列とし、第１行列、第２行列および第３行列の積が、基礎行列に近似するように、第１行列、第２行列および第３行列に分解する分解ステップと、第１行列、第２行列および第３行列の少なくとも一つを出力することで、前記第１対象物および前記第２対象物のうち少なくとも一つのクラスタリング結果を出力する出力ステップとを含むデータ分析方法を実行させる。
【０１２５】
また、上記各実施の形態において、特定の処理部が実行する処理を別の処理部が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
【０１２６】
以上、一つまたは複数の態様に係るデータ分析方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
【産業上の利用可能性】
【０１２７】
本発明は、クラスタリングに用いられるデータ分析方法、データ分析装置およびプログラムとして有用である。すなわち、本発明は、推薦システムや文章分類などクラスタリングを必要とする様々な分野で応用可能である。
【符号の説明】
【０１２８】
１      データ分析システム
２００      入力装置
３００      表示装置
４００      データ分析装置
４１０      取得部
４２０      処理部
４２１      格納部
４２２      設定部
４２３      分解部
４３０      出力部
５００      ネットワーク
【図１】
2017004493.tif 000005
【図２】
2017004493.tif 000006
【図３】
2017004493.tif 000007
【図４】
2017004493.tif 000008
【図５】
2017004493.tif 000009
【図６】
2017004493.tif 000010
【図７】
2017004493.tif 000011
【図８】
2017004493.tif 000012
【図９】
2017004493.tif 000013
【図１０】
2017004493.tif 000014
【図１１】
2017004493.tif 000015
【図１２】
2017004493.tif 000016