关联规则学习

关联规则学习(Association rule learning)是一种在海量数据中发现变量之间关系的方法,是一种非监督式学习

关联规则是形如(摘自维基百科):

X ⇒ Y 的蕴涵式,其中 X , Y ⊆ IX ∩ Y = ∅XY 分别称为关联规则的 lhs(antecedent / left-hand-side)和 rhs (consequent / right-hand-side,)。关联规则 X ⇒ Y 在D中的支持度(support)是D中事务包含 X ∩ Y 的百分比,即概率 P ( X ∩ Y )  ;置信度(confidence)是包含 X 的事务中同时包含 Y 的百分比,即条件概率 P ( Y | X )  。如果同时满足最小支持度阈值和最小置信度阈值,则认为关联规则是有趣的。

关联规则学习的经典算法就是 Apriori,它是一种先验算法,其前置统计量包括:

  1. 最小支持度(support);
  2. 最小置信度(confidence);
  3. 最大规则对象数(len)。

使用 R 对顾客在超市的货物购买情况进行分析。

Read

#!/usr/bin/env Rscript

library('arules')

# data(Groceries)
# Groc <- Groceries

# Or (https://github.com/stedy/Machine-Learning-with-R-datasets/blob/master/groceries.csv)
Groc <- read.transactions('groceries.csv', sep=',')

# Summary
# summary(Groc)

# All item
# inspect(Groc)
# inspect(Groc[...range])

Calc Freq

# Item frequence
# itemFrequency(Groc)

# Item freq plot
# itemFrequencyPlot(Groc, topN=10)
itemFrequencyPlot(Groc, support=.1)

这里可以依据 frequence 作图,比如说 support > .1 的图:

 


Anyllizing

# Anyllizing
m1 <- apriori(Groc, parameter=list(support=.007, confidence=.25, minlen=2))
# summary(m1)
# inspect(sort(m1, by='support')[1:5])
# inspect(sort(m1, by='confidence')[1:5])
inspect(sort(m1, by='lift')[1:5])

这里依据 lift (提升)排序,得出前 5 个关联关系:

    lhs                   rhs                      support confidence     lift count
[1] {herbs}            => {root vegetables}    0.007015760  0.4312500 3.956477    69
[2] {berries}          => {whipped/sour cream} 0.009049314  0.2721713 3.796886    89
[3] {other vegetables,
     tropical fruit,
     whole milk}       => {root vegetables}    0.007015760  0.4107143 3.768074    69
[4] {beef,
     other vegetables} => {root vegetables}    0.007930859  0.4020619 3.688692    78
[5] {other vegetables,
     tropical fruit}   => {pip fruit}          0.009456024  0.2634561 3.482649    93

参考:

  1. https://zh.wikipedia.org/wiki/关联规则学习
  2. https://en.wikipedia.org/wiki/Unsupervised_learning
  3. https://en.wikipedia.org/wiki/Lift_(data_mining)

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s