(57)【要約】      （修正有）【課題】グラフの枝刈りを行うシステムを提供する。【解決手段】システムは、１つ以上の頂点を含む、グラフ内の接続構成要素を識別する。グラフの各頂点はデータの集合内の要素を表し、２つの頂点の間の辺はこれらの頂点間の関係の種類と強さを表す。グラフに対するクエリに関連する、最小グラフ探索閾値より小さくなる接続構成要素を識別する。最小グラフ探索閾値はそのクエリに対して必要な探索ステップの最小数を示す。次いで、グラフから接続構成要素を刈り取ることにより第２のグラフを生成し、第２のグラフを処理して、データの集合から関心のある情報を抽出する。【選択図】図２
2015156216.tif 000002
【特許請求の範囲】
【請求項１】
グラフの枝刈りを行うためのコンピュータシステムであって、
１つ以上のプロセッサと、
その上に命令が格納され、前記１つ以上のプロセッサに接続するコンピュータ可読媒体であって、前記命令が前記１つ以上のプロセッサにより実行されると、前記１つ以上のプロセッサが、
コンピュータにより、１つ以上の頂点を含むグラフ内の接続構成要素を識別する動作であって、各頂点はデータの集合内の要素を表し、２つの頂点の間の辺は前記頂点間の関係の種類と強さを表す、動作と、
前記グラフに対するクエリに関連する最小グラフ探索閾値より小さくなる接続構成要素を識別する動作であって、前記最小グラフ探索閾値は、前記クエリに対して必要な探索ステップの最小数を示す、動作と、
前記接続構成要素を前記グラフから刈り取ることにより第２のグラフを生成する動作であって、前記第２のグラフを処理して、前記データの集合から関心のある情報を抽出する、動作と、を行う、コンピュータ可読媒体と、を含むコンピュータシステム。
【請求項２】
前記データの集合内の各要素は１つ以上の表に格納され、前記要素が第１の識別子に基づいて識別され、
最小グラフ探索閾値より小さくなる接続構成要素を識別する動作には、前記１つ以上の表で行われる１つ以上の表動作が含まれる、請求項１に記載のコンピュータシステム。
【請求項３】
前記動作には、
接続構成要素により表されない要素を識別すると、前記要素に対して第２の識別子を生成する動作と、
前記第２の識別子をマッピング表内の前記第１の識別子にマッピングする動作と、がさらに含まれる、請求項２に記載のコンピュータシステム。
【請求項４】
前記動作には、
前記グラフ内の各頂点にラベルを割り当てる動作と、
第１の頂点から第２の頂点にラベルを伝播させる動作と、
前記同じラベルに関連する頂点の集合を識別する動作と、がさらに含まれ、
最小グラフ探索閾値より小さくなる接続構成要素を識別する動作には、前記識別された頂点の集合が前記最小グラフ探索閾値より小さいかどうかを判定することが含まれる、請求項１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はグラフ分析に関する。より具体的には、本開示はグラフデータの効率的な処理を容易にするためのグラフ表現の枝刈りを行う方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータ処理能力の飛躍的な向上により、効率的なデータ分析を用いて、買い物の好み、および／または商品の推薦、ソーシャルメディア活動、医療紹介、およびＥメールのやり取りのパターンなどの関心のある情報を抽出することが可能になってきた。このようなデータ分析の必要条件として、効率的なコンピュータ処理への需要が増えてきた。その結果、コンピュータ製造業者は、効率的に関心のある情報をコンピュータ処理するグラフ分析などの多機能の、大型で処理速度の速いコンピュータ装置を競って開発している。しかし、コンピュータ装置のコンピュータ処理能力を無限に伸ばすことはできない。コンピュータ装置のコンピュータ処理能力は、物理的空間、電力消費、および設計の複雑さなどのいくつかの要因により制限される。さらに、高い能力を有するコンピュータ装置は、一般に複雑でコストがかかる。さらに重要なことには、非常に大型で複雑なコンピュータ装置は、大抵の場合、大量生産によるコストの削減を図れないため、コンピュータ装置の能力を増やすだけでは経済的に実行不可能であることが証明される。
【０００３】
この課題に対処する１つの方法は、大きなデータの集合から関心のある情報を抽出するデータ分析ツールの効率を上げることである。ハイパーグラフは、高性能のグラフ分析エンジンであり、グラフデータ上で非常に速いクエリを行う。グラフデータとは、グラフにより簡単に表現可能なデータである。グラフとは、頂点と、それらの頂点を接続する辺の集合である。ハイパーグラフでは、非常に特殊なフォーマットで入力を行わなければならないが、このフォーマット動作は、単一マシンのメモリおよびディスクの一般的な能力を超えてしまうため、数多くの実在のグラフデータの集合をフォーマットすることは容易なことではない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１つのアプローチとして、スクリプトおよびＵＮＩＸ（登録商標）ユーティリティを用いてデータを自動的にコンパイルしフォーマットすることができる。このアプローチは、現在のワークステーションでファイルの入出力、および中間でのコンピュータ処理にあてはめる操作を行う際、比較的にうまく機能する。しかし、入力するグラフデータの集合が約数百ギガバイトの場合、必要とされる時間、ディスクスペース、およびメモリスペースが膨大なため、標準のマシン上ではデータをソートすることさえできない。
【課題を解決するための手段】
【０００５】
本発明の一実施形態では、グラフの枝刈りに関するシステムが提供される。動作中、このシステムは、１つ以上の頂点を含むグラフ内で接続構成要素を識別する。グラフの各頂点はデータの集合内の要素を表し、２つの頂点の間の辺はそれらの頂点の間の関係の種類と強さを表す。このシステムは、グラフに対するクエリに関連する最小グラフ探索閾値より小さくなる接続構成要素を識別する。この最小グラフ探索閾値は、クエリに対して必要な探索ステップの最小数を示す。次いで、システムはこの接続構成要素をグラフから刈り取ることにより第２のグラフを生成する。この第２のグラフを処理して、データの集合から関心のある情報を抽出する。
【０００６】
この実施形態に対する変更形態では、接続構成要素には、（ｉ）孤立した頂点、（ｉｉ）１本以上の辺を介して互いに接続した頂点の集合のうちの１つ以上が含まれ、これらの頂点はその集合の外側の頂点とは接続しない。
【０００７】
この実施形態に対する変更形態では、第１の識別子に基づいて識別されたデータの集合内の各要素が１つ以上の表に格納される。最小グラフ探索閾値より小さくなる接続構成要素を識別するために、このシステムは１つ以上の表で１回以上の表動作を行う。
【０００８】
別の変更形態では、接続構成要素により表されない要素が識別されると、システムはその要素に対する第２の識別子を生成する。
【０００９】
さらに別の変更形態では、システムは、マッピング表で第２の識別子を第１の識別子にマッピングする。
【００１０】
この実施形態に対する変更形態では、このシステムはグラフ内の各頂点にラベルを割り当て、このラベルを第１の頂点から第２の頂点に伝播させ、同じラベルに関連する頂点の集合を識別する。
【００１１】
別の変更形態では、最小グラフ探索閾値より小さくなる接続構成要素を識別するために、システムは、識別された、頂点の集合が最小グラフ探索閾値より小さいかどうかを判定する。
【００１２】
この実施形態に対する変更形態では、データの集合内の要素は、（ｉ）店舗の顧客、（ｉｉ）店舗の商品のうちの１つ以上に対応する。関係の種類は、顧客が商品を購入したかどうかを示している。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施形態による、グラフの枝刈りシステムの例示的なアーキテクチャを示す図である。
【図２】図２は、本発明の実施形態による、最小グラフ探索閾値に基づいた例示的なグラフの枝刈りの様子を示す図である。
【図３Ａ】図３Ａは、本発明の実施形態による、データを表からコンパイルして、グラフを生成し、接続構成要素を識別する例示的な処理を示す図である。
【図３Ｂ】図３Ｂは、本発明の実施形態による、表に基づいて接続構成要素を識別する処理のフローチャートを示す図である。
【図４Ａ】図４Ａは、本発明の実施形態による、接続構成要素を識別するための、例示的なラベルの伝播を示す図である。
【図４Ｂ】図４Ｂは、本発明の実施形態による、ラベルの伝播に基づいた、最小グラフ探索閾値の例示的な形態を示す図である。
【図５】図５は、本発明の実施形態による、グラフの枝刈り処理のフローチャートを示す図である。
【図６Ａ】図６Ａは、実施形態による、グラフを生成しグラフの枝刈りを適用するための例示的なコンピュータシステムを示す図である。
【図６Ｂ】図６Ｂは、実施形態による、グラフを生成しグラフの枝刈りを適用するための例示的な装置を示す図である。
【００１４】
上記の図面では、同様の参照符号は、同じ番号の要素を指す。
【発明を実施するための形態】
【００１５】
以下の説明は、全ての当業者が本実施形態を実施し用いることができるよう提示され、特定の用途およびその必要要件のとの関連で提供されている。開示されている実施形態に対する様々な変更は、当業者にとっては容易に明らかであり、本明細書で定義される一般原理は、本開示の趣旨および範囲から逸脱することなく他の実施形態および用途に適用可能である。したがって、本発明は例示の実施形態には限定されず、明細書に開示された原理および特徴と適合する最も広い範囲と一致するものとする。
【００１６】
本発明の実施形態では、最小グラフ探索閾値に基づいてグラフの枝刈りを行うことにより、グラフから効率的なデータ処理を行うという課題を解決する。一般に、関心のある情報をグラフから抽出するために、グラフ分析システム（例えば、ハイパーグラフ）がグラフを探索する（例えば、グラフの１つ以上の頂点および／または辺を探索する）。このグラフ分析システムは装置および／またはソフトウェアのアプリケーションでよい。関心のある情報の例として、買い物の好みおよび／または商品の推薦、ソーシャルメディア活動、医療紹介、およびＥメールのやり取りのパターンが挙げられるがこれらには限定しない。
【００１７】
グラフから関心のある情報の抽出では、最小数のグラフ探索ステップを含む（例えば、少なくとも最小数の頂点および／または辺を通過する探索を含む）クエリを適用し、この最小数は最小グラフ探索閾値と呼ばれ得る。通常、グラフ分析システムに入力されるグラフは、そのグラフの残りの部分とは相互に接続していない頂点と辺の孤立した集合を分散して含んでいる。これらの孤立した集合は、接続構成要素と呼ばれ得る。すなわち、接続構成要素には、孤立した頂点および／または辺を介して互いに接続した頂点の集合が含まれ得、集合内の頂点はその集合の外側の頂点とは接続しない。
【００１８】
最小グラフ探索閾値を含むグラフに対するクエリの場合、最小グラフ探索閾値より小さい接続構成要素を通過する探索では、関心のある情報が何も抽出されない。その結果、これらの接続構成要素の頂点および／または辺を通過する探索では、グラフから意図した関心のある情報を抽出することなく、グラフ分析システムの処理時間およびメモリ使用量が増えてしまう。
【００１９】
この問題を解決するために、グラフ分析システムは、この最小グラフ探索閾値を満たさない接続構成要素（例えば、頂点および／または辺の対応する集合）をグラフから刈り取って（例えば、捨てる）、グラフからのより効率的なデータ処理を行うことができる。通常、グラフ分析システムは、種々のデータを格納する関係表などのデータ源からデータを抽出するグラフ変換システムから、生成されたグラフデータを入力として受け取る。このグラフ変換システムは、このデータを処理し中間表に投影し、ヘッダーを生成する。次いで、このグラフ変換システムは、これらの表およびヘッダーと、グラフ配列および関連する辺の属性データを記述するデータを有する付加的な表と、を適切にフォーマットされたテキストファイルに書き込む。一般に、小さなグラフ上で実行されるグラフ動作は、より良好な性能を発揮し、メモリおよび処理の使用量は少ない。グラフ内でスタートポイントが異なる同じようなクエリの一群を数回に渡りグラフに適用する場合、クエリの一群を作成する前にそのグラフの枝刈りを行うことで、全体のコンピュータ処理時間が著しく削減される。
【００２０】
このシステムは、本明細書で開示された技術を用いて、顧客に商品の推薦を提供することができる。小売店が顧客に商品を販売することができる。そして、顧客に商品の推薦を提供するために、システムはグラフデータを処理し、これにより、購買データを含む顧客取引データを分析することができる。システムは顧客が購入したアイテムを調べ、第１の顧客と同じ商品を購入した別の顧客により購入された商品を特定することができる。次いで、システムは特定された商品の中から、ある商品を第１の顧客に推薦することができる。顧客取引データを他のデータと一緒にし、関係データベース（すなわち、ハイパーグラフへの直接入力に適さない、いくつかの別のフォーマットで）に格納することができる。グラフの頂点が顧客と商品を表していると想定すると、２つの頂点の間の辺は顧客が商品を購入したかどうかを示す。
【００２１】
いくつかの実施形態では、第１の顧客に商品を推薦するクエリには、第１の顧客と共通の少なくとも１つの商品を購入した他の顧客を見つけることと、それらの他の顧客が購入した商品を特定することと、が含まれる。グラフのモデルに基づくと、このようなコンピュータ処理には４つの頂点（例えば、３つの辺）の最小グラフ探索が必要とされる。第１の探索ステップは、第１の顧客を表す頂点から第１の顧客が購入した商品の集合を表す第２の頂点の集合までの探索である。第２のステップは、第２の頂点の集合内の各頂点から、これらの購入された商品を購入した他の顧客を表す第３の頂点の集合までの探索である。第３のステップは、第３の頂点の集合から他の顧客が行った他の購入を表す頂点までの探索である。グラフ分析システムは、３本より少ない辺を含む接続構成要素をオリジナルの入力グラフから刈り取ることができる。次いで、枝刈りをされたグラフ用いて、クエリに回答することができる。この回答により、より速い処理と少ないメモリ使用量で、オリジナルのグラフでの回答と同じ結果を得られる。
【００２２】
本明細書では、ハイパーグラフに関する例が議論されているが、本発明の実施形態は全てのグラフ分析アプリケーションを用いる開示技術を適用可能である。本開示では、用語「アプリケーション」および「ソフトウェア」は区別なく使用されている。いくつかの実施形態では、Ｈｉｖｅに代りＨＢａｓｅまたはＳＱＬなどの関係インターフェースを用いることができる。いくつかのスクリプトは、Ｃ／Ｃ＋＋またはその他のスクリプト言語、あるいはｃａｔ、ｊｏｉｎ、ｐａｓｔｅ、ｃｕｔ、およびｓｏｒｔなどの標準のＵＮＩＸのスクリプティングプログラムで書き込むことができる。
【００２３】
図１には、本発明の実施形態による、グラフの枝刈りシステムの例示的なアーキテクチャが示されている。グラフ処理システム１００は、関係モデル（または、その他の任意データモデル）に従った格納データを抽出し、グラフを表すための好適なフォーマットにそのデータを変換する。変換されたデータは、グラフ分析アプリケーション（例えば、ハイパーグラフ）への入力に適したものとする。このグラフ分析アプリケーションは、最小グラフ探索閾値に基づいて、グラフの枝刈りを行う。
【００２４】
いくつかの実施形態では、このシステム１００は、クラスター１０４の一部として動作するサーバ１０２Ａ〜１０２Ｅの集合を含むことができる。サーバ１０２Ａ〜１０２Ｅの各サーバは、記憶装置内に格納されたソフトウェアおよびデータを含むことができる。例えば、サーバ１０２Ｅは、記憶装置１０６を含むことができる。記憶装置１０６は、グラフ分析アプリケーション１０８（例えば、ハイパーグラフ）、取引データ１１０、グラフデータ１１２、およびグラフ変換ソフトウェア１１４などのデータおよびソフトウェアを格納可能である。いくつかの実装形態では、クライアント１１６も含むことができ、このクライアント１１６が、クラスター１０４内のサーバと通信して、ハイパーグラフに関連するグラフ変換サービスを要求する。なお、本発明の別の実装形態では、あらゆる数のサーバおよび記憶装置を含むことができる。以下に、システム１００の種々の発明の様態をさらに説明する。
【００２５】
いくつかの実施形態では、グラフ分析アプリケーション１０８は、特定の制約およびフォーマットの必要要件と共に、特殊な方法でフォーマットされたテキストファイルとして、その入力を受け入れる。入力されるテキストファイルは、グラフ配列および頂点に関連するデータなどの、グラフの記述およびその他の関連データを含むものとする。グラフ構造のデータは、頂点と辺の属性を記述するデータから分離されているものとする。協調フィルタリングを行うために、頂点は顧客または商品を表し、辺は購買取引を表す。
【００２６】
いくつかの実施形態では、システム１００は、Ｈａｄｏｏｐの上に構築されたＨｉｖｅなどのデータウェアハウスのソフトウェアを用いる。Ｈｉｖｅは、Ｈａｄｏｏｐに関するデータウェアハウスシステムである。Ｈｉｖｅは、Ｈａｄｏｏｐと互換性のあるファイルシステムを有する分散型ストレージ内に駐在する簡単なデータ要約、ａｄ−ｈｏｃクエリ、および大きなデータの集合の分析を容易にする。Ｈｉｖｅは、格納データにアクセスするためのＳＱＬインターフェースを提供する。Ｈａｄｏｏｐはストレージ層である。Ｈａｄｏｏｐは、マシンのクラスター全体に渡って、マシンおよびＣＰＵの能力を共に引き出して、大きなデータの集合の分散処理を行うためのフレームワークである。Ｈａｄｏｏｐは、クラスター全体に渡るデータのストレージを提供し、単一のサーバから数千のマシンまで拡張および縮小を可能にする。Ｈａｄｏｏｐは、クラスター内の全てのノードに及ぶ、拡張および縮小可能な分散型ファイルシステムを提供する。小売店は、Ｈａｄｏｏｐクラスター内に数百ギガバイトのデータを格納することができる。一般的な関係データベースの表から、ハイパーグラフに適したフォーマットにデータを自動的にコンパイルするために、ＨａｄｏｏｐおよびＢａｓｈスクリプトを伴うＨｉｖｅを用いることができる。Ｂａｓｈとは、ＵＮＩＸのシェルである。Ｂａｓｈは、スクリプトファイルから命令を読み、スクリプト内の命令を実行することができる。
【００２７】
グラフ分析アプリケーション１０８のハイパーグラフへ入力される情報は、Ｈｉｖｅを用いて生成された表とヘッダーの集合である。いくつかの実装形態では、Ｈｉｖｅ内のＳＱＬスクリプトを実行して、メインの表から、より小さい中間表に、顧客、商品、および取引データを投影することができる。例えば、小売店のデータベース内には、縦列の１列に顧客の識別子（ＩＤ）が格納され、別の縦列に顧客が購入した商品のＩＤが格納されたメインの表が存在し得る。このメインの表のその他の縦列には、取引のＩＤおよびその取引の日付が格納される。Ｈｉｖｅにより生成される中間表は、テキストファイルの形態でストレージに書き込むことができ、テキストファイル内の範囲を区切られた新しい各線は表の横列を表す。システムは、グラフの配列を記述するヘッダーおよび表と、ならびに辺の属性を記述する別の表と、を生成することもできる。
【００２８】
図２には、本発明の実施形態による、最小グラフ探索閾値に基づいた例示的なグラフの枝刈りの様子が示されている。動作中、グラフ変換システム（例えば、図１のグラフ変換ソフトウェア１１４）は、データ源からデータを抽出し、一般的なグラフ２００を生成する。グラフ分析システム（例えば、グラフ分析アプリケーション１０８）は、グラフ２００から関心のある情報を抽出する。関心のある情報の例には、効率的なデータ分析を用いた、買い物の好みおよび／または商品の推薦、ソーシャルメディア活動、医療紹介、およびＥメールのやり取りのパターンが含まれるがこれらには限定されない。
【００２９】
いくつかの実施形態では、グラフ２００は小売店の顧客および彼らの各購買行動を表す。グラフ２００内の頂点は、顧客（例えば、頂点２０２）または顧客により購入された商品（例えば、頂点２１２）に対応することができる。頂点２０２と頂点２１２との間の辺は、頂点２０２に関連する顧客が頂点２１２に関連する商品を購入したことを示している。グラフ分析システムは、グラフ２００を分析して第１の顧客と同じアイテムを購入した別の顧客の購買行動を判定する。次いで、このシステムは、第１の顧客にアイテムを推薦することができる。頂点２０２が第１の顧客を表していると想定する。
【００３０】
いくつかの実施形態では、第１の顧客に商品を推薦するクエリには、第１の顧客と共通の少なくとも１つの商品を購入した他の顧客を見つけることと、それらの他の顧客が購入した商品を特定することと、が含まれる。グラフ２００に基づくと、このようなコンピュータ処理には、４つの頂点および３つの辺の最小グラフ探索が必要となる。第１の探索ステップは、頂点２０２から第１の顧客が購入した商品の集合を表す頂点２１２、２１４、および２１６を含む頂点の集合までの探索である。第２のステップは、頂点２１２、２１４、および／または２１６から、これらの購入された商品を購入した他の顧客を表す頂点２２２、２２４、および２２６を含む頂点の集合までの探索である。第３のステップは、頂点２２２、２２４、および／または２２６から他の顧客が行ったその他の購買行動を表す頂点２３２および２３４までの探索である。グラフ２００で、これらの３つのステップの探索を行うことにより、グラフ分析システムは第１の顧客が現在購入する可能性がある投影された商品を特定することができる。このように、グラフ２００に適用されたクエリにより、投影された商品を判定することができ、このクエリに関する最小グラフ探索閾値は、４つ頂点および／または３つ辺である。
【００３１】
４つ未満の頂点、および／または３つ未満の辺を有する接続構成要素を通過する探索では、グラフ２００からは関心のある情報は特定されない。その結果、これらの接続構成要素の頂点、および／または辺を通過する探索は、意図した関心のある情報をグラフから抽出することなく、グラフ分析システムの処理時間およびメモリ使用量を増やしてしまう。そのような接続構成要素には、購買行動を全く行っていない顧客を表す頂点２０６、および購買されていない商品を表す頂点２２０などの孤立した頂点が含まれ得る。
【００３２】
接続構成要素には、最小グラフ探索の必要要件を満たしていない頂点と辺の集合も含まれ得る。例えば、接続構成要素は、頂点２１８により表される商品の１つだけを購入した顧客を表す頂点２０４を含むことができる。この接続構成要素は、４つの頂点、および／または３本の辺のグラフ探索を供給していない。その結果、グラフ分析システムは、頂点２０４、２０６、２１８、および２２０を含む接続構成要素を刈り取ることにより、新しいグラフ２５０を生成することができる。次いで、枝刈りされたグラフ２５０を用いて、クエリに回答することができる。この回答により、より速い処理と少ないメモリ使用量でオリジナルのグラフ２００の回答と同じ結果を得られる。
【００３３】
図３Ａには、本発明の実施形態による、データを表からコンパイルしてグラフを生成し、接続構成要素を識別する例示的な処理が示されている。図３Ａには、図１のシステム１００が、どのようにしたら取引データをハイパーグラフに適したフォーマットに変換することができるかということが示されている。システム１００はメインの表からデータを抽出して、中間表、それに関連するヘッダー、配列の表、および辺の属性の表を形成することができる。次いで、システム１００は、中間表、ヘッダー、および他の表を１つ以上のテキストファイルに書き込むことができる。
【００３４】
図３Ａに示される通り、グラフ分析アプリケーション１０８は、分割／格納コンポーネント３０４Ａ、およびその他コンポーネント３０４Ｂ〜３０４Ｃを含む。コンポーネント３０４Ｂ〜３０４Ｃは、入力グラフの分析を容易にする、あらゆる数のコンポーネントを表し得る。グラフ分析アプリケーション１０８は、データベース３０８内に格納されるテキストファイル３０６を入力情報として受け入れる。このテキストファイル３０６には、メインの表３１０から検索されたデータから生成されたグラフ表現を記述したデータが含まれる。なお、実装形態によっては、テキストファイル３０６は、１つ以上のテキストファイルを表すことができる。
【００３５】
システム１００は、顧客表３１２、商品表３２２、購買履歴表３３２、および購買表３４２を含む中間表を生成することができる。顧客表３１２には、顧客ＩＤ３１４、顧客の名前３１６、および顧客の住所３１８などの顧客を記述するデータが格納され得る。商品表３２２には、商品ＩＤ３２４および商品の明細３２６などの購買可能な商品を記述するデータが格納され得る。購買履歴表３３２には、商品の顧客購買行動を記述するデータが格納され得るが、異なる実装形態では、その他の種類も取引をこの表の中に、あるいは別の取引の表の中に含むこともできる。購買履歴表３３２は、購買ＩＤ３３４、顧客ＩＤ３１４、および商品ＩＤ３２４を含むことができる。購買表３４２には、購買ＩＤ３３４および付加情報３４４などの購買特定情報を記述するデータが格納され得る。付加情報３４４には、支払情報および／または配送住所が含まれ得る。
【００３６】
システム１００は、メインの表３１０からデータを検索し、検索されたデータを顧客表３１２、商品表３２２、購買履歴表３３２、および購買表３４２内に格納する。メインの表３１０は、例えば、関係モデルに従って、データを格納することができる。異なる小売店は、領域によって、格納されるデータの構造または種類が異なり、いくつもの表を含むことができるメインの表を格納することができる。いくつかの実施形態では、システム１００は、中間表に関するいくつかのヘッダー生成し、中間表およびヘッダーをテキストファイル３０６に書き込む。システム１００は、グラフ分析アプリケーション１０８に提出する辺に関する情報を含むその他の表も含むこともできる。
【００３７】
図３Ｂには、本発明の実施形態による、表に基づいて接続構成要素を識別する処理のフローチャートが示されている。この処理を用いて、孤立した頂点、またはサイズ１の接続構成要素を刈り取ることができる。いくつかの実施形態では、ＨＩＶＥクエリ言語のスクリプトを書き込んで小売店の領域でアイデアを実演することにより、この処理を自動化する。現在の実施形態に対する変更形態または代替形態には、ＳＱＬなどのその他の任意の宣言型言語などの異なるプログラム言語のスクリプトの実装形態が含まれる。動作中、この処理は購買履歴表内の顧客ＩＤと商品ＩＤに対して結合動作を適用し（動作３５２）、この結合から別個の要素を選択する（動作３５４）。これにより、処理は１次以上の孤立していない頂点を見つけることができる。
【００３８】
次いで、この処理は、選択された要素と顧客表と結びつけることにより、少なくとも１つの商品を購入した顧客だけを含む、投影された顧客表を作成する（動作３５６）。また、この処理は、選択された要素と商品表と結びつけることにより、少なくとも１人の顧客に購入された商品だけを含む、投影された商品表も作成する（動作３５８）。この処理は、顧客および商品に関するそれぞれ連続する新しい識別子を生成することによりマッピング表を作成し、前の識別子に新しい識別子をマッピングする（動作３６０）。新しい識別子が順次生成されて、動作３５６および／または動作３５８の投影ステップにより生じた識別子の配列内の潜在的な隙間が取り除かれる。次いで、この処理は、マッピング表を顧客表、商品表、および購買履歴表に結びつける（動作３６２）。
【００３９】
図４Ａには、本発明の実施形態による、接続構成要素を識別するための、例示的なラベルの伝播が示されている。この例では、ラベル４０２、４０４、４０６、および４０８が、グラフ２００の頂点２０２、２１２、２１４、および２１６にそれぞれ関連する。同様に、グラフ２００のその他の頂点も各ラベルに関連する。各頂点の対の間の各辺は同じ重みを有し得る。いくつかの実施形態では、最も低い（または最も高い）識別子の値を用いて、同じ重みを有する辺に関する対応ラベルの伝播を決定する。普通なら、頂点の間の辺の重みに基づいて、ラベルは２つの頂点の間を伝播する。
【００４０】
頂点２１２、２１４、および２１６の周りでは、頂点２０２が最も小さい識別子を有すると想定される。この場合、ラベル４０２が頂点２１２、２１４、および２１６に伝播する。したがって、ラベル４０２は頂点２１２、２１４、および２１６と関連するようになる。次いで、ラベル４０２が、頂点２２２、２２４、および２２６の周りで最も小さくなり、頂点２２２、２２４、および２２６に伝播し、それらと関連する（点線により示される）。同様に、次いで、ラベル４０２は頂点２３２および２３４に伝播し、それらの関連する（点線により示される）。
【００４１】
さらに、ラベル４１２、４１４、および４１６は、グラフ２００の頂点２０４、２０６、および２２０にそれぞれ関連する。頂点２０４は、頂点２０４および頂点２１８だけを含む接続構成要素内に存在する。したがって、ラベル４１２が頂点２１８のラベルより小さい場合、ラベル４１２は頂点２０４から頂点２１８に伝播し、頂点２１８に関連する。頂点２０６および頂点２２０は孤立した頂点であり、したがって、ラベル４１４およびラベル４１６は伝播しない。サイズは、その接続構成要素内の頂点および／または辺の数を示し、分析システムは、これらの接続構成要素のサイズに基づいて、最小グラフ探索閾値を有する接続構成要素の形態を調べることができる。図４Ｂには、本発明の実施形態による、ラベルの伝播に基づいた、最小グラフ探索閾値の例示的な形態が示されている。グラフ２００内でラベルが伝播すると、図４Ａを参照して説明した通り、頂点２０２、２１２、２１４、２１６、２２２、２２４、２２６、２３２、および２３４はラベル４０２に関連する。
【００４２】
同様に、頂点２０４および頂点２１８はラベル４１２に関連し、頂点２０６および頂点２２０は、ラベル４１４およびラベル４１６にそれぞれ関連する。グラフ２００に関する最小グラフ探索閾値により示される通り、グラフ分析システムは、ラベル４１２が、４つの頂点より少ない、２つの頂点だけに関連することを検知することができる。同様に、グラフ分析システムは、ラベル４１４およびラベル４１６が、それぞれ頂点２０６および頂点２２０だけに関連することも検知することできる。それにより、グラフ分析システムは、頂点２０４、２０６、２１８、および２２０と、それらに対応する辺をグラフ２００から刈り取ることができることを検知し、枝刈りされたグラフ２５０を生成することができる。次いで、枝刈りをされたグラフ２５０用いて、クエリに回答することができる。この回答により、より速い処理と少ないメモリ使用量でオリジナルのグラフ２００の回答と同じ結果を得られる。グラフ内の接続構成要素を識別するアルゴリズムの詳細は、Ｔａｒｊａｎ，Ｒ．Ｅ．（１９７２），「Ｄｅｐｔｈ−ｆｉｒｓｔ  ｓｅａｒｃｈ  ａｎｄ  ｌｉｎｅａｒ  ｇｒａｐｈ  ａｌｇｏｒｉｔｈｍｓ」ＳＩＡＭ  Ｊｏｕｒｎａｌ  ｏｎ  Ｃｏｍｐｕｔｉｎｇ１（２）：１４６−１６０などの市販の文献で参照可能である。
【００４３】
図５には、本発明の実施形態による、グラフの枝刈り処理のフローチャートが示されている。図２を参照して説明した通り、動作中、この処理はグラフに関する入力クエリを調べ（動作５０２）、その入力クエリに関連する最小グラフ探索閾値を判定する（動作５０４）。次いで、この処理は閾値よりも小さい（例えば、閾値より少ない頂点および／または辺を有する）接続構成要素を識別する（動作５０６）。閾値より小さい接続構成要素の識別は、図３Ａおよび図３Ｂを参照して説明した表の動作、および／または図４Ａおよび図４Ｂを参照して説明したラベルの伝播に基づくがこれらには限定されない。この処理は、識別された接続構成要素を取り除くことにより、グラフの枝刈りを行い（動作５０８）、入力クエリを処理するために、グラフ分析システムに枝刈りされたグラフを供給する（動作５１０）。
【００４４】
図６Ａには、実施形態による、グラフを生成し、グラフの枝刈りを適用するための例示的なコンピュータシステムが示されている。グラフデータを枝刈りするための例示的なコンピュータシステム６００は、プロセッサ６０２、メモリ６０４、および記憶装置６０６を含む。記憶装置６０６は、アプリケーション６１０および６１２などの複数のアプリケーション、およびオペレーティングシステム６１６を格納する。記憶装置６０６は、グラフ処理アプリケーション６２２も格納し、このグラフ処理アプリケーション６２２は取引データ受信モジュール６２４、グラフ分析アプリケーション１０８、取引データ１１０、グラフデータ１１２、およびグラフ変換ソフトウェア１１４を含むことができる。動作中、グラフ処理アプリケーション６２２などの１つ以上のアプリケーションが記憶装置６０６からメモリ６０４にロードされ、プロセッサ６０２により実行される。プログラムの実行中、プロセッサ６０２は上述の機能を行う。コンピュータおよび通信システム６００は、随意的なディスプレイ６１７、キーボード６１８、およびポインティングデバイス６２０に接続可能である。
【００４５】
図６Ｂには、実施形態による、グラフを生成し、グラフの枝刈りを適用するための例示的な装置を示されている。例示的な装置６５０は、有線または無線の通信チャネルを介して互いに通信可能な複数のモジュールを含むことができる。装置６５０は１つ以上の集積回路を用いて実現され、その中に含まれるモジュールの数は図６Ｂに示されるモジュールよりも多くても、少なくてもよい。さらに、装置６５０は、コンピュータシステム内に組み込むことができる、あるいはその他のコンピュータシステム、および／または装置と通信可能な別の装置として実現することもできる。具体的には、装置６５０は、取引データ受信モジュール６５２、グラフ分析モジュール６５４、取引データ１１０、グラフデータ１１２、およびグラフ変換ソフトウェア６５６を含むことができる。なお、装置６５０は図６Ｂには図示されない付加的なモジュールを含むこともできる。いくつかの実施形態では、グラフ分析モジュール６５４はグラフ分析アプリケーション１０８の動作を行う。
【００４６】
いくつかの実施形態では、取引データ受信モジュール６５２は、購買データなどの取引データを受信することができる。グラフ分析モジュール６５４（例えば、ハイパーグラフ）は、生成されたグラフを受け取り、最小グラフ探索閾値に基づいて、生成されたグラフの枝刈りを行い、枝刈りされたグラフから関心のある情報を抽出して、購買の推薦の生成を容易にする。グラフデータ１１２は、オリジナルのグラフデータ、および枝刈りされたグラフデータを含むことができる。
【００４７】
いくつかの実施形態では、コンピュータシステム６００、および／または装置６５０を用いることには、（ｉ）クエリ内に存在するグラフ探索ステップの数を調べて最小グラフ探索閾値を判定することと、（ｉｉ）クエリの最小グラフ探索閾値より小さい接続構成要素を取り除くことによりオリジナルのグラフを枝刈りすることと、（ｉｉｉ）図３Ｂを参照して説明した通り、頂点の識別子の新しい配列を生成して、投影ステップにより生じた識別子の配列内の隙間を取り除くことと、（ｉｖ）ラベルを伝播させてグラフの接続構成要素を識別することと、のうちの１つ以上に関与する。
【００４８】
この詳細な説明で記載されたデータ構造およびコードは、一般に、コンピュータ可読記憶媒体に格納され、これらのコンピュータ可読記憶媒体はコンピュータシステムにより用いられるコード、および／またはデータを格納することが可能な全ての装置または媒体でよい。コンピュータ可読記憶媒体には、揮発性メモリ、不揮発性メモリ、およびディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多目的ディスクまたはデジタルビデオディスク）などの磁気記憶装置および光記憶装置、またはコンピュータ可読媒体を格納可能な、現在既知のあるいは将来開発される、その他の媒体が含まれるがこれらには限定されない。
【００４９】
詳細な説明のセクションで記載された方法および処理は、上記のコンピュータ可読記憶媒体内に格納可能なコード、および／またはデータとして具現化することができる。コンピュータシステムがコンピュータ可読記憶装置に格納されたコード、および／またはデータを読出し実行すると、コンピュータシステムはデータ構造およびコードとして具現化され、コンピュータ可読記憶媒体内に格納された方法および処理を実行する。
【００５０】
さらに、本明細書に記載される方法および処理をハードウェアモジュールまたは装置に格納することも可能である。これらのモジュールまたは装置には、特定用途向け集積回路（ＡＳＩＣ）のチップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定のソフトウェアモジュールまたはコードの一部を特定の時間に実行する専用プロセッサまたは共有するプロセッサ、および／または、現在既知のあるいは将来開発される、その他のプログラマブルロジックデバイスが含まれ得るがこれらには限定されない。ハードウェアモジュールまたは装置が起動すると、これらのハードウェアモジュールまたは装置はその中に格納される方法および処理を実行する。
【図１】
2015156216.tif 000003
【図２】
2015156216.tif 000004
【図３Ａ】
2015156216.tif 000005
【図３Ｂ】
2015156216.tif 000006
【図４Ａ】
2015156216.tif 000007
【図４Ｂ】
2015156216.tif 000008
【図５】
2015156216.tif 000009
【図６Ａ】
2015156216.tif 000010
【図６Ｂ】
2015156216.tif 000011