数据分析与挖掘(十七)------挖掘建模之关联规则

关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。例如,一个超市的经理想要更多的了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时购买?”或者“某顾客购买了个人电脑,那该顾客三个月后购买数码相机的概率有多大?”他可能会发现如果购买了面包的顾客同时非常有可能会购买牛奶,这就导出了一条关联规则“面包=>牛奶”,其中面包称为规则的前项而牛奶称为后项。通过对面包降低售价进行促销,而适当提高牛奶的售价,关联销售出的牛奶就有可能增加超市整体的利润。

 

关联规则分析是数据挖掘中最活跃的研究算法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。

 

一、常用关联规则方法

 

算法名称

算法描述

Apriori

关联规则最常用也是最经典的挖掘频繁项集的算法,其核心思想是通连接产生候选项及其支持度然后通过剪枝生成频繁项集

FP-Tree

针对Apriori算法的固有的多次扫描事务数据集的缺陷,提出的不产生候选频繁项集的方法。Apriori和FP-Tree都是寻找频繁项集的算法

Eclat算法

Eclat算法是一种深度优先算法,采用垂直数据表示形式,在概念格理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间。

灰色关联法

分析和确定各因素之间的影响程度或若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法

二、Apriori算法

以超市销售数据为例,提取关联规则的最大困难在于当存在很多商品时,可能的商品的组合(规则的前项与后项)的数目会达到一种令人望而却步的程度。因而各种关联规则分析的算法从不同方面入手,以减小可能的搜索空间的大小以及减小扫描数据的次数。Apriori算法是最经典的挖掘频繁项集的算法,第一次实现了在大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度,然后通过剪枝生成频繁项集。

1.关联规则和频繁项集

(1)关联规则的一般形式

(2)最小支持度和最小置信度

 最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性;最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则称作强规则。

 

(3)项集

(4)支持度计算

实例:

#-*- coding: utf-8 -*-
#使用Apriori算法挖掘菜品订单关联规则
from __future__ import print_function
import pandas as pd
from apriori import * #导入自行编写的apriori函数


inputfile = '../data/menu_orders.xls'
outputfile = '../tmp/apriori_rules.xls' #结果文件
data = pd.read_excel(inputfile, header = None)


print(u'\n转换原始数据至0-1矩阵...')
ct = lambda x : pd.Series(1, index = x[pd.notnull(x)]) #转换0-1矩阵的过渡函数
b = map(ct, data.as_matrix()) #用map方式执行
data = pd.DataFrame(list(b)).fillna(0) #实现矩阵转换,空值用0填充
print(u'\n转换完毕。')
del b #删除中间变量b,节省内存


support = 0.2 #最小支持度
confidence = 0.5 #最小置信度
ms = '---' #连接符,默认'--',用来区分不同元素,如A--B。需要保证原始表格中不含有该字符


find_rule(data, support, confidence, ms).to_excel(outputfile) #保存结果

输出:

 

2.Apriori算法:使用候选产生频繁项集

Apriori算法的主要思想是找出存在于事务数据集中的最大的频繁项集,在利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。

(1)Apriori的性质

  频繁项集的所有非空子集也必须是频繁项集。根据该性质可以得出:向不是频繁项集I的项集中添加事务A,新的项集一定也不是频繁项集。

(2)Apriori算法实现的两个过程如下

  •   找出所有的频繁项集(支持度必须大于等于给定的最小支持度阈值),在这个过程中连接步和剪枝步互相融合,最终得到最大频繁项集

    • 连接步:

    • 剪枝步:

  • 由频繁项集产生强关联规则:由上面的过程可知未超过预定的最小支持度阈值的项集已被剔除,如果剩下的这些规则又满足了预定的最小置信度阈值,那么就挖掘出了强关联规则。

实例:结合餐饮行业的实例来讲解Apriori关联规则算法挖掘的实现过程

算法过程实现图:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章