本文介绍: 【数据科学:R语言实战 2】

【数据科学:R语言实战 2】

Chapter 2 序列的数据挖掘

2.1 模式

eclat:用于项集模式检测,常用购物车
arules:确定数据集中的项目共现
apriori:学习数据集中的关联规则
TraMineR:挖掘序列的R包

2.1.1 Eclat 频繁项集的挖掘

寻找行为相似的模式,通过数据中的交集来估算同时频繁出现事件候选项(购物车项目)的支持度,然后通过对频繁候选项进行测试来证实数据集中的模式。

用法

Eclat可以使用arules包中的eclat()函数

  • 参数
    data 待分析的数据矩阵
    parameter ECParameter或列表对象。ECParameter(support:界定最小支持度0.1;minlen:包含最小容量1;maxlen:包含最大容量10;target:界定了待挖掘关联项集的类型.)
    control ECControl或列表的对象。ECControl(sort:1、2升序、-1降序、0未分类、-2事务容量和的降序;verbose:显示进度信息)
用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)
2.1.2 arulesNBMiner

arulesNBMiner 用于寻找一个集合中两个及以上项目的共现。底层模型即负二项式模型,允许高度偏态次数分配,我们会观察到,项目集频率正出现在数据子集合中。

用法

NBMiner()

  • 参数
    data 数据矩阵
    parameter 参数列表
    control 控制列表(自动转换为NBMinerControl的对象)
    NBMinerParameters是用于调用NBMiner的参数块。

Agrawal数据是为集中事务通过特别合成而生成的。

data(Agrawal)
summary(Agrawal.db)
summary(Agrawal.pat)

“size”表现的是各个子集在少数例子中具有偏态的子集

为频繁集挖掘Agrawal数据
mynbparameters <- NBMinerParameters(Agrawal.db)
mynbminer <- NBMiner(Agrawal.db, parameter = mynbparameters)
summary(mynbminer)

项目近乎均匀分布、项集长度1、2有较大偏斜

2.1.3 Apriori

Apriori算法尝试找到数据集中常见的子集合,必须满足最小阈值以便核实关联,支持度默认为10,置信度默认值为80。

用法

apriori()

  • 参数
    data 数据集
    parameter 控制处理方式的参数列表,支持度默认值0.1,置信度默认值0.8,maxlen默认值10.
    appearance 控制了所用的数据值
    control 控制了算法,特别是分类的效能
评估购物篮中的关联
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)
2.1.4 用TraMineR确定序列

发现序列并可视化,可以将序列分布、序列频率及数据湍流等绘图。
内置数据集:actcal(2000年以来每月活动单个的状态符号)、biofam(15-30岁期间单个的家庭生活状态)、mvad(每月活动单个的状态数据)

用法

seqdef()

  • 参数
    data 矩阵
    var 纵列列表,包含序列NULL
    informat 原始数据的格式(STSSPSSPELL)
    stsep 分隔符
    alphabet 所以可能状态的列表
    states 包含了短时状态的标记
确定训练和职业中的序列
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)
2.1.5 序列相似点

TraMineR中的seqdist函数可以度量序列异同。
LCP(最长公共前缀)的比较、LCS(最长公共序列,两个序列的相同部分)、OM(最佳匹配距离,最佳编辑距离)

用法

LCP计算函数seqdist()

  • 参数
    seqdata 状态序列(用seqdef界定)
    method 包含了待用的LCP方法
    refseq 可选参考序列
    norm 距离标准化
    indel 仅用于OM
    sm 替代矩阵(忽略LCP)
    with.missing TRUE 出现缺失间隙
    full.matrix TRUE 返回全矩阵
示例
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

这一章节有很多都没有看明白。尴尬……

原文地址:https://blog.csdn.net/qq_41599676/article/details/135861360

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_62679.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注