アソシエーション分析の説明

アソシエーション分析とは データの中から意味のある関連性を抽出する 手法を指す。

相関係数 はふたつの変数の関係を数値的に示すものだが アソシエーション分析では「Aという条件の時にBが起こる確率」を求めることができる。

相関関係はふたつの変数「A」と「B」があった場合、計算時に「A」「B」を入れ替えても相関係数は変わらないが アソシエーション分析では「A」と「B」を入れ替えると結果は異なる。

つまり変数に方向性があるので、「A ⇒ B」と表記される。この表記を アソシエーション ルール と呼ぶ。

アソシエーション分析の結果は カイ二乗検定t検定 における p値 のようにひとつの計算結果では判断できない。 アソシエーション ルールの強さと有効性は以下の3つの値で判断する。

  • 支持度
  • 信頼度
  • リフト値
支持度 (Support)
すべてのデータのなかで「A ⇒ B」といったルールが出現する割合。
信頼度 (Confidence)
条件(A)が出現するデータのなかで、条件(A)と結論(B)が同時に出現する割合。確信度とも言う。
リフト値 (Lift)
「A ⇒ B」のルールがあった場合、結論(B)の支持度で、「A ⇒ B」の信頼度を割った数値。

それぞれの値の解釈はだいたい下記のようになる。

値の解釈
  支持度 信頼度 リフト値
高い 全データに対する影響が大きい よくある組み合わせ ルールが起こりやすい
低い 全データに対する影響が小さい まれにある組み合わせ ルールが起こりにくい

ちなみに、アソシエーション ルールを求める時に組み合わせが膨大になるという問題が起こりうるが すべての組み合わせを試すことなく効率的に計算するアルゴリズムとして アプリオリ アルゴリズム というのが使われる。

アソシエーション分析は購買データにおいて同時に買われた商品を分析するときによく使われる手法なのでマーケット・バスケット分析とも呼ばれる。

ナンバーズの予想に使うには

「Aという条件の時にBが起こる」というのを分析するので抽せん数字の出現傾向を分析するのに使える。

例えば「『1』が出現したときに同時に出現しやすい数字は何か?」を知ることができる。

第1回から第5回の抽せん数字を用いてアソシエーション分析を行ってみます。

Numbers3 第1回から第5回 抽せん数字
抽せん数字 100の位 10の位 1の位
回号
1 191 1 9 1
2 988 9 8 8
3 194 1 9 4
4 105 1 0 5
5 592 5 9 2

アソシエーション分析のために今回は Orange という Python のデータマイニング ライブラリを使います。

まずは 前準備 のページで用意した pandas.DataFrame を Orange の basket というデータ形式 に変換します。といってもただの csv です。

df.loc[:5, ['place100', 'place10', 'place1']].to_csv('/tmp/df1-5.basket',header=False, index=False, encoding='utf-8')

ファイルの拡張子を .basket にする必要があります。

Orange を使った分析。

import Orange
data = Orange.data.Table('/tmp/df1-5.basket')

# 支持度(support)が 0.01 以上、信頼度(confidence)が 0.2 以上のルールを抽出
rules = Orange.associate.AssociationRulesSparseInducer(data, support=0.01, confidence=0.2)

# 結果の出力
print "%4s %4s %4s  %4s" % ("Supp", "Conf", "Lift", "Rule")
for r in rules[:5]:
    print "%4.1f %4.1f %4.1f   %s" % (r.support, r.confidence, r.lift, r)

# 出力結果
Supp Conf Lift  Rule
 0.2  1.0  2.5   2 -> 5
 0.2  1.0  5.0   2 -> 5 9
 0.2  1.0  1.2   2 5 -> 9
 0.2  1.0  2.5   2 9 -> 5
 0.2  1.0  1.2   2 -> 9
 0.2  1.0  2.5   0 -> 5
 0.2  1.0  5.0   0 -> 5 1
 0.2  1.0  2.5   0 1 -> 5
 0.2  1.0  1.7   0 -> 1
 0.2  1.0  1.2   4 -> 9
 0.2  1.0  2.5   4 -> 9 1
 0.2  1.0  1.7   4 9 -> 1
 0.2  1.0  1.2   4 1 -> 9
 0.2  1.0  1.7   4 -> 1
 0.2  1.0  1.2   8 -> 9
 0.4  0.7  0.8   1 -> 9

Supp が支持度、Conf が信頼度、Lift がリフト値、Rule がアソシエーション ルール。

(分析対象のデータ数が少ないことは無視して、)この結果から言えること:

  • 支持度が高いのは「1 -> 9」であり、すべてのデータのなかで頻出する組み合わせである。
  • リフト値が 5.0 と飛び抜けているルールは「2 -> 5 9」「0 -> 5 1」であり、「2」が出るときは「5」と「9」、「0」が出るときは「5」と「1」を予想数字にすると良さそう。

ただしアソシエーション ルールに方向はあっても、抽せん数字の順序は考慮されないことに注意する。 つまりセット買いの予想として有効である。


最終更新日: 2016年02月14日(日)


Back to top