Apriori Hadoop MapReduce

Apriori算法是一种关联规则挖掘模型,起源于1993年,主要用于购物篮分析。该算法在处理分类型数据时表现优秀,通过计算支持度和置信度来衡量规则的强度。在大数据场景下,可以利用Hadoop MapReduce进行分布式处理。算法包括寻找频繁项集和生成规则两个步骤,以满足用户设定的最小支持度和最小置信度。
摘要由CSDN通过智能技术生成

关联规则挖掘

由 Agrawal 等人于 1993 年提出
在数据库和数据挖掘领域已有深入研究的重要的数据挖掘模型.
假设所有数据是分类型的.
对于数值型数据没有好算法.
开始时用于购物篮分析, 寻找顾客购买项之间的关系.

模型: 数据

I = {i1, i2, …, im}: 所有项的集合。
事务 t :
t 是一个项集, 且 t  I。
事务数据库 T: 事务的集合 T = {t1, t2, …, tn}。

事务数据: 超市数据

购物篮事务:
t1: {面包, 芝士, 牛奶}
t2: {苹果, 鸡蛋, 盐, 酸乳}
… …
tn: {饼干, 鸡蛋, 牛奶}
概念:
一个项: 购物篮中的一个商品
I: 超市销售的所有商品的集合
一个事务: 一个购物篮中购买的商品; 可能带TID (事务ID)
一个事务数据库: 事务的一个集合

事务数据: 文档集合

一个文档数据集.每个文档看作一个关键字袋子(bag of keywords)
doc1: Student, Teach, School
doc2: Student, School
doc3: Teach, School, City, Game
doc4: Baseball, Basketball
doc5: Basketball, Player, Spectator
doc6: Baseball, Coach, Game, Team
doc7: Basketball, Team, City, Game

模型: 规则

如果 X  t, 我们称事务 t 包含 X, 其中X是I 中项的一个集合.
关联规则是下面形式的蕴涵式:
X  Y, 其中 X, Y  I, 且 X Y = 
项集 (itemset) 是项的一个集合.
比如, X = {milk, bread, cereal} 是一个项集.
一个k-项集是含有k个项的项集.
比如, {milk, bread, cereal} 是一个3-项集.

规则的强度度量

支持度: 如果事务数据库T 中包含X Y 的事务占sup%, 我们称关联规则X Y 的支持度 为sup%.
sup% = Pr(X  Y).
置信度:如果事务数据库T 中包含X 的事务中有conf%的事务包含Y, 我们称关联规则X Y 的置信度为conf%.
conf% = Pr(Y | X)
关联规则是一种说明当 X 出现时, Y 也以某个概率出现的模式.

支持度和置信度

支持度计数: 在事务数据库T中项集X的支持度计数, 记作X.count, 是T中包含X的事务个数. 假设T 有 n 个事务.
则,

这里写图片描述
这里写图片描述

目标和关键特征

目标: 寻找满足用户指定的最小支持度 (minsup) 和最小置信度 (minconf) 的所有规则.
满足: 不低于

关键特征
完备性: 寻找所有规则.
规则右边没有目标项.
从存放于磁盘 (非内存) 的数据中挖掘.

例子

t1: Beef, Chicken, Milk
t2: Beef, Cheese
t3: Cheese, Boots
t4: Beef, Chicken, Cheese
t5: Beef, Chicken, Clothes, Cheese, Milk
t6: Chicken, Clothes, Milk
t7: Chicken, Milk, Clothes

频繁项集的子集也是频繁的
频繁项集的一个例子:
{Chicken, Clothes, Milk} [sup = 3/7]

从该项集生成的关联规则:

 ClothesMilk, Chicken    [sup = 3/7, conf = 3/3]
     …              …
 Clothes, ChickenMilk,   [sup = 3/7, conf = 3/3]

算法步骤

两个步骤:
寻找所有不低于最小支持度的项集 (频繁项集, 又称大项集).
使用频繁项集生成规则.

这里写图片描述
这里写图片描述

算法例子

minsup=0.5
这里写图片描述
项集:支持度计数
1. 扫描T
 C1: {1}:2, {2}:3, {3}:3, {4}:1, {5}:3
 F1: {1}:2, {2}:3, {3}:3, {5}:3
 C2: {1,2}, {1,3}, {1,5}, {2,3}, {2,5}, {3,5}
2. 扫描T
 C2: {1,2}:1, {1,3}:2, {1,5}:1, {2,3}:2, {2,5}:3, {3,5}:2
 F2: {1,3}:2, {2,3}:2, {2,5}:3, {3,5}:2
 C3: {2, 3,5}
3. 扫描T
 C3: {2, 3, 5}:2
 F3: {2, 3, 5}

package org.digdata.mapreduce.apriori;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class AprioriNode {
   

    public List<String> list = new ArrayList<>();

    public AprioriNode(String str) {
        super();
        this.list = Arrays.asList(str.split(","));
        Collections.sort(this.list);
    }

    public AprioriNode() {
        super();
    }

    public boolean add(String s) {
        if (this.list.contains(s) == false) {
            this.list.add(s);
            Collections.sort(this.list);
            return true;
        } else {
            return false;
        }
    }

    public void remove(int i) {
        this.list.remove(i);
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值