推荐系统-关联规则理论基础与业务实践

关联规则挖掘:发现数据中的隐藏价值 在当今数据爆炸的时代,我们被海量信息所淹没,但真正有价值的是数据之间的隐藏关联。关联规则挖掘作为数据科学领域的一项核心技术,能够揭示数据中项集之间有趣的关联或相关联系。本文将带你踏上一段从理论到实践的深度旅程,系统解析关联规则挖掘的核心概念、经典算法(如Apriori和FP-Growth)、评估指标及优化策略。通过零售、电商、医疗、金融等多个行业的真实案例,我们将展示如何将这些理论知识转化为实际业务价值。 阅读详情

推荐系统-关联挖掘算法实战

1.基于知识的推荐方法简介

  • 基于知识区别于以往基于协同过滤算法,基于知识的推荐更多的是交互式问答的环节,分为基于约束的部分,第二是基于实例的部分,使用基于关联规则方法全是基于知识的推荐。

2.关联规则算法引入

  • 啤酒与尿布的故事
  • 关联规则-------寻找关联购买商品的关系
  • **关联分析,**用于发现隐藏在大型数据集中有意义的联系。
  • 购物篮分析----一次购买分析-----购买小票数据分析
  • 行-----用户购买------事务
  • 列-----商品集合------项集
  • K项集-----购买商品集合的个数就是几项集

3.关联分析问题定义

  • 对关联分析问题定义
    • 二元表示
      • 只对用户是否购买关心,买计为0,不买计为1
    • 项集
      • 项在项集中出现的次数,K项集
    • 支持度计数
      • 包含特定项集(需求的项集-->列)的事务个数
    • 支持度(S)和置信度©
      • 支持度=支持度计数/事务总数
      • 置信度=支持度计数/前置项(在哪一个项集出现的情况下)出现次数=====在X发生的条件下X和Y共同发生的概率
        • 解释 : X->Y中X就是前置项 , X∩Y就是支持度计数
    • 为什么需要使用支持度和置信度?
      • 支持度可以用于筛选无意义的规则
        • 筛选掉不被频繁购买的商品
        • 用于频繁项挖掘
      • 置信度可以用于选择关联规则
        • 统计购买过X的用户中同时购买Y的概率
        • 用于规则产生
    • 关联规则发现:给定事务的集合T,关联规则发现是指**找出支持度大于等于minsup(最小支持度)并且置信度大于等于minconf(最小置信度)**的所有规则。
    • 将关联规则挖掘任务分解为两个子任务:
      • (1)频繁项集的产生:其目标是发现满足最小支持度阈值的所有项集,这些项集就是频繁项集(frequent itemset)。该任务开销也是最大的。
      • (2)规则的产生:其目标是从上一步发现的频繁项集中提取所有高置信度规则,这些规则称作强规则。
    • 如何挖掘关联规则?
      • 筛选掉不满足支持度阈值的项集,筛选掉不满足置信度阈值的项集
      • 频繁项集:频繁出现的商品列表
        • 支持度计数,如果支持度计数大于一个阈值,将其设置为频繁项集
        • 支持度:如果支持度阈值达到一个阈值,将其设置为频繁项集
    • 为了降低频繁项集产生的计算复杂度,采用两种方法:
      • (1)减少候选项集的数目(M):使用先验Apriori原理,无需计算支持度而删除某些候选项集的有效方法。也算是一种剪枝的方法。
      • (2)减少比较次数:将每个候选集与每个事务相匹配,同时,可以存储候选项集或压缩数据集减少比较次数。
    • 如何挖掘频繁项集?
      • 通过建立树的方法,通过1项集组合成2项集,通过2项集组合3项集,依次进行组合…
      • 树的复杂度带来的是存储和计算的复杂度的增加
      • 两个剪枝原理:
        • 如果一个集合是频繁项集,他的子集一定是频繁项集
        • 如果一个子集是非频繁项集,他的超集一定是非频繁项集
      • 剪去无意义的规则即可

4.Apriori算法详解

  • 频繁项集产生算法
  • 算法思想:Apriori算法通过设置最小支持度阈值或最小支持度计数,通过扫描数据库得到候选1项集,通过筛选不满足最小支持度计数的商品得到频繁1项集,依次根据候选K-1项集得到频繁K-1项集,直到得到频繁K项集
  • 算法步骤:
    • 1.算法扫描数据库,统计候选1项集中每个项出现的次数,根据设定的最小的支持度阈值筛选掉不满足最小支持度阈值的项得到频繁1项集
    • 2.算法再次扫描数据库,得到候选2项集,筛选掉不符合条件的项,得到频繁2项集,由此类推
    • 3.通过指定算法迭代次数或指定阈值或没有新的频繁项集产生 , 算法结束
  • 算法特点:
    • 逐层计算:频繁1项集-频繁2项集…
    • 产生-测试:拿到候选1项集-----频繁1项集----候选2项集-----频繁2项集
  • 算法改进:
    • 减少扫描数据库次数
  • 算法应用场景
    • 关联挖掘场景分析–捆绑销售购买

5.候选集的产生和剪枝与支持度计数

  • 候选集产生和剪枝
    • 蛮力方法–从大量的候选1项集中选择项集的组合

在这里插入图片描述

  • F(K-1)*F(1)—通过字典顺序进行排序-----进行组合(避免重复组合)

在这里插入图片描述

  • F(k-1)*F(k-1)=F(k)----通过字典排序,拿到相同前置项将后置项进行组合的方式

在这里插入图片描述

  • 枚举类型(了解)

在这里插入图片描述

  • Hash分桶类型(了解)

在这里插入图片描述

6.Apriori规则产生

  • 根据频繁项集得到规则的子集
  • 计算子集的置信度,设定一个置信度阈值,如果小于置信度阈值的筛选掉,选择置信度阈值大于或等于指定置信度阈值的项的集合
  • 根据逐层产生规则筛选,规则同上

7.Apriori案例补充

在这里插入图片描述

  • 扫描数据库,根据候选项集得到频繁项集
  • 根据频繁项集得到关联规则
  • Apriori算法挑战
    • 多次数据库扫描
    • 巨大数量的候补项集
    • 繁琐的支持度计算
  • Apriori改进
    • 减少扫描数据库的数量
    • 减少候选项集的数量
    • 简化候选项集的支持度计算

8.Apriori源码梳理与讲解

在这里插入图片描述
在这里插入图片描述

  • Apriori算法源码

    • 产生频繁项集
      • 参考课件python版本代码
    • 产生关联规则
      • 参考代码

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

9.FP-Growth算法引入

  • Apriori算法不足的地方
    • Apriori算法产生和测试的技术,需要产生候选项集,找出符合最小支持度计数的频繁项集
    • 将会在Apriori算法中得到非常多的候选项集
    • Apriori扫描数据库的次数较多
  • FP-Growth算法
    • 频繁项-增长算法—依赖于FP结构的树结构
    • 如何构建FP树?
    • 如何从FP树中挖掘频繁项?
    • FP树中产生频繁项集需要扫描几次数据库?

10.FP-Growth树表示

  • 算法思想:通过扫描数据库拿到候选1项集,得到频繁1项集,根据频繁1项集中各个项出现的次数按照从大到小的顺序进行排列,对原来数据集进行重新排序组合,算法第二次扫描数据库,将所有的已经排好顺序的项依照出现的次序进行构建FP树。
  • 算法步骤:
    • 1.通过扫描数据库拿到候选1项集,得到频繁1项集,根据频繁1项集中各个项出现的次数按照从大到小的顺序进行排列,对原来数据集进行重新排序组合----目的是为了构建决策树的过程中 , 构建的树是唯一
    • 2.算法第二次扫描数据库,将所有的已经排好顺序的项依照出现的次序进行构建FP树。
    • 3.对于出现的次数需要在对应的节点中声明,有一个指针列表连接各个相同的节点

在这里插入图片描述

  • 算法要点
    • (1)FP树最好的情况下,所有的事务都具有相同的项集,FP树只包含一条节点路径。最化的情况,FP树的大小实际上和源数据大小一样大。
    • (2)FP树的大小也取决于项的排序方式。如果不按照上述的按支持度计数由高到底的排列,则得到的FP树也是不同的。
    • (3)FP树包含了一个连接具有相同项节点的指针列表,在上图中相同项的节点使用虚线连接起来,有助于快速访问树中的项。

11.FP-Growth算法频繁项集产生方法

  • FP树产生频繁项集的方法采用分而治之的方法
  • 算法步骤:(接上)
    • 4.通过FP树寻找后缀节点的前缀路径,如以e节点作为后缀节点,寻找以e节点的前缀路径,如ea、ec、eb、eac、ebc等路径
    • 5.在寻找路径的时候需要将后缀节点删除,更新前缀路径上支持度计数,将不满足支持度计数的节点删除掉,将满足条件的称为频繁项集

在这里插入图片描述

在这里插入图片描述

  • 算法总结:
    • 如何构建FP树?
      • 首先,需要将候选1项集中各个项通过扫描数据库得到频繁1项集,并且记录每个一项集出现的频次,根据出现频次的高低对源数据中各个项进行重排序 (第一次扫描数据库)
      • 其次,需要第二次扫描数据库,建立FP树,首先将第一条事务数据读入,再读入第二条,如果各个项在路径中有重复的项需要计数加1,从而得到FP树
    • FP树中产生频繁项集需要扫描几次数据库?
      • 扫描两次数据库
    • 如何从FP树中挖掘频繁项?
      • 寻找后缀节点的前缀路径,从而得到频繁项集

12.FP-Growth算法案例讲解

  • 算法扫描两次数据库
  • 首先扫描数据库一次,按照候选1项集中满足最小支持度计数的构成频繁1项集,按照频繁1项集中出现的次数对源数据进行重新排序
  • 再次扫描数据库,构建FP树
  • 最后对FP树进行挖掘频繁项集

13.FP-Growth算法源码梳理

  • 算法扫描两次数据库
  • 首先扫描数据库一次,按照候选1项集中满足最小支持度计数的构成频繁1项集,按照频繁1项集中出现的次数对源数据进行重新排序
  • 再次扫描数据库,构建FP树
  • 最后对FP树进行挖掘频繁项集
  • Jupyter(丘比特)=Java+python+R+Julia(MIT)

14.Spark频繁模式挖掘实践

  • Spark中提供了FP-Growth算法完成频繁项挖掘和规则生成(PEP)

  • 超参数:

    • 三个:
    • minsupport最小支持度 ==> 删除无意义规则 , 筛选频繁项
    • minconfidence最小置信度 ==> 选取规则
    • numpartitions分区数量 ==> 让数据定性化分布到不同的partition中处理
  • FPGrowthModel规定

    • freqItemsets:频繁的项目集格式为DataFrame(“items”[Array],“freq”[Long])
    • associationRules:上面以置信度生成的关联规则minConfidence,格式为DataFrame(“antecedent”[Array],“结果”[Array],“confidence”[Double])
    • transform:对于每个事务itemsCol,该transform方法将其项目与每个关联规则的前提进行比较。
  • package cn.apple.BigDataMachineLearningPro
    
    import org.apache.spark.sql.SparkSession
    import org.apache.spark.ml.fpm.FPGrowth
    
    /**
      * Created by zhao-chj on 2018/11/13.
      */
    object FPGrowth {
      def main(args: Array[String]): Unit = {
        val spark: SparkSession = SparkSession.builder()
          .appName("SparkMlilb")
          .master("local[2]")
          .getOrCreate()
        spark.sparkContext.setLogLevel("WARN")
        import  spark.implicits._
        val dataset = spark.createDataset(Seq(
          "1 2 5",
          "1 2 3 5",
          "1 2")
        ).map(t => t.split(" ")).toDF("items")
    
        val fpgrowth = new FPGrowth().setItemsCol("items").setMinSupport(0.5).setMinConfidence(0.6)
        val model = fpgrowth.fit(dataset)
    
        // Display frequent itemsets.
        model.freqItemsets.show()
        //    antecedent ===> consequent
        // Display generated association rules.
        model.associationRules.show()
    
        // transform examines the input items against all the association rules and summarize the
        // consequents as prediction
        model.transform(dataset).show()
      }
    }
    

15.基于Spark的FP-Growth算法项目实战

  • 数据来源:从Hive处理后的数据,以\001默认方式进行分割
  • 数据格式 : [用户id\001商品id\001用户行为类型\001时间戳\001该行为在这一天的次数]
  • 数据处理:
    • 将原始数据中购买的数据提取出来
    • 将购买数据整理成购物篮数据(行–事务、列–项集)
  • 算法建模
    • Spark-FPGrowth算法 ---- MLlib
    • 指定三个超参数-最小支持度、最小置信度、分区数-----run方法(mllib)-----fit方法(ml)
  • 算法预测:
    • 得到频繁项集
    • 得到关联规则
    • ml库中提供transform方法将事务中出现的项的集合并且规则的前件中存在的直接给出预测结果

16.Mlxtend 库实战Apriori 算法(了解)

  • mlxtend库实现了机器学习扩展库 ===> 安装 : pip install mlxtend
  • 关联规则算法
    • Apriori----频繁项挖掘
    • AssosiateRules----规则产生

17.频繁项集的关联规则生成(了解)

  • Assosociate规则
    • confidence置信度
    • lift(置信度/支持度) ==>[0,inf] (inf表示无穷大)
    • leaverage(支持度[A->C]-支持度[A]*支持度[C]) ==> [-1,-1]
    • convition((1-支持度[C])/(1-置信度(A->C))) ==> [0,inf]

18.利用Python 进行市场购物篮简易分析

  • 使用mlxtend库实战购物篮分析
  • 首先处理数据将数据整理为算法所需要的数据格式
  • 通过apriori算法实现关联规则
  • 通过associateRules进行规则提取

19.总结在这里插入图片描述

关联规则挖掘实战:从超市小票到Python落地 关联规则挖掘是一种面向事务型数据的无监督模式发现技术,核心在于识别商品、行为或事件之间的共现关系。其原理基于支持度、置信度与提升度三重指标协同评估,既规避了因果推断的复杂性,又保留了强业务可解释性。该技术在零售推荐、电商搭配、内容关联等场景中具备显著工程价值,尤其适合需要快速验证、低门槛部署与高透明度决策的业务系统。本文聚焦Apriori算法原理与mlxtend库实战,覆盖数据清洗、参数调优、规则过滤及AB测试闭环,解决‘规则爆炸’‘内存溢出’‘上线无效’等高频落地难题。 阅读详情

相关推荐

19、机器学习理论与实践全解析

本文全面解析了机器学习的理论与实践,涵盖了监督学习、无监督学习、半监督学习和强化学习等多种类型,并详细介绍了基于不同方法的算法分类及适用场景。文章还通过多个现实世界数据集展示了如何应用这些算法,并提供了回归分析、聚类算法和关联规则挖掘的具体操作步骤和代码示例。最后,总结了机器学习的关键要点并给出了实际应用中的建议。

kotlin6android的博客 66

推荐系统(基于关联规则和基于协同过滤)

基于协同过滤的推荐系统 基于用户的协同过滤 算法原理 ① 找到和目标用户兴趣相似的用户集合,三种常用的用户相似度指标是皮尔逊相关系数、余弦相关系数和杰卡德相关系数 ② 根据用户相似度和相似个K个用户的得分,加权计算分数,得到目标用户对商品的评分 ③找到这个集合中的用户所喜欢的,并且目标用户没有听说过的物品推荐给目标用户。 注意:各相似用户的评分应该减去均值进行计算,最终代入目标用户的均值+加权...

hesujiao的博客 1953

大数据领域数据架构的关联规则挖掘应用

传统关联规则算法在大数据场景下的三大挑战计算复杂度高:Apriori需要多次扫描数据库生成候选集,IO开销极大;实时性不足:批处理模式无法处理流数据(如实时交易);数据异构性:非结构化数据(如文本)无法直接用传统项集模型处理。关联规则挖掘是大数据分析的“钻石工具”,其核心价值在于从海量数据中发现隐藏的关联,为企业提供决策支持。本文从理论基础(支持度、置信度、提升度)、算法演化(从Apriori到分布式FP-Growth)、架构设计(大数据下的五层架构)、实际应用(企业级实施策略)、高级考量。

大数据洞察的博客 1167

91 推荐算法——关联规则

推荐算法——关联规则1 推荐系统的基本概念推荐算法经典应用2 什么是推荐系统推荐系统分类推荐算法分类推荐系统的评价指标3 购物篮分析与关联规则关联规则:概念计算支持度和置信度理解支持度与置信度关联规则:提升度关联规则挖掘4 关联规则挖掘:Apriori算法Apriori算法步骤:举例Apriori算法优缺点5 FpGrowth算法步骤:举例6 关联规则的优缺点7 案例:家居用品商店 1 推荐系统的基本概念 推荐算法经典应用 亚马逊把推荐成功地应用到购物网站,如买了X的人还买了Y,亚马逊有**20%-30%*

THE ORDER 3760

12、人工智能在理论与实践中的应用

本文探讨了人工智能在多个实际应用领域的潜力与价值,包括信息检索中的语义理解和上下文感知、知识管理的自动化分类与关联规则挖掘、推荐系统的协同过滤与内容推荐、智能代理的多智能体系统及其应用场景,以及如何通过AI技术提升组织的整体竞争力。

brandy的博客 170

机器学习-08-关联规则和协同过滤

本系列是机器学习课程的系列课程,主要介绍机器学习中关联规则和协同过滤。

IT从业者的成长历程 1824

频繁项集挖掘以及关联规则的基本概念

一.几个基本概念 1.支持度计数:即包含含特定项集的事务个数。 2.支持度: 计算方式:对于关联规则X–>Y,s=support(X∪Y)/N,其中,N为事务的个数,support(X∪Y)为项集{X,Y}的支持度计数。 3.置信度:对于关联规则X–>Y,c=support(X∪Y)/support(X)。 4.为什么要使用支持度和置信度? 支持度:是一种重要度量,因为支持度很低的规则可能只是偶然出现。因此,支持度通常用来删去那些毫无意义的规则。 置信度:对于给定的规则X–>Y,置信度越高

qq_39872456的博客 4735

基于关联规则的个性化推荐系统

以数据挖掘中的关联规则理论为基础,从应用的角度出发,设计了一套相关产品推荐系统ARecom ,实 现了电子购物中的个性化服务。针对直接决定整体算法效率的频繁大项集生成步骤,应用大量的数据,研究比较 了三种典型算法,并在此基础上,提出了适合电子商务相关推荐系统的完整的算法模型。

05-推荐系统-关联挖掘算法实战

推荐系统-关联挖掘算法实战 1.基于知识的推荐方法简介 基于知识区别于以往基于协同过滤算法,基于知识的推荐更多的是交互式问答的环节,分为基于约束的部分,第二是基于实例的部分,使用基于关联规则方法全是基于知识的推荐。 2.关联规则算法引入 关联规则-------寻找关联购买商品的关系 购物篮分析----一次购买分析-----购买小票数据分析 行-----用户购买------事务 列-----商...

weixin_43614188的博客 617

配置 NVIDIA RTX 5090 + sm_120 + flashattention,已跑通一个大模型 ~~

本文介绍了在Ubuntu 22.04系统下为NVIDIA RTX 50系显卡搭建深度学习环境的完整流程。重点包括:1)安装适配50系显卡(sm_120架构)的CUDA 12.9驱动和Toolkit,需注意禁用系统自带驱动;2)配置环境变量解决nvcc命令识别问题;3)通过源码编译方式安装支持sm_120的PyTorch nightly版本(cu129),解决官方二进制包不兼容问题。整个过程涉及显卡驱动安装、CUDA环境配置、PyTorch适配等关键步骤,并提供了详细的验证方法和常见问题解决方案。文中特别强调

qq_36674060的博客 6160

VirtualBox虚拟机上ubuntu系统安装问题记:显示画面太小、启动就异常退出等

报错:Failed to load R0 module D:/VMMR0.r0: The path is not clean of leading double slashes: ‘D:/VMMR0.r0’ (VERR_SUPLIB_PATH_NOT_CLEAN).解决方法特别简单,就是安装VIrtualBox的时候不要安装在CDE等盘根目录下。首先VirtualBox的下载安装过程是比较简单的,此处就不赘述了。然后E盘下新建个目录,安装到这个目录下就可解决。

qq_42595610的博客 2825

推荐系统之关联分析思路

推荐系统和精准营销的思路如下。 一、数据概况 由于无法通过网络获取到数据信息,因此进行真实的问卷调研,以此达到数据的关联和引申分析。制作简单问卷调查访问如下所示: 首先,当人们浏览网站的时候,基本上是去浏览自己关注的话题和兴趣话题,因此谷歌、百度等搜索引擎将留下其网络信息,以此作为数据存储。其次,谷歌、今日头条、百度等SEO网络运营商和小红书、淘宝、天猫等进行了业务上的关系和合作。那此时,在浏览...

dltan 1173

减小伺服电机共振的方法(以松下伺服为例)

嘿 ! 我是【小黄】 , 我们又见面啦 !!! 毕竟技术只有大家交流才会进步嘛 ! 这博客是对自己学习的一点点记录和总结 ,如果您对自动控制感兴趣的话 ,可以关注一下我的动态 , 我们一起学习呀 ! 我们都还年轻 ,我们还有无限可能 。 YES ! 减小伺服电机共振的方法(以松下伺服为例)1. 准备工作:1.1.1 如何推定共振点:1.1.2 测定实操:1.1.3 总结:2. 下期预告: 在我们调试完伺服参数以后机器人运动到某个特定位置会产生振动或异响,我们要做的就是消除这个异响保..

在下小黄的博客 1万+

数据科学——关联规则学习(Association Rule Learning)

关联规则学习作为一种强大的数据分析工具,其潜力远未被完全发掘。未来的发展方向将更加侧重于算法的高效性与可扩展性、深度学习与传统方法的融合、以及在新兴领域的应用探索。同时,伴随着对数据伦理的深入讨论,关联规则学习的应用将更加注重平衡技术进步与社会责任,确保数据科学在促进社会福祉的同时,维护个人隐私和数据安全。

weixin_43156294的博客 1398

72、海洋地理信息系统:电子海图的全面解析

本文全面解析了海洋地理信息系统中的电子海图技术,从AIS数据的应用、电子海图数据的存储与显示,到电子导航的发展趋势和S-100通用水文数据模型的推广,系统地阐述了电子海图在现代航海中的核心作用及其未来发展方向。

hhh00的博客 252

RT-Thread Studio 使用笔记(七)| 配合STM32CubeMX添加裸机驱动(以ADC为例)

1. 配置STM32CubeMX 2. 复制stm32xxxx_hal_msp.c文件 将 CubeMx 生成的代码 stm32f7xx_hal_msp.c 函数复制到 RT-Thread Studio 生成的工程中,并参与工程编译: 由于我们并没有使用 CubeMx 生成的工程,所以这里需要将 stm32f7xx_hal_msp.c 文件中 #include “main.h” 替换为 #i...

Mculover666的博客(嵌入式) 9626

基于真实 SSE 录制构建 Cursor Cloud Agents 回放语料库:macro 的 fixture 驱动测试实践

在 macro 仓库的 `cursor_cloud_agents` crate 中,有一组保存 `api.cursor.com` 原始线上字节的 `.sse` 语料,以及围绕它搭建的回放流水线。这种设计把解码、事件命名和 ACP 翻译三段串联起来,让录制文件必须从字节层开始复现;这与"用已解码事件做 fixture"的思路在本质上不同。读完本文,你将掌握这套语料库的组织方式、七个分块尺寸的守恒性测

gitblog_00979的博客 1033

UE5 GAS 学习笔记 1.2游戏标签

这一节对GameplayTag游戏标签进行详细的讲解。

CloudHuCoding 1927

机器学习-08-关联规则更新

本文主要介绍关联规则的推导过程,并提供FPGrowth算法的简介,在最后提供了手写apriori算法以及封装好的算法库的使用

IT从业者的成长历程 1225

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1104

IEC104协议学习专栏内容规划

IEC104协议的编程学习

sixtome 1110

FlowiseAI关联规则:Apriori算法实战

你是否曾经在电商平台购物时,惊讶于系统能够精准推荐"购买了A商品的用户也购买了B商品"?这种神奇的推荐能力背后,正是关联规则挖掘(Association Rule Mining)在发挥作用。而Apriori算法作为关联规则挖掘的经典算法,已经成为数据挖掘领域的基石技术。 在FlowiseAI这个强大的可视化LLM流程构建平台中,我们可以通过自定义工具(Custom Tool)功能,轻松集成Apr...

gitblog_00648的博客 429

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

关联规则:啤酒尿布那点事儿,快被说烂了

凡是讲数据挖掘的入门课,必提啤酒与尿布。这个故事传了快三十年,几乎成了关联规则的同义词。据说沃尔玛发现年轻爸爸买尿布的时候经常会顺手拎一提啤酒,于是把这两样东西摆在一起,销量双双上涨。讲的人唾沫横飞,听的人恍然大悟:原来数据挖掘这么简单又神奇。且不说这个故事的真实性一直存疑。就算它是真的,它在当代的数据挖掘实践里也几乎是完全不可复制的孤例。真实世界的关联规则分析,远比你想象的要脏、要无聊、要被业务方不断挑战。这篇我想聊聊,当“啤酒尿布”的光环褪去后,关联规则在实际项目中长什么样。

weixin_44834755的博客 197

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

面向高校图书馆的混合推荐系统,融合协同过滤、Apriori关联规则、用户分类偏好和热门推荐四种算法

1. 绪论1.1 研究背景与意义近年来,高校图书馆数字化转型持续深入,馆藏电子化与纸质资源并行扩张已成为普遍现象。以普通本科院校为例,年均新增纸质图书可达十万册以上,加上采购的电子书数据库,读者实际可触达的资源规模远超其浏览能力。这种“信息过载”的局面使得传统依赖分类导航和关键词检索的查找方式效率锐减,读者往往只能接触到热门或教师指定的少量文献,大量优质馆藏处于“零借阅”状态。与此同时,商业阅读平台和知识付费产品已广泛部署推荐算法,用户对内容发现工具的期待随之提高,图书馆静态的检索服务与读者日常使用的数

weixin_49081159的博客 830

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

机器学习关联规则挖掘实战:从Apriori到FP-Growth,电商推荐系统的核心算法解析

本文从关联规则核心概念出发,深入解析Apriori和FP-Growth算法原理,结合电商推荐系统实战案例讲解数据准备、参数调优和推荐策略。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 117

15分钟搞懂关联规则挖掘:Apriori算法公式推导与实战

你是否还在为商场促销活动的选品搭配而烦恼?是否想知道"购买了尿布的顾客有80%会同时购买啤酒"这类关联规则是如何被发现的?本文将通过Datawhale开源项目pumpkin-book中的规则学习理论,带你快速掌握关联规则挖掘的核心算法——Apriori,从公式推导到实战应用,让你15分钟内从小白变身数据关联分析师。 ## 关联规则挖掘的核心价值 关联规则挖掘(Association Rule

gitblog_00358的博客 554
上一篇: 推荐系统-基于模型协同过滤理论基础与业务实
下一篇: 推荐系统-Python语言及数据科学库基础(一)
CoderBoom
博客等级 码龄8年 62粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值