ビッグデータの概念が普及するにつれ、ビールとおむつの話は広く知られるようになりました。ビールを買う人はおむつを買う傾向があることをどうやって発見するのでしょうか? データマイニングで頻出アイテムセットと関連ルールをマイニングするために使用される 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を発表
>>: あなたは人工知能/機械学習についてどれくらい知っていますか?
7月2日、国家市場監督管理総局は「価格違反に対する行政処罰(意見募集稿)」を発表し、ダンピング、価格...
[[244104]] Scientific American誌によると、近い将来、人工知能(AI)が...
2021年7月6日、世界人工知能大会組織委員会事務局主催の第1回BPAA応用アルゴリズム実践モデル...
科学技術の発展に伴い、人々は次第にプライバシーに気を配るようになり、「顔認識」という新興技術に対して...
ソフトウェアとアプリケーションは今日世界を支配しており、ビジネスを成功させるにはトレンドに遅れずにつ...
4月18日、北京メディアセンターで第2回世界情報会議の記者会見が開催された。記者会見では、中国共産...
人工知能は、人々の日常の仕事や生活を変えるテクノロジーとイノベーションに関して、最もホットなトレンド...
大規模モデルのトレーニングと微調整にはビデオ メモリに対する要件が高く、オプティマイザーの状態は主要...
今日、産業用ロボットはほぼすべての産業で使用されています。これらは製造施設に数多くのメリットをもたら...
あなたは理想の仕事をしていないかもしれません。おそらく、あなたが望むほどの収入は得られていないでしょ...
週末にニュースを見て衝撃を受けました。Google は最近、同社が開発したロボット (AI) システ...
機械学習面接のためのハンドブック。これだけあれば十分です。 [[348502]]機械学習やデータサイ...