- 大数据分析教程
- 大数据分析 - 首页
- 大数据分析 - 概述
- 大数据分析 - 特征
- 大数据分析 - 数据生命周期
- 大数据分析 - 架构
- 大数据分析 - 方法论
- 大数据分析 - 核心交付成果
- 大数据采用与规划考虑
- 大数据分析 - 主要利益相关者
- 大数据分析 - 数据分析师
- 大数据分析 - 数据科学家
- 大数据分析有用资源
- 大数据分析 - 快速指南
- 大数据分析 - 资源
- 大数据分析 - 讨论
大数据分析 - 关联规则
设I = i1, i2, ..., in是一组n个称为项目的二元属性。设D = t1, t2, ..., tm是一组称为数据库的事务。D中的每个事务都有一个唯一的事务ID,并包含I中项目的子集。规则定义为X ⇒ Y的形式蕴涵,其中X, Y ⊆ I且X ∩ Y = ∅。
项目集X和Y分别称为规则的前件(左手侧或LHS)和后件(右手侧或RHS)。
为了说明这些概念,我们使用超市领域的一个小例子。项目集为I = {牛奶,面包,黄油,啤酒},包含项目的 小型数据库如下表所示。
事务ID | 项目 |
---|---|
1 | 牛奶,面包 |
2 | 面包,黄油 |
3 | 啤酒 |
4 | 牛奶,面包,黄油 |
5 | 面包,黄油 |
超市的一个示例规则可以是{牛奶,面包} ⇒ {黄油},这意味着如果购买牛奶和面包,顾客也会购买黄油。为了从所有可能的规则集中选择有趣的规则,可以使用对各种显著性和兴趣度量的约束。最著名的约束是对支持度和置信度的最小阈值。
项目集X的支持度supp(X)定义为数据集中包含该项目集的事务的比例。在表1的示例数据库中,项目集{牛奶,面包}的支持度为2/5 = 0.4,因为它出现在40%的事务中(5个事务中的2个)。寻找频繁项目集可以看作是无监督学习问题的简化。
规则的置信度定义为conf(X ⇒ Y ) = supp(X ∪ Y )/supp(X)。例如,规则{牛奶,面包} ⇒ {黄油}在表1的数据库中的置信度为0.2/0.4 = 0.5,这意味着对于包含牛奶和面包的50%的事务,该规则是正确的。置信度可以解释为概率P(Y|X)的估计值,即在事务也包含LHS的条件下,在事务中找到规则RHS的概率。
在位于bda/part3/apriori.R中的脚本中,可以找到实现Apriori算法的代码。
# Load the library for doing association rules # install.packages(’arules’) library(arules) # Data preprocessing data("AdultUCI") AdultUCI[1:2,] AdultUCI[["fnlwgt"]] <- NULL AdultUCI[["education-num"]] <- NULL AdultUCI[[ "age"]] <- ordered(cut(AdultUCI[[ "age"]], c(15,25,45,65,100)), labels = c("Young", "Middle-aged", "Senior", "Old")) AdultUCI[[ "hours-per-week"]] <- ordered(cut(AdultUCI[[ "hours-per-week"]], c(0,25,40,60,168)), labels = c("Part-time", "Full-time", "Over-time", "Workaholic")) AdultUCI[[ "capital-gain"]] <- ordered(cut(AdultUCI[[ "capital-gain"]], c(-Inf,0,median(AdultUCI[[ "capital-gain"]][AdultUCI[[ "capitalgain"]]>0]),Inf)), labels = c("None", "Low", "High")) AdultUCI[[ "capital-loss"]] <- ordered(cut(AdultUCI[[ "capital-loss"]], c(-Inf,0, median(AdultUCI[[ "capital-loss"]][AdultUCI[[ "capitalloss"]]>0]),Inf)), labels = c("none", "low", "high"))
为了使用Apriori算法生成规则,我们需要创建一个事务矩阵。以下代码显示了如何在R中执行此操作。
# Convert the data into a transactions format Adult <- as(AdultUCI, "transactions") Adult # transactions in sparse format with # 48842 transactions (rows) and # 115 items (columns) summary(Adult) # Plot frequent item-sets itemFrequencyPlot(Adult, support = 0.1, cex.names = 0.8) # generate rules min_support = 0.01 confidence = 0.6 rules <- apriori(Adult, parameter = list(support = min_support, confidence = confidence)) rules inspect(rules[100:110, ]) # lhs rhs support confidence lift # {occupation = Farming-fishing} => {sex = Male} 0.02856148 0.9362416 1.4005486 # {occupation = Farming-fishing} => {race = White} 0.02831579 0.9281879 1.0855456 # {occupation = Farming-fishing} => {native-country 0.02671881 0.8758389 0.9759474 = United-States}
广告