プライマリ・コンテンツに移動
Oracle® Data Mining概要
12cリリース1 (12.1) B72966-03
目次へ移動
目次
索引へ移動
索引

前
次
次へ

10 Apriori

Aprioriアルゴリズムを使用して、相関ルールを計算する方法を学習します。

関連項目:

相関ルールについては、「相関」を参照してください。

Aprioriとは

相関マイニングの問題は、次の下位問題に分解できます。

  • 指定した最小頻度で発生する一連のトランザクションですべての項目の組合せを見つける。これらの組合せは高頻度項目セットと呼ばれます。

  • 高頻度項目セット内で見込まれる項目の同時発生性を表すルールを計算する。(「例: 高頻度項目セットからのルールの計算」を参照。)

Aprioriは、高頻度項目セット内で別の項目が存在する場合に、ある項目が存在する確率を計算します。

項目数が多い問題領域で頻度の低いイベントを含む相関を見つけるために相関ルール・マイニングを使用することはお薦めしません。Aprioriは、頻度が最小支持度のしきい値を超えるパターンを発見します。したがって、頻度の低いイベントを含む相関を見つけるためには、最小支持度をかなり低くしてアルゴリズムを実行する必要があります。しかし、このようにすると、特に項目数が多いときに、列挙される項目セットの数が極端に多くなる場合があります。このような場合、実行時間が著しく長くなります。データに多くの属性が含まれるときに頻度の低いイベントを見つけるには、分類や異常検出の方が最適な方法です。

Aprioriの作成プロセスはパラレル実行をサポートします。

関連項目:

パラレル実行の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください

相関ルールと高頻度項目セット

Aprioriアルゴリズムは、高頻度項目セット内の項目間の確率的な関係を表すルールを計算します。たとえば、A、BおよびCを含む高頻度項目セットから、「トランザクションにAとBが含まれる場合、Cも含まれる可能性が高い」というルールが導出されます。

相関ルールは、項目または項目のグループがある確率で別の項目の存在を示すことを表します。ターゲットを予測するディシジョン・ツリー・ルールとは異なり、相関ルールは単に相関関係を表します。

前件と後件

相関ルールのIFコンポーネントは、前件と呼ばれます。THENコンポーネントは、後件と呼ばれます。前件と後件は結合しておらず、共通の項目を持ちません。

Oracle Data Miningでは、前件に1つ以上の項目を、後件に1つの項目を持つ相関ルールをサポートしています。

信頼度

ルールは、関連する信頼度(前件が発生した場合に後件が発生する条件付き確率)を持ちます。ルールの最小信頼度を指定できます。

Apriori用のデータ準備

相関モデルは、トランザクショナル・データを使用するように設計されています。トランザクショナル・データでは、ケースIDと各ケースの値の間に1対多関係が存在します。各ケースIDと値のペアは、個別のレコード(行)に指定されます。

ネイティブ・トランザクショナル・データとスター・スキーマ

トランザクショナル・データは、一意ではないケースID列および値列を使用するネイティブ・トランザクショナル形式で格納するか、スター・スキーマなどの他の構成で格納することができます。データは、ネイティブ・トランザクショナル形式で格納されていない場合、Aprioriアルゴリズムによって処理するためにネストした列に変換する必要があります。

関連項目:

「トランザクショナル・データ」

『Oracle Data Miningユーザーズ・ガイド』のネストしたデータの使用に関する項

項目と集合

トランザクショナル・データで、項目の集合は、各ケースに関連付けられます。集合には、理論上、集合のメンバーとして可能なすべてのものが含まれます。たとえば、1つのマーケット・バスケット・トランザクションにおいて、理論上は、すべての製品を購入できます。ただし、実際は、考えられるすべての項目のごく一部のみが1つのトランザクションに存在し、マーケット・バスケットのアイテムはその店舗で入手できるごく一部の項目のみを表します。

スパース・データ

集合内で複数の項目が欠損している場合はデータがスパースであることがわかります。項目の欠損は、NULL値が存在する場合と、単に欠損している場合があります。

トランザクショナル・データ内のNULLは、既知であるがトランザクションには存在しない値を表すものとみなされます。たとえば、数百個ある商品のうち3つの商品が、1回のトランザクションで購入されたとします。購入されなかった商品は既知の商品ですが、トランザクションには含まれていません。

Oracle Data Miningでは、トランザクショナル・データにスパース性が想定されます。Aprioriアルゴリズムは、スパース・データの処理に対して最適化されています。

関連項目:

Oracle Data Miningユーザーズ・ガイド

注意:

Aprioriは自動データ準備の影響を受けません。

相関ルールの計算

相関分析では、第1段階として項目セットを列挙します。項目セットとは、トランザクション内の2つ以上の項目のあらゆる組合せのことです。

項目セット

1つの項目セットに含める項目の最大数はユーザーが指定します。最大数を2にした場合は、2項目から構成されるすべての組合せがカウントされます。最大数が2を超える場合は、2項目から構成されるすべての組合せ、3項目から成るすべての組合せ、以降指定した最大数の項目から成るすべての組合せがカウントされます。

次の表は、例10-1に示したトランザクションから得られた項目セットの一覧です(ここでは、項目セットの項目の最大数を3に設定したものとします)。

表10-1 項目セット

トランザクション 項目セット

11

(B,D) (B,E) (D,E) (B,D,E)

12

(A,B) (A,C) (A,E) (B,C) (B,E) (C,E) (A,B,C) (A,B,E) (A,C,E) (B,C,E)

13

(B,C) (B,D) (B,E) (C,D) (C,E) (D,E) (B,C,D) (B,C,E) (B,D,E) (C,D,E)

例10-1 サンプル・トランザクショナル・データ

TRANS_ID   ITEM_ID
---------  -------------------
11         B
11         D
11         E
12         A
12         B
12         C
12         E
13         B
13         C
13         D
13         E

高頻度項目セット

相関ルールは項目セットに基づいて計算されます。すべての項目セットからルールが生成された場合、非常に多くのルールが存在することになり、意味のあるルールが得られないことがあります。また、モデルの作成に長い時間がかかる場合もあります。そのため、通常は、データ内での発生頻度が高い項目セットのみを使用してルールを生成する方が望ましいと言えます。高頻度項目セットとは、ユーザーが指定した最小頻度で発生する項目セットのことです。

最小頻度の項目セットの支持度は、相関ルール用に使用される項目セット数を制限するための割合であり、ユーザーが指定します。項目セットは、ルールの基盤として使用されるためには、全トランザクションにおいて少なくともこの割合で出現する必要があります。

次の表は、表10-1の項目セットのうち、支持度が66%を超える高頻度項目セットをまとめたものです。

表10-2 高頻度項目セット

高頻度項目セット トランザクション 支持度

(B,C)

2/3

67%

(B,D)

2/3

67%

(B,E)

3/3

100%

(C,E)

2/3

67%

(D,E)

2/3

67%

(B,C,E)

2/3

67%

(B,D,E)

2/3

67%

関連項目:

相関ルールの計算については、「Apriori」を参照してください

例: 高頻度項目セットからのルールの計算

次の表に、「相関」で計算した項目セットおよび高頻度項目セットを示します。高頻度項目セットは、67%の最小支持度で発生する項目セットであり、3つのトランザクションのうち少なくとも2つにこの項目セットが含まれている必要があります。

表10-3 項目セット

トランザクション 項目セット

11

(B,D) (B,E) (D,E) (B,D,E)

12

(A,B) (A,C) (A,E) (B,C) (B,E) (C,E) (A,B,C) (A,B,E) (A,C,E) (B,C,E)

13

(B,C) (B,D) (B,E) (C,D) (C,E) (D,E) (B,C,D) (B,C,E) (B,D,E) (C,D,E)

表10-4 最小支持度67%の高頻度項目セット

項目セット トランザクション 支持度

(B,C)

12および13

67%

(B,D)

11および13

67%

(B,E)

11、12および13

100%

(C,E)

12および13

67%

(D,E)

11および13

67%

(B,C,E)

12および13

67%

(B,D,E)

11および13

67%

ルールは条件付き確率を表しています。ルールの信頼度は、項目が同時に発生する確率を前件の発生確率で除算して計算されます。

たとえば、B (前件)が存在する場合、C (後件)も存在する可能性はどのくらいでしょうか。「Bの場合、C」というルールの信頼度はどのくらいでしょうか。

表10-3から、次のことがわかります。

  • 3つのトランザクションにはすべてBが含まれている(3/3または100%)。

  • 2つのトランザクションのみにBとCの両方が含まれている(2/3または67%)。

  • したがって、ルール「Bの場合、C」の信頼度は、67/100または67%である。

次の表に、表10-4の高頻度項目セットから導出できるルールを示します。

表10-5 高頻度項目セットとルール

高頻度項目セット ルール 確率(前件と後件) /確率(前件) 信頼度

(B,C)

  • (Bの場合C)
  • (Cの場合B)
  • 67/100
  • 67/67
  • 67%
  • 100%

(B,D)

  • (Bの場合D)
  • (Dの場合B)
  • 67/100
  • 67/67
  • 67%
  • 100%

(B,E)

  • (Bの場合E)
  • (Eの場合B)
  • 100/100
  • 100/100
  • 100%
  • 100%

(C,E)

  • (Cの場合E)
  • (Eの場合C)
  • 67/67
  • 67/100
  • 100%
  • 67%

(D,E)

  • (Dの場合E)
  • (Eの場合D)
  • 67/67
  • 67/100
  • 100%
  • 67%

(B,C,E)

  • (BとCの場合E)
  • (BとEの場合C)
  • (CとEの場合B)
  • 67/67
  • 67/100
  • 67/67
  • 100%
  • 67%
  • 100%

(B,D,E)

  • (BとDの場合E)
  • (BとEの場合D)
  • (DとEの場合B)
  • 67/67
  • 67/100
  • 67/67
  • 100%
  • 67%
  • 100%

最小信頼度が70%の場合、これらの高頻度項目セットについて10のルールが生成されます。最小信頼度が60%の場合、16のルールが生成されます。

ヒント:

モデルの作成時間を短縮し、生成されるルールの数を減らすには、最小信頼度の値を大きくします。

関連項目:

「相関」

相関ルールの評価

最小支持度と最小信頼度の使用によって、相関モデルの作成が左右されます。支持度と信頼度は、相関モデルで生成されるルールの質を評価するための主要なメトリックでもあります。また、Oracle Data Miningでは相関ルールのリフトがサポートされています。これらの統計上の測度は、ルールのランク付けに使用できるので予測に役立ちます。

支持度

ルールの支持度は、そのルールにある項目が同時に発生する頻度を示します。たとえば、トランザクションの40%で、シリアルと牛乳が同時に発生するとします。この場合、次に示すルールの支持度はそれぞれ40%です。

cereal implies milk
milk implies cereal

支持度は、全トランザクションの合計数に対する、前件と後件のすべての項目が含まれるトランザクションの割合です。

次のように確率記法で支持度を表すことができます。

support(A implies B) = P(A, B)

信頼度

ルールの信頼度は、同一のトランザクションで前件と後件の両方が発生する確率を示します。前件が存在する場合に後件が存在する条件付き確率です。たとえば、50のトランザクションにシリアルが含まれており、50のうち40のトランザクションには牛乳も含まれているとします。ルールの信頼度は次のようになります。

cereal implies milk with 80% confidence

信頼度は、前件を含むトランザクションの数に対する、ルールの支持度の割合です。

次のように確率記法で信頼度を表すことができます。

confidence (A implies B) = P (B/A), which is equal to P(A, B) / P(A)

リフト

ルールが有効であるかどうかを決定するには、支持度と信頼度の両方を使用する必要があります。ただし、これらの測度が高くても、有益でないルールが生成される場合もあります。次に例を示します。

Convenience store customers who buy orange juice also buy milk with 
a 75% confidence. 
The combination of milk and orange juice has a support of 30%.

このルールは一見、優れているように思われ、多くの場合、問題はありません。信頼度も支持度も高いルールとなっています。ただし、コンビニエンス・ストアの顧客が一般に90%の確率で牛乳を購入する場合を考えます。その場合、オレンジ・ジュースを購入する顧客は実際、一般の顧客より牛乳を購入する可能性が低くなります。

こうしたルールの質を評価するには、3つ目の測度が必要です。リフトは、それぞれの支持度を持つ前件と後件のランダムな同時発生に対するルールの強度を示します。リフトにより、改良度(前件を前提とする後件の確率の増加)に関する情報が得られます。リフトは次のように定義されます。

(Rule Support) /(Support(Antecedent) * Support(Consequent))

これは、後件の支持度で除算した項目の組合せの信頼度として定義することもできます。この牛乳の例で、顧客の40%がオレンジ・ジュースを購入すると仮定すると、改良度は次のようになります。

30% / (40% * 90%)

この値は0.83で、これは1未満の改良度です。

改良度が1未満のルールでは、偶然以上に購入を確実に予測できないため、支持度と信頼度が高くても、実際の組合せ購入の確率は示されません。

ヒント:

モデルの作成時間を短縮し、単純なルールを生成するには、ルールの最大長の値を小さくします。

ヒント:

モデルの作成時間を短縮し、生成されるルールの数を減らすには、最小支持度の値を大きくします。