大数据关联规则挖掘技能综述与应用

打印 上一主题 下一主题

主题 885|帖子 885|积分 2655

大数据关联规则是数据挖掘范畴的一项紧张技能,用于发现大量数据集中项集之间风趣的关联或干系性。以下是对大数据关联规则的种类与概述:
目次
一、关联规则的根本概念
二、关联规则的种类
三、关联规则挖掘的关键指标
四、关联规则挖掘的常用算法 
五、关联规则的应用范畴


一、关联规则的根本概念

关联规则(Association Rule)是一种数据挖掘技能,用于发现数据集中项集之间风趣的关联或干系性。这些规则通常以“如果...那么...”的形式表示,指出某些项的出现怎样影响其他项的出现概率。关联规则挖掘是数据挖掘中的一个紧张分支,它通过分析大量事务数据,发现项集之间的风趣关系,这些关系可以用于预测、分类、推荐等多种应用场景。
二、关联规则的种类

关联规则可以根据不同维度进行分类,重要包括以下几种:

  • 单层关联规则与多层关联规则

    • 单层关联规则:所有的变量都不考虑层次。
    • 多层关联规则:考虑变量的不同层次性。多层关联规则又可分为同层关联规则和层间关联规则。同层关联规则对应的项目是同一个粒度层次,而层间关联规则在不同的粒度层次上考虑题目。

  • 单维关联规则与多维关联规则

    • 单维关联规则:只涉及一个属性(维),处理单个属性中的一些关系。
    • 多维关联规则:处理多个属性(维)上的关系。

  • 布尔型关联规则与数值型关联规则

    • 布尔型关联规则:处理的是布尔型变量,即变量的取值是离散的,如0或1。
    • 数值型关联规则:处理的是数值型变量,即变量的取值是连续的或离散的但具有数值意义。对于数值型关联规则,通常需要先对数值属性进行离散化。

三、关联规则挖掘的关键指标


  • 支持度(Support):表示两个事件同时发生的概率,即同时包含A、B事务占总事务的百分比。它是衡量关联规则紧张性的一个指标,反映了规则出现的频率。
  • 置信度(Confidence):是在前因发生的条件下,后果发生的概率,表示同时发生A、B事务的概率占事务A发生概率的百分比。它是衡量关联规则预测准确性的一个指标。
  • 提升度(Lift):反映了规则的价值,能说明规则对后项的预测比没有规则要好多少。当提升度大于1时,意味着前项的出现对后项的出现有促进作用;当它小于1时,表明前项的出现降低了后项出现的大概性。
四、关联规则挖掘的常用算法 


  • Apriori算法:是一种经典的关联规则挖掘算法,用于从大量事务数据集中发现频繁项集和关联规则。它通过迭代搜索的方式,起首找到频繁1项集,然后基于这些频繁项集天生频繁2项集,云云反复,直到无法天生新的频繁k项集为止。(以下是使用Python和efficient_apriori库实现Apriori算法的底子代码)
    1. def vertical_data(x):  
    2.     '''构造垂直数据'''  
    3.     Vertical_dict = {}  # 生成用于储存垂直数据的字典  
    4.     for index, items in enumerate(x):  # 循环每一行数据  
    5.         for item in items:  # 循环一行中的每一个数据  
    6.             Vertical_dict[item] = Vertical_dict.get(item, []) + [index]  # 构造数据  
    7.     return Vertical_dict  # 返回字典  
    8.   
    9. def main(data, support_per):  
    10.     '''挖掘频繁项集和关联规则'''  
    11.     Vertical_dict = vertical_data(data)  # 构造垂直字典  
    12.     Vertical_dict = {k: v for k, v in Vertical_dict.items() if len(v) > support_per}  # 计算频繁1项集  
    13.     a = Vertical_dict  # 将频繁项集赋给a,因为Vertical_dict在本文将用于储存所有的频繁项集  
    14.       
    15.     while True:  
    16.         a_len = len(a)  # 求k项集的字典的长度  
    17.         a_list = list(a)  # 将字典的键作为列表  
    18.         a = {}  # 将a重新初始化,因为要更新a的项集了  
    19.          
    20.         for i in range(a_len - 1):  # 循环从1到n-1项(索引)  
    21.             for j in range(i + 1, a_len):  # 每次都选取i以后的项与i组合(索引)  
    22.                 key_i = a_list[i]  # 取出对应的i的键  
    23.                 key_j = a_list[j]  # 取出对应的j的键  
    24.                 inter = sorted(set(Vertical_dict[key_i]) & set(Vertical_dict[key_j]))  # 计算交集  
    25.                   
    26.                 if len(inter) > support_per:  # 保留支持度大于最小支持度的项  
    27.                     key_list = sorted(set(key_i.split() + key_j.split()))  # 对两组数据以空格切开形成列表并去重然后排序得到组合项  
    28.                     key_str = " ".join(key_list)  # 对该组合项变成字符串,两两数据之间用空格隔开  
    29.                     a[key_str] = inter  # 生成组合项和对应的交集  
    30.          
    31.         Vertical_dict = {**Vertical_dict, **a}  # 将得到的频繁k项集和原始频繁(1,k-1)项集合并  
    32.          
    33.         if len(a) <= 1:  # 打破循环并输出  
    34.             print(Vertical_dict)  
    35.             break  
    36.   
    37. # 示例数据集  
    38. data = [  
    39.     ['l1', 'l2', 'l5'],  
    40.     ['l2', 'l4'],  
    41.     ['l2', 'l3'],  
    42.     # ... 其他事务  
    43. ]  
    44.   
    45. # 设置最小支持度  
    46. support_per = 1  
    47.   
    48. # 挖掘频繁项集  
    49. main(data, support_per)
    复制代码
  • Eclat算法:是一种基于垂直数据格式的关联规则挖掘算法,它通过分析项集的交集来发现频繁项集和关联规则。(以下是使用Python实现Eclat算法的底子代码)
    1. def vertical_data(x):  
    2.     '''构造垂直数据'''  
    3.     Vertical_dict = {}  # 生成用于储存垂直数据的字典  
    4.     for index, items in enumerate(x):  # 循环每一行数据  
    5.         for item in items:  # 循环一行中的每一个数据  
    6.             Vertical_dict[item] = Vertical_dict.get(item, []) + [index]  # 构造数据  
    7.     return Vertical_dict  # 返回字典  
    8.   
    9. def main(data, support_per):  
    10.     '''挖掘频繁项集和关联规则'''  
    11.     Vertical_dict = vertical_data(data)  # 构造垂直字典  
    12.     Vertical_dict = {k: v for k, v in Vertical_dict.items() if len(v) > support_per}  # 计算频繁1项集  
    13.     a = Vertical_dict  # 将频繁项集赋给a,因为Vertical_dict在本文将用于储存所有的频繁项集  
    14.       
    15.     while True:  
    16.         a_len = len(a)  # 求k项集的字典的长度  
    17.         a_list = list(a)  # 将字典的键作为列表  
    18.         a = {}  # 将a重新初始化,因为要更新a的项集了  
    19.          
    20.         for i in range(a_len - 1):  # 循环从1到n-1项(索引)  
    21.             for j in range(i + 1, a_len):  # 每次都选取i以后的项与i组合(索引)  
    22.                 key_i = a_list[i]  # 取出对应的i的键  
    23.                 key_j = a_list[j]  # 取出对应的j的键  
    24.                 inter = sorted(set(Vertical_dict[key_i]) & set(Vertical_dict[key_j]))  # 计算交集  
    25.                   
    26.                 if len(inter) > support_per:  # 保留支持度大于最小支持度的项  
    27.                     key_list = sorted(set(key_i.split() + key_j.split()))  # 对两组数据以空格切开形成列表并去重然后排序得到组合项  
    28.                     key_str = " ".join(key_list)  # 对该组合项变成字符串,两两数据之间用空格隔开  
    29.                     a[key_str] = inter  # 生成组合项和对应的交集  
    30.          
    31.         Vertical_dict = {**Vertical_dict, **a}  # 将得到的频繁k项集和原始频繁(1,k-1)项集合并  
    32.          
    33.         if len(a) <= 1:  # 打破循环并输出  
    34.             print(Vertical_dict)  
    35.             break  
    36.   
    37. # 示例数据集  
    38. data = [  
    39.     ['l1', 'l2', 'l5'],  
    40.     ['l2', 'l4'],  
    41.     ['l2', 'l3'],  
    42.     # ... 其他事务  
    43. ]  
    44.   
    45. # 设置最小支持度  
    46. support_per = 1  
    47.   
    48. # 挖掘频繁项集  
    49. main(data, support_per)
    复制代码
                                                                                                                                 
  • FP-Growth算法:是一种无需天生候选集的关联规则挖掘算法,它通过构建频繁模式树(FP-tree)来压缩存储频繁项集,并利用频繁模式树进行关联规则的挖掘。(以下是使用python和mlxtend库实现FP-Growth算法的底子代码。)
    1. import pandas as pd  
    2. from mlxtend.frequent_patterns import fpgrowth  
    3.   
    4. # 示例数据集  
    5. data = pd.DataFrame([  
    6.     ['牛奶', '面包', '尿布'],  
    7.     ['啤酒', '面包'],  
    8.     ['牛奶', '尿布', '可乐'],  
    9.     # ... 其他事务  
    10. ], columns=['Item'])  
    11.   
    12. # 将数据集转换为适合FP-Growth算法的格式  
    13. transactions = data['Item'].apply(lambda x: x.split()).tolist()  
    14.   
    15. # 设置最小支持度  
    16. min_support = 0.5  
    17.   
    18. # 挖掘频繁项集和关联规则  
    19. frequent_itemsets = fpgrowth(transactions, min_support=min_support, use_colnames=True)  
    20. rules = fpgrowth.association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)  
    21.   
    22. # 输出结果  
    23. print("频繁项集:", frequent_itemsets)  
    24. print("关联规则:", rules)
    复制代码
    留意:在实际应用中,大概需要根据详细的数据集和需求对代码进行调整和优化。此外,上述代码示例中使用的库(如efficient_apriori和mlxtend)大概需要通过pip进行安装
五、关联规则的应用范畴

关联规则(Association Rules)是反映数据库中一个事物与其他事物之间的相互依存性和关联性,可以被广泛地应用于多个范畴。以下是关联规则的一些重要应用范畴,并扼要附上干系描述及图片说明(由于笔墨表达的限定,无法直接展示图片,但我会用笔墨描述图片大概的内容):
1. 零售与电商



  • 在传统零售业中,关联规则挖掘技能被广泛应用于购物篮分析,通过分析顾客购物篮中商品之间的关联,发现顾客的购物习惯,从而优化货架商品摆放、制定交叉销售策略等。
  • 在电商范畴,关联规则也被用于商品推荐、捆绑销售等场景,帮助电商平台进步销售额和用户满足度。
  • 一张超市货架的图片,展示了关联规则挖掘后,将经常一起购买的商品(如尿布和啤酒)摆放在一起的情况。
  • 一张电商平台商品推荐页面的截图,展示了基于关联规则的商品推荐列表。
2. 通信



  • 关联规则在通信范畴的应用重要体如今用户行为分析上,通过分析用户的通话、短信、上网等行为数据,发现用户之间的关联性,为运营商提供精准营销、网络优化等决策支持。
  • 一张展示通信网络流量数据的图表,通过关联规则分析,可以识别出用户之间的通信模式。
3. 金融



  • 在金融范畴,关联规则挖掘技能被用于识别欺诈行为、分析客户交易行为等场景。通过分析客户的交易记录,发现非常交易模式,从而及时预警和防范金融风险。
  • 一张展示客户交易记录的图表,通过关联规则分析,可以识别出非常交易模式。
4. 交通

应用描述


  • 在交通范畴,关联规则挖掘技能被用于分析交通流量、交通事故等数据,发现交通拥堵、事故频发等题目标关联性,为交通管理部门提供决策支持。
  • 一张城市交通流量分布图,通过关联规则分析,可以识别出交通拥堵的热点区域。
5. 康健医疗

应用描述


  • 在康健医疗范畴,关联规则挖掘技能被用于疾病诊断、药物疗效评估等场景。通过分析患者的病历、检查结果等数据,发现疾病与症状、药物与疗效之间的关联性,为医生提供辅助诊断和治疗建议
六、结论与预测

综上所述,大数据关联规则作为数据挖掘范畴的一项紧张技能,凭借其强盛的数据分析和模式发现能力,在各行各业中发挥着举足轻重的作用。通过挖掘数据集中项集之间的风趣关联或干系性,关联规则不但能够揭示数据背后的隐蔽规律,还能为决策制定提供有力的数据支持。
在技能的不断发展中,关联规则挖掘算法如Apriori、Eclat和FP-Growth等不断优化和完善,使得处理大规模数据集变得更加高效和准确。这些算法各具特色,实用于不同的应用场景和数据特点,为关联规则挖掘提供了丰富的选择。
预测将来,随着大数据技能的不断进步和人工智能的快速发展,关联规则挖掘技能将迎来更加广阔的发展远景。一方面,算法的优化和创新将进一步提升关联规则挖掘的效率和准确性;另一方面,关联规则挖掘技能将与深度学习、自然语言处理等技能相联合,拓展其在图像识别、语音识别等复杂范畴的应用。
同时,我们也应看到关联规则挖掘技能面临的寻衅和机遇。在数据隐私保护和信息安全方面,怎样确保数据的安全性和隐私性成为亟待解决的题目。此外,随着数据规模的爆炸式增长和数据类型的多样化,怎样有效处理和分析这些数据,挖掘出更有价值的关联规则,也是将来研究的紧张方向。
总之,大数据关联规则挖掘技能作为一项紧张的数据挖掘技能,将在将来的发展中不断显现出其强盛的潜力和价值。我们有理由相信,在不久的将来,关联规则挖掘技能将在更多范畴发挥紧张作用,为人类社会的发展和进步贡献更多的聪明和气力。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表