プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

アプリオリアルゴリズムとは?仕組みと特徴をわかりやすく解説

Apriori(アプライオリ)アルゴリズムは、R. Agrawal と R. Srikant によって1994年に開発された、データマイニング分野における画期的なアルゴリズムです。ブール型相関ルール(Boolean association rules)のための頻出アイテムセットの抽出を目的としており、頻出アイテムセットが持つ性質に関する事前知識を活用する点が大きな特徴となっています。

レベルワイズ探索による頻出アイテムセットの発見

Aprioriは「レベルワイズ探索(level-wise search)」と呼ばれる反復的な手法を採用しています。これは、k-アイテムセットをもとに(k+1)-アイテムセットを順次探索していくアプローチです。

まず、データベースを走査して各アイテムの出現回数を集計し、最小サポート条件を満たすアイテムのみを抽出することで、頻出1-アイテムセットの集合を発見します。この結果得られる集合は L1 と表記されます。

続いて、L1 をもとに頻出2-アイテムセットの集合 L2 を求め、さらにそこから L3 を導出するという処理を繰り返します。この反復は、新たな頻出k-アイテムセットが見つからなくなるまで継続されます。なお、各 Lk を求める際には、データベースの完全なスキャンが1回必要となる点に注意してください。

アプリオリ特性(Apriori Property)

レベルワイズな頻出アイテムセット生成の効率を高めるうえで鍵となるのが、「アプリオリ特性」と呼ばれる重要な性質です。この特性を利用することで、探索空間を大幅に削減できます。

アプリオリ特性: 頻出アイテムセットの空でない部分集合は、必ず頻出でもある。

特性の根拠となる観察

この特性は、以下のような観察に基づいています。定義により、あるアイテムセット I が最小サポート閾値 min_sup を満たさない場合、I は頻出ではありません。すなわち、P(I) < min_sup が成立します。

ここで、アイテム A をアイテムセット I に追加することを考えてみましょう。追加によって得られる新しいアイテムセット(I ∪ A)が I よりも頻繁に出現することはありません。したがって、I ∪ A も頻出ではなく、P(I ∪ A) < min_sup が成り立ちます。

反単調性との関係

この性質は「反単調性(antimonotone)」と呼ばれる性質群の一種に分類されます。ある集合がある判定条件を満たさない場合、その上位集合も同じ判定条件を満たさなくなる、という意味での反単調性です。判定に不合格となる方向に対して単調に振る舞うことから、「反単調」と呼ばれています。

候補生成の2段階プロセス:結合と枝刈り

Aprioriにおける候補アイテムセットの生成は、「結合(join)」と「枝刈り(prune)」の2つのステップで構成されるプロセスに従います。

結合ステップ(Join Step)

Lk を求めるために、Lk−1 をそれ自身と結合することで、候補k-アイテムセットの集合が生成されます。この候補の集合は Ck と表記されます。l1 と l2 が Lk−1 に含まれるアイテムセットであるとします。表記 li[j] は、アイテムセット li 内の j 番目のアイテムを意味します(例:l1[k−2] は l1 の末尾から2番目のアイテムを指します)。

枝刈りステップ(Prune Step)

Ck は Lk の上位集合です。つまり、Ck のメンバーすべてが頻出であるとは限りませんが、すべての頻出k-アイテムセットは Ck に含まれています。データベースをスキャンして Ck 内の各候補の出現回数を計測することで、Lk を確定できます。出現回数が最小サポートカウント以上の候補は、定義上、頻出アイテムセットとして Lk に属することになります。

ただし、Ck は非常に大きなサイズになり得るため、計算コストが膨大になる可能性がある点には留意が必要です。

  1. Blowfishアルゴリズムの仕組みとは?サブキー生成とデータ暗号化の流れを解説

    Blowfishアルゴリズムの概要Blowfish(ブローフィッシュ)は、対称鍵方式のブロック暗号アルゴリズムの一つで、一度に64ビットのデータブロックを暗号化します。Feistelネットワーク構造を採用しており、その動作手順は「サブキー生成」と「データ暗号化」という2つの段階に分けられます。動作の2つの主要プロセスサブキー生成:最大448ビット長の秘密鍵を、合計4168ビットのサブキー群へと変換するプロセスです。データ暗号化:ネットワークを16回反復処理します。各ラウンドでは、鍵に依存する置換(permutation)と、鍵およびデータに依存する代入(substitution)が行われます。

  2. Blowfish暗号化アルゴリズムとは?仕組みと特徴をわかりやすく解説

    Blowfish暗号化アルゴリズムの概要Blowfish(ブローフィッシュ)は、1993年に暗号学者ブルース・シュナイアー(Bruce Schneier)によって開発された共通鍵ブロック暗号アルゴリズムです。当時、標準的な暗号方式であったDESが処理速度や安全性の面で課題を抱えていたことから、それらを克服することを目指して設計されました。Blowfishの大きな特徴は、特許を取得しておらずパブリックドメインとして公開されている点です。誰でも自由に利用できるため、多くの暗号スイートや暗号化製品に幅広く採用されており、パスワード管理ツール「SplashID」などにも組み込まれています。共通鍵暗号方