この章では、相関ルールを計算するためにOracle Data Miningで使用されるアルゴリズムであるAprioriについて説明します。
この章では、次の項目について説明します。
相関マイニングの問題は、次の2つの下位問題に分解できます。
指定した最小頻度で発生する一連のトランザクションですべての項目の組合せを見つける。これらの組合せは高頻度項目セットと呼ばれます(例については「高頻度項目セット」を参照)。
高頻度項目セット内で見込まれる項目の同時発生性を表すルールを計算する(「例: 高頻度項目セットからのルールの計算」を参照)。
Aprioriは、高頻度項目セット内で別の項目が存在する場合に、ある項目が存在する確率を計算します。
項目数が多い問題領域で頻度の低いイベントを含む相関を見つけるために相関ルール・マイニングを使用することはお薦めしません。Aprioriは、頻度が最小支持度のしきい値を超えるパターンを発見します。したがって、頻度の低いイベントを含む相関を見つけるためには、最小支持度をかなり低くしてアルゴリズムを実行する必要があります。しかし、このようにすると、特に項目数が多いときに、列挙される項目セットの数が極端に多くなる場合があります。このような場合、実行時間が著しく長くなることがあります。データに多くの属性が含まれるときに頻度の低いイベントを見つけるには、分類や異常検出のほうが最適な方法である場合もあります。
Aprioriアルゴリズムは、高頻度項目セット内の項目間の確率的な関係を表すルールを計算します。たとえば、A、BおよびCを含む高頻度項目セットから、「トランザクションにAとBが含まれる場合、Cも含まれる可能性が高い」というルールが導出されます。
相関ルールは、項目または項目のグループがある確率で別の項目の存在を示すことを表します。ターゲットを予測するディシジョン・ツリー・ルールとは異なり、相関ルールは単に相関関係を表します。
相関ルールの条件部分は前件と呼ばれ、結果部分は後件と呼ばれます。前件と後件は結合しておらず、共通の項目を持ちません。
Oracle Data Miningでは、前件に1つ以上の項目を、後件に1つの項目を持つ相関ルールをサポートしています。
ルールは、関連する信頼度を持ちます。これは、前件が発生した場合に後件が発生する条件付き確率です。
ASSO_MIN_CONFIDENCE
設定は、ルールの最小信頼度を指定します。モデルにより、信頼度が必要最小限に満たないルールが削除されます。相関ルールのモデル設定の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
表10-1と表10-2に、第8章で計算した項目セットおよび高頻度項目セットを示します。高頻度項目セットは、67%の最小支持度で発生する項目セットであり、3つのトランザクションのうち少なくとも2つにこの項目セットが含まれている必要があります。
表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-2 最小支持度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-1から、次のことがわかります。
3つのトランザクションにはすべてBが含まれている(3/3または100%)。
2つのトランザクションのみにBとCの両方が含まれている(2/3または67%)。
したがって、ルール「Bの場合、C」の信頼度は、67/100または67%である。
表10-3に、表10-2の高頻度項目セットから導出できるルールを示します。
表10-3 高頻度項目セットとルール
高頻度項目セット | ルール | 確率(前件と後件)/確率(前件) | 信頼度 |
---|---|---|---|
(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 /6767 |
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未満のルールでは、偶然以上に購入を確実に予測できないため、支持度と信頼度が高くても、実際の組合せ購入の確率は示されません。
相関モデルは、トランザクショナル・データを使用するように設計されています。トランザクショナル・データ内のNULLは、既知であるがトランザクションには存在しない値を表すものとみなされます。たとえば、数百個ある商品のうち3つの商品が、1回のトランザクションで購入されたとします。購入されなかった商品は既知の商品ですが、トランザクションには含まれていません。
トランザクショナル・データは、その性質上スパースです。ある特定の行において、非ゼロまたは非NULLである属性がほんのわずかしかありません。Aprioriでは、NULL値はすべてスパース性を示すものとして解釈されます。
相関モデルでは等幅ビニングを使用しないことをお薦めします。Aprioriで等幅ビニングを使用すると、外れ値によって、ほとんどのデータが少数のビン(場合によっては単一のビン)に集中します。その結果、アルゴリズムの識別能力が著しく低下する可能性があります。
注意: Aprioriは自動データ準備の影響を受けません。 |
関連項目: トランザクショナル・データ、ネストした列および欠損値の処理については、『Oracle Data Miningアプリケーション開発者ガイド』を参照してください。 |