eclat:用于项集模式检测,常用购物车
arules:确定数据集中的项目共现
apriori:学习数据集中的关联规则
TraMineR:挖掘序列的R包
寻找行为相似的模式,通过数据中的交集来估算同时频繁出现事件候选项(购物车项目)的支持度,然后通过对频繁候选项进行测试来证实数据集中的模式。
Eclat可以使用arules包中的eclat()函数
library(“arules”)
data(“Adult”)
dim(Adult)
summary(Adult)
data(“Adult”)
itemsets <- eclat(Adult)
itemsets.sorted <- sort(itemsets)
itemsets.sorted[1:5] #仅看前五个集合
未要求资本损失或资本利得、美国人、白种人
将范围缩减至数据集中出现的最高频率,调节minlen参数
itemsets <- eclat(Adult, parameter=list(minlen=9))
inspect(itemsets)
arulesNBMiner 用于寻找一个集合中两个及以上项目的共现。底层模型即负二项式模型,允许高度偏态次数分配,我们会观察到,项目集频率正出现在数据子集合中。
NBMiner()
Agrawal数据是为集中事务通过特别合成而生成的。
data(Agrawal)
summary(Agrawal.db)
summary(Agrawal.pat)
“size”表现的是各个子集在少数例子中具有偏态的子集
mynbparameters <- NBMinerParameters(Agrawal.db)
mynbminer <- NBMiner(Agrawal.db, parameter = mynbparameters)
summary(mynbminer)
项目近乎均匀分布、项集长度1、2有较大偏斜
Apriori算法尝试找到数据集中常见的子集合,必须满足最小阈值以便核实关联,支持度默认为10,置信度默认值为80。
apriori()
install.packages("arules")
library(arules)
tr <- read.transactions("http://fimi.ua.ac.be/data/retail.dat", format="basket") #比利时杂货店数据
summary(tr) ##结果表明成对项目很受欢迎,项目39有50675个
itemFrequencyPlot(tr, support=0.1) #最频繁项目
rules <- apriori(tr, parameter=list(supp=0.5,conf=0.5)) #构建关联规则
summary(rules) #规则摘要
inspect(rules) ##具体规则 项目39加入购物篮率高
## interestMeasure(rules, c("support", "chiSquare", "confidence", "conviction", "cosine", "leverage", "lift", "oddsRatio"), tr)
发现序列并可视化,可以将序列分布、序列频率及数据湍流等绘图。
内置数据集:actcal(2000年以来每月活动单个的状态符号)、biofam(15-30岁期间单个的家庭生活状态)、mvad(每月活动单个的状态数据)
seqdef()
install.packages("TraMineR")
library ("TraMineR")
data(mvad) ##mvad数据追踪了712个个体,自训练至工作的过程
summary(mvad)
myseq <- seqdef(mvad, 17:86) ##截取序列数据,参照相关状态来获取所需的序列数据
seqiplot(myseq) ##指数图表:参照个人不同状态间界定的转换期
seqfplot(myseq) ## 频率图表:同一序列的人群集,经过一段时间训练后会有工作
seqdplot(myseq) ##分布图表:在上学或训练后开始工作
seqHtplot(myseq) ##序列的熵
##数据湍流:从数据中可见的某个特定事例可以推导出多少不同的后续序列。
##seqST函数将数据湍流可视化
myturbulence <- seqSt(myseq)
hist(myturbulence)
TraMineR中的seqdist函数可以度量序列异同。
LCP(最长公共前缀)的比较、LCS(最长公共序列,两个序列的相同部分)、OM(最佳匹配距离,最佳编辑距离)
LCP计算函数seqdist()
data(famform)
seq <- seqdef(famform) ##界定可用的序列对象
seq
seqLLCP(seq[3,],seq[4,]) #使用序列3、4的LCP,得到四个前置匹配即“S-U-M-MC”
seqLLCS(seq[1,],seq[2,]) #计算1、2的LCS度量
cost <- seqsubm(seq, method="CONSTANT", cval=2) ##确定OMD=2
cost
这一章节有很多都没有看明白。尴尬……