私はこの分野と用語に慣れていないので、どこかで問題が発生した場合は遠慮なく提案してください。次のような2つのデータセットがあります。
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)なども発生したということです。
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)を私に指摘したり、少なくともこの問題への取り組み方について簡単な言葉で説明したりできますか?
相関ルールに関するいくつかの理論的事実:
相関ルールを見つけるには、アプリオリアルゴリズムを使用できます。すでに多くの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)
相関ルール/頻繁なアイテムマイニングの詳細を知るために、私の本は次のとおりです。
近道はありません。
各アイテムの数量がある場合は、「実用性の高いアイテムセットマイニング」を検討できます。これはアイテムセットマイニングの問題ですが、各トランザクションでアイテムが数量を持ち、各アイテムがウェイトを持つ可能性がある場合に適応します。
基本的なAprioriだけを使用すると、数量に関する情報が失われます。
この種の問題を処理するためのきちんとした方法は ベイジアンネットワーク を使用することのようです。特に、ベイジアンネットワーク構造の学習問題として。これが得られると、p(A = 1 | B = 0およびC = 1)などの質問に効率的に答えることができます。