web-dev-qa-db-ja.com

頻繁なアイテムセットマイニングを使用して相関ルールを構築していますか?

私はこの分野と用語に慣れていないので、どこかで問題が発生した場合は遠慮なく提案してください。次のような2つのデータセットがあります。

データセット1:

A B C 0 E
A 0 C 0 0
A 0 C D E
A 0 C 0 E

私がこれを解釈する方法は、ある時点で(A、B、C、E)が一緒に発生し、(A、C)、(A、C、D、E)なども発生したということです。

データセット2:

5A 1B 5C  0 2E
4A  0 5C  0  0
2A  0 1C 4D 4E
3A  0 4C  0 3E

私がこれを解釈する方法は、ある時点で、Aが5回、Bが1回、Cが5回、Eが2回発生したということです。

一緒に発生する項目を見つけようとしています。可能であれば、その原因と影響も調べます。このため、両方のデータセットを使用する方法(またはどちらか一方で十分かどうか)がわかりません。これについての良いチュートリアルがあればいいのですが、私の主な質問は、どのデータセットを利用するか、および(i)頻繁なアイテムセットの構築および(ii)それらの間の相関ルールの構築をどのように進めるかです。

誰かが実用的なチュートリアル/例(できればPython)を私に指摘したり、少なくともこの問題への取り組み方について簡単な言葉で説明したりできますか?

24
Legend

相関ルールに関するいくつかの理論的事実:

  • アソシエーションルールは、対象が事前に指定されていないデータ内のパターンを検出する一種の無向データマイニングです。パターンが意味をなすかどうかは、人間の解釈に任されています。
  • 相関ルールの目的は、大規模なセットのカテゴリ変数の特定の値間の関係または関連付けを検出することです。
  • ルールは「ワインとチーズを購入する顧客の70%がブドウも購入する」と解釈することができます。

相関ルールを見つけるには、アプリオリアルゴリズムを使用できます。すでに多くのpython実装が存在しますが、それらのほとんどは実際の使用には効率的ではありません:

または、オレンジ色のデータマイニングライブラリを使用します。これには 相関ルールに適したライブラリ が含まれています。

使用例:

'''
save first example as item.basket with format
A, B, C, E
A, C
A, C, D, E
A, C, E
open ipython same directory as saved file or use os module
>>> import os
>>> os.chdir("c:/orange")
'''
import orange

items = orange.ExampleTable("item")
#play with support argument to filter out rules
rules = orange.AssociationRulesSparseInducer(items, support = 0.1) 
for r in rules:
    print "%5.3f %5.3f %s" % (r.support, r.confidence, r)

相関ルール/頻繁なアイテムマイニングの詳細を知るために、私の本は次のとおりです。

近道はありません。

27
timgluz

各アイテムの数量がある場合は、「実用性の高いアイテムセットマイニング」を検討できます。これはアイテムセットマイニングの問題ですが、各トランザクションでアイテムが数量を持ち、各アイテムがウェイトを持つ可能性がある場合に適応します。

基本的なAprioriだけを使用すると、数量に関する情報が失われます。

0
Phil

この種の問題を処理するためのきちんとした方法は ベイジアンネットワーク を使用することのようです。特に、ベイジアンネットワーク構造の学習問題として。これが得られると、p(A = 1 | B = 0およびC = 1)などの質問に効率的に答えることができます。

0
carlosdc