ビッグデータの概念が普及するにつれ、ビールとおむつの話は広く知られるようになりました。ビールを買う人はおむつを買う傾向があることをどうやって発見するのでしょうか? データマイニングで頻出アイテムセットと関連ルールをマイニングするために使用される 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を発表
>>: あなたは人工知能/機械学習についてどれくらい知っていますか?
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
翻訳者 | 朱 仙中校正 | 梁哲、孫淑娟プロジェクト紹介類似画像検索とは、関連するあらゆる画像を検...
人工知能とモノのインターネット (AIoT) は、テクノロジー分野における新しいプレーヤーの 1 つ...
研究者らは、DataVault ソフトウェアで使用されている AES-1024 が破られる可能性があ...
2021年以降、企業内部者によるデータ侵害、損失、盗難は月平均28%増加しており、回答者の85%は今...
現在、人工知能や5Gなどの技術の助けを借りて、我が国のドローン開発は急速な成長の軌道に乗っています。...
10月6日、EngadgetやWiredなどの海外メディアの報道によると、メリーランド大学の研究チー...
2019年もすでに半分が過ぎました。今年上半期のテクノロジー業界の目覚ましい成果は何でしょうか?今日...
スーパーアプリは、より多くの顧客を引き付けるための革新的な戦略です。さらに、多数のサービスを 1 つ...
表紙ニュース記者 孟美 張悦希休日明けの初日、北京冬季オリンピックも競技3日目に入った。スタジアム内...
[[423697]]分散システムでは、グローバルに一意の ID が必要になるシナリオがいくつかあり...
Logreduce は、大量のログ データから異常を検出することでデバッグ時間を節約できます。継続的...
現在、人手不足で高収入の AI 職種は何でしょうか? 需要が高い職種はどれでしょうか? AI はどれ...