(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-29
(45)【発行日】2023-10-10
(54)【発明の名称】相関ルール・マイニング・システム
(51)【国際特許分類】
G06F 16/2458 20190101AFI20231002BHJP
【FI】
G06F16/2458
(21)【出願番号】P 2021549134
(86)(22)【出願日】2020-02-24
(86)【国際出願番号】 IB2020051547
(87)【国際公開番号】W WO2020178662
(87)【国際公開日】2020-09-10
【審査請求日】2022-07-25
(32)【優先日】2019-03-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ゾウ、ヤン
(72)【発明者】
【氏名】ウェイ、シン
(72)【発明者】
【氏名】ハン、シー エア
(72)【発明者】
【氏名】ツァン、シゥ イン
(72)【発明者】
【氏名】カン、ウェイ シャン
(72)【発明者】
【氏名】リー、フア
【審査官】原 秀人
(56)【参考文献】
【文献】特開2001-134575(JP,A)
【文献】米国特許出願公開第2015/0317476(US,A1)
【文献】米国特許出願公開第2009/0228685(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
トランザクション内のアイテム間の関係を識別するための方法であって、
コンピュータ・システムによって、ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいて生成することであって、前記ローカル条件付き頻度パターン・ツリー内のノードが、前記トランザクション内のアイテムと前記アイテムの頻度とを表す、前記生成することと、
前記コンピュータ・システムによって、グローバル条件付き頻度パターン・ツリーを前記複数の処理ノードにおいて生成することであって、前記複数の処理ノード内の各処理ノードが、前記処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する、前記生成することと、
前記コンピュータ・システムによって、前記複数の処理ノード内の各処理ノードが他の処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを有するように、前記複数の処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを配布することと、
前記コンピュータ・システムによってパターンを生成することと、
前記コンピュータ・システムによって、前記複数の処理ノード内の前記パターンおよび前記グローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成することであって、前記ルールのセットが前記アイテム間の前記関係を定義する、前記生成することと
を含む、方法。
【請求項2】
前記コンピュータ・システムによって前記パターンを生成することが、
前記コンピュータ・システムによって、前記パターンがローカル・パターン・ツリー内にある前記グローバル条件付き頻度パターン・ツリーを使用して、前記ローカル・パターン・ツリーを前記複数の処理ノードにおいて生成することを含み、
前記コンピュータ・システムによって、前記複数の処理ノード内の前記パターンおよび前記グローバル条件付き頻度パターン・ツリーを使用して前記ルールのセットを生成することであって、前記ルールのセットが前記アイテム間の前記関係を定義する、前記生成することが、
前記コンピュータ・システムによって、前記複数の処理ノード内の前記ローカル・パターン・ツリーおよび前記グローバル条件付き頻度パターン・ツリーを使用して、前記ルールのセットを生成することであって、前記ルールのセットが前記アイテム間の前記関係を定義する、前記生成することを含む、請求項1に記載の方法。
【請求項3】
前記コンピュータ・システムによって、ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいて生成することが、
前記コンピュータ・システムによって、ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいてオンデマンドで生成することを含む、請求項1
または2に記載の方法。
【請求項4】
前記複数の
処理ノード内の各
処理ノードが、前記
処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを使用して生成されたローカル・パターン・ツリーを有する、請求項2に記載の方法。
【請求項5】
前記ローカル・パターン・ツリーが、前記パターンを格納する辞書ツリーである、請求項2に記載の方法。
【請求項6】
前記コンピュータ・システムによって、前記ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの前記複数の処理ノードにおいて生成することが、
前記コンピュータ・システムによって、ローカル頻度パターン・ツリーを前記コンピュータ・システムの前記複数の処理ノードにおいて生成することであって、前記ローカル頻度パターン・ツリー内のノードが、前記トランザクション内の前記アイテムと前記アイテムの頻度とを表す、前記生成することと、
前記コンピュータ・システムによって、前記コンピュータ・システムの前記複数の処理ノード内の対応するローカル頻度パターン・ツリーを使用して、前記ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの前記複数の処理ノードにおいて生成することと
を含む、請求項1に記載の方法。
【請求項7】
前記トランザクションが前記アイテムのオンライン購入であり、前記ルールのセットがアイテムを顧客に推奨するために使用される、請求項1
~6のいずれか1項に記載の方法。
【請求項8】
前記トランザクションが、前記アイテムのオンライン購入、前記アイテムの店内購入、商品の購入、サービスの購入、アミノ酸の配置、株の購入、および通貨の購入を含む群から選択される、請求項1
~6のいずれか1項に記載の方法。
【請求項9】
コンピュータ・システムを備えるデータ・マイニング・システムであって、
前記コンピュータ・システムが、ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいて生成し、前記ローカル条件付き頻度パターン・ツリー内のノードが、トランザクション内のアイテムと前記アイテムの頻度とを表し、
前記コンピュータ・システムが、グローバル条件付き頻度パターン・ツリーを前記複数の処理ノードにおいて生成し、前記複数の処理ノード内の各処理ノードが、前記処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成し、
前記コンピュータ・システムが、前記複数の処理ノード内の各処理ノードが他の処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを有するように、前記複数の処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを配布し、
前記コンピュータ・システムがパターンを生成し、
前記コンピュータ・システムが、前記複数の処理ノード内の前記パターンおよび前記グローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成し、前記ルールのセットが前記アイテム間の関係を定義する、
データ・マイニング・システム。
【請求項10】
前記パターンを生成する際に、前記コンピュータ・システムが、前記グローバル条件付き頻度パターン・ツリーを使用して、ローカル・パターン・ツリーを前記複数の処理ノードにおいて生成し、
前記複数の処理ノード内の前記パターンおよび前記グローバル条件付き頻度パターン・ツリーを使用して前記ルールのセットを生成する際であって、前記ルールのセットが前記アイテム間の前記関係を定義する、前記生成する際に、前記コンピュータ・システムが、前記複数の処理ノード内の前記ローカル・パターン・ツリーおよび前記グローバル条件付き頻度パターン・ツリーを使用して前記ルールのセットを生成し、前記ルールのセットが前記アイテム間の前記関係を定義する、請求項9に記載のデータ・マイニング・システム。
【請求項11】
ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいて生成する際に、前記コンピュータ・システムが、ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいてオンデマンドで生成する、請求項9
または10に記載のデータ・マイニング・システム。
【請求項12】
前記複数の
処理ノード内の各
処理ノードが、前記
処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを使用して生成されたローカル・パターン・ツリーを有する、請求項10に記載のデータ・マイニング・システム。
【請求項13】
前記ローカル・パターン・ツリーが、前記パターンを格納する辞書ツリーである、請求項10に記載のデータ・マイニング・システム。
【請求項14】
前記ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの前記複数の処理ノードにおいて生成する際に、
前記コンピュータ・システムが、ローカル頻度パターン・ツリーを前記コンピュータ・システムの前記複数の処理ノードにおいて生成し、前記ローカル頻度パターン・ツリーの前記ノードが、前記トランザクション内の前記アイテムと前記アイテムの頻度とを表し、
前記コンピュータ・システムが、前記複数の処理ノード内の対応するローカル頻度パターン・ツリーを使用して、前記ローカル条件付き頻度パターン・ツリーを前記複数の処理ノードにおいて生成する、請求項9に記載のデータ・マイニング・システム。
【請求項15】
前記トランザクションが前記アイテムのオンライン購入であり、前記ルールのセットがアイテムを顧客に推奨するために使用される、請求項9
~14のいずれか1項に記載のデータ・マイニング・システム。
【請求項16】
前記トランザクションが、前記アイテムのオンライン購入および前記アイテムの店内購入を含む群から選択される、請求項9
~14のいずれか1項に記載のデータ・マイニング・システム。
【請求項17】
トランザクション内のアイテム間の関係を識別するためのコンピュータ・
プログラムあって、
コンピュータに、
条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成する
ことであって、前記条件付き頻度パターン・ツリー内のノードが、前記トランザクション内のアイテムと前記アイテムの頻度とを表す
、前記生成することと、
グローバル条件付き頻度パターン・ツリーを前記複数の処理ノードにおいて生成する
ことであって、前記複数の処理ノード内の各処理ノードが、前記処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する
、前記生成することと、
前記複数の処理ノード内の各処理ノードが他の処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを有するように、前記複数の処理ノードによって生成された前記グローバル条件付き頻度パターン・ツリーを配布する
ことと、
パターンを生成する
ことと、
前記複数の処理ノード内の前記パターンおよび前記グローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成する
ことであって、前記ルールのセットが前記アイテム間の前記関係を定義する、
前記生成することと
を
実行させるためのコンピュータ
・プログラム。
【請求項18】
前記
パターンを生成することが
、前記コンピュータ
に、前記グローバル条件付き頻度パターン・ツリーを使用してローカル・パターン・ツリーを前記複数の処理ノードにおいて生成する
ことを実行させることを含み、
前記
ルールのセットを生成することが、前記コンピュータ
に、前記複数の処理ノード内の前記ローカル・パターン・ツリーおよび前記グローバル条件付き頻度パターン・ツリーを使用して、前記ルールのセットを生成する
ことであって、前記ルールのセットが前記アイテム間の前記関係を定義する、前記
生成することを実行させることを含む、請求項17に記載のコンピュータ・
プログラム。
【請求項19】
前記
条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成することが、前記コンピュータ
に、ローカル条件付き頻度パターン・ツリーを前記コンピュータ・システムの複数の処理ノードにおいてオンデマンドで生成
させることを含む、請求項17
または18に記載のコンピュータ・
プログラム。
【請求項20】
前記条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成することが
、前記コンピュータに、
ローカル頻度パターン・ツリーを前記コンピュータ・システムの前記複数の処理ノードにおいて生成するため
ことであって、前記ローカル頻度パターン・ツリーのノードが、前記トランザクション内の前記アイテムと前記アイテムの頻度とを表す、前記
生成することと、
前記複数の処理ノード内の対応するローカル頻度パターン・ツリーを使用して、前記ローカル条件付き頻度パターン・ツリーのセットを前記複数の処理ノードにおいて生成する
ことと
を実行させることを含む、請求項17に記載のコンピュータ・
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、改良されたコンピュータ・システムに関し、より詳細には、相関ルール・マイニングのための方法、装置、コンピュータ・システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
顧客がインターネット上のオンライン・ストアを使用するとき、顧客は購入するアイテムのリストを有していることが多い。各顧客は、顧客のニーズと好みに応じて、個別のリストを有することができる。オンライン・ストアは、以前の購入に関して収集された情報、閲覧されたアイテムおよび顧客に関するその他の情報に基づいて、顧客に推奨を行うことができる。顧客がオンラインで購入したアイテムに関する情報は、推奨の作成に使用するために識別することができる。例えば、顧客が頻繁に一緒に購入するアイテムを判定することができる。特定のアイテムまたはアイテムのグループの購入後に行われた後続の購入も識別することができる。
【0003】
相関ルール・マイニングを使用して、情報を処理することができる。相関ルール・マイニングは、大規模なデータセット内の変数間に関心のある関係を発見するためのルール・ベースの機械学習法である。例えば、アイテムの購入では、相関ルール・マイニングを使用して、アイテムが互いにどのように関連付けられているかを明らかにすることができる。
【0004】
現在使用されている相関ルール・マイニング技法は、頻出アイテム発見(frequent item discovery)とルール生成とが実行される2つの部分からなるプロセスを採用している。頻出アイテム発見に関して、1つの一般的な方法は、頻出パターン成長(FP growth)である。この技法により、頻出パターン・ツリー(FPツリー)の各ブランチから多数のパターンを識別することができる。次いで、各パターンによって多くのルールを識別することができる。ツリーのブランチが深くなるにつれて、生成されるルールの数は非常に大きくなる。その結果、コンピュータ・システムのメモリ使用量が問題になり得る。さらに、ルールの各部分の頻度を見つけるために必要な時間が非常に長くなる。
【0005】
並列頻出パターン(PFP)成長は、分散環境において頻出アイテム・セット・マイニングのために使用される1つの技法である。この技法には、並列アイテム発見が含まれる。並列化させた発見は、複数の条件付きFPツリーを生成することによって実行することができる。この技法では、複数のツリーに冗長データが存在し、これらのツリーの更新には時間がかかる。さらに、この技法で使用されるメモリも非常に大きくなる。
【0006】
したがって、前述した問題の少なくともいくつか、およびその他の考えられる問題を考慮に入れた方法および装置を有することが望ましいであろう。例えば、リソース使用量および処理時間を削減するやり方で、データセット内の様々な変数間の関係を識別することに関する技術的問題を克服する方法および装置を有することが望ましいであろう。
【発明の概要】
【0007】
本発明の一実施形態によれば、方法は、トランザクション内のアイテム間の関係を識別する。ローカル条件付き頻度パターン・ツリーが、コンピュータ・システムによってコンピュータ・システムの複数の処理ノードにおいて生成される。ローカル条件付き頻度パターン・ツリー内のノードが、トランザクション内のアイテムとアイテムの頻度とを表す。グローバル条件付き頻度パターン・ツリーが、コンピュータ・システムによって複数の処理ノードにおいて生成される。複数の処理ノード内の各処理ノードが、処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーは、複数の処理ノード内の各処理ノードが他の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを有するように、コンピュータ・システムによって配布される。パターンがコンピュータ・システムによって生成される。ルールのセットが、複数の処理ノード内のパターンおよびグローバル条件付き頻度パターン・ツリーを使用して、コンピュータ・システムによって生成され、ルールのセットはアイテム間の関係を定義する。
【0008】
本発明の別の実施形態によれば、データ・マイニング・システムは、ローカル条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成するコンピュータ・システムを備える。ローカル条件付き頻度パターン・ツリー内のノードが、トランザクション内のアイテムとアイテムの頻度とを表す。コンピュータ・システムは、グローバル条件付き頻度パターン・ツリーを処理ノードにおいて生成する。複数の処理ノード内の各処理ノードが、処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。コンピュータ・システムは、複数の処理ノード内の各処理ノードが他の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを有するように、複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを配布する。コンピュータ・システムは、パターンを生成し、複数の処理ノード内のパターンおよびグローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成し、ルールのセットはアイテム間の関係を定義する。
【0009】
本発明のさらに別の実施形態によれば、トランザクション内のアイテム間の関係を識別するためのコンピュータ・プログラム製品は、コンピュータ可読記憶媒体と、コンピュータ可読記憶媒体に格納された第1のプログラム・コード、第2のプログラム・コード、第3のプログラム・コード、第4のプログラム・コード、および第5のプログラム・コードとを含む。第1のプログラム・コードは、条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成するために実行され、条件付き頻度パターン・ツリー内のノードが、トランザクション内のアイテムとアイテムの頻度とを表す。第2のプログラム・コードは、グローバル条件付き頻度パターン・ツリーを複数の処理ノードにおいて生成するために実行され、複数の処理ノード内の各処理ノードが、処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。第3のプログラム・コードは、複数の処理ノード内の各処理ノードが他の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを有するように、処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを配布させるために実行される。第4のプログラム・コードは、パターンを生成するために実行される。第5のプログラム・コードは、処理ノード内のパターンおよびグローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成するために実行され、ルールのセットはアイテム間の関係を定義する。
【0010】
以下で、添付図面を参照しながら、本発明の実施形態について、例としてのみ説明する。
【図面の簡単な説明】
【0011】
【
図1】例示的な実施形態を実装することができるデータ処理システムのネットワークの図である。
【
図2】例示的な実施形態によるデータ・マイニング環境のブロック図である。
【
図3】例示的な実施形態によるデータ・マイナのコンポーネントのブロック図である。
【
図4】例示的な実施形態による、データ・マイナのコンポーネントによって並列相関ルール・マイニングで実行されるステップを示すデータフロー図である。
【
図5】例示的な実施形態による、トランザクション内のアイテム間の関係を識別するためのプロセスのフローチャートである。
【
図6】例示的な実施形態による、トランザクション内のアイテム間の関係を識別するためのプロセスのフローチャートである。
【
図7】例示的な実施形態による、トランザクション内のアイテム間の関係を識別するためのプロセスのより詳細なフローチャートである。
【
図8】例示的な実施形態による、グローバル条件付き頻度パターン・ツリーからパターン・ツリーを生成するためのプロセスのフローチャートである。
【
図9】例示的な実施形態によるカスケード検索のプロセスのフローチャートである。
【
図10】例示的な実施形態による、トランザクションからローカル条件付き頻度パターン・ツリーを生成するためのデータフローを示す図である。
【
図11】例示的な実施形態による、ローカル頻度パターン・ツリーからローカル条件付きパターン・ツリーを生成するためのデータフローを示す図である。
【
図12】例示的な実施形態による、グローバル条件付き頻度パターン・ツリーからパターン・ツリーを生成するためのデータフローを示す図である。
【
図13】例示的な実施形態によるデータ処理システムのブロック図である。
【発明を実施するための形態】
【0012】
本発明は、任意の可能な技術的詳細の統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体を含むことができる。
【0013】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し記憶することができる有形デバイスであってよい。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下のもの、すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ(登録商標)・ディスク、パンチカードもしくは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を伝搬する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、または電線を介して伝送される電気信号などの、一過性の信号自体であると解釈されるべきではない。
【0014】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0015】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続することができる。一部の実施形態において、本発明の態様を実行するために、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0016】
以下で、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら、本発明の態様について説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0017】
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令により、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する命令を含んだ製品を作り出すべく、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示できるものであってもよい。
【0018】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実行されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0019】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部分を表すことができる。一部の代替実装形態において、ブロックに示す機能を、図示する順序以外で行うことができる。例えば、実際には、連続して示す2つのブロックを実質的に同時に実行することができ、または、関与する機能性に応じて、それらのブロックを時として逆の順序で実行することができる。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実装することができることにも留意されたい。
【0020】
例示的な実施形態は、いくつかの異なる考慮事項を認識し、考慮に入れる。例えば、例示的な実施形態は、並列頻出パターン成長(PFP)にいくつかの問題があることを認識し、考慮に入れる。例えば、例示的な実施形態は、データを条件付き頻度パターン・ツリーに分割するときに、処理時間が異常に大きいことを認識し、考慮に入れる。例示的な実施形態は、特にデータセットのサイズが頻出アイテム発見において巨大であるときに、メモリ使用および計算コストが法外に高価であることを認識し、考慮に入れる。
【0021】
例示的な実施形態は、データをグループに分割し、複数の条件付き頻度パターン・ツリーを更新することが、所望よりも時間がかかるおそれがあることを認識し、考慮に入れる。例えば、例示的な実施形態は、データの冗長性を有するように、トランザクションを複数のレコードに分割できることを認識し、考慮に入れる。例示的な実施形態は、この冗長性が、単一のトランザクションで、より多数の条件付き頻度パターン・ツリーを更新することを含むことを認識し、考慮に入れる。その結果、この更新は所望よりも時間がかかる。
【0022】
例示的な実施形態は、処理ノードにすべての条件付き頻度パターン・ツリーをメモリに格納させることが、所望よりも多くのメモリを消費するおそれがあることを認識し、考慮に入れる。例示的な実施形態は、この状況がメモリ・オーバーフローおよびアプリケーション・クラッシュにつながるおそれがあることを認識し、考慮に入れる。
【0023】
例示的な実施形態はまた、PFPを使用するルール生成が、大きいパターンを用いた、分散環境におけるパターン検索に関して、問題となり得ることを認識し、考慮に入れる。例示的な実施形態は、パターンのサイズによって、異なるパーティションにパターンを格納するおそれがあることを認識し、考慮に入れる。例示的な実施形態は、大きいグローバル・パターンでは、異なる場所にデータを有することにより所望の検索よりも遅くなるおそれがあることを認識し、考慮に入れる。
【0024】
したがって、例示的な実施形態は、トランザクション内のアイテム間の関係を識別するための方法、装置、システム、およびコンピュータ・プログラム製品を提供する。例示的な一例において、方法は、トランザクション内のアイテム間の関係を識別する。ローカル条件付き頻度パターン・ツリーが、コンピュータ・システムによって、コンピュータ・システムの複数の処理ノードにおいて生成される。ローカル条件付き頻度パターン・ツリー内のノードが、トランザクション内のアイテムとアイテムの頻度とを表す。グローバル条件付き頻度パターン・ツリーが、コンピュータ・システムによって複数の処理ノードにおいて生成される。複数の処理ノード内の各処理ノードが、処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーは、複数の処理ノード内の各処理ノードが他の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを有するように、コンピュータ・システムによって配布される。パターンがコンピュータ・システムによって生成される。ルールのセットが、複数の処理ノード内のパターンおよびグローバル条件付き頻度パターン・ツリーを使用して、コンピュータ・システムによって生成され、ルールのセットはアイテム間の関係を定義する。
【0025】
次に図面、特に
図1を参照すると、例示的な実施形態を実装することができるデータ処理システムのネットワークの図が示されている。ネットワーク・データ処理システム100は、例示的な実施形態を実装することができるコンピュータのネットワークである。ネットワーク・データ処理システム100は、ネットワーク102を含み、このネットワーク102は、ネットワーク・データ処理システム100内で一緒に接続された様々なデバイスとコンピュータとの間の通信リンクを提供するために使用される媒体である。ネットワーク102は、有線、無線通信リンク、または光ファイバ・ケーブルなどの接続を含むことができる。
【0026】
図示の例において、サーバ・コンピュータ104およびサーバ・コンピュータ106が、ストレージ・ユニット108と共にネットワーク102に接続する。加えて、クライアント・デバイス110がネットワーク102に接続する。図示のように、クライアント・デバイス110は、クライアント・コンピュータ112、クライアント・コンピュータ114、およびクライアント・コンピュータ116を含む。クライアント・デバイス110は、例えば、コンピュータ、ワーク・ステーション、またはネットワーク・コンピュータであってよい。図示の例において、サーバ・コンピュータ104は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどの情報をクライアント・デバイス110に提供する。さらに、クライアント・デバイス110は、携帯電話118、タブレット・コンピュータ120、およびスマート・グラス122などの他の種類のクライアント・デバイスを含むこともできる。この例示的な例において、サーバ・コンピュータ104、サーバ・コンピュータ106、ストレージ・ユニット108、およびクライアント・デバイス110は、ネットワーク102に接続するネットワーク・デバイスであり、ネットワーク102はこれらのネットワーク・デバイスのための通信媒体である。クライアント・デバイス110の一部またはすべては、これらの物理デバイスがネットワーク102に接続することのできるインターネット・オブ・シングス(IoT)を形成してもよく、ネットワーク102を介して互いに情報を交換してもよい。
【0027】
この例において、クライアント・デバイス110は、サーバ・コンピュータ104へのクライアントである。ネットワーク・データ処理システム100は、追加のサーバ・コンピュータ、クライアント・コンピュータ、および他のデバイス(図示せず)を含むことができる。クライアント・デバイス110は、有線、光ファイバ、または無線接続のうちの少なくとも1つを利用してネットワーク102に接続する。
【0028】
ネットワーク・データ処理システム100に配置されたプログラム・コードは、コンピュータ記録可能記憶媒体に格納され、データ処理システムまたは他のデバイスにダウンロードされて使用され得る。例えば、プログラム・コードは、サーバ・コンピュータ104上のコンピュータ記録可能記憶媒体に格納され、ネットワーク102を介してクライアント・デバイス110にダウンロードされて、クライアント・デバイス110上で使用され得る。
【0029】
図示の例において、ネットワーク・データ処理システム100は、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)のプロトコル・スイートを使用して互いに通信するネットワークおよびゲートウェイの世界規模の集合を表すネットワーク102を有するインターネットである。インターネットの中心には、主要ノードまたはホスト・コンピュータ間の高速データ通信回線の基幹回線が存在し、データおよびメッセージをルーティングする何千もの商用、政府用、教育用、およびその他のコンピュータ・システムから成る。当然、ネットワーク・データ処理システム100を、いくつかの異なる種類のネットワークを使用して実装することもできる。例えば、ネットワーク102を、インターネット、イントラネット、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはワイド・エリア・ネットワーク(WAN)のうちの少なくとも1つから構成することができる。
図1は一例であり、異なる例示的な実施形態のアーキテクチャの制限を意図したものではない。
【0030】
本明細書で使用されるとき、アイテムに関して使用される場合の「いくつかの」は、1つまたは複数のアイテムを意味する。例えば、「いくつかの異なる種類のネットワーク」は、1つまたは複数の異なる種類のネットワークである。
【0031】
さらに、「少なくとも1つ」という句は、アイテムのリストと共に使用される場合、リストされたアイテムのうちの1つまたは複数の異なる組合せを使用することができ、リスト内の各アイテムのうちの1つのみが必要とされ得ることを意味する。言い換えると、「少なくとも1つ」は、リストからアイテムの任意の組合せおよび任意の数のアイテムを使用することができるが、リスト内のすべてのアイテムが必要なわけではないことを意味する。アイテムは、特定のオブジェクト、物、またはカテゴリであってよい。
【0032】
例えば、「アイテムA、アイテムB、またはアイテムCのうちの少なくとも1つ」は、アイテムA、アイテムAおよびアイテムB、またはアイテムBを含み得るが、これらに限定されない。この例はまた、アイテムA、アイテムB、およびアイテムC、またはアイテムBおよびアイテムCを含み得る。当然、これらのアイテムの任意の組合せが存在し得る。いくつかの例示的な例において、「少なくとも1つ」は、例えば、2つのアイテムA、1つのアイテムB、10のアイテムC、4つのアイテムBおよび7つのアイテムC、または他の適切な組合せであってよいが、これらに限定されない。
【0033】
この例示的な例において、データ・マイナ130は、情報132を処理して、情報132内のアイテム134間の関係を識別することができる。この例示的な例に示すように、情報132は、クライアント110を使用するユーザの活動から収集することができる。例えば、ユーザ136は、クライアント・コンピュータ112を使用して、アイテム134をオンラインで購入することができる。データ・マイナ130は、ユーザ136によって購入されたアイテム134についてのトランザクション138を受信することができる。データ・マイナ130は、並列相関ルール(PAR)・プロセスの形態のデータ相関ルール・マイニングを使用して、情報132内のアイテム134間の関係を識別し、ルール144を生成することができる。この例において、ルール144は相関ルールである。
【0034】
データ・マイナ130を、複数のデータ処理システムに分散させることができる。これらのデータ処理システムのそれぞれが処理ノードであり、データ・マイナ130が分散される処理ノードは、クラスタの一部である。この例において、データ・マイナ130は、サーバ・コンピュータ104およびサーバ・コンピュータ106上で実行される。これらのサーバ・コンピュータのそれぞれが処理ノードであり、これら2つの処理ノードはクラスタを形成する。
【0035】
図示のように、データ・マイナ130は、並列相関ルール(PAR)・プロセスを使用して、各ノードにローカル頻度パターン・ツリー(FPツリー)を生成し、順序付けられた頻出アイテムに基づいて情報132を圧縮する。ローカル条件付き頻度パターン・ツリーを、ローカル頻度パターン・ツリーについて作成し、クラスタに分散させることができる。例えば、サーバ・コンピュータ104は、サーバ・コンピュータ104上のローカル頻度パターン・ツリーから生成されたローカル条件付き頻度パターン・ツリーから、グローバル頻度パターン・ツリーを生成する。サーバ・コンピュータ106は、サーバ・コンピュータ106上のローカル頻度パターン・ツリーから生成されたローカル条件付き頻度パターン・ツリーから、グローバル条件付き頻度パターン・ツリーを生成する。これらのサーバ・コンピュータのそれぞれが、生成されたグローバル条件付き頻度パターン・ツリーをブロードキャストする。その結果、サーバ・コンピュータ104は、サーバ・コンピュータ104が生成したグローバル条件付き頻度パターン・ツリーと、サーバ・コンピュータ106が生成したグローバル条件付き頻度パターン・ツリーとを有する。同様に、サーバ・コンピュータ106も、両方のグローバル条件付き頻度パターン・ツリーを有する。
【0036】
次に、データ・マイナ130は、条件付きアイテムによってローカル条件付き頻度パターン・ツリーを集約して、グローバル条件付き頻度パターン・ツリーを生成することができる。グローバル条件付き頻度パターン・ツリーは、クラスタ内の各ノードにブロードキャストされる。図示のように、データ・マイナ130は、各処理ノード上の対応する条件付き頻度パターン・ツリーからローカル・パターン・ツリーを生成することができる。データ・マイナ130は、サーバ・コンピュータである各処理ノード上のローカル・パターン・ツリーおよびグローバル条件付き頻度パターン・ツリーを使用して、ルール144を並行して生成することができる。
【0037】
図示のように、ユーザ136によって購入されたアイテム134に関するトランザクションの形態のマイニング情報132は、アイテム134をユーザ136に推奨するために使用されるルール144をもたらすことができる。例えば、ルール144を使用して、ユーザ136がクライアント・コンピュータ112上で閲覧している現在のアイテムに基づいて、選択されたアイテムを推奨することができる。
【0038】
この例において、データ・マイナ130で使用される並列相関ルール(PAR)・プロセスは、2段階のルール検索プロセスであり、相関ルール・マイニングで使用される現在のプロセスと比較して、クラスタ内の通信コストを削減し、ターゲット・パターンをより迅速に見つけることができる。この2段階の検索プロセスは、パターンを検索してルールを生成するためのより効率的な機構を提供する。例示的な例において、データ・マイナ130は、ローカル・パターン・ツリーおよびグローバル条件付き頻度パターン・ツリーを使用して、ルールを生成する際のパターンを検索する。検索は、最初にパターン・ツリーを使用して実行される。パターンがパターン・ツリー上で見つからなかった場合には、グローバル条件付き頻度パターン・ツリーを使用して検索が実行される。
【0039】
並列相関ルール(PAR)・プロセスを使用するデータ・マイナ130によって使用される相関データ・マイニングのこの実装形態の図は、1つの例示的な例として提示され、データ・マイナ130を他の例で実装できる方法を制限することを意味するものではない。例えば、データ・マイナ130を、サーバ・コンピュータ104またはサーバ・コンピュータ106のみに配置することができる。他の例において、データ・マイナ130を、サーバ・コンピュータ104およびサーバ・コンピュータ106に加えて、またはその代わりに、サーバ・コンピュータ、ワーク・ステーション、または他のデータ処理システムに配置することができる。言い換えると、処理ノードの数および処理ノードの種類は、異なる例示的な例において変化し得る。
【0040】
次に
図2を参照すると、例示的な実施形態によるデータ・マイニング環境のブロック図が示されている。この例示的な例において、データ・マイニング環境200は、
図1のネットワーク・データ処理システム100に示されるハードウェアなどのハードウェアに実装できるコンポーネントを含む。
【0041】
この例において、データ・マイニング環境200は、データ・マイナ202を実行して情報204を処理することができる環境である。この情報204の処理は、データ・マイニングとも呼ばれる。データ・マイナ202は、コンピュータ・システム206上で実行される。コンピュータ・システム206は、物理ハードウェア・システムであり、1つまたは複数のデータ処理システムを含む。コンピュータ・システム206に複数のデータ処理システムが存在する場合、これらのデータ処理システムは、通信媒体を使用して互いに通信している。通信媒体はネットワークであってよい。データ処理システムを、コンピュータ、サーバ・コンピュータ、タブレット・コンピュータ、またはいくつかの他の適切なデータ処理システムのうちの少なくとも1つから選択することができる。
【0042】
この例示的な例において、データ・マイナ202を、コンピュータ・システム206内の複数のデータ処理システムに分散させることができる。データ・マイナ202が配置されるこれらのデータ処理システムは、クラスタ210を形成する複数の処理ノード208である。図示のように、データ・マイナ202は、例示的な例において情報204を並行して処理することができる。この例において、データ・マイナ202とクラスタ210の複数の処理ノード208とを含むコンピュータ・システム206は、データ・マイニング・システム211を形成する。この例示的な例において、情報204は、並列処理のために分割され、処理ノード208に分散され得る。
【0043】
図示のように、データ・マイナ202を、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組合せに実装することができる。ソフトウェアが使用される場合、データ・マイナ202によって実行される動作は、プロセッサ・ユニットなどのハードウェア上で実行されるように構成されたプログラム・コードに実装され得る。ファームウェアが使用される場合、データ・マイナ202によって実行される動作は、プログラム・コードおよびデータに実装され、プロセッサ・ユニット上で実行されるように永続メモリに格納され得る。ハードウェアが使用される場合、ハードウェアは、データ・マイナ202で動作を実行するように動作する回路を含むことができる。
【0044】
例示的な例において、ハードウェアは、回路システム、集積回路、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・デバイス、またはいくつかの動作を実行するように構成された、いくつかの他の適切な種類のハードウェアのうちの少なくとも1つから選択される形態をとることができる。プログラマブル・ロジック・デバイスにより、いくつかの動作を実行するようにデバイスを構成することができる。デバイスを後で再構成することもでき、またはいくつかの操作を実行するように恒久的に構成することもできる。プログラマブル・ロジック・デバイスには、例えば、プログラマブル・ロジック・アレイ、プログラマブル・アレイ・ロジック、フィールド・プログラマブル・ロジック・アレイ、フィールド・プログラマブル・ゲート・アレイ、および他の適切なハードウェア・デバイスが含まれる。加えて、プロセスは、無機成分と統合された有機成分に実装され得、人間を除く有機成分から完全に構成され得る。例えば、プロセスは、有機半導体の回路として実装され得る。
【0045】
ハードウェア、ソフトウェア、またはそれらのいくつかの組合せを使用することにより、データ・マイナ202は、人工知能システム203を使用して実装され得る。人工知能システム203は、インテリジェント挙動を有し、人間の脳の機能に基づくことができるシステムである。人工知能システムは、人工ニューラル・ネットワーク、認知システム、ベイジアン・ネットワーク、ファジー論理、エキスパート・システム、自然言語システム、認知システム、または他の適切なシステムのうちの少なくとも1つを含む。機械学習を使用して、人工知能システムをトレーニングする。機械学習には、データをプロセスに入力すること、およびプロセスが人工知能システムの機能を調節および改善できるようにすることが含まれる。
【0046】
図示のように、データ・マイナ202は、情報204を処理して、情報204内のアイテム212間の関係216を識別することができる。関係216を識別する際に、データ・マイナ202は、相関ルール・マイニング220を実行して、情報204内のパターン222を識別することができる。加えて、データ・マイナ202は、頻度アイテム212およびそれらの関連付けを識別することができる。これらの関連付けはルール224であり、相関ルールと呼ばれることもある。
【0047】
この例示的な例において、データ・マイナ202は、データ・マイニングが並列相関ルール・プロセス214を使用して実行される人工知能システム203で、機械ベースの学習を実施する。このプロセスは、並列頻出パターン成長(PFP)などの他の相関ルール・プロセスが直面するメモリ使用量、処理時間、およびプロセッサ・リソースに関する問題を克服する。
【0048】
例示的な一例において、データ・マイナ202は、トランザクション218内のアイテム212間の関係216を識別する。アイテム212およびトランザクション218は、いくつかの異なる形態をとることができる。例えば、トランザクション218は、アイテム212のオンライン購入であり得、ルール224のセットは、アイテム212を顧客に推奨するための分析から生成され得る。
【0049】
別の例示的な例において、アイテム212は、商品、サービス、アミノ酸、株、通貨、ネットワーク内のノード、またはその他の適切な種類のアイテムであってよい。トランザクションは、例えば、アイテムのオンライン購入、アイテムの店内購入、商品の購入、サービスの購入、アミノ酸の配置、株の購入、および通貨の購入、商品の購入、サービスの購入、アミノ酸の配置、株の購入、通貨の購入、または他の適切な種類のトランザクションであってよいが、これらに限定されない。別の例において、アイテムはセンサ・データであってよい。センサ・データを使用して、センサ・システムの部品の1つであるセンサに問題が存在するかどうかを判定することができる。さらに別の例示的な例として、アイテムは、車両内の全地球測位システム・デバイスを使用して判定される位置であってよい。このデータを使用して、特定の種類の交通事象がいつ車両に発生する可能性があるかを判定することができる。
【0050】
図示のように、コンピュータ・システム206のデータ・マイナ202を、クラスタ210の複数の処理ノード208内で分散させることができる。言い換えると、データ・マイナ202のプロセスおよび機能を、情報204の並列処理を可能にする方法で、処理ノード208上に配置することができる。
【0051】
例示的な一例において、コンピュータ・システム206上で実行されているデータ・マイナ202は、ローカル条件付き頻度パターン・ツリー226をコンピュータ・システム206の複数の処理ノード208において生成する。ローカル条件付き頻度パターン・ツリー226内のノード228は、トランザクション218内のアイテム212とアイテム212の頻度230とを表す。ローカル条件付き頻度パターン・ツリー226の生成を、これらの種類のツリーを生成する現在利用可能な技法を使用して形成することができる。
【0052】
データ・マイナ202は、ローカル条件付き頻度パターン・ツリー226をコンピュータ・システム206の複数の処理ノード208においてオンデマンドで生成することができる。言い換えると、条件付き頻度パターン・ツリーが必要なときに、ローカル条件付き頻度パターン・ツリーを処理ノードにおいて生成することができる。可能なローカル条件付き頻度パターン・ツリーをすべて同時に生成する必要はない。
【0053】
この例示的な例において、ローカル条件付き頻度パターン・ツリー226を、アイテムのトランザクションから頻度パターン・ツリーを生成するための相関ルール・マイニングで現在利用可能な技法を使用して生成することができる。これらの技法には、例えばFP Growthアルゴリズムを含む頻出アイテム・セット・マイニングの技法が含まれる。これらの現在利用可能な技法では、これらの種類のツリーをFPツリーとも呼ぶ。
【0054】
この例示的な例において、ローカル条件付き頻度パターン・ツリー226を生成する際に、データ・マイナ202は、ローカル頻度パターン・ツリー232をコンピュータ・システム206の複数の処理ノード208において生成する。ローカル頻度パターン・ツリー232内のノード234は、トランザクション218内のアイテム212とアイテム212の頻度230とを表す。この例示的な例において、FP Growthアルゴリズムなどの相関ルール・マイニングで現在利用可能な技法を使用して、ローカル頻度パターン・ツリー232を生成することができる。これらの現在利用可能な技法では、これらの種類のツリーをFPツリーとも呼ぶ。
【0055】
データ・マイナ202は、コンピュータ・システム206の複数の処理ノード208内の対応するローカル頻度パターン・ツリー232を使用して、ローカル条件付き頻度パターン・ツリー226をコンピュータ・システム206の複数の処理ノード208において生成する。ローカル条件付き頻度パターン・ツリー226を、オンデマンドで生成することができる。
【0056】
図示のように、データ・マイナ202は、グローバル条件付き頻度パターン・ツリー236を複数の処理ノード208において生成することができる。複数の処理ノード208内の各処理ノードは、処理ノード内のローカル条件付き頻度パターン・ツリー226のセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。
【0057】
データ・マイナ202は、複数の処理ノード208内の各処理ノードが複数の処理ノード208によって生成されたすべてのグローバル条件付き頻度パターン・ツリー236を有するように、複数の処理ノード208によって生成されたグローバル条件付き頻度パターン・ツリー236を配布する。配布は、いくつかの異なる方法で実行することができる。例えば、グローバル条件付き頻度パターン・ツリー236を、クラスタ210の複数の処理ノード208にブロードキャストすることができる。例えば、各処理ノードは、その処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを、複数の処理ノード208内の他の処理ノードにブロードキャストすることができる。
【0058】
この例示的な例において、データ・マイナ202は、パターン238を生成することができる。パターン238は、アイテムのパターンである。これらのパターンは、アイテムが購入、使用、またはその他の方法で操作される順序を示すことができる。データ・マイナ202は、複数の処理ノード208内のローカル・パターン・ツリー240のパターン238およびグローバル条件付き頻度パターン・ツリー236を使用して、ルール224のセットを生成する。ルールのセット224はアイテム212間の関係216を定義する。
【0059】
パターン238を、現在の技法と比較して、より効率的な方法で処理することができる。例えば、パターン238を生成する際に、データ・マイナ202は、パターン238がローカル・パターン・ツリー240内にある複数の処理ノード208において、グローバル条件付き頻度パターン・ツリー236を使用して識別されたパターン238を、ローカル・パターン・ツリー240内に配置することができる。言い換えると、ローカル・パターン・ツリー240は、パターン238が格納されたデータ構造である。この種類のパターン222の格納は、現在使用されている技法よりも効率的である。例えば、ローカル・パターン・ツリー240は、現在使用されている技法と比較して、より少ないメモリを使用し、より高速な検索を提供する。
【0060】
ルールのセット224を生成する際に、データ・マイナ202は、複数の処理ノード208内のローカル・パターン・ツリー240およびグローバル条件付き頻度パターン・ツリー236を使用して、ルールのセット224を生成することができる。例示的な例において、ローカル・パターン・ツリー240は、パターン238を格納する拡張辞書ツリーである。
【0061】
図3を参照すると、例示的な実施形態によるデータ・マイナのコンポーネントのブロック図が示されている。例示的な例において、同一の参照番号を複数の図面で使用することができる。異なる図面におけるこの参照番号の再利用は、異なる図面における同一の要素を表す。
【0062】
図3は、データ・マイナ202を実装することができる1つの方法を示す。この例に示すように、データ・マイナ202は、ツリー生成部300、アグリゲータ302、およびルール生成部304を含む。これらのコンポーネントは、データ・マイナ202において並列相関ルール・プロセス214を使用するためのプロセスを実装する。データ・マイナ202のこれらのコンポーネントは、処理ノード306に配置され、ここで、処理ノード306は、
図2のクラスタ210の複数の処理ノード208の実装例である。言い換えると、クラスタの各処理ノードは、データ・マイナ202によって並列処理を実行できるように、これらのコンポーネントのこれらのインスタンスを含むことができる。
【0063】
例示的な例において、ツリー生成部300は、レコード内のトランザクションを使用して、ローカル頻度パターン・ツリー308を処理ノード306に生成する。各レコードは一度使用され、ツリー生成部300は同一のレコードを複数回使用することを回避する。次に、ローカル頻度パターン・ツリー308は、ツリー生成部300によって使用されて、ローカル条件付き頻度パターン・ツリー310を処理ノード306において作成する。
【0064】
この例示的な例において、ローカル条件付き頻度パターン・ツリー310は、オンデマンドで作成される。言い換えると、ツリー生成部300は、可能なローカル条件付き頻度パターン・ツリーのすべてを作成するわけではない。代わりに、ツリー生成部300は、アグリゲータ302からの要求に応じて、ローカル条件付き頻度パターン・ツリーを作成する。
【0065】
アグリゲータ302は、処理ノード306内のローカル条件付き頻度パターン・ツリー310を集約して、グローバル条件付き頻度パターン・ツリー312を処理ノード306において形成する。図示のように、処理ノード306に、処理のためのアイテムのセットを割り当てることができる。割り当てられたアイテムについて、グローバル条件付き頻度パターン・ツリー312は、グローバル条件付き頻度パターン・ツリー312を生成するためのプロセスの一部として、アイテムのローカル条件付き頻度パターン・ツリーのすべてを集約する。
【0066】
アグリゲータ302は、処理ノード306に割り当てられたアイテムのローカル条件付き頻度パターン・ツリー310についての要求を、ツリー生成部300に送信する。この例示的な例において、アグリゲータ302は、各アイテムについての要求をツリー生成部300に送信することができ、それらの要求は、ツリー生成部300によって並行して受信および処理される。
【0067】
アグリゲータ302は、アイテムについてのローカル条件付き頻度パターン・ツリーを受信する。アグリゲータ302は、処理ノード306に割り当てられたアイテムについて、ツリー生成部300から受信したローカル条件付き頻度パターン・ツリー310を集約する。したがって、ツリー生成部300は、ローカル頻度パターン・ツリー308からすべての可能なローカル条件付き頻度パターン・ツリーを同時に生成する必要はなく、または生成されたすべてのローカル条件付き頻度パターン・ツリーを格納する必要はない。グローバル条件付き頻度パターン・ツリー312の生成に使用するために生成されたローカル条件付き頻度パターン・ツリーは、グローバル条件付き頻度パターン・ツリー312に集約された後に廃棄することができる。
【0068】
この例示的な例において、アグリゲータ302は、また、グローバル条件付き頻度パターン・ツリー312をクラスタ内の他の処理ノードにブロードキャストするか、または他の方法で他の処理ノードが利用できるようにする。さらに、アグリゲータ302は、処理ノード306内の他の処理ノードによってブロードキャストされたグローバル条件付き頻度パターン・ツリー314を保存して、保存されたグローバル条件付き頻度パターン・ツリー314を形成することもできる。
【0069】
図示のように、ルール生成部304は、グローバル条件付き頻度パターン・ツリー312および保存されたグローバル条件付き頻度パターン・ツリー314を使用してパターン316を識別する。パターン316は、処理ノード306のローカル・パターン・ツリー318に格納される。
【0070】
例示的な例において、ルール生成部304は、ローカル・パターン・ツリー318およびグローバル条件付き頻度パターン・ツリー(グローバル条件付き頻度パターン・ツリー312および保存されたグローバル条件付き頻度パターン・ツリー314)を使用してルール320を生成する。ルール320の生成は、ネットワーク接続を使用せず、または他の処理ノードとの通信を必要とせずに、処理ノード306内のルール生成部304によって実行することができる。
【0071】
例示的な一例において、リソース使用量および処理時間を削減するやり方でデータセット内の様々な変数間の関係を識別することに関する技術的問題を克服する、1つまたは複数の技術的解決策が存在する。その結果、1つまたは複数の技術的解決策は、メモリ使用量およびパターンの検索に必要な時間を削減する技術的効果を提供することができる。1つまたは複数の例示的な例は、ローカル条件付き頻度パターン・ツリーが必要に応じて作成され、ローカル条件付き頻度パターン・ツリーのすべてを処理ノードに格納する必要があるわけでない、1つまたは複数の技術的解決策を提供する。1つまたは複数の例示的な例は、パターンがパターン・ツリーに格納されて、技術的効果を有するパーティションを使用する必要性を低減または排除するか、あるいはメモリ使用量および処理時間を削減する、1つまたは複数の技術的解決策を提供する。例えば、メモリ使用量が削減されると、パターンがパーティションに分割されるような大きいパターンを有する現在のシステムと比較して、ルールの確実性の計算にかかる時間が短縮される。
【0072】
コンピュータ・システム206は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組合せを使用して、異なる例示的な例に記載されているステップ、動作、またはアクションのうちの少なくとも1つを実行するように構成することができる。その結果、コンピュータ・システム206は、専用コンピュータ・システムとして動作し、コンピュータ・システム206のデータ・マイナ202によってアイテム間の関係の識別が可能になる。特に、データ・マイナ202を有していない現在利用可能な一般的なコンピュータ・システムと比較すると、データ・マイナ202は、コンピュータ・システム206を専用コンピュータ・システムに変える。
【0073】
例示的な例において、コンピュータ・システム206におけるデータ・マイナ202の使用は、トランザクション内のアイテム間の関係を識別する方法の実際の応用にプロセスを統合して、関係を識別する際のコンピュータ・システム206の性能を向上させる。言い換えると、コンピュータ・システム206のデータ・マイナ202は、コンピュータ・システム206のデータ・マイナ202に統合されたプロセスの実際の応用に向けられており、ローカル頻度パターン・ツリーを処理ノードに生成し、ローカル条件付き頻度パターン・ツリーを処理ノードにオンデマンドで生成して、ローカル条件付き頻度パターン・ツリーのすべてが処理ノードに格納されるわけではないようにして、メモリ使用量を減少させる。コンピュータ・システム206のデータ・マイナ202に統合されたプロセスは、グローバル条件付き頻度パターン・ツリーへの集約のために必要に応じて作成される条件付き頻度パターン・ツリーを集約することによって、グローバル条件付き頻度パターン・ツリーを処理ノードに生成する。コンピュータ・システム206のデータ・マイナ202に統合されたプロセスは、複数の処理ノード内の各処理ノードが複数の処理ノードによって生成されたすべてのグローバル条件付き頻度パターン・ツリーを有するように、複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを配布する。
【0074】
グローバル条件付き頻度パターン・ツリーを使用すると、メモリ使用量も削減される。コンピュータ・システム206のデータ・マイナ202に統合されたプロセスは、現在のシステムと比較して、メモリ使用量を削減する、アイテムのパターンを含むパターン・ツリーを生成する。この例示的な例において、コンピュータ・システム206のデータ・マイナ202は、これらのステップをデータ・マイニングの実際の応用に統合し、これにより、アイテム間の関係を識別し、かつそれらの関係に関するルールを生成するためのリソース使用量および処理時間が削減される。このようにして、コンピュータ・システム206のデータ・マイナ202は、コンピュータ・システム206の機能が向上するように、トランザクション内のアイテム間の関係を識別する実際の応用を提供する。
【0075】
図2のデータ・マイニング環境の図は、例示的な実施形態を実装することができる方法に対する物理的またはアーキテクチャ上の制限を示すことを意図したものではない。図示のものに加えて、またはその代わりに、他のコンポーネントを使用することができる。一部のコンポーネントは不要であり得る。また、いくつかの機能コンポーネントを示すためにブロックが提示されている。例示的な実施形態に実装される場合、これらのブロックのうちの1つまたは複数を、組み合わせる、分割する、または異なるブロックに組み合わせ、かつ分割することができる。
【0076】
データ・マイニングおよびルール224の生成は、ユーザにアイテムを推奨することに加えて、またはその代わりに、他の目的に使用することができる。例えば、データ・マイニングを使用して、店舗で顧客が購入したアイテムが互いにどのように関連付けられているかを発見することができる。これらの関連付けについてのルールの生成により、顧客がより多くのアイテムを購入するように、ルールを使用してアイテムを互いに並べて配置することができる。
【0077】
例示的な例における並列相関ルール・プロセス214を使用する相関ルール・マイニングは、商品およびサービスのオンライン・マーケティングに加えて、またはその代わりに、多くの異なる応用に適用することができる。これらの他の応用として、例えば、侵入検出、連続生産、ネットワーク・トラフィック分析、車両交通ルーティング、マルウェア検出、医療診断などが挙げられる。さらに別の例として、タンパク質中のアミノ酸の配列に関する情報を使用して、並列相関ルール・プロセス214を用いて所望の機能を有する人工タンパク質を合成するためのルールを開発することができる。さらに別の例示的な例において、例示的な例で説明されている並列相関ルール・プロセス214を使用して、病気の兆候または症状および診断を識別するルールを生成することができる。言い換えると、例示的な例において実装されている相関ルール・マイニングを使用して、疾患の発生確率に関するルールを生成することができる。
【0078】
さらに他の例示的な例において、ルール224は、アイテム212についてのローカル・パターン・ツリー240のパターン238およびグローバル条件付き頻度パターン・ツリー236を識別した後に生成される必要はない。パターン238は、ルール224を必要とせずに他のステップまたはアクションを実行するのに有用であり得る。
【0079】
図4を参照すると、例示的な実施形態による、データ・マイナのコンポーネントによって並列相関ルール・マイニングで実行されるステップを示すデータフロー図が示されている。この例示的な例において、レコードに格納されているアイテムのトランザクションを処理する際のデータ・マイナのコンポーネントが示されている。この例において、ツリー生成部300、アグリゲータ302、およびルール生成部304は、
図2の並列相関ルール・プロセス214を使用してステップを実行することができる。これらのコンポーネントを、異なる処理ノードにわたって分散させることができる。これらのコンポーネントを、処理ノード408、処理ノード410、および処理ノード412に配置することができる。説明のために、クラスタ用の3つの処理ノードが示されている。他の例示的な例において、他の数の処理ノードを使用してもよい。例えば、他の例において、5つの処理ノード、200の処理ノード、3000の処理ノード、またはその他の数の処理ノードを使用してもよい。
【0080】
図示のように、データ・マイナ202のツリー生成部300は、順序付けられた頻出アイテムを作成する。順序付けられた頻出アイテムは、各アイテムのサポートに基づいて降順で配置されているトランザクション内のアイテムである。言い換えると、各トランザクション内のアイテムは、最初のアイテムのサポートが最も高く、最後のアイテムのサポートが最も低くなるように降順で配置される。順序付けられた頻出アイテムをフィルタリングして、閾値以上のサポートを有するアイテムを保持することもできる。
【0081】
ツリー生成部300は、ローカル頻度パターン・ツリーを3つの処理ノードのそれぞれに生成する。ローカル頻度パターン・ツリーを使用すると、トランザクション内のデータが圧縮され、ローカル頻度パターン・ツリーは、順序付けられた頻出アイテムを使用して作成される。さらに、ローカル頻度パターン・ツリーを使用すると、複数の処理ノードで並列処理を実行する際に、アグリゲータ302によってローカル条件付き頻度パターン・ツリーを生成する効率が向上する。ツリー生成部300はまた、ローカル条件付き頻度パターン・ツリーを複数の処理ノードにおいて生成する。
【0082】
これらのローカル条件付き頻度パターン・ツリーは、オンデマンドで作成される。言い換えると、ローカル条件付き頻度パターン・ツリーは、必要に応じて作成される。条件付き頻度パターン・ツリーは、条件付き頻度パターン・ツリーを処理ノードにすべて同時に保存することなく、オンデマンドで生成され得る。これにより、メモリ使用量によるアプリケーションのクラッシュが減少または回避される。
【0083】
アグリゲータ302は、ローカル条件付き頻度パターン・ツリーを集約することによって作成されるグローバル条件付き頻度パターン・ツリーを生成する。アグリゲータ302では、ローカル条件付き頻度パターン・ツリーがグローバル条件付き頻度パターン・ツリーへの集約に必要であるため、ローカル条件付き頻度パターン・ツリーが作成される。ローカル条件付き頻度パターン・ツリーがグローバル条件付き頻度パターン・ツリーに配置された後、ローカル条件付き頻度パターン・ツリーを破棄して、他の用途のためにメモリを解放することができる。この例において、アグリゲータ302は、Hadoopキーバリューアグリゲーションに基づいてFPツリー・マージ・プロセスを実装することができる。
【0084】
複数の処理ノード内のグローバル条件付き頻度パターン・ツリーは、アグリゲータ302によってブロードキャストされる。ブロードキャストにより、各処理ノードは、他の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーのコピーを有することができる。
【0085】
ルール生成部304は、ローカル・パターン・ツリーを各処理ノードに、処理ノードによって作成された対応するグローバル条件付き頻度パターン・ツリーから生成する。ルール生成部304は、ローカル・パターン・ツリーおよびグローバル条件付き頻度処理ツリーを各処理ノードに配置して、カスケード・ストレージ構造を形成する。この例で使用されるローカル・パターン・ツリーは、現在の技法と比較して、パターンを検索するためのより効率的な構造である。
【0086】
これらのデータ構造は、ルール生成部304を使用して、パターン・ツリー内のパターンを検索するための高速照会を実現することができる。このローカル・パターン・ツリー内に見つからないパターンの場合、グローバル条件付き頻度パターン・ツリーから情報を取得することができる。このカスケード検索は、ローカル・パターン・ツリーを検索し、次いで、必要に応じてグローバル条件付き頻度パターン・ツリーを検索することによって実行され、現在の技法が直面するパターン検索におけるデータ爆発およびデータ分割の問題を解決することができる。この特徴により、パターンを管理する現在の技法と比較して、クラスタ内の通信コストが削減され、ターゲット・パターンをより迅速に配置することができる。
【0087】
各処理ノード内のルール生成部304は、処理ノードのローカル・パターン・ツリーおよびグローバル条件付き頻度処理ツリーを使用してルールを生成する。情報を検索するためにローカル・パターン・ツリーを使用することは、パーティションにパターンを格納する現在の慣行と比較して、より効率的である。グローバル条件付き頻度パターン・ツリーには、ノードによって生成されたグローバル条件付き頻度パターン・ツリーと、処理ノードによってブロードキャストされているグローバル条件付き頻度処理ツリーから取得した他のグローバル条件付き頻度処理ツリーとが含まれる。この例において、ルールを生成するプロセスが並行して実行される。
【0088】
図4に示すステップのデータフローにおいて、ローカル頻度パターン・ツリーが処理ノードに存在し、ローカル条件付き頻度パターン・ツリーが処理ノードによって必要に応じて生成される。このプロセスにより、分割されたデータと複数のツリーとの同時更新が回避され、条件付きツリーの生成の効率が向上する。このプロセスにより、データの冗長性が低減し、処理時間が短縮される。
【0089】
さらに、各ノードは、ルール生成のパターン検索で使用するために、すべてのグローバル条件付き頻度パターン・ツリーを格納する。これらは、グローバル・パターンよりも少ないメモリを消費する。各処理ノードは、処理ノードによって生成されたグローバル条件付きパターン・ツリーを使用してパターン・ツリーを生成する。このパターン・ツリーと複数の処理ノードからのグローバル条件付き頻度パターン・ツリーとは、パターン検索およびルール生成の2段階の検索プロセスで使用され、FP Growthなどの現在の技法に存在するデータの冗長性およびデータ爆発を低減させる。
【0090】
次に
図5を参照すると、例示的な実施形態による、トランザクション内のアイテム間の関係を識別するためのプロセスのフローチャートが示されている。
図5のプロセスを、ハードウェア、ソフトウェア、またはその両方に実装することができる。ソフトウェアに実装される場合、プロセスは、1つまたは複数のコンピュータ・システムの1つまたは複数のハードウェア・デバイスに配置された1つまたは複数のプロセッサ・ユニットによって実行されるプログラム・コードの形態をとることができる。例えば、プロセスを、
図2のコンピュータ・システム206のデータ・マイナ202に実装することができる。
【0091】
このプロセスは、ローカル条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成することから始まる(ステップ500)。ローカル条件付き頻度パターン・ツリー内のノードは、トランザクション内のアイテムとアイテムの頻度とを表す。プロセスは、グローバル条件付き頻度パターン・ツリーを複数の処理ノードにおいて生成する(ステップ502)。ステップ502において、複数の処理ノード内の各処理ノードは、処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。
【0092】
プロセスは、複数の処理ノード内の各処理ノードが、複数の処理ノードによって生成されたすべてのグローバル条件付き頻度パターン・ツリーを有するように、複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを配布する(ステップ504)。ステップ504の結果として、各処理ノードが、複数の処理ノードによって生成されたすべてのグローバル条件付き頻度パターン・ツリーを有する。
【0093】
プロセスはパターンを生成する(ステップ506)。プロセスは、複数の処理ノード内のパターンおよびグローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成する(ステップ508)。その後、プロセスは終了する。ルールのセットはアイテム間の関係を定義する。
【0094】
図6を参照すると、例示的な実施形態による、トランザクション内のアイテム間の関係を識別するためのプロセスのフローチャートが示されている。
図6のプロセスを、ハードウェア、ソフトウェア、またはその両方に実装することができる。ソフトウェアに実装される場合、プロセスは、1つまたは複数のコンピュータ・システムの1つまたは複数のハードウェア・デバイスに配置された1つまたは複数のプロセッサ・ユニットによって実行されるプログラム・コードの形態をとることができる。例えば、プロセスを、
図2のコンピュータ・システム206のデータ・マイナ202に実装することができる。このプロセスはローカル・パターン・ツリーを含んでおり、他の相関ルール・マイニング技法で現在使用されているグローバル・パターンを使用する必要がない。
【0095】
プロセスは、ローカル条件付き頻度パターン・ツリーをコンピュータ・システムの複数の処理ノードにおいて生成することから始まる(ステップ600)。ローカル条件付き頻度パターン・ツリー内のノードは、トランザクション内のアイテムとアイテムの頻度とを表す。
【0096】
プロセスは、グローバル条件付き頻度パターン・ツリーを処理ノードに生成する(ステップ602)。プロセスは、複数の処理ノード内の各処理ノードが、複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを有するように、複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを配布する(ステップ604)。
【0097】
プロセスは、ローカル・パターン・ツリーを、パターンがローカル・パターン・ツリー内にある処理ノードに生成する(ステップ606)。この例示的な例において、各処理ノードは、処理ノードがローカル条件付きパターン頻度ツリーから生成したグローバル条件付きパターン頻度ツリーから生成されたローカル・パターン・ツリーを有する。ローカル・パターン・ツリーの生成を、異なる処理ノードで並行して実行することができる。
【0098】
プロセスは、複数の処理ノード内のローカル・パターン・ツリーおよびグローバル条件付き頻度パターン・ツリーを使用してルールのセットを生成し、ここで、ルールのセットはアイテム間の関係を定義する(ステップ608)。ステップ608におけるルールの生成を、異なる複数の処理ノードで並行して実行することができる。その後、プロセスは終了する。
【0099】
ステップ608において、処理ノードは、処理ノードが作成したグローバル条件付き頻度パターン・ツリーから生成されたローカル・パターン・ツリーを使用することができる。さらに、必要に応じて、処理ノードは、グローバル条件付き頻度パターン・ツリーをブロードキャストする他の処理ノードから取得した、保存されたグローバル条件付き頻度パターン・ツリーにアクセスすることもできる。このようにして、パターン、ルール生成、およびルール生成に必要な情報が、単一のノードに組み合わされて並列処理が行われる。
【0100】
図7を参照すると、例示的な実施形態による、トランザクション内のアイテム間の関係を識別するためのプロセスのより詳細なフローチャートが示されている。
図7のプロセスを、ハードウェア、ソフトウェア、またはその両方に実装することができる。ソフトウェアに実装される場合、プロセスは、1つまたは複数のコンピュータ・システムの1つまたは複数のハードウェア・デバイスに配置された1つまたは複数のプロセッサ・ユニットによって実行されるプログラム・コードの形態をとることができる。例えば、プロセスを、
図2のコンピュータ・システム206のデータ・マイナ202に実装することができる。
【0101】
プロセスは、ローカル頻度パターン・ツリーを各ノードに生成することから始まる(ステップ700)。ローカル頻度パターン・ツリーを使用すると、トランザクションデータが圧縮される。ローカル頻度パターン・ツリーは、アイテムをアイテムの頻度と共にノードに格納し、ノードは、アイテムが使用されるトランザクションのパターンに基づいて互いに接続される。
【0102】
プロセスは、ローカル頻度パターン・ツリーを使用して、ローカル条件付き頻度パターン・ツリーを各処理ノードにおいて生成する(ステップ702)。例えば、処理ノードは、ノード内のローカル頻度パターン・ツリーからローカル条件付き頻度パターン・ツリーを生成する。
【0103】
プロセスは、各処理ノード内のローカル条件付き頻度パターン・ツリーを集約して、グローバル条件付き頻度パターン・ツリーを生成する(ステップ704)。ステップ704において、各処理ノードは、処理ノード内のローカル条件付き頻度パターン・ツリーから条件付き頻度パターン・ツリーを生成する。プロセスは、グローバル条件付き頻度パターン・ツリーをクラスタ内の各処理ノードにブロードキャストする(ステップ706)。このようにして、各処理ノードは、処理ノードにローカルに格納されているすべてのグローバル条件付き頻度パターン・ツリーのコピーを有する。
【0104】
プロセスは、各ノード内の対応するグローバル条件付き頻度パターン・ツリーからローカル・パターン・ツリーを生成する(ステップ708)。この例示的な例において、ローカル・パターン・ツリーを、グローバル条件付き頻度パターン・ツリーから直接生成することができる。他の例において、パターンをグローバル条件付き頻度パターン・ツリーから導出し、それらのパターンを使用してローカル・パターン・ツリーを生成することができる。
【0105】
プロセスは、並列に、各処理ノードに配置されたローカル・パターン・ツリーおよびグローバル条件付き頻度パターン・ツリーを使用して、ルールのセットを生成する(ステップ710)。その後、プロセスは終了する。
【0106】
次に
図8を参照すると、例示的な実施形態による、グローバル条件付き頻度パターン・ツリーからパターン・ツリーを生成するためのプロセスのフローチャートが示されている。
図8のプロセスを、ハードウェア、ソフトウェア、またはその両方に実装することができる。ソフトウェアに実装される場合、プロセスは、1つまたは複数のコンピュータ・システムの1つまたは複数のハードウェア・デバイスに配置された1つまたは複数のプロセッサ・ユニットによって実行されるプログラム・コードの形態をとることができる。例えば、プロセスを、
図2のコンピュータ・システム206のデータ・マイナ202に実装することができる。例えば、プロセスを、
図3のデータ・マイナ202のルール生成部304によって実装して、処理ノードのローカル・パターン・ツリーなどのパターン・ツリーを生成することができる。このプロセスは、
図7の1つの実装ステップ706の例である。
【0107】
プロセスは、グローバル条件付き頻度パターン・ツリーを入力することから始まる(ステップ800)。このグローバル条件付き頻度パターン・ツリーは、パターン・ツリーを生成した処理ノードによって生成されたものである。プロセスは、条件付きアイテムおよび対応するカウントを有するローカル・パターン・ツリーのルート・ノードを作成する(ステップ802)。この例示的な例において、条件付きアイテムは、対象アイテムを含むトランザクション内のアイテムのパターンが識別される、その対象アイテム(item of interest)である。
【0108】
次に、プロセスは、グローバル条件付き頻度パターン・ツリー内のすべての別個のアイテムを識別し、識別されたアイテムの種類がグローバル条件付き頻度パターン・ツリー内の複数のノードに現れる場合、それぞれの別個のアイテムに対応するカウントを計算する(ステップ804)。例えば、アイテムf、c、およびaは、多くのノードに存在し得、グローバル条件付きパターン・ツリーに存在し得る3つの別個のアイテムである。言い換えると、同一のアイテムが複数のノードに現れてよい。例えば、2つのノードf:3およびf:2の両方が、アイテムの種類としてfを有することができる。一方のノードは3のカウントを有し、他方のノードは1または2のカウントを有する。その結果、fは5のカウントを有するアイテムの種類となる。この場合、fは5のカウントを有する別個のアイテムである。
【0109】
次に、プロセスは、ローカル・パターン・ツリーのルート・ノードのアイテムおよび対応するカウントを使用して、子ノードを作成する(ステップ806)。プロセスは、子ノードを有しておらず、終端ノードではない1つのノードを、処理のためにローカル・パターン・ツリーから選択する(ステップ808)。
【0110】
パターン・ツリーで選択されたアイテムを有するノードが、グローバル条件付き頻度パターン・ツリーに子ノードを有するかどうかに関する判定が行われる(ステップ810)。パターン・ツリーで選択されたアイテムを有するノードが、グローバル条件付き頻度パターン・ツリーに子ノードを有する場合、プロセスは、選択されたアイテムについて、グローバル条件付き頻度パターン・ツリー内の選択されたアイテムを有するノードの子ノードにあるすべての別個のアイテムを検索し、それぞれの別個のアイテムに対応するカウントを計算する(ステップ814)。
【0111】
次に、プロセスは、ローカル・パターン・ツリー内の選択されたノードについて、別個のアイテムおよびそれぞれの別個のアイテムに対応するカウントを有する子ノードを作成する(ステップ816)。子ノードを有していないノードのすべてが終端ノードであるかどうかに関する判定が行われる(ステップ818)。子ノードを有していないノードのすべてが終端ノードというわけではない場合、プロセスはステップ808に戻る。それ以外の場合、子ノードを有していないノードのすべてが終端ノードであれば、プロセスは終了する。
【0112】
再びステップ810を参照すると、現在のパターン・ツリー内のアイテムを有するノードがグローバル条件付き頻度パターン・ツリーに子ノードを有していない場合、プロセスは、ローカル・パターン・ツリー内のアイテムを有するノードを終端ノードとしてラベル付けする(ステップ812)。この例示的な仮の例において、終端ノードはリーフ・ノードであり、子ノードをリーフ・ノードに追加することができない。次に、プロセスはステップ818に進む。再びステップ818を参照すると、子ノードを有していないノードのすべてが終端ノードであれば、プロセスは終了する。
【0113】
次に
図9を参照すると、例示的な実施形態によるカスケード検索のプロセスのフローチャートが示されている。
図9のプロセスを、ハードウェア、ソフトウェア、またはその両方に実装することができる。ソフトウェアに実装される場合、プロセスは、1つまたは複数のコンピュータ・システムの1つまたは複数のハードウェア・デバイスに配置された1つまたは複数のプロセッサ・ユニットによって実行されるプログラム・コードの形態をとることができる。例えば、プロセスを、
図3のコンピュータ・システム206のデータ・マイナ202に実装することができる。例えば、プロセスを、処理ノード内のデータ・マイナ202のルール生成部304によって実装して、ルールを生成するパターンを検索することができる。
【0114】
プロセスは、検索する対象パターンを選択することから始まる(ステップ900)。パターンは、ローカル・パターン・ツリー内の対象パターンを検索する(ステップ902)。この検索は第1の検索段階である。
【0115】
対象パターンの最後のアイテムがローカル・パターン・ツリーのルートと一致するかどうかに関する判定が行われる(ステップ904)。例えば、ステップ904において、アイテムのパターンはf、a、eであり得る。ステップ904において、プロセスは、アイテム「e」がローカル・パターン・ツリーのルートにあるかどうかを判定する。
【0116】
対象パターンの最後のアイテムがローカル・パターン・ツリーのルートと一致する場合、プロセスは、ローカル・パターン・ツリーの残りのアイテムを検索する(ステップ906)。f、a、eのパターンの例では、アイテム「e」がルートにある場合、プロセスは、パターンの最初のアイテムであるアイテム「f」が、ルート・ノードより下のノードにあるかどうかを見るために検索する(検索は頭から尾まで)。アイテム「f」がルート・ノードより下のノードにある場合、アイテム「a」に対して同様の検索が行われる。
【0117】
プロセスは、パターンのカウントを出力する(ステップ908)。その後、プロセスは終了する。
【0118】
再びステップ904を参照すると、対象パターンの最後のアイテムがローカル・パターン・ツリーのルートと一致しない場合、プロセスは、対象パターンの最後のアイテムによってグローバル条件付き頻度パターン・ツリーを識別する(ステップ910)。プロセスは、対象パターンのアイテムについてグローバル条件付きパターン頻度ツリーを検索する(ステップ912)。次に、プロセスはステップ908に進む。
【0119】
図9のプロセスで実行された検索を、プロセス外の他のリソースへの接続または通信を必要とせずに実行することができる。この検索を並行して実行することができ、異なる複数の処理ノードが異なる対象パターンを検索する。
【0120】
図示の異なる実施形態のフローチャートおよびブロック図は、例示的な実施形態における装置および方法のいくつかの可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、機能、または動作もしくはステップの一部のうちの少なくとも1つを表すことができる。例えば、1つまたは複数のブロックを、プログラム・コード、ハードウェア、またはプログラム・コードおよびハードウェアの組合せとして実装することができる。ハードウェアに実装される場合、ハードウェアは、例えば、フローチャートまたはブロック図の1つまたは複数の動作を実行するように製造または構成された集積回路の形態をとることができる。プログラム・コードおよびハードウェアの組合せとして実装される場合、実装形態はファームウェアの形態をとることができる。フローチャートまたはブロック図の各ブロックを、専用ハードウェアと、専用ハードウェアによって実行されるプログラム・コードとの異なる動作または組合せを実行する、専用ハードウェア・システムを使用して実装することができる。
【0121】
例示的な実施形態のいくつかの代替実装形態において、ブロックに示す1つまたは複数の機能を、図示する順序以外で行うことができる。例えば、場合によっては、連続して示す2つのブロックを実質的に同時に実行することができ、または、関連する機能に応じて、それらのブロックを時として逆の順序で実行することができる。また、フローチャートまたはブロック図に示すブロックに加えて、他のブロックを追加することもできる。
【0122】
次に
図10を参照すると、例示的な実施形態による、トランザクションからローカル条件付き頻度パターン・ツリーを生成するためのデータフローを示す図が示されている。この図のデータの処理を、
図2のデータ・マイナ202によって、特に
図3のデータ・マイナ202のツリー生成部300を使用して実行することができる。
【0123】
この図に示すように、アイテムのトランザクションがトランザクション・テーブル1000に示される。図示のように、列1001はトランザクション識別子を含み、列1003はトランザクションで購入されたアイテムを含み、列1005は順序付けられた頻出アイテムを含む。これらのアイテムは頻度の降順である。列1005は、各アイテムのサポートを見つけることによって識別され得る。サポートは、トランザクション・テーブル1000内のトランザクションなどの、処理中のトランザクションにアイテムが存在する回数を、トランザクションの総数で割った値である。サポートはパーセンテージであり、閾値頻度未満のトランザクションをフィルタリングによって削除することができる。残りのアイテムは、サポートの降順で配置される。
【0124】
これらのトランザクションを使用して、ローカル頻度パターン・ツリー1002を生成する。この例において、ローカル頻度パターン・ツリー1002は、トランザクションがこれらの複数の処理ノードに割り当てられたときに各処理ノードが生成するツリーの例である。言い換えると、複数の処理ノードによって生成されるローカル頻度パターン・ツリーは、特定の処理ノードに割り当てられた異なるトランザクションから生成されるため、互いに異なる。
【0125】
見てわかるように、ローカル頻度パターン・ツリー1002内の各ノードは、アイテムと、アイテムのカウントまたは頻度とを識別する。ノードは、トランザクションの順序を反映するように互いにリンクされる。この例示的な例において、ローカル頻度パターン・ツリー1002のヘッダ・テーブルを使用して、異なるアイテムのリンクのヘッド・ノードを識別することができる。
【0126】
図11を参照すると、例示的な実施形態による、ローカル頻度パターン・ツリーからローカル条件付きパターン・ツリーを生成するためのデータフローを示す図が示されている。この図のデータの処理を、
図2のデータ・マイナ202によって、特に
図3のデータ・マイナ202のルール生成部304を使用して実行することができる。
【0127】
図示のように、ローカル頻度パターン・ツリー1100を使用して、ローカル頻度パターン・ツリー1100に存在する「m」の2つのブランチ(f:2、c:2、a:2)および(f:1、c:1、a:1、b:1)から生成されるローカル条件付き頻度パターン・ツリー1104を生成する。この例において、ローカル条件付き頻度パターン・ツリー1104のヘッダ・テーブルが示される。「m」のこれらのブランチは、mの条件付きパターン・ベースと呼ばれる。このローカル条件付き頻度パターン・ツリーは、ローカル頻度パターン・ツリーに基づくこの条件付きパターンを使用して構築される。例示的な例において、これらのローカル条件付き頻度パターン・ツリー1104は必要に応じて生成される。言い換えると、潜在的なローカル条件付き頻度ツリーのすべてが生成され、処理ノードに格納されるわけではない。
【0128】
次に
図12を参照すると、例示的な実施形態による、グローバル条件付き頻度パターン・ツリーからパターン・ツリーを生成するためのデータフローを示す図が示されている。この図のデータの処理を、
図2のデータ・マイナ202によって、特に
図3のデータ・マイナ202のルール生成部304を使用して実行することができる。
【0129】
この例示的な例において、アイテム「m」のグローバル条件付き頻度パターン・ツリー1202が示されている。ヘッダ・テーブルは、グローバル条件付き頻度パターン・ツリー1202の一部である。ローカル・パターン・ツリー1206は、ヘッダ・テーブル1200およびグローバル条件付き頻度パターン・ツリー1202を使用して生成されたパターンを保持するデータ構造である。パターン・ツリー1206は、グローバル条件付き頻度パターン・ツリー1202内のアイテムのパターンを識別する。パターン・ツリー1206内の各ノードは、アイテムとアイテムのカウントとを識別する。このカウントは、特定のアイテムの頻度とみなされる。パターン・ツリー1206の生成は、グローバル条件付き頻度パターン・ツリー1202からのものである。
【0130】
次に
図13を参照すると、例示的な実施形態によるデータ処理システムのブロック図が示されている。データ処理システム1300を使用して、
図1のサーバ・コンピュータ104、サーバ・コンピュータ106、およびクライアント・デバイス110を実装することができる。データ処理システム1300を使用して、
図2のクラスタ210の処理ノード208を含むコンピュータ・システム206を実装することもできる。この例示的な例において、データ処理システム1300は、プロセッサ・ユニット1304、メモリ1306、永続ストレージ1308、通信ユニット1310、入出力(I/O)ユニット1312、およびディスプレイ1314の間の通信を提供する通信フレームワーク1302を含む。この例において、通信フレームワーク1302はバス・システムの形態をとる。
【0131】
プロセッサ・ユニット1304は、メモリ1306にロードされ得るソフトウェアのための命令を実行するように機能する。プロセッサ・ユニット1304は、1つまたは複数のプロセッサを含む。例えば、プロセッサ・ユニット1304は、マルチコア・プロセッサ、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、物理処理ユニット(PPU)、デジタル信号プロセッサ(DSP)、ネットワーク・プロセッサ、または他の適切な種類のプロセッサのうちの少なくとも1つから選択することができる。例えば、さらに、プロセッサ・ユニット1304を、主プロセッサが単一チップ上で副プロセッサと共に存在する1つまたは複数の異種プロセッサ・システムを使用して実装することができる。別の例示的な例として、プロセッサ・ユニット1304は、単一のチップ上に同一種類の複数のプロセッサを含む対称マルチプロセッサ・システムであってよい。
【0132】
メモリ1306および永続ストレージ1308は、ストレージ・デバイス1316の例である。ストレージ・デバイスは、例えば、限定されないが、データ、機能形式のプログラム・コード、またはその他の適切な情報のうちの少なくとも1つなどの情報を、一時的、永続的、または一時的および永続的の両方で格納することができる任意のハードウェアである。これらの例示的な例において、ストレージ・デバイス1316は、コンピュータ可読ストレージ・デバイスと呼ばれることもある。これらの例において、メモリ1306は、例えば、ランダム・アクセス・メモリまたは他の任意の適切な揮発性または不揮発性ストレージ・デバイスであってよい。永続ストレージ1308は、特定の実装形態に応じて様々な形態をとることができる。
【0133】
例えば、永続ストレージ1308は、1つまたは複数のコンポーネントまたはデバイスを含むことができる。例えば、永続ストレージ1308は、ハード・ドライブ、ソリッドステート・ドライブ(SSD)、フラッシュ・メモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、または上記のいくつかの組合せであってよい。永続ストレージ1308によって使用される媒体は、取り外し可能であってもよい。例えば、取り外し可能なハード・ドライブを、永続ストレージ1308に使用することができる。
【0134】
これらの例示的な例において、通信ユニット1310は、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例示的な例において、通信ユニット1310はネットワーク・インターフェース・カードである。
【0135】
入出力ユニット1312は、データ処理システム1300に接続され得る他のデバイスとのデータの入出力を可能にする。例えば、入出力ユニット1312は、キーボード、マウス、または他の適切な入力デバイスのうちの少なくとも1つを介したユーザ入力のための接続を提供することができる。さらに、入出力ユニット1312は、出力をプリンタに送信することができる。ディスプレイ1314は、情報をユーザに表示するための機構を提供する。
【0136】
オペレーティングシステム、アプリケーション、またはプログラムのうちの少なくとも1つの命令を、通信フレームワーク1302を介してプロセッサ・ユニット1304と通信しているストレージ・デバイス1316内に配置することができる。異なる実施形態のプロセスを、メモリ1306などのメモリ内に配置され得るコンピュータ実装命令を使用して、プロセッサ・ユニット1304によって実行することができる。
【0137】
これらの命令は、プログラム・コード、コンピュータ使用可能プログラム・コード、またはプロセッサ・ユニット1304内のプロセッサによって読み取られ実行され得るコンピュータ可読プログラム・コードと呼ばれる。異なる実施形態におけるプログラム・コードは、メモリ1306または永続ストレージ1308などの異なる物理的またはコンピュータ可読記憶媒体上で具現化することができる。
【0138】
プログラム・コード1318は、選択的に取り外し可能であり、かつプロセッサ・ユニット1304による実行のためにデータ処理システム1300にロードまたは転送され得るコンピュータ可読媒体1320上に機能的な形式で配置される。これらの例示的な例において、プログラム・コード1318およびコンピュータ可読媒体1320は、コンピュータ・プログラム製品1322を形成する。例示的な例において、コンピュータ可読媒体1320はコンピュータ可読記憶媒体1324である。
【0139】
これらの例示的な例において、コンピュータ可読記憶媒体1324は、プログラム・コード1318を伝搬または送信する媒体ではなく、プログラム・コード1318を格納するために使用される物理的または有形のストレージ・デバイスである。
【0140】
あるいは、プログラム・コード1318を、コンピュータ可読信号媒体を使用してデータ処理システム1300に転送することができる。コンピュータ可読信号媒体は、例えば、プログラム・コード1318を含む伝搬データ信号であってよい。例えば、コンピュータ可読信号媒体は、電磁信号、光信号、または任意の他の適切な種類の信号のうちの少なくとも1つであってよい。これらの信号を、無線接続、光ファイバ・ケーブル、同軸ケーブル、ワイヤ、または任意の他の適切な種類の接続などの接続を介して送信することができる。
【0141】
データ処理システム1300について示されている異なるコンポーネントは、異なる実施形態を実装することができる方法にアーキテクチャ上の制限を与えるものではない。いくつかの例示的な例において、1つまたは複数のコンポーネントは、別のコンポーネントに組み込まれるか、そうでなければその一部を形成することができる。例えば、メモリ1306またはその一部は、いくつかの例示的な例において、プロセッサ・ユニット1304に組み込まれてよい。異なる例示的な実施形態を、データ処理システム1300について図示されたものに加えて、またはその代わりに、コンポーネントを含むデータ処理システムに実装することができる。
図13に示す他のコンポーネントを、図示の例示的な例から変更することができる。異なる実施形態を、プログラム・コード1318を実行可能な任意のハードウェア・デバイスまたはシステムを使用して実装することができる。
【0142】
したがって、本発明の例示的な実施形態は、トランザクション内のアイテム間の関係を識別するためのコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供する。ローカル条件付き頻度パターン・ツリーが、コンピュータ・システムによってコンピュータ・システムの複数の処理ノードにおいて生成される。ローカル条件付き頻度パターン・ツリー内のノードが、トランザクション内のアイテムとアイテムの頻度とを表す。グローバル条件付き頻度パターン・ツリーが、コンピュータ・システムによって複数の処理ノードにおいて生成される。複数の処理ノード内の各処理ノードが、処理ノード内のローカル条件付き頻度パターン・ツリーのセットを使用して、グローバル条件付き頻度パターン・ツリーを生成する。いくつかの例示的な例において、複数の条件付きアイテムが処理ノードに割り当てられている場合、処理ノードは、複数のグローバル条件付き頻度パターン・ツリーを生成することができる。複数の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーは、複数の処理ノード内の各処理ノードが他の処理ノードによって生成されたグローバル条件付き頻度パターン・ツリーを有するように、コンピュータ・システムによって配布される。パターン・ツリーがコンピュータ・システムによって生成される。ルールのセットが、複数の処理ノード内のパターン・ツリーおよびグローバル条件付き頻度パターン・ツリーを使用して、コンピュータ・システムによって生成され、ルールのセットはアイテム間の関係を定義する。
【0143】
1つまたは複数の例示的な例において、情報は、ローカル条件付き頻度パターン・ツリーを生成する前に、処理され、予め圧縮されたローカル頻度パターン・ツリーである。このプロセスにより、メモリ使用量および計算リソース使用量の両方のパフォーマンスが向上する。さらに、例示的な例は、カスケード・キャッシュを使用してパターン頻度を格納し、頻度をオンデマンドで検索する。これにより、全体的な頻出アイテム・セット・コレクションに基づいて頻度を検索する通常のプロセスが回避される。
【0144】
したがって、例示は、パターン・ツリーおよびグローバル条件付きパターン・ツリーを使用して、1つの処理ノードでパターンとルール生成とを組み合わせることができる。パターン・ツリーおよびグローバル条件付きパターン・ツリーを1つの処理ノードで使用すると、クラスタ内の巨大なパターンの転送が回避され、パターン検索の範囲が狭くなる。
【0145】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示された実施形態に限定されることを意図するものでもない。説明した実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の応用または技術的改善を最もよく説明するため、または当業者が本明細書に開示された実施形態を理解できるようにするために選択された。