看书标记【数据科学:R语言实战 2】

看书标记------R语言

【数据科学: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找到成年人行为的相似点
r 复制代码
library("arules")
data("Adult")
dim(Adult)
summary(Adult)
查找数据集中的频繁项目
r 复制代码
data("Adult")
itemsets <- eclat(Adult)
itemsets.sorted <- sort(itemsets)
itemsets.sorted[1:5]   #仅看前五个集合

未要求资本损失或资本利得、美国人、白种人

集中于最高频率的示例

将范围缩减至数据集中出现的最高频率,调节minlen参数

r 复制代码
itemsets <- eclat(Adult, parameter=list(minlen=9))
inspect(itemsets)
2.1.2 arulesNBMiner

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

用法

NBMiner()

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

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

r 复制代码
data(Agrawal)
summary(Agrawal.db)
summary(Agrawal.pat)

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

为频繁集挖掘Agrawal数据
r 复制代码
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 控制了算法,特别是分类的效能
评估购物篮中的关联
r 复制代码
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 原始数据的格式(STS\SPS\SPELL)
    stsep 分隔符
    alphabet 所以可能状态的列表
    states 包含了短时状态的标记
确定训练和职业中的序列
r 复制代码
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 返回全矩阵
示例
r 复制代码
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

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

相关推荐
ephemerals__几秒前
【c++丨STL】list模拟实现(附源码)
开发语言·c++·list
码农飞飞4 分钟前
深入理解Rust的模式匹配
开发语言·后端·rust·模式匹配·解构·结构体和枚举
一个小坑货6 分钟前
Rust 的简介
开发语言·后端·rust
湫ccc14 分钟前
《Python基础》之基本数据类型
开发语言·python
Matlab精灵14 分钟前
Matlab函数中的隐马尔可夫模型
开发语言·matlab·统计学习
Microsoft Word15 分钟前
c++基础语法
开发语言·c++·算法
数据小爬虫@18 分钟前
如何利用java爬虫获得淘宝商品评论
java·开发语言·爬虫
qq_1728055925 分钟前
RUST学习教程-安装教程
开发语言·学习·rust·安装
wjs202433 分钟前
MongoDB 更新集合名
开发语言
monkey_meng36 分钟前
【遵守孤儿规则的External trait pattern】
开发语言·后端·rust