相関ルール

なんかパンとミルクの話で有名な相関ルールの話で、わかりにくい記述方法のせいでやたらともめた部分があったので、自分なりにまとめておく。

confident(A=>B) = support(A∪B) / support(A)

この式に確率P(X)を導入したせいでたぶんあんなことになったんだと思う。

まず前置きとして条件確率の話。誰もが知ってると思うけど、

P(B|A) = P(A∩B) / P(A)

条件確率のよくある問題で、「両面赤のカードと片面が赤、片面が黄色のカードの二枚があります。その中から一枚のカードを取り出して表に赤が見えているとき、裏が黄色の確率は?」*1を解くときとかに使える式。


で、相関ルールの確信度(confident)と支持度(support)の話。

A => B のとき
support(A=>B)   = P(A∪B)
confident(A=>B) = P(B|A)
                = support(A∪B) / support(A)
                = P(A∪B) / P(A) ・・・?

とかいう式が書いてある。
お、おい・・・最後の式の∪(カップ)って∩(キャップ)じゃないの?
っていうことで場が大いに盛り上がった。
「そもそもsupport(A=>B)の時点でP(A∩B)なんじゃない。」
「てか、そもそも基本的にはsupport(X)=P(X)でしょ?support(A=>B)がP(¬A∪B)にならないことを除いては。」
とかとてもごもっともな意見である。
まぁ結局結論から言うと記述法が適切かはおいといてこれであっている。


上の条件確率の式のA,Bは事象、下の式でA,Bは集合。だからそもそも∪(カップ)と∩(キャップ)の演算意味が違ってくるというのが、これであっている理由。

まぁこれじゃぁわからないと思うので具体例を。

1.パン
2.パン、ミルク、バター
3.ミルク、クッキー
4.パン、パンツ
5.タバコ、焼酎

という購入記録があったとする。このとき

support(パン)           = 3/5
support(ミルク)         = 2/5
support(パン=>ミルク)   = 1/5 (4/5ではない)
confident(パン=>ミルク) = 1/3 ((1/5) / (3/5))

となる。まぁ数値だとすごいわかりやすい。

これが式だとなんでああなっちゃうかというと、

support({パン})             = P({パン}) = 3/5
support({ミルク})           = P({ミルク}) = 2/5
support({パン}=>{ミルク})   = P({パン}∪{ミルク}) = P({パン,ミルク}) = 1/5
confident({パン}=>{ミルク}) = P({パン,ミルク}) / P({パン}) = 1/3

わかり易くするためにさっきの記述に"{","}"をつけさせてもらった。

つまり結局

{パン}∩{ミルク} = {}(空集合)
{パン}∪{ミルク} = {パン,ミルク}

となるという式を入れただけであった。
だから集合の式で∩を使うと

P(A∩B) = P(φ) = 0

となってしまって意味ないよという話でした。まぁ下のような場合は

A = {パン,ミルク} B = {クッキー,ミルク}
A∩B = {ミルク}
A∪B = {パン,ミルク,クッキー}

空集合にならないから意味なくもないけど。


いやーとても厄介だった。もうちょっと記述法を見直すべきだと思う。

*1: (1/4) / (3/4) = 1/3が答え。