この章では、相関ルールを計算するためにOracle Data Miningで使用されるアルゴリズムであるAprioriについて説明します。
この章には、次の項が含まれます。
相関マイニングの問題は、次の2つの下位問題に分解できます。
指定した最小頻度で発生する一連のトランザクションですべての項目の組合せを見つける。これらの組合せは高頻度項目セットと呼ばれます。
高頻度項目セット内の、同時に発生する確率が高い項目を表すルールを計算する。(例: 高頻度項目セットからのルールの計算を参照。)
Aprioriは、高頻度項目セット内で別の項目が存在する場合に、ある項目が存在する確率を計算します。
項目数が多い問題領域で頻度の低いイベントを含む相関を見つけるために相関ルール・マイニングを使用することはお薦めしません。Aprioriは、頻度が最小支持度のしきい値を超えるパターンを発見します。したがって、頻度の低いイベントを含む相関を見つけるためには、最小支持度をかなり低くしてアルゴリズムを実行する必要があります。しかし、このようにすると、特に項目数が多いときに、列挙される項目セットの数が極端に多くなる場合があります。このような場合、実行時間が著しく長くなることがあります。データに多くの属性が含まれるときに頻度の低いイベントを見つけるには、分類や異常検出の方が最適な方法である場合もあります。
Aprioriアルゴリズムは、高頻度項目セット内の項目間の確率的な関係を表すルールを計算します。たとえば、A、BおよびCを含む高頻度項目セットから、「トランザクションにAとBが含まれる場合、Cも含まれる可能性が高い」というルールが導出されます。
相関ルールは、項目または項目のグループがある確率で別の項目の存在を示すことを表します。ターゲットを予測するディシジョン・ツリー・ルールとは異なり、相関ルールは単に相関関係を表します。
相関ルールのIFコンポーネントは前件と呼ばれます。THENコンポーネントは、後件と呼ばれます。前件と後件は共通の要素を持たず、共通の項目はありません。
Oracle Data Miningでは、前件に1つ以上の項目を、後件に1つの項目を持つ相関ルールをサポートしています。
相関モデルは、トランザクショナル・データを使用するように設計されています。トランザクショナル・データでは、ケースIDと各ケースの値の間に1対多関係が存在します。各ケースIDと値のペアは、個別のレコード(行)に指定されます。
トランザクショナル・データは、一意ではないケースID列および値列を使用するネイティブ・トランザクショナル形式で格納するか、スター・スキーマなどの他の構成で格納することができます。データは、ネイティブ・トランザクショナル形式で格納されていない場合、Aprioriアルゴリズムによって処理するためにネストした列に変換する必要があります。
トランザクショナル・データ内では、項目の集合が各ケースに関連付けられています。集合は、理論的には、すべての集合のメンバーを含みます。たとえば、理論的には、すべての製品が単一のマーケット・バスケット・トランザクションで購入できます。ただし実際は、指定したトランザクションには、すべての商品のごく一部のサブセットのみが存在し、マーケット・バスケット内の項目は、店で購入可能な項目のごく一部のみを表しています。
集合内で複数の項目が欠損している場合はデータがスパースであることがわかります。項目の欠損は、NULL値が存在する場合と、単に欠損している場合があります。
トランザクショナル・データ内のNULLは、既知であるがトランザクションには存在しない値を表すものとみなされます。たとえば、数百個ある商品のうち3つの商品が、1回のトランザクションで購入されたとします。購入されなかった商品は既知の商品ですが、トランザクションには含まれていません。
Oracle Data Miningでは、トランザクショナル・データにスパース性が想定されます。Aprioriアルゴリズムは、スパース・データの処理に対して最適化されています。
関連項目: 欠損値の処理については、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。 |
注意: Aprioriは自動データ準備の影響を受けません。 |
相関分析では、第1段階として項目セットを列挙します。項目セットとは、トランザクション内の2つ以上の項目のあらゆる組合せのことです。
1つの項目セットに含める項目の最大数はユーザーが指定します。最大数を2にした場合は、2項目から成るすべての組合せがカウントされます。最大数を3以上にした場合は、2項目から成るすべての組合せ、3項目から成るすべての組合せ、以降指定した最大数の項目から成るすべての組合せがカウントされます。
例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は、例10-1に示したトランザクションから得られた項目セットの一覧です(ここでは、項目セットの項目の最大数を3に設定したものとします)。
相関ルールは項目セットに基づいて計算されます。すべての項目セットからルールが生成された場合、非常に多くのルールが存在することになり、意味のあるルールが得られないことがあります。また、モデルの作成に長い時間がかかる場合もあります。そのため、通常は、データ内での発生頻度が高い項目セットのみを使用してルールを生成する方が望ましいと言えます。高頻度項目セットとは、ユーザーが指定した最小頻度で発生する項目セットのことです。
最小頻度の項目セットの支持度は、相関ルール用に使用される項目セット数を制限するための割合であり、ユーザーが指定します。項目セットは、ルールの基盤として使用されるためには、全トランザクションにおいて少なくともこの割合で出現する必要があります。
表10-2は、表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% |
表10-4と表10-4に、第8章で計算した項目セットおよび高頻度項目セットを示します。高頻度項目セットは、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-5に、表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%で、シリアルと牛乳が同時に発生するとします。この場合、次に示す2つのルールの支持度はそれぞれ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未満のルールでは、偶然以上に購入を確実に予測できないため、支持度と信頼度が高くても、実際の組合せ購入の確率は示されません。
ヒント: モデルの作成時間を短縮し、単純なルールを生成するには、ルールの最大長の値を小さくします。 |