-
2020-04-18 08:18:32
数据挖掘定义
- 数据挖掘指的是从大量数据中挖掘出隐含的、先前未知的、对决策有潜在价值的知识和规则的高级处理过程。通过数据挖掘,有价值的知识、规则或者高层次的信息就能够从数据库的相关数据集合中抽取出来,并以不同的形式、角度进行显示,从而能够得到一个丰富的、可靠的知识获取资源库。比如:超市的经营者希望将经常被同时购买的商品放到一起,从而提高销售额;保险公司希望购买保险的客户具有哪些特征,从而可以为其它非保险用户推荐保险;医学上可能期望从成千上万的病历中找出某种疾病的某些特征,从而为治愈这类疾病提供一些方法。
- 数据挖掘是面向应用的,包含了:简单的数据检索查询、微观乃至宏观的统计/分析/综合/推理、发现事件/样本之间的相互关系、指导问题的求解、未来的预测。
- 数据挖掘定义:通过特定的算法,在可接受的计算效率限制内,从数据库中辨别有效的、新颖的、潜在有用的、最终可理解的模式的过程。
数据挖掘分类
按照数据挖掘的方法可以将数据挖掘分为:
- 统计方法:判别式方法、探索性方法等
- 机器学习方法:回归分析、聚类分析、分类分析等
- 神经网络方法:传统神经网络、卷积神经网络、循环神经网络等
按照挖掘任务来区分的话,可以将数据挖掘区分为:
- 关联规则挖掘:也常常称为购物篮分析,通常用于识别一些经常出现的商品集合和规则,其识别结果将用于指导交叉销售
- 预测分析:该算法通常需要输入一个时间序列的数据集,考虑这些数据样本之间的顺序关系,需要考虑数据的基本趋势、周期性等问题,比如:股市明日股值是多少
- 序列分析:用于在一系列离散的序列数据间发现模型,比如:DNA的序列模型、用户的购买商品序列(先购买计算机还是先购买音响)
数据挖掘常用技术
- 神经网络
- 决策树
- Logistic
- SVM
- 最近邻技术
- 规则归纳
数据挖掘和机器学习的区别
- 机器学习主要针对特定模式的数据进行学习,也就是说在算法模型构建前,数据的模式特征属性已经是存在了的
- 数据挖掘则是从实际的海量数据源中直接抽取知识,依赖既定的业务领域知识来进行模型的构建
- 实际上数据挖掘中,常用的技术基本上都是机器学习的相关算法
数据挖掘过程
数据准备
- 数据集成:将多个数据源的数据进行合并处理,解决语义模糊性问题,处理数据中的遗漏和清洗数据等
- 数据选择:辨别出需要分析的数据集合,缩小处理范围,提供数据挖掘的质量
- 数据预处理:为了提高挖掘质量
数据挖掘
- 做出假设
- 选择合适的工具/算法
- 进行挖掘操作,得到知识
- 证实发现的知识是否符合假设
结果表达和解释
数据挖掘面临的问题
- 数据是动态的而且数据量庞大,数据存在着噪声、不确定性、信息丢失、信息冗余以及数据分布稀疏等问题
- 现在的理论和算法还有待发展和完善
- 知识的表达形式现在还没有形成一个标准
- 目前的数据挖掘的效果还不尽人意
关联规则
关联规则(Association Rule)是数据挖掘中最典型的工作之一,也是现阶段来讲数据挖掘产生利益价值的一个比较核心的技术,也称为购物篮分析。
购物篮分析基本概念
购物篮分析(Market Basket Analysis,MBA)是一种数据挖掘技术,主要目的是通过购物篮中的商品信息揭示不同商品之间的相似度。MBA分析可以帮助我们找到可能会一起购买的商品,我们将相似度最相近的商品放到一起会增加商品被购买的机会,从而使顾客购买更多的商品。
定义:通过两件商品同时出现的频率来表示相似度,如果出现的频率越高,那么认为这两件商品的关联性越高。购物篮分析适用场景
- 推荐系统
- 精准营销
- 超市购物分析
- 电商网站购买情况分析
- 医疗保险反欺诈识别分析
购物篮分析相关概念
- 交易集:包含所有数据的一个数据集合,数据集合中的每条数据都是一笔交易
- 项:交易集中的每个商品被成为一个项
- 模式/项集(ItemSet):项组合被成为模式/项集
- 支持度(Support):一个项集在在整个交易集中出现的次数/出现的频度,比如:Support({A,C})=2表示A和C同时出现的次数是2次
- 最小支持度:交易次数达到最小支持度的情况下,该项集才会被计算
- 频繁项集:如果项集的支持度大于等于最小支持度,那么该项集被称为频繁项集
- 置信度(Confidence):关联规则左件和右件同时出现的频繁程度,该值越大,表示同时出现的几率越大
- 关联规则:LHS–>RHS(Confidence),如果客户购买了左件(LHS),也可能购买右件(RHS),购买的置信度为Confidence
购物篮分析的步骤
- 计算频繁项集:从每条交易中获取项集,然后计算项集的支持度,获得频繁项集
- 产生项的关联规则(置信度):根据每个频繁项集中的子项集的支持度占对应项集的支持度的百分比作为置信度
购物篮分析的编码实现
- IDEA中创建基于Maven的Spark Core开发环境的项目
- 构建模拟数据
- 编写Spark Core实现购物篮分析
- 测试运行
更多相关内容 -
基于关联规则的用户日志挖掘研究
2018-03-27 20:46:14主要研究关联规则挖掘在W.eb日志挖掘中的应用。首先介绍了W-eb数 据挖掘的含义、流程和分类。其次,本文对W曲日志挖掘进行了深入的探讨, 这一部分主要讨论了W曲日志数据的采集和预处理的各个步骤以及各步骤常用 的... -
【数据挖掘之关联规则实战】关联规则智能推荐算法
2021-12-04 15:17:51[数据挖掘之关联规则实战】关联规则智能推荐算法数据说明
数据参数
OrderNumber: 客户昵称
LineNumber:购买顺序,如前三行分别表示同一个客户购买的三样商品
Model:商品名问题描述
基于购物篮的关联规则智能算法推荐的应用。
三个基本问题:
1、以获得最高的营销响应率为目标,该如何推送商品?
2、以最大化总体销售额为目标,该如何推荐商品
3、用户并未产生消费,为其推荐某样商品?
智能推荐算法有很多种,本文只对关联规则进行实践。本文将专注于理解起来最容易且又十分经典常用的基于关联规则的购物篮推荐。商品的关联度分析对于提高商品的活力、挖掘消费者的购买力、促进最大化销售有很大帮助。
其建模理念为:物品被同时购买的模式反映了客户的需求模式。
适用场景:无需个性化定制的场景;有销售记录的产品,向老客户推荐;套餐设计与产品摆放。
购物篮简介
问:什么是购物篮?主要运用在什么场景?
答:单个客户一次购买商品的综合称为一个购物篮,即某个客户本次的消费小票。常用场景:超市货架布局:互补品与互斥品;套餐设计。
问:购物篮的常用算法?
答:常用算法有
不考虑购物顺序:关联规则。购物篮分析其实就是一个因果分析。关联规则其实是一个很方便的发现两样商品关系的算法。共同提升的关系表示两者是正相关,可以作为互补品,如豆瓣酱和葱一起卖也才是最棒的。替代品的概念便是我买了这个就不用买另外一个。
考虑购物顺序:序贯模型。多在电商中使用,比如今天你将这个商品加入了购物车,过几天又将另一个商品加入了购物车,这就有了一个前后顺序。但许多实体商店因为没有实名认证,所以无法记录用户的消费顺序。
问:求出互补品与互斥品后对布局有什么用?答:根据关联规则求出的商品间的关联关系后,可能会发现商品间存在强关联,弱关联与排斥三种关系。每种清醒有各自对应的布局方式。
强关联:关联度的值需要视实际情况而定,在不同的行业不同的也业态是不同的。强关联的商品彼此陈列在一起会提高双方的销售量。双向关联的商品如果陈列位置允许的话应该相关联陈列,即A产品旁边有B,B产品边上也一定会有A,比如常见的剃须膏与剃须刀,男士发油与定型梳;而对于那些单向关联的商品,只需要被关联的商品陈列在关联商品旁边就行,如大瓶可乐旁边摆纸杯,而纸杯旁边则不摆大瓶可乐,毕竟买大可乐的消费者大概率需要纸杯,而购买纸杯的顾客再购买大可乐的概率不大。
弱关联:关联度不高的商品,可以尝试摆在一起,然后再分析关联度是否有变化,如果关联度大幅提高,则说明原来的弱关联有可能是陈列的原因造成的。
排斥关系:指两个产品基本上不会出现在同一张购物小票中,这种商品尽量不要陈列在一起。
根据购物篮的信息来进行商品关联度的分析不仅仅只有如上三种关系,它们仅代表商品关联度分析的一个方面(可信度)。全面系统的商品关联分析必须有三度的概念,三度包括支持度,可信度和提升度。关联规则
直接根据关联三度所定义的概念去理解会有不少难度,尤其是可信度喝提升度中的“ 谁对谁 ”的问题。其实可以换一种方式来看:
规则 X 的支持度 = 规则 X 的交易次数 / 交易的总数。理解:支持度表示规则 X 是否普遍。
规则 X(A→B) 的置信度 = 规则 X 的交易次数/规则X中商品B 的交易次数。理解:置信度是一种条件概率,表示购买了A产品的客户再购买B产品的概率。问:仅看支持度和置信度是否靠谱?
答:看一个案例:食堂卖饭,1000份打饭记录中,买米饭的有800人次,买牛肉的有600人次,两个共同买的有400人次,那么可以得出对于规则(牛肉 - > 米饭)Support=P(牛肉&米饭)= 400/1000=0.40;Confidence=P(米饭|牛肉)=400/600=0.67置信度和支持度都很高,但是给买牛肉的人推荐米饭有意义吗?显然是没有任何意义的。因为无任何条件下用户购买米饭的概率:P(米饭)=800/1000=0.8,都已经大过买了牛肉的前提下再买米饭的概率 0.67,毕竟米饭本来就比牛肉要畅销啊。
这个案例便引出了提升度的概念:提升度 = 置信度/无条件概率=0.67/0.8。规则 X(A→B) 的提升度为 n 时:向购买了 A 的客户推荐 B 的话,这个客户购买 B 的概率是 TA 自然而然购买 B 的 n × 100% 左右。生活理解:消费者平时较少单独购买桌角防撞海绵,可能偶尔想到或自己小孩碰到的时候才会想起购买,如果我们在桌子(书桌饭桌)的成功下单页面添加桌角防撞海绵的推荐,则很大程度上可以提高防撞海绵的销量。这也符合我们希望通过畅销商品带动相对非畅销商品的宗旨。
问:除了公式的含义,关联三度(支持度,置信度,提升度)还有什么关联吗?
答:可以这样理解:
支持度代表这组关联商品的份额是否够大
置信度(可信度)代表关联度的强弱
而提升度则是看该关联规则是否有利用价值和值得推广,用了(客户购买后推荐)比没用(客户自然而然的购买)要提高多少。
所以 1.0 是提升度的一个分界值,刚才的买饭案例中给买了牛肉的用户推荐米饭的这种骚操作的提升度小于 1 也就不难理解了。另外,高置信度的两个商品(假设达到了 100%,意味着它们总是成双成对的出现),但如果支持度很低(意味着份额低),那它对整体销售提升的帮助也不会大。
关联规则Python代码
导入基本包
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline # 各种细节配置如 图像大小、轴标签、刻度、文字大小,图例文字等杂项 large = 22; med = 16; small = 12 params = {'axes.titlesize': large, 'legend.fontsize': med, 'figure.figsize': (16, 10), 'axes.labelsize': med, 'axes.titlesize': med, 'xtick.labelsize': med, 'ytick.labelsize': med, 'figure.titlesize': large} plt.rcParams.update(params) plt.style.use('seaborn-whitegrid') sns.set_style("white") plt.rc('font', **{'family': 'Microsoft YaHei, SimHei'}) # 设置中文字体的支持 # sns.set(font='SimHei') # 解决Seaborn中文显示问题,但会自动添加背景灰色网格 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
数据概览
#读取文件使用utf-8会出现解码错误,需要更改为gbk解码 bike=pd.read_csv("C://Python//分享资料3//bike_data.csv",encoding='gbk') print(bike.head()) print(bike.info())
OrderNumber: 客户昵称
LineNumber:购买顺序,如前三行分别表示同一个客户购买的三样商品
Model:商品名探索性数据分析EDA
#查看缺失值 print(bike.isnull().sum()) #查看重复值 print(bike.duplicated().sum())
商品种类探索
model=bike['Model'].nunique() modelnames=bike['Model'].unique() print("共有"+str(model)+"种商品\n") print("商品名分别为:\n") #每行显示5个 for i in range(0,len(modelnames),5): print(modelnames[i:i+5])
#最畅销的15种商品 bestseller = bike.groupby('Model')['Model'].count().sort_values(ascending=False).reset_index(name='count') bestseller.head(15)
top_15 = bestseller.head(15) sns.barplot(x='count',y='Model',data=top_15) plt.title('最畅销的15种商品') plt.grid(True)
top_15 = top_15['Model'].tolist() print('由销量排名,该自行车店排名前15的畅销单品为:') for i in range(0,15,5): print(top_15[i:i+5])
使用Apriori算法求解关联规则
from mlxtend.frequent_patterns import apriori as apri # 生成购物篮:将同一个客户购买的所有商品放入同一个购物篮 baskets =bike.groupby('OrderNumber')['Model'].apply(lambda x :x.tolist()) baskets = list(baskets) #导入关联规则算法的包 from mlxtend.preprocessing import TransactionEncoder from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns import association_rules #转换为算法可接受模型(布尔值) te = TransactionEncoder() baskets_tf = te.fit_transform(baskets) df = pd.DataFrame(baskets_tf,columns=te.columns_) print(df.head(5))
编码后的数据:
维度是(21255, 37),行表示共有21255个用户,列表示对应用户下商品是否购买,如果购买了则该商品下为true,否则false。当用户量与商品量非常巨大时,矩阵维度也会非常大。
#设置支持度求频繁项集 frequent_itemsets = apriori(df,min_support=0.01,use_colnames= True) #求关联规则,设置最小置信度为0.15 rules = association_rules(frequent_itemsets,metric = 'confidence',min_threshold = 0.1) #设置最小提升度 # rules = rules.drop(rules[rules.lift <1.0].index) #设置标题索引并打印结果 rules.rename(columns = {'antecedents':'lhs','consequents':'rhs','support':'sup','confidence':'conf'},inplace = True) rules = rules[['lhs','rhs','sup','conf','lift']] print(rules)
- lhs: 被称为左手规则,通俗理解即用户购买的商品 - 山地车内胎
- 被称为右手规则,通俗理解即根据用户购买某商品来推荐的另一件商品 - ll山地胎
- support: 支持度,山地车内胎 和 ll山地胎 同时出现在一张购物小票中的概率
- confidence: 置信度,购买了 山地车内胎 的前提下,同时购买 ll山地胎 的概率
- lift:向购买了 山地车内胎 的客户推荐 ll山地胎 的话,这个客户购买 ll山地胎 的概率是这个客户自然而然购买 ll山地胎 的 400% 左右,即高了 300% 多,通俗理解:消费者平时较少单独购买桌角防撞海绵,可能偶尔想到的时候或自己小孩碰到的时候才会想起购买,如果我们在桌子(书桌饭桌)的成功下单页面添加桌角防撞海绵的推荐,则很大程度上可以提高防撞海绵的销量。这也符合我们在探索性数据分析中发现的前 15 名畅销商品后并希望通过畅销商品带动“相对非畅销商品”的宗旨。
筛选互补品和互斥品
# 互补品 # lift 提升度首先要大于1,然后再排序选择自己希望深究的前 n 个 complementary = rules[rules['lift'] > 1].sort_values(by='lift', ascending=False).head(20) # 互斥品 #lift提升都首先要小于1,然后再排序选择自己希望深究的前n个 exclusive = rules[rules['lift'] < 1].sort_values(by='lift', ascending=True).head(20)
### 根据关联规则结果推荐产品
需要结合业务需求- 获得最大营销响应度?-- 看置信度,越高越好
- 销售最大化?-- 看提升度,越高越好
- 用户未产生消费,我们向其推荐商品?
1、获得最高的营销响应率
如果一个客户刚刚下单了山地车英骑这个产品,那么在他付费成功页面上最应该推荐什么产品才能获得最高的营销响应率。
# 使用的是左手规则:lhs(left hand rules),lhs 表示的是购买的产品 ## 使用 frozenset 来对字典的键进行选择 purchase_good = rules[rules['lhs'] == frozenset({'山地英骑'})] print(purchase_good.sample(3))
# 根据置信度排序 print(purchase_good.sort_values(by='conf', ascending=False)) # 根据下表,应该首先推荐山地车挡泥板
1、获得最大化销售额
如果一个新客户刚下单了 山地英骑 这个产品,
如果希望最大化提升总体的销售额,那么在他付费成功的页面上应该推荐什么产品?
print(purchase_good.sort_values(by='lift', ascending=False)) # 由下表可知,应该首推 hl 山地车外胎
提升度是相对于自然而然购买而言,A对B的提升度为4.0的理解如下向购买了A的用户推荐B,则该用户购买B的概率是该用户单独
(即自然而然的购买)购买B的概率的 400%向购买了A的用户推荐B,则该用户购买B的概率比该用户单独
(即自然而然的购买)购买B的概率 \textbf{高} 300%3、用户并未产生消费,我们为其推荐某样商品
# 如果希望推荐山地英骑自行车,应该如何制定营销策略? ## 这里应该选出右手规则,因为直接就是推荐的产品, ##没有产生消费,消费了的即买了的才使用左手规则 purchase_good = rules[rules['rhs'] == frozenset({'山地英骑'})].sort_values('lift') # 根据置信度或提升度排序都可以,因为直接根据右手规则选出来的数据框中, ## confidence 和 lift 成正比例关系,你高我就高 print(purchase_good) # 所以山地英骑跟山地车水壶架,山地车挡泥板,hl山地外胎一起推荐比较好
-
《数据挖掘基础》实验:Weka平台实现关联规则挖掘
2021-12-21 09:57:48Weka平台实现关联规则挖掘:进一步理解关联规则算法(Apriori算法、FP-tree算法),利用weka实现数据集的挖掘处理,学会调整模型参数,读懂挖掘规则,解释规则的含义实验目的
进一步理解关联规则算法(Apriori算法、FP-tree算法),利用weka实现数据集的挖掘处理,学会调整模型参数,读懂挖掘规则,解释规则的含义
实验要求
(1)随机选取数据集为对象,完成以下内容:(用两种方法:Apriori算法、FP-tree算法)
- 文件导入与编辑;
- 参数设置说明;
- 结果截图;
- 结果分析与对比。
(2)以下表,做关联规则挖掘
TID Items T1 {牛奶,面包} T2 {面包,尿布,啤酒,鸡蛋} T3 {牛奶,尿布,啤酒,可乐} T4 {面包,牛奶,尿布,啤酒} T5 {面包,牛奶,尿布,可乐} T6 {牛奶,尿布,啤酒} T7 {尿布,啤酒} T8 {面包,牛奶,尿布} - 文件生成与编辑;
- 参数设置说明;
- 结果截图;
- 结果分析。
supermarket数据实验过程
1. 文件导入与编辑
用“Explorer”打开“supermarket.arff”,如图1.1所示,打开的数据为离散型数据,可直接进行关联规则分析,切换到“Associate”选项卡进行分析。
图1.1 supermarket数据集 2. 参数设置说明
2.1 参数说明
- car:如果设为真,则会挖掘类关联规则而不是全局关联规则。
- classindex:类属性索引。如果设置为-1,最后的属性被当作类属性。
- Delta:以此数值为迭代递减单位。不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
- lowerBounfMinSupport:最小支持度下界
- merticType:度量类型,设置对规则进行排序的度量依据。可以是:置信度(类关联规则只能用置信度挖掘),提升度(lift),平衡度(leverage),确信度(conviction)。
- MinMtric:度量的最小值
- numRules:要发现的规则数
- outputItemSets: 如果设置为真,会在结果中输出项集。
- removeAllMissingCols: 移除全部为缺失值的列。
- significanceLevel :重要程度。重要性测试(仅用于置信度)。
- upperBoundMinSupport: 最小支持度上界。 从这个值开始迭代减小最小支持度。
- verbose: 如果设置为真,则算法会以冗余模式运行。
2.2 参数设置
挖掘支持度在10%到100%之间,并且置信度超过0.9且置信度排在前10位的关联规则。
- “lowerBoundMinSupport”和“upperBoundMinSupport”分别设为0.1和1
- “metricType”设为confidence
- “minMetric”设为0.9
- “numRules”设为10
Apriori方法参数设置如下图2.2.1所示。
图2.2.1 Apriori方法参数设置图 FP-tree方法参数设置如下图2.2.2所示。
图2.2.2 FP-tree方法参数设置图 3. 结果截图
参数设定完成后单击start按钮,weka开始进行关联规则分析,Apriori算法结果如图3.1所示,FP-tree算法结果如图3.2所示。
图3.1 Apriori方法结果 图3.2 FP-tree方法结果 将Apriori方法中参数outputItemSets设置为TRUE,部分运行结果如图3.3所示。
图3.3 一频繁项目集 4. 结果分析
从图3.1,3.2中看出,挖掘出的前十条强关联规则中最大的置信度为0.92,其中一条是:biscuits=t frozen foods=t fruit=t total=high ==> bread and cake=t,图3.1显示一、二、三、四、五、六级频繁项目集在最小支持度为0.1的情况下分别有44,380,910,633,105,1个。
观察图3.3可以看到,相比较于图3.1,结果图中展示出了各级频繁项目集的详细信息。观察图3.1和3.2两种挖掘算法的结果图,可以看出两个算法在数据集以及设置参数一样的情况下,挖掘出的关联规则是相同的。
在运行过程中可以观察到在用Apriori算法挖掘关联规则时,程序右下方的小鸟动了3-4次,而FP-Tree算法挖掘时,小鸟只动了1次。小鸟动的次数直观的体现出程序的运行时间,由此可见在用Apriori做关联规则挖掘时要比FP-Tree算法多耗费2-3倍的时间。但又由图3.1,图3.3可以看出,Apriori挖掘出的结果信息可根据需求得到更详细的信息。表格数据实验过程
1. 文件生成与编辑
将已给数据集进行处理,如图1.1所示,并将该数据集写入到csv文件中。
图1.1 处理后的数据集 用weka的open file导入处理后的数据集,如图1.2所示。图1.2 打开处理后的数据集 看到数据集的文字部分是乱码的。打开weka安装目录,找到RunWeka.ini配置文件,找到fileEncoding=Cp1252,改成fileEncoding=Cp936(图1.3),点击保存关闭,再重新打开weka即可。
图1.3 修改配置文件 重新打开weka,并导入数据,如图1.4所示,可看到中文显示正常。
图1.4 重新的打开数据集 2. 参数设置说明
设置最小支持度下界为0.4,最小置信度为0.6,挖掘规则数为10。
Apriori方法参数设置如图2.1所示。图2.1 Apriori方法参数设置 FP-tree方法参数设置如图2.2所示。
图2.2 FP-tree参数设置 3. 结果截图
参数设定完成后单击start按钮,weka开始进行关联规则分析,Apriori算法结果如图3.1所示,FP-tree算法结果如图3.2所示。
图3.1 Apriori方法结果 图3.2 FP-tree方法结果 4. 结果分析
观察图3.1,可以看到用Apriori算法挖掘出一、二、三级频繁项目集分别为4,5,2个,没有生成四级频繁项目集。挖掘出两条置信度最大为1的强关联规则,分别为:啤酒 -> 尿布;牛奶,啤酒 -> 尿布。
观察图3.2,可以看到用FP-tree算法挖掘出7条强关联规则,其中有一条置信度最大为1的强关联规则为:啤酒 -> 尿布。 -
关联规则
2016-03-01 16:26:34举一个大家最耳熟能详的例子,就是尿布和啤酒,表示成关联规则的形式就是{尿壶} —>{啤酒}。这就是使用关联分析方法所得到的结果,而关联分析所得到的结果,我们可以用关联规则或者频繁项集的形式表示。...什么是关联分析
关联分析是数据挖掘领域常用的一类算法,主要用于发现隐藏在大型数据集中有意义的联系。
举一个大家最耳熟能详的例子,就是尿布和啤酒,表示成关联规则的形式就是{尿壶} —>{啤酒}。这就是使用关联分析方法所得到的结果,而关联分析所得到的结果,我们可以用关联规则或者频繁项集的形式表示。在进行关联分析时,我们常常会遇到这样两个问题:
A. 从大型数据集中发现模式一般来说需要在计算上付出巨大的代价,甚至往往是impossible的,我们往往采用置信度和支持度的剪枝来解决这个问题。
B. 所发现的某些模式可能是虚假的,这个我们需要采用一些关联规则的评估来解决这个问题。
概念
独立事件:P(AB) =P(A) P(B),称A,B 相互独立。概念上就是AB同时发生的概率等于事件A发生的概率乘以事件B发生的概率。
A. 项集:在关联分析中,包含0个或者多个的项的集合称为项集。如果一个项集包含k个项,那么就称为k-项集。比如{牛奶,咖啡}则称为2项集。
B. 支持度: 支持度用来确定指定项集的频繁程度,即给定项集在所有的数据集中出现的频率,例如Support(X,Y) = N(X,Y)/N,N(X,Y)表示同时包含X,Y的项集数量,N表示数据集总数量。
C. 置信度: 置信度则是用来确定Y在包含X的项集中出现的频繁程度,即Confidence(X==>Y) = N(X,Y)/N(X)
支持度和置信度的意义在于,支持度是一个重要的度量,如果支持度很低,代表这个规则其实只是偶然出现,基本没有意义。因此,支持度通常用来删除那些无意义的规则。而置信度则是通过规则进行推理具有可靠性。用c(X->Y)来说,只有置信度越高,Y出现在包含X的事务中的概率才越大,否则这个规则也没有意义。通常我们在做关联规则发现的时候都会设定支持度和置信度阈值 minsup 和minconf , 而关联规则发现则是发现那些支持度大于等于minsup 并且置信度大于 minconf的所有规则。所以,提高关联分析算法效率最简单的办法则是提高支持度和置信度的阈值。
支持度、置信度的局限
我们来考虑一下支持度-置信度框架的局限性。
首先是支持度,举例来说,在图书市场中,文学类书籍的数量远大于物理类书籍,那么物理类书籍的规则支持度就会很低,这样就导致很多物理类书籍的关联规则都被过滤掉了。
接下来是置信度,举例来说,我们对1000个交易记录分析,假设这1000条记录只有四种行为:购买商品A,不购买商品A,购买商品B,不购买商品B。发现有500条购买记录包含商品A,包含商品A的500条记录又有300条记录包含商品B,那么我们通过置信度计算发现Confidence (商品A==商品B)=0.6这个的置信度非常高,我们于是可以推算出买商品A的人都喜欢买商品B。但是其实我们看接下来的调查,另外没有购买商品A的500条记录中,有400条购买了商品B。综上所述,我们可以发现,其实购买商品A和购买商品B是两个独立事件。所以我们可以概括一下,置信度的缺点,就是忽略了不在规则事件中的项集的支持度。
提升度,Lift
还是以上面的1000个交易记录为例子,500个交易包含购买商品A,700个交易包含购买商品B,300个交易同时包含购买A、B商品。Support(AB)=0.3,且Confidence(A==>B)= 0.6。不管支持度和置信度看上去都很高。但是这样的关联规则是有问题的。
Confidence(A==>B)= 0.6表示用户在购买了商品A后有0.6的概率的去购买商品B,而在没有任何前提条件时,用户反而有(700/1000=0.7)的概率去购买商品B,也就是说在购买了商品A的条件反而会降低用户去购买商品B的概率。这样看来使用(A==>B)这条规则来进行推荐,还不如不推荐,随机对顾客推荐好了。为此,引入另外一个量,即提升度(Lift),以度量此规则是否可用。
Lift的物理含义,直接参考:http://www.cnblogs.com/zgw21cn/archive/2009/05/31/1492809.html。我这里直接截图了:
也就是说这lift指标表示了一条关联规则是否有效,这里表示度量(A==>B)这条规则有效程度的值为1.32。满足最小支持度和最小置信度的规则,叫做“强关联规则”。然而,强关联规则里,也分有效的强关联规则和无效的强关联规则。
如果Lift(X→Y)>1,则规则“X→Y”是有效的强关联规则。
如果Lift(X→Y) <=1,则规则“X→Y”是无效的强关联规则。
特别地,如果Lift(X→Y) =1,则表示X与Y相互独立。
这里再推荐一篇博客(http://blog.csdn.net/rav009/article/details/8985322)的结论:
参考
理论方面:
http://book.douban.com/annotation/16911003/
http://www.cnblogs.com/zgw21cn/archive/2009/05/31/1492809.html
http://blog.csdn.net/rav009/article/details/8985322
代码实现:
mahout版本:http://www.cnblogs.com/ValiancyHe/archive/2013/07/06/3174944.html
java版本:http://www.cnblogs.com/zhangchaoyang/articles/2198946.html
python版本:http://lxneng.iteye.com/blog/471067
spark版本:https://spark.apache.org/docs/latest/mllib-frequent-pattern-mining.html#fp-growth
-
关联规则Apriori算法在煤矿生产调度子系统中的应用研究
2020-05-26 01:34:45提出了采用关联规则Apriori算法对煤矿生产调度子系统进行频繁模式数据挖掘的方案,详细描述了对煤矿生产数据进行预处理以及运用Apriori算法对预处理后的数据挖掘频繁项集的过程,分析了频繁项集中关联规则的含义,并... -
关联规则——关联分析
2020-08-04 21:24:58找出物品之间的关联规则,将两个商品放在一起,双双提升销量。 3、做法: 这些是一个超市里面的一部分购买商品记录: 3.1、关联分析涉及的几个概念 支持度:support,也即物品的流行程度 支... -
机器学习——关联规则
2019-08-10 21:49:38机器学习——关联规则(一)关联规则原理(二)关联规则代码实现 (一)关联规则原理 在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~... -
【数据挖掘】关联规则基础
2019-01-24 18:25:37关联规则基础 1.关联规则分析: 关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。 关联规则分析目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中... -
关联规则与购物篮分析实战
2021-05-22 00:25:08导读:本文介绍了关联规则原理及Apriori算法实现购物篮分析,以一个真实案例辅助理解关联分析。背景与需求客户A企业是一家全球知名家具和家居零售商,销售主要包括座椅/沙发系列、办公用品、卧... -
R语言关联规则及其可视化(Foodmart数据)
2019-12-05 11:15:42R语言关联规则-Foodmart数据数据集描述初步探索关联规则挖掘关联规则可视化商品品类的关联规则如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右... -
关联规则挖掘Apriori算法的实现
2021-11-26 20:23:45关联规则挖掘Apriori算法的实现 实验目的 1.掌握频繁项目集的生成原理 2.掌握关联规则挖掘的原理 3.掌握在weka中进行关联规则挖掘的具体流程。 实验内容 1.根据给定的事务数据库,支持数阈值2和置信度阈值0.7... -
Python机器学习&数据分析-关联规则
2019-08-04 09:10:23数据分析-关联规则 机器学习课程的笔记整理 一、关联规则前置知识 关联规则 在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~40%的人同时... -
商品亲和性分析与关联规则挖掘
2021-05-05 18:54:23支持度:支持度指的是数据集中规则应验的次数。(商品交易中同时买A商品和B商品的交易数量【支持度也可以为次数/交易总量】) 置信度:置信度代表的是规则的准确性如何。(既买A商品又买B商品的数量除以买A商品的... -
Apriori 算法-如何进行关联规则挖掘
2020-12-10 13:04:04Apriori 算法是一种发掘事物内在关联关系的算法,它可以加快关联分析的速度,从而让我们更有效的进行关联分析。 -
SPSS modeler 关联规则 评价指标解释
2018-08-13 11:29:01置信度、支持度、提升度是评价关联规则的三个重要指标。 样本100,条件A=》结果B,A:60,B40,同时发生A和B:30 则: 条件支持度=P(A)=条件A60/样本100=0.6 结果支持度=P(B)=结果B40/样本100=0.4(在sas中称为... -
机器学习——关联规则实战训练
2020-05-16 17:07:10关联规则实战训练关联规则关联规则实战索引由k个项构成的集合X==>Y含义:事物仅包含其涉及到的项目,而不包含项目的具体信息支持度(support):一个项集或者规则在所有事务中出现的频率,σ(X):表示项集X的支持... -
Document_Mining:基于关联规则的文档聚类
2021-05-31 06:04:06基于关联规则的文档聚类 做全栈文档聚类 预处理 删除短词 删除停用词 词干得到它的根示例:计算、计算、计算机、计算、计算 ==> 计算 lemetize 单词以获得常用单词示例:good、best、 better、amazing、 nice ==> ... -
生动理解关联规则——Apriori算法
2019-03-14 09:16:02有趣的啤酒和尿布 “啤酒与尿布”的例子相信很多人都听说过吧,故事是这样的:在一家超市中,人们发现了一个特别有趣的现象,尿布与啤酒这两种风马牛不相及的商品居然摆在一起。...关联分析是一种在大规模数据... -
关联规则挖掘
2017-10-07 13:31:06关联规则挖掘 定义频繁项目集 关联规则挖掘的任务 挖掘关联规则 生成频繁项目集 -
大数据分析笔记 (4) -关联规则(Association Rules)
2020-11-19 09:20:46大数据分析笔记 - 关联规则总览Aprioris算法算法流程评估候选规则 (Evaluation of Candidate Rules)置信度 (Confidence)提升度 (Lift)杠杆率 (leverage)对比结合方法 (Combination of Measures)验证和测试诊断应用 ... -
利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例
2022-03-30 18:29:26先分析一个Apriori算法的关联规则挖掘实例3. 利用weka进行数据挖掘3.1 将数据转为ARFF格式3.2 利用weka进行分析4. 参考文章 首先,如果不熟悉weka的使用的话,可以从我的git仓库里面拉取一下weka的相关教程,仓库... -
商业分析_第二篇 关联规则
2020-08-01 17:43:34目录1.1 关联规则的含义1.2 支持度和置信度的定义1.3 支持度和置信度的意义1.4 支持度和置信度的缺点 1.1 关联规则的含义 关联规则是形如X→Y的蕴涵式,其中, X和Y分别称为关联规则的先导(antecedent或left-hand-... -
数据挖掘算法----关联规则
2018-07-22 22:03:48关联规则作为机器学习算法中的一个分类,其目的是在数据集中找出两个变量之间的关联关系,且这种相关关系在数据集中不能直观展现出来。 关联规则的分类 1、按处理的变量 布尔型:买啤酒=>买尿布 数值型:... -
关联规则的支持度,置信度,提升度
2019-10-21 14:34:22提升度(是关联规则的价值衡量) 客观上,使用"支持度和置信度"框架可能会产生一些不正确的规则。只凭支持度和置信度阑值未必总能找出符合实际的规则,所以引出提升度 Lift ( A → B ) = Confidence ( A → B... -
关联分析(Association Analysis)--挖掘啤酒与尿布的关联规则
2020-06-19 22:36:59挖掘关联分析规则的两个步骤 aproori原理 算法优化–剪枝 如何生成频繁项集 没有重复的k-项候选集如何产生—>剪枝–>计数–频繁k-项集 关联分析规则的评估指标 什么是关联分析 关联分析是一种简单、... -
关联规则R语言实战(Apriori算法)
2017-07-29 11:47:24最近遇到一个业务问题需要用关联规则的算法来实现,为了解决业务问题,我又重新复习了一遍以前就学过的Apriori算法并将其运用到业务场景中。下面,我想谈一谈在在具体的业务实现过程中我的一些感想。 -
原理 + 代码 | Apriori 算法与基于关联规则的购物篮推荐
2020-07-17 19:19:56首先就要满足支持度的要求,太小则直接被删去,支持度的大小可根据关联规则的多少调整 如果关联规则很少,可根据实际情况放宽支持度的要求。相关参数说明: + minSupport:最小支持度阈值 + minConf:最小置信度阈值 + ...