实现机器学习的循序渐进指南XII——Apriori
目录
介绍
Apriori模型
频繁项集
关联规则
结论与分析
可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表。
介绍
Apriori是一种学习频繁项集和关联规则的算法。Apriori是一种自下而上的方法,它将对象扩展到每次迭代的频繁项集。当没有要扩展的对象时,算法终止。
Apriori模型
频繁项集
频繁项集是通常同时发生的一组对象。
传统方法将多次遍历数据集。为了减少计算量,研究人员发现了一种称为Apriori原理的东西。Apriori原理帮助我们减少可能有趣的项目集的数量。Apriori原理说如果一个项集是频繁的,那么它的所有子集都是频繁的。乍一看似乎没用。但是,如果我们将其内部翻出来,它会说如果一个项目集不频繁,那么它的所有超集都是不频繁的。这意味着在自下而上的过程中,如果底部项目集不频繁,我们不需要在顶部处理该集合。例如,存在集合A = {1,2,3,4}。A生成的所有可能项目集如下所示:
如果项目集{0,1}不频繁,则包含{0,1}的所有项集都不频繁,这意味着我们可以跳过这些以蓝色圆圈标记的项目集。
频繁项集的生成包括以下步骤:
1、首先,计算单例集。所有元素都被视为候选集。
def createSingletonSet(self, data):singleton_set = []for record in data:for item in record:if [item] not in singleton_set:singleton_set.append([item])singleton_set.sort()singleton_set = list(map(frozenset, singleton_set)) # generate a invariable setreturn singleton_set
2、合并单例集以生成更多候选集。
def createCandidateSet(self, frequent_items, k):candidate_set = []items_num = len(frequent_items)# merge the sets which have same front k-2 elementfor i in range(items_num):for j in range(i+1, items_num):L1 = list(frequent_items[i])[: k-2]L2 = list(frequent_items[j])[: k-2]if L1 == L2:candidate_set.append(frequent_items[i] | frequent_items[j])return candidate_set
3、计算所有候选集的支持度,并选择支持度大于最小支持度的候选集作为频繁项集。
def calculateSupportDegree(self, data, candidate_set):sample_sum = len(data)data = map(set, data) # transform data into set# calculate the frequency of each set in candidate_set appearing in datafrequency = {}for record in data:for element in candidate_set:if element.issubset(record): # elements in recordfrequency[element] = frequency.get(element, 0) + 1# calculate the support degree for each setsupport_degree = {}frequent_items = []for key in frequency:support = frequency[key]/sample_sumif support >= self.min_support:frequent_items.insert(0, key)support_degree[key] = supportreturn frequent_items, support_degree
4、组合以上功能:
def findFrequentItem(self, data):singleton_set = self.createSingletonSet(data)sub_frequent_items, sub_support_degree =self.calculateSupportDegree(data, singleton_set)frequent_items = [sub_frequent_items]support_degree = sub_support_degreek = 2while len(frequent_items[k-2]) > 0:candidate_set = self.createCandidateSet(frequent_items[k-2], k)sub_frequent_items, sub_support_degree =self.calculateSupportDegree(data, candidate_set)support_degree.update(sub_support_degree)if len(sub_frequent_items) == 0:breakfrequent_items.append(sub_frequent_items)k = k + 1return frequent_items, support_degree
关联规则
关联规则是发生导致其他事情发生的事情。例如,有一个频繁的项目集{beer, diaper}。可能存在关联规则diaper -> beer,这意味着有人也可以通过beer购买diaper。请注意,规则是单向的,这意味着规则beer ->diaper可能不正确。
关联规则的生成包括以下步骤:
1、计算每个频繁项集的置信度,并选择置信度大于最小置信度的项集。
def calculateConfidence(self, frequent_item, support_degree, candidate_set, rule_list):rule = []confidence = []for item in candidate_set:temp = support_degree[frequent_item]/support_degree[frequent_item - item]confidence.append(temp)if temp >= self.min_confidence:rule_list.append((frequent_item - item, item, temp)) # association rulerule.append(item)return rule
2、合并频繁项集以生成更多关联规则:
def mergeFrequentItem(self, frequent_item, support_degree, candidate_set, rule_list):item_num = len(candidate_set[0])if len(frequent_item) > item_num + 1:candidate_set = self.createCandidateSet(candidate_set, item_num+1)rule = self.calculateConfidence(frequent_item, support_degree, candidate_set, rule_list)if len(rule) > 1:self.mergeFrequentItem(frequent_item, support_degree, rule, rule_list)
3、组合以上功能:
def generateRules(self, frequent_set, support_degree):rules = []for i in range(1, len(frequent_set)): # generate rule from sets# which contain more than two elementsfor frequent_item in frequent_set[i]:candidate_set = [frozenset([item]) for item in frequent_item]if i > 1:self.mergeFrequentItem(frequent_item, support_degree, candidate_set, rules)else:self.calculateConfidence(frequent_item, support_degree, candidate_set, rules)return rules
结论与分析
Apriori是一种生成频繁项集和关联规则的简单算法。但它更适合sprase数据集。现在,我们有一个数据集如下。让我们看看Apriori的结果。结果是元组为(X,Y,置信度)。
可以在MachineLearning中找到本文中的相关代码和数据集。
有兴趣的小伙伴可以查看上一篇 。
原文地址:https://www.codeproject.com/Articles/5142921/Step-by-Step-Guide-to-Implement-Machine-Learning-9
实现机器学习的循序渐进指南XII——Apriori相关推荐
- 实现机器学习的循序渐进指南系列汇总
之前曾尝试翻译了机器学习中的KNN和决策树,最近这段时间陆续看到这个系列的相关文章,并尝试翻译分析.由于此系列文章直接相对零散,所以有了这篇简单的汇总文章,以帮助有兴趣的小伙伴迅速找到想看的文章. 具 ...
- 实现机器学习的循序渐进指南XI——DBSCAN
目录 介绍 DBSCAN模型 开始 聚类算法 参数估计 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 基于密度的噪声应用空间聚类(DBSCAN)是一种基于密度 ...
- 实现机器学习的循序渐进指南X——KMeans
目录 介绍 KMeans模型 KMEANS 平分KMeans KMEANS ++ 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 KMeans是一种简单的聚类算 ...
- 实现机器学习的循序渐进指南VIII——线性回归
目录 介绍 回归模型 线性回归 局部加权线性回归 岭回归 套索(Lasso)回归 逐步线性回归 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 通常存在变量之间 ...
- 实现机器学习的循序渐进指南IX ——树回归
目录 介绍 回归模型 特征选择 回归树的生成 回归 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 在现实世界中,一些关系不是线性的.因此,应用线性回归分析这些 ...
- 实现机器学习的循序渐进指南VII——Blending Stacking
目录 介绍 混合(Blending)模型 混合(Blending)架构 混合(Blending)实现 混合(Blending)分类 堆叠(Stacking)模型 堆叠(Stacking)架构 堆叠(S ...
- 实现机器学习的循序渐进指南VI——AdaBoost
目录 介绍 AdaBoost模型 弱分类器 权重更新 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 AdaBoost是Boosting的一种方法,它基于 ...
- 实现机器学习的循序渐进指南V——支持向量机
目录 介绍 SVM模型 优化问题 优化算法 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 支持向量机(SVM)是一种基于特征空间最大边距的分类器.SVM ...
- 实现机器学习的循序渐进指南IV——逻辑回归
目录 介绍 逻辑回归模型 参数估计 优化算法 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 逻辑回归是统计学习中的经典方法,它计算条件概率P(Y|X)并 ...
最新文章
- camera中LENS和SENSOR的CRA是如何搭配的?
- javascript的typeof返回哪些数据类型
- locate 命令详解
- php中cookie的用法
- Zookeeper--ZAB与Paxos算法联系与区别
- python 轮廓矩阵_python – 在3D numpy矩阵中绘制给定值的曲面轮廓
- 在频域上,随机接入前导占用()个资源块对应的带宽
- 使用jquery简化ajax开发
- poj 2594 Treasure Exploration 匈牙利二分匹配+floyd
- Oracle建立用户和表空间
- Thrift RPC实战(七) 基于zookeeper和thrift的RPC服务发布订阅
- 系统集成项目管理工程师(软考中级)知识点总结【挣值分析】【关键路径】
- 康泰克音源采样器完整版-Native Instruments Kontakt 6.5.3 WiN-MAC
- windows server添加角色
- Seeker的奇妙求职历险(华为笔试)
- Win 10-jdk 8 下载和安装步骤
- 磁盘阵列RAID技术详解
- Linux系统的权限管理
- 两年网罗13位扫地僧,阿里达摩院最新架构完整曝光
- 在线运行python的网站-Python在线练习运行平台
热门文章
- strcpy用于调用的参数太少_JVM:虚拟机方法调用(理解重载和重写的本质)
- linux基础命令怎么记,linux基础命令--笔记(示例代码)
- python 给类添加属性_python – 如何动态添加属性到类中?
- 2016年4月计算机组成原理试题答案,全国2018年4月自考(02318)计算机组成原理试题及答案...
- syslinux引导扇区不支持ntfs文件系统_磁盘与文件系统
- 新冠状病毒显微放大品质背景,让你做相关项目更具专业性。
- APP界面的数据可视化设计临摹学习模板
- 微型计算机中AGP指,2011江苏省计算机等级考试二级理论考试试题及答案
- dpm码识别_如何读取直接零件打标码(DPM)
- Python爬虫项目---批量从搜款网下载主图、颜色图详情图