ビッグデータの概念が普及するにつれ、ビールとおむつの話は広く知られるようになりました。ビールを買う人はおむつを買う傾向があることをどうやって発見するのでしょうか? データマイニングで頻出アイテムセットと関連ルールをマイニングするために使用される Apriori アルゴリズムが教えてくれます。この記事では、まず Apriori アルゴリズムを紹介し、次に関連する基本概念をさらに紹介し、次に Apriori アルゴリズムの具体的な戦略と手順を詳細に紹介し、最後に Python 実装コードを示します。 1. Aprioriアルゴリズムの紹介 Apriori アルゴリズムは、頻繁なアイテムセットと関連ルールをマイニングするための古典的なデータ マイニング アルゴリズムです。 a priori はラテン語で「前から」を意味します。問題を定義するとき、私たちは多くの場合、事前知識や仮定を使用します。これを「先験的」と呼びます。 Apriori アルゴリズムの名前は、アルゴリズムが頻繁なアイテムセットの事前特性を使用するという事実に基づいています。つまり、頻繁なアイテムセットの空でないサブセットもすべて頻繁である必要があります。 Apriori アルゴリズムは、レベルごとの検索と呼ばれる反復的な方法を使用します。この方法では、k 個のアイテムセットを使用して (k+1) 個のアイテムセットを探索します。まず、データベースをスキャンし、各アイテムの数を累積し、最小サポートを満たすアイテムを収集することによって、頻出する 1 アイテム セットのセットが見つかります。この集合は L1 と表記されます。次に、L1 を使用して頻繁な 2 項目セットのセット L2 を見つけ、L2 を使用して L3 を見つけます。これを、頻繁な k 項目セットが見つからなくなるまで繰り返します。各 Lk を見つけるには、データベースを完全にスキャンする必要があります。 Apriori アルゴリズムは、頻繁なアイテムセットの事前特性を使用して検索空間を圧縮します。 2. 基本概念 アイテムとアイテム セット: itemset={item1, item_2, …, item_m} をすべてのアイテムのセットとし、その中に item_k (k=1,2,…,m) がアイテムとして含まれます。アイテムのコレクションはアイテムセットと呼ばれ、k 個のアイテムを含むアイテムセットは k アイテムセットと呼ばれます。 トランザクションとトランザクション セット: トランザクション T はアイテムセットであり、アイテムセットのサブセットです。各トランザクションには一意の識別子 Tid が関連付けられています。異なるトランザクションが一緒になってトランザクション セット D を形成し、これが関連ルール検出のためのトランザクション データベースを構成します。 関連ルール: 関連ルールは、A=>B という形式の含意です。ここで、A と B は両方ともアイテムセットのサブセットであり、どちらも空のセットではなく、A と B の交差は空です。 サポート: 関連ルールのサポートは次のように定義されます。 ここで、P(A∪B) は、トランザクションにセット A とセット B の和集合 (つまり、A と B のすべての項目) が含まれる確率を表します。トランザクションに A または B が含まれる確率を示す P(A または B) との違いに注意してください。 信頼性: 関連ルールの信頼性は次のように定義されます。 アイテムセットの頻度 (サポート数): アイテムセットを含むトランザクションの数。頻度、サポート数、またはアイテムセットの数と呼ばれます。 頻繁なアイテムセット: アイテム セット I の相対的なサポートが事前に定義された最小サポートしきい値を満たす場合 (つまり、I の出現頻度が対応する最小頻度 (サポート カウント) しきい値より大きい場合)、I は頻繁なアイテム セットです。 強力な関連ルール: 最小サポートと最小信頼度を満たす関連ルール、つまりマイニングされる関連ルール。 3. 実装手順 一般的に、関連ルールのマイニングは 2 段階のプロセスです。 頻繁に使用されるアイテムセットをすべて検索 頻繁なアイテムセットから強力な相関ルールを生成する 3.1 頻出アイテムセットのマイニング 3.1.1 関連する定義
Apriori アルゴリズムでは、アイテムセット内のアイテムが辞書順に並べられていることを前提としています。 Lk-1 内の 2 つの要素 (アイテム セット) itemset1 と itemset2 の最初の (k-2) アイテムが同じである場合、itemset1 と itemset2 は接続可能であると言われます。したがって、itemset1とitemset2を連結して生成される結果のアイテムセットは、{itemset1[1]、itemset1[2]、…、itemset1[k-1]、itemset2[k-1]}になります。接続手順は、以下のコードの create_Ck 関数に含まれています。
事前特性の存在により、非頻繁 (k-1) アイテム セットは、頻繁 k アイテム セットのサブセットではありません。したがって、候補 k 項目セット Ck の (k-1) 項目サブセットが Lk-1 にない場合、候補は頻繁に出現することはなく、Ck から削除して圧縮された Ck を取得できます。次のコードの is_apriori 関数は、事前プロパティが満たされているかどうかを判断するために使用されます。create_Ck 関数にはプルーニング ステップが含まれており、事前プロパティが満たされていない場合はプルーニングが実行されます。
圧縮された Ck に基づいて、すべてのトランザクションがスキャンされ、Ck 内の各項目がカウントされ、最小サポートを満たさない項目が削除されて、頻繁な k 項目セットが取得されます。削除戦略は、以下のコードの generate_Lk_by_Ck 関数に含まれています。 3.1.2 手順
3.2 頻出アイテムセットからの相関ルールの生成 頻繁に使用されるアイテムセットが見つかると、そこから強力な関連ルールを直接生成できます。生成手順は次のとおりです。
出力は s=>(ls) となり、min_conf は最小信頼しきい値です。 4. 例とPython実装コード 下の図は、『データ マイニング: 概念とテクニック (第 3 版)』の頻繁なアイテムセットのマイニングのサンプル図です。 この記事では、このサンプルのデータに基づいて Python コードを記述し、Apriori アルゴリズムを実装します。コードには注意すべき点が 2 つあります。 Apriori アルゴリズムでは、アイテム セット内のアイテムが辞書順にソートされ、セット自体は順序付けられていないことを前提としているため、必要に応じてセットとリストを変換する必要があります。 アイテムセットのサポートを記録するには辞書 (support_data) を使用する必要があるため、アイテムセットをキーとして使用する必要がありますが、可変セットは辞書のキーとして使用できません。したがって、適切な場合はアイテムセットを固定セットの freezeset に変換する必要があります。
コード実行結果のスクリーンショットは次のとおりです。 |
<<: NVIDIA、端末デバイスへのディープラーニングの導入を加速する高性能Jetson TX2を発表
>>: あなたは人工知能/機械学習についてどれくらい知っていますか?
[[204226]]今年4月、クアルコムのグローバル副社長兼クアルコムベンチャーズのマネージングデ...
2023年は、生成AIテクノロジーが大きな進歩を遂げる年です。ChatGPTなどのAIツールはテク...
AlphaGOとイ・セドルの人間対機械の戦いにより、ディープラーニングという言葉が再び人気を集めてい...
科学技術の継続的な発展に伴い、ますます多くのブラックテクノロジーが私たちの生活に浸透し始めており、そ...
導入人々は長い間、人工的に生成されたコンテンツを理解するためにアルゴリズムを手動でコーディングしよう...
[[255991]]継続的な学習と継続的な開発は、主流の IT 業界のプログラマーにとって日常的な...
グリーンスクリーンは、映画やテレビドラマで画像を切り取ったり背景を変えたりするのに強力なツールですが...
Forrester は 2021 年の技術予測シリーズを発表しましたが、その中にはエッジ コンピュー...
データによれば、わが国には60歳以上の高齢者が2億6,400万人以上おり、そのうち1億8,000万人...
翻訳者|朱 仙中レビュー | Chonglou導入GPT-4 は、韻を踏んだプロンプトを出しながら素...
編集者注: サンスティーンは『インターネット共和国』でアルゴリズムが私たちの認知世界に影響を与えると...
10月30日、主要7カ国(G7)が月曜日に高度な人工知能(AI)システムを開発する企業向けの行動規範...