数据挖掘之第6章 关联规则:基本概念和算法

基本概念

  • X->Y ,其中X和Y是不相交的项集

  • 支持度:给定数据集的频繁程度

    • 支持度很低的规则可能只是偶然出现
    • 通常用来删去那些无意义的规则
  • 置信度:确定Y在包含X的事务中出现的频繁程度

    • 通过规则进行推理具有可靠性
  • 关联规则不必然蕴含因果关系,只表示前件和后件中的项明显地同时出现

  • 从数据集提取的可能规则的总数很高,事先对规则进行剪枝,减少对支持度和置信度不必要的计算

提高算法性能

  • 分解成两个主要的子任务:
    • 频繁项集产生:发现满足最小支持度阈值的所有项集
    • 规则产生:从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则

6.2 频繁项集的产生

  • 降低候选项集的数目(M) —— 先验原理(不用计算支持度值而删除某些候选集的有效方法)
  • 减少比较次数
    • 替代将每个候选项集与每个事务相匹配,可以使用更高级的数据结构
      • 存储候选项集
      • 压缩数据集

6.2.1 先验原理

  • 使用支持度度量,减少频繁
  • 先验原理:如果一个项集是频繁的,则它的所有子集一定也是频繁的。
  • 反单调性:一个项集的支持度决不会超过它的子集的支持度
    • 任何具有反单调性的度量都能直接结合到挖掘算法中,具有对候选项集指数搜索空间进行有效地剪枝

6.2.2 Apriori算法的频繁项集产生

  • 有两个重要的特点:
    • 逐层算法:从频繁1-项集到最长的频繁项集,每次遍历项集格中的一层
    • 使用 产生-测试 策略来发现频繁项集

6.2.3 候选的产生与剪枝

  • aprior-gen函数通过两个操作产生候选项集:
    • 候选项集的产生:
      • 产生方法:

        • 蛮力方法:将所有的k-项集都看作可能的候选,然后使用候选剪枝除去不必要的候选
          在这里插入图片描述
      • F_k-1 * F1方法: 用其他频繁项来扩展每个频繁(k-1) 项集、

        • 确保每
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据挖掘是一种从大量数据提取有用信息的过程。数据挖掘原理与算法第四版是一本介绍数据挖掘基本概念、方法和算法的书籍。其包括以下内容: 1. 数据挖掘概述 2. 数据预处理 3. 分类与预测 - 决策树分类方法 - 贝叶斯分类方法 - K-最近邻分类方法 - 集成学习方法 4. 聚类分析 5. 关联规则挖掘 6. 离群点分析 7. 数据挖掘应用 以下是一个示例,展示如何使用K-最近邻分类方法对给定数据进行分类: 引用给出了一组数据点的坐标,我们可以使用K-最近邻分类方法将这些点分为两类。具体步骤如下: 1. 将数据集分为训练集和测试集。 2. 对于测试集的每个数据点,计算它与训练集所有数据点的距离。 3. 选取距离最近的K个数据点,根据它们的类别来预测测试集数据点的类别。 4. 重复步骤2和3,直到测试集所有数据点都被分类。 下面是使用Python实现K-最近邻分类方法的示例代码: ```python from math import sqrt # 计算两个点之间的欧几里得距离 def euclidean_distance(point1, point2): distance = 0.0 for i in range(len(point1)): distance += (point1[i] - point2[i]) ** 2 return sqrt(distance) # 根据K-最近邻分类方法对数据进行分类 def k_nearest_neighbors(train, test, k): distances = [] for train_point in train: distance = euclidean_distance(train_point[:-1], test[:-1]) distances.append((train_point, distance)) distances.sort(key=lambda x: x[1]) neighbors = [distances[i][0] for i in range(k)] classes = [neighbor[-1] for neighbor in neighbors] prediction = max(set(classes), key=classes.count) return prediction # 测试K-最近邻分类方法 dataset = [[1.0, 0.0, 0], [4.0, 0.0, 0], [0.0, 1.0, 0], [1.0, 1.0, 0], [2.0, 1.0, 0], [3.0, 1.0, 1], [4.0, 1.0, 1], [5.0, 1.0, 1], [0.0, 2.0, 1], [1.0, 2.0, 1], [4.0, 2.0, 1], [1.0, 3.0, 1]] k = 3 for test_point in dataset: prediction = k_nearest_neighbors(dataset, test_point, k) print('Expected Class: %d, Predicted Class: %d' % (test_point[-1], prediction)) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值