精华内容
下载资源
问答
  • 证券研究报告 金工研究/深度研究 2020 年04 ...乏逻辑推理能力机器学习无法区分数据中的因果关联和虚假关联因果 推断是用于解释分析的建模工具可帮助恢复数据中的因果关联有望实 现可解释的稳定预测本文介绍了基于倾向
  • 商品关联分析

    千次阅读 2016-07-12 17:21:45
    商品关联分析关联 relevance: 主要在互联网的内容和文档上,比如搜索引擎算法文档中之间的关联性。association: 在实际的事物之上,比如电子商务网站上的商品之间的关联度。支持度(support):数据集中包含某...

    商品关联分析

    关联
    relevance: 主要用在互联网的内容和文档上,比如搜索引擎算法文档中之间的关联性。

    association: 用在实际的事物之上,比如电子商务网站上的商品之间的关联度。

    支持度(support):数据集中包含某几个特定项的概率。
    比如在1000次的商品交易中同时出现了啤酒和尿布的次数是50次,那么此关联的支持度为5%。

    置信度(Confidence):在数据集中已经出现A时,B发生的概率,置信度的计算公式是 :A与B同时出现的概率/A出现的概率。


    假设有10000个人购买了产品,其中购买A产品的人是1000个,购买B产品的人是2000个,AB同时购买的人是800个。

    支持度指的是关联的产品(假定A产品和B产品关联)同时购买的人数占总人数的比例,即800/10000=8%,有8%的用户同时购买了A和B两个产品;

    可信度指的是在购买了一个产品之后购买另外一个产品的可能性,例如购买了A产品之后购买B产品的可信度=800/1000=80%,即80%的用户在购买了A产品之后会购买B产品;

    提升度就是在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B产品的可能性之比,没有任何条件下购买B产品可能性=2000/10000=20%,那么提升度=80%/20%=4。


    数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联等。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,或者即使知道也是不确定的,因此关联分析生成的规则带有置信度。

    关联规则挖掘的一个典型例子是购物篮分析(MBA,Market Basket Analysis)。关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响。分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。

    关联规则的发现过程可分为如下两步:

    第一步是迭代识别所有的频繁项目集(Frequent Itemsets),要求频繁项目集的支持度不低于用户设定的最低值;

    第二步是从频繁项目集中构造置信度不低于用户设定的最低值的规则,产生关联规则。识别或发现所有频繁项目集是关联规则发现算法的核心,也是计算量最大的部分。

    最小支持度(min-support)和最小置信度(min-confidence)
    支持度和置信度两个阈值是描述关联规则的两个最重要的概念。一项目组出现的频率称为支持度,反映关联规则在数据库中的重要性。而置信度衡量关联规则的可信程度。如果某条规则同时满足最小支持度(min-support)和最小置信度(min-confidence),则称它为强关联规则。

    关联规则数据挖掘阶段

    第一阶段必须从原始资料集合中,找出所有高频项目组(Large Itemsets)。高频的意思是指某一项目组出现的频率相对于所有记录而言,必须达到某一水平。以一个包含A与B两个项目的2-itemset为例,我们可以求得包含{A,B}项目组的支持度,若支持度大于等于所设定的最小支持度(Minimum Support)门槛值时,则{A,B}称为高频项目组。一个满足最小支持度的k-itemset,则称为高频k-项目组(Frequent k-itemset),一般表示为Large k或Frequent k。算法并从Large k的项目组中再试图产生长度超过k的项目集Large k+1,直到无法再找到更长的高频项目组为止。

    关联规则挖掘的第二阶段是要产生关联规则。从高频项目组产生关联规则,是利用前一步骤的高频k-项目组来产生规则,在最小可信度(Minimum Confidence)的条件门槛下,若一规则所求得的可信度满足最小可信度,则称此规则为关联规则。

    例如:经由高频k-项目组{A,B}所产生的规则,若其可信度大于等于最小可信度,则称{A,B}为关联规则。

    就“啤酒+尿布”这个案例而言,使用关联规则挖掘技术,对交易资料库中的记录进行资料挖掘,首先必须要设定最小支持度与最小可信度两个门槛值,在此假设最小支持度min-support=5% 且最小可信度min-confidence=65%。因此符合需求的关联规则将必须同时满足以上两个条件。若经过挖掘所找到的关联规则 {尿布,啤酒}满足下列条件,将可接受{尿布,啤酒} 的关联规则。用公式可以描述为:

    Support(尿布,啤酒)≥5% and Confidence(尿布,啤酒)≥65%。

    其中,Support(尿布,啤酒)≥5%于此应用范例中的意义为:在所有的交易记录资料中,至少有5%的交易呈现尿布与啤酒这两项商品被同时购买的交易行为。Confidence(尿布,啤酒)≥65%于此应用范例中的意义为:在所有包含尿布的交易记录资料中,至少有65%的交易会同时购买啤酒。

    因此,今后若有某消费者出现购买尿布的行为,我们将可推荐该消费者同时购买啤酒。这个商品推荐的行为则是根据{尿布,啤酒}关联规则而定,因为就过去的交易记录而言,支持了“大部分购买尿布的交易,会同时购买啤酒”的消费行为。

    从上面的介绍还可以看出,关联规则挖掘通常比较适用于记录中的指标取离散值的情况。

    如果原始数据库中的指标值是取连续的数据,则在关联规则挖掘之前应该进行适当的数据离散化(实际上就是将某个区间的值对应于某个值),数据的离散化是数据挖掘前的重要环节,离散化的过程是否合理将直接影响关联规则的挖掘结果。


    FP-Growth算法

    FP-Growth(频繁模式增长)算法是韩家炜老师在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-Tree),但仍保留项集关联信息;该算法和Apriori算法最大的不同有两点:第一,不产生候选集,第二,只需要两次遍历数据库,大大提高了效率。

    Apiorio 算法

    如果一个项集是非频繁的,那么它的超集必然也是非频繁的。

    参考

    电商数据挖掘之关联算法(一)

    如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?

    LLR

      private double doItemSimilarity(long itemID1, long itemID2, long preferring1, long numUsers) throws TasteException {
        DataModel dataModel = getDataModel();
        long preferring1and2 = dataModel.getNumUsersWithPreferenceFor(itemID1, itemID2);
        if (preferring1and2 == 0) {
          return Double.NaN;
        }
        long preferring2 = dataModel.getNumUsersWithPreferenceFor(itemID2);
        double logLikelihood =
            LogLikelihood.logLikelihoodRatio(preferring1and2,
                                             preferring2 - preferring1and2,
                                             preferring1 - preferring1and2,
                                             numUsers - preferring1 - preferring2 + preferring1and2);
        return 1.0 - 1.0 / (1.0 + logLikelihood);
      }

    long preferring1and2 = dataModel.getNumUsersWithPreferenceFor(itemID1, itemID2);
    long preferring1 = dataModel.getNumUsersWithPreferenceFor(itemID1);
    long preferring2 = dataModel.getNumUsersWithPreferenceFor(itemID2);
    long numUsers = dataModel.getNumUsers();

    k11: preferring1and2
    k12: preferring2 - preferring1and2
    k21: preferring1 - preferring1and2
    k22: numUsers - preferring1 - preferring2 + preferring1and2

    Event AEverything but A
    Event Bk11
    Everything but Bk21

    LLR = 2 sum(k) (H(k) - H(rowSums(k)) - H(colSums(k)))

    H = function(k) {N = sum(k) ; return (sum(k/N * log(k/N + (k==0)))}

    /**
       * Calculates the Raw Log-likelihood ratio for two events, call them A and B.  Then we have:
       * <p/>
       * <table border="1" cellpadding="5" cellspacing="0">
       * <tbody><tr><td>&nbsp;</td><td>Event A</td><td>Everything but A</td></tr>
       * <tr><td>Event B</td><td>A and B together (k_11)</td><td>B, but not A (k_12)</td></tr>
       * <tr><td>Everything but B</td><td>A without B (k_21)</td><td>Neither A nor B (k_22)</td></tr></tbody>
       * </table>
       *
       * @param k11 The number of times the two events occurred together
       * @param k12 The number of times the second event occurred WITHOUT the first event
       * @param k21 The number of times the first event occurred WITHOUT the second event
       * @param k22 The number of times something else occurred (i.e. was neither of these events
       * @return The raw log-likelihood ratio
       *
       * <p/>
       * Credit to http://tdunning.blogspot.com/2008/03/surprise-and-coincidence.html for the table and the descriptions.
       */
      public static double logLikelihoodRatio(long k11, long k12, long k21, long k22) {
        Preconditions.checkArgument(k11 >= 0 && k12 >= 0 && k21 >= 0 && k22 >= 0);
        // note that we have counts here, not probabilities, and that the entropy is not normalized.
        double rowEntropy = entropy(k11 + k12, k21 + k22);
        double columnEntropy = entropy(k11 + k21, k12 + k22);
        double matrixEntropy = entropy(k11, k12, k21, k22);
        if (rowEntropy + columnEntropy < matrixEntropy) {
          // round off error
          return 0.0;
        }
        return 2.0 * (rowEntropy + columnEntropy - matrixEntropy);
      }
      /**
       * Merely an optimization for the common two argument case of {@link #entropy(long...)}
       * @see #logLikelihoodRatio(long, long, long, long)
       */
      private static double entropy(long a, long b) {
        return xLogX(a + b) - xLogX(a) - xLogX(b);
      }

    信息熵是衡量分布的混乱程度或分散程度的一种度量。分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。


    Information retrieval

    Entropy (information theory)

    #

    reference
    Mahout Recommender Document: non-distributed
    机器学习中的相似性度量
    Mahout on Spark: What’s New in Recommenders
    Mahout on Spark: What’s New in Recommenders, part 2
    Intro to Cooccurrence Recommenders with Spark
    Mahout: Scala & Spark Bindings
    Surprise and Coincidence
    How to create and App using Mahout
    FAQ for using Mahout with Spark


    Mahout on Spark: What’s New in Recommenders, part 2

    Here similar means that they were liked by the same people. We’ll use another technique to narrow the items down to ones of the same genre later.


    Intro to Cooccurrence Recommenders with Spark

    rp = recommendations for a given user
    hp = history of purchases for a given user
    A = the matrix of all purchases by all users
    rp = [A^tA]hp

    This would produce reasonable recommendations, but is subject to skewed results due to the dominance of popular items. To avoid that, we can apply a weighting called the log likelihood ratio (LLR), which is a probabilistic measure of the importance of a cooccurrence.

    The magnitude of the value in the matrix determines the strength of similarity of row item to the column item. We can use the LLR weights as a similarity measure that is nicely immune to unimportant similarities.

    ItemSimilarityDriver

    Creating the indicator matrix [AtA] is the core of this type of recommender. We have a quick flexible way to create this using text log files and creating output that’s in an easy form to digest. The job of data prep is greatly streamlined in the Mahout 1.0 snapshot. In the past a user would have to do all the data prep themselves. Translating their own user and item ids into Mahout ids, putting the data into text files, one element per line, and feeding them to the recommender. Out the other end you’d get a Hadoop binary file called a sequence file and you’d have to translate the Mahout ids into something your application could understand. No more.


    Part 4: Tuning Your Recommender
    两点改进

    MAP

    https://www.kaggle.com/wiki/MeanAveragePrecision
    What you wanted to know about Mean Average Precision

    #

    《基于mahout on spark + elastic search搭建item推荐系统》

    展开全文
  • DS&ML_关联分析笔记

    千次阅读 2018-04-02 11:51:32
    对于关联分析模型的相关知识点的总结与整理 简单描述一下关联分析的思想,关联分析什么

    其他相关文章

    DS&ML_分类算法笔记之支持自动机SVM模型
    DS&ML_分类算法笔记之随机森林、梯度提升树、XGBoost模型
    DS&ML_分类算法笔记之k-近邻、KD-Tree模型
    DS&ML_降维算法笔记之主成分分析PCA模型
    DS&ML_分类算法笔记之朴素贝叶斯模型
    DS&ML_聚类算法笔记之k-means模型
    DS&ML_分类算法笔记之决策树模型
    DS&ML_分类算法笔记之逻辑回归模型

    对于关联分析模型的相关知识点的总结与整理

    简单描述一下关联分析的思想,关联分析是什么?

    关联算法与聚类和主成分一样,也是一种无监督算法。是从大规模数据集中寻找物品间的隐含关系的算法。(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

    关联规则挖掘要求输入的数据必须为布尔型,而推荐系统并处理的评价或喜好值多为数值型的。由于数据类型不是二值布尔型,无法应用关联规则挖掘算法找出项目之间的关联。典型的做法就是先将评价值离散化。常用的自动离散化方法包括分箱、直方图分析、基于熵的离散化、基于统计分析离散化、聚类分析和根据直观划分离散化。

    几个概念

    • 项集(itemset):包含0个或者多个项的集合称为项集。
    • 频繁项集:那些经常一起出现的物品集合
    • 啤酒和尿布算法的三个指标
      • 支持度(support):一个项集的支持度被定义为数据集中包含该项集的记录所占的比例。
        • 表示同时包含A和B的事务占所有事务的比例。如果用P(A)表示使用A事务的比例,那么Support=P(A&B)/N【support(A->B) = support_count(A∪B) / N】
      • 可信度(confident):是针对一条诸如{尿布}→{啤酒}的关联规则来定义的。
        • 表示使用包含A的事务中同时包含B事务的比例,即同时包含A和B的事务占包含A事务的比例。公式表达:Confidence=P(A&B)/P(A)
        • 可信度({尿布}→{啤酒})=支持度({尿布,啤酒})/支持度({尿布})
      • 提升度(Lift):表示”包含A的事务中同时包含B事务的比例”与”包含B事务的比例”的比值。公式表达:Lift=( P(A&B)/P(A))/P(B)=P(A&B)/P(A)/P(B)。
        • 提升度反映了关联规则中的A与B的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。

    具体展开

    关联分析的两种关系:简单关联关系和序列关联关系

    • 简单关联关系:

      简单关联关系可以从经典的购物中进行分析,购买面包的顾客80%都会购买牛奶,由于面包和牛奶是早餐搭配的必需品,二者搭配构成了早餐的组成部分,这就是一种简单的关联关系。

    • 序列关联关系:

      当购买一款新手机后,就会考虑去购买手机膜等手机配件,这就是一种序列关系,不会先买手机膜再买手机的,先后关系是非常明显的,这种关系是一种顺序性的关系,也就是一种序列关联关系。

    关联规则:规则就是一种衡量事物的标准,也就是一个算法。关联规则同样的可以分为两种:简单关联规则和序列关联规则

    • 简单关联规则:

      简单关联规则是无指导的学习方法,着重探索内部结构。简单关联规则也是使用最多的技术,主要算法包括:Apriori、GRI、Carma,其中Apriori和Carma主要是如何提高关联规则的分析效率,而GRI注重如何将单一概念层次的关联推广到更多概念层次的关联,进而揭示事物内在结构。

      简单关联规则的数据存储形式:一种是交易数据格式,一种是表格数据格式。

    • 序列关联规则:

      序列关联规则的核心就是找到事物发展的前后关联性,研究序列关联可以来推测事物未来的发展情况,并根据预测的发展情况进行事物的分配和安排。

    举例

    10000个超市订单(10000个事务),其中购买三元牛奶(A事务)的6000个,购买伊利牛奶(B事务)的7500个,4000个同时包含两者。

    • 三元牛奶(A事务)和伊利牛奶(B事务)的支持度为:P(A&B)/ N =4000/10000=0.4.
    • 三元牛奶(A事务)对伊利牛奶(B事务)的置信度为:包含A的事务中同时包含B的占包含A的事务比例。4000/6000=0.67,说明在购买三元牛奶后,有0.67的用户去购买伊利牛奶。
    • 伊利牛奶(B事务)对三元牛奶(A事务)的置信度为:包含B的事务中同时包含A的占包含B的事务比例。4000/7500=0.53,说明在购买三元牛奶后,有0.53的用户去购买伊利牛奶。

    上面我们可以看到A事务对B事务的置信度为0.67,看似相当高,但是其实这是一个误导

    因为在没有任何条件下,B事务的出现的比例是0.75,而出现A事务,且同时出现B事务的比例是0.67,也就是说设置了A事务出现这个条件,B事务出现的比例反而降低了。这说明A事务和B事务是排斥的。

    下面就有了提升度的概念

    • 我们把0.67/0.75的比值作为提升度,即P(B|A)/P(B),称之为A条件对B事务的提升度,即有A作为前提,对B出现的概率有什么样的影响,如果提升度=1说明A和B没有任何关联,如果<1,说明A事务和B事务是排斥的,>1,我们认为A和B是有关联的,但是在具体的应用之中,我们认为提升度>3才算作值得认可的关联。
    • 提升度是一种很简单的判断关联关系的手段,但是在实际应用过程中受零事务的影响比较大,零事务在上面例子中可以理解为既没有购买三元牛奶也没有购买伊利牛奶的订单。数值为10000-4000-2000-3500=500,可见在本例中,零事务非常小,但是在现实情况中,零事务是很大的。在本例中如果保持其他数据不变,把10000个事务改成1000000个事务,那么计算出的提升度就会明显增大,此时的零事务很大(1000000-4000-2000-3500),可见提升度是与零事务有关的。

    应用

    • 啤酒与尿布(购物篮分析)
      通过查看那些商品经常在一起出售,可以帮助商店了解用户的购物行为,这种从数据的海洋中抽取只是可以用于商品定价、市场促销、存货管理等环节
    • 在Twitter源中发现一些公共词。对于给定的搜索词,发现推文中频繁出现的单词集合
    • 从新闻网站点击流中挖掘新闻流行趋势,挖掘哪些新闻广泛被用户浏览到
    • 搜索引擎推荐,在用户输入查询时推荐同时相关的查询词项
    • 发现毒蘑菇的相似特征。这里只对包含某个特征元素(有毒素)的项集感兴趣,从中寻找毒蘑菇中的一些公共特征,利用这些特征来避免迟到哪些有毒的蘑菇
    • 图书馆信息的书籍推荐,对于学生的借书信息,不同专业学生的借书情况,来挖掘不同学生的借书情况,进行数目的推荐。
    • 校园网新闻通知信息的推荐,在对校园网新闻通知信息进行挖掘的过程中,分析不同部门,不同学院的新闻信息的不同,在进行新闻信息浏览的过程中进行新闻的推荐。

    具体算法

    经典的关联规则挖掘算法包括Apriori算法和FP-growth算法,前者多次扫描数据库,每次利用候选频繁集产生频繁集;后者则利用树形结构直接得到频繁集,减少了扫描数据库的次数,从而提高了算法的效率。但是,前者的扩展性较好,可用于并行计算等领域。

    Apriori算法

    Apriori算法是挖掘布尔型关联规则频繁项集的最为经典、最为基础的算法,该算法需要不断寻找候选集,然后剪枝即去掉非频繁子集的候选集,时间复杂度由暴力枚举所有子集的指数级别O(n^2)将为多项式级别,多项式具体系数是底层实现情况而定的。

    Apriori算法基于这样的事实:算法使用频繁项集的性质的先验知识。Apriori使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,找出频繁1-项集的集合。该集合记作L1。L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到不能找到频繁k-项集。Ariori算法有两个主要步骤:

    1. 连接:(将项集进行两两连接)

      利用已经找到的Lk,通过两两连接得出C(k+1),注意进行连接的Lk[i],Lk[j],必须有k-1个属性值相同,然后另外两个不同的分别分布在Lk[i],Lk[j],这样的求出的C(k+1)为L(k+1)的候选集。

    2. 剪枝:(去掉非频繁项集)

      候选集 Ck+1中的并不都是频繁项集,必须剪枝去掉,越早越好以防止所处理的数据无效项越来越多。只有当子集都是频繁集的候选集才是频繁集,这是剪枝的依据.

    FP-tree算法

    对于输入的dataset,统计所有事项中各元素的出现频次,即每个1项集的频数,并将各元素按照频数降序排序,删除那些出现频数少于设定支持度sup的元素,形成列表L,留下来的元素就构成了频繁1项集。(这是对数据集的第一遍扫描)

    对数据集中每个事务的元素按照列表L排序(按支持度降序排列),开始构造FP-tree。树的根节点为空,每个事务中的所有元素形成一条从根节点到叶子结点的路径。若几个事务的元素按列表L排序后,具有相同的前m个元素,则它们在FP-tree中共享前m个元素代表的节点。树中每个节点的计数为路径经过该节点的事务集的个数。(这是对数据集的第二遍扫描)

    在创建FP-tree的同时,headTable也就创建好了,headTable可以理解为一个具有三列的表。第一列为元素(项ID),第二列为支持度计数,第三列为节点链。

    接下来寻找FP,从headTable中的最后一行开始,依次往上取项。FP的发现过程就是一个循环里不断递归的操作。循环,循环的是headTable中的各个元素项;递归,递归的是元素项的CPB构成的事务数据集形成的FP-tree中发现FP

    零碎的一些知识点积累

    R中arules包apriori函数、Python中fp_growth包find_frequent_itemsets函数

    import fp_growth as fpg  
    frequent_itemsets = fpg.find_frequent_itemsets(transactions, minimum_support, include_support=False) 
    '''
    transactions是我们的输入,格式可以是list of list;minimum_support是算法的最小支持度,这个是小数表示的;include_support设置为True,则结果中包括频繁项集的支持度,否则不包括;frequent_itemsets就是我们要获得的频繁项集。
    '''

    序列模式挖掘

    • 挖掘相对时间或其他模式出现频率高的模式,典型的应用还是限于离散型的序列。
    • 如:大型连锁超市的交易数据有一系列的用户事务数据库,每一条记录包括用户的ID,事务发生的时间和事务涉及的项目。如果能在其中挖掘涉及事务间关联关系的模式,即用户几次购买行为间的联系,可以采取更有针对性的营销措施。
    • 序列模式挖掘的数据库是序列数据库,关联规则分析的数据集是事务数据库
    • 序列模式挖掘的关注点是单项间在同一事务内以及事务间的关系,关联规则分析的关注点是单项间在同一事务内的关系

    参考资料

    [1] https://blog.csdn.net/kevinelstri/article/details/53487186

    [2] https://blog.csdn.net/daizongxue/article/details/77504158

    (Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


    visitor tracker
    访客追踪插件


    展开全文
  • 推荐算法-关联分析(关联规则)

    千次阅读 2018-06-16 09:58:51
    转载自 推荐算法-关联分析(关联...关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。关联分析是从大量数据中发现项集之间有...

    转载自   推荐算法-关联分析(关联规则)

    关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。

    或者说,关联分析是发现交易数据库中不同商品(项)之间的联系。

    关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。

    关联分析是从大量数据中发现项集之间有趣的关联和相关联系。关联分析的一个典型例子是购物篮分析。该过程通过发现顾客放人其购物篮中的不同商品之间的联系,分析顾客的购买习惯。通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。其他的应用还包括价目表设计、商品促销、商品的排放和基于购买模式的顾客划分。

    可从数据库中关联分析出形如“由于某些事件的发生而引起另外一些事件的发生”之类的规则。如“67%的顾客在购买啤酒的同时也会购买尿布”,因此通过合理的啤酒和尿布的货架摆放或捆绑销售可提高超市的服务质量和效益。又如“C语言课程优秀的同学,在学习‘数据结构’时为优秀的可能性达88%”,那么就可以通过强化“C语言”的学习来提高教学效果。

    何为关联分析

    定义:
    1、事务:每一条交易称为一个事务,例如示例1中的数据集就包含四个事务。
    2、项:交易的每一个物品称为一个项,例如Cola、Egg等。 
    3、项集:包含零个或多个项的集合叫做项集,例如{Cola, Egg, Ham}。
    4、k−项集:包含k个项的项集叫做k-项集,例如{Cola}叫做1-项集,{Cola, Egg}叫做2-项集。
    5、支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几。例如{Diaper, Beer}出现在事务 002、003和004中,所以它的支持度计数是3。
    6、支持度:支持度计数除于总的事务数。例如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3,所以它的支持度是3÷4=75%,说明有75%的人同时买了Diaper和Beer。
    关联规则A->B的支持度support=P(AB),指的是事件A和事件B同时发生的概率。
    7、频繁项集:支持度大于或等于某个阈值的项集就叫做频繁项集。例如阈值设为50%时,因为{Diaper, Beer}的支持度是75%,所以它是频繁项集。
    8、前件和后件:对于规则{Diaper}→{Beer},{Diaper}叫做前件,{Beer}叫做后件。
    9、置信度:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除于{Diaper}的支持度计数,为这个规则的置信度。例如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。
    置信度confidence=P(B|A)=P(AB)/P(A),指的是发生事件A的基础上发生事件B的概率。
    10、强关联规则:大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。

    关联分析的最终目标就是要找出强关联规则。

    1.Apriori算法

    电子商务中常用的一种数据挖掘方法就是从用户交易数据集中寻找商品之间的关联规则。关联规则中常用的一种算法是Apriori算法。该算法主要包含两个步骤:首先找出数据集中所有的频繁项集,这些项集出现的频繁性要大于或等于最小支持度;然后根据频繁项集产生强关联规则,这些规则必须满足最小支持度和最小置信度。
    上面提到了最小支持度和最小置信度,事实上,在关联规则中用于度量规则质量的两个主要指标即为支持度和置信度。那么,什么是支持度和置信度呢?接下来进行讲解。
    给定关联规则X=>Y,即根据X推出Y。形式化定义为:

    定义

    算法步骤:

    1.找出出现频率最大的一个项L1。
    2.根据L1找频繁“2项集”的集合C2.
    3.并剪掉不满足支持度阈值的项,得到L2。
    4.根据L2找频繁“3项集”的集合C3。
    假设D表示交易数据集;K为项集,即包含k个项的集合;Lk表示满足最小支持度的k项集;Ck表示候选k项集。Apriori算法的参考文献描述如下。在该算法中,候选集的计算过程如下所示:

    候选集的计算过程

    例如: L2 = {{A,C},{B,C},{B,E}{C,E}}
    那么 C3= {{A,B,C},{A,C,E},{B,C,E}}
    5.根据性质和支持度阈值进行剪枝,得到L3。
    Apriori性质:一个频繁项集的任一子集也应该是频繁项集。也就是,生成一个k-itemset的候选项时,如果这个候选项有子集不在(k-1)-itemset(已经确定是frequent的)中时,那么这个候选项就不用拿去和支持度判断了,直接删除。

    Apriori性质

    6.循环上述过程,直到得到空集C,即直到不能发现更大的频集L。
    7.计算最大频集L的非空子集,两两计算置信度,得到大于置信度阈值的强关联规则。

    举个栗子

    假设给定如下电子商务网站的用户交易数据集,其中,定义最小支持度为2/9,即支持度计数为2,最小置信度为70%,现在要计算该数据集的关联规则,如图所示。

    用户交易数据集

    步骤1,根据Apriori算法计算频繁项集。
    1)计算频繁1项集。扫描交易数据集,统计每种商品出现的次数,选取大于或等于最小支持度的商品,得到了候选项集。

    频繁1项集

    2)根据频繁1项集,计算频繁2项集。首先将频繁1项集和频繁1项集进行连接运算,得到2项集,如下所示:

    2项集

    扫描用户交易数据集,计算包含每个候选2项集的记录数。

    候选2项集

    根据最小支持度,得到频繁2项集。

    频繁2项集

    3)根据频繁2项集,计算频繁3项集。首先将频繁2项集进行连接,得到{{I1,I2,I3},{I1,I2,I5},{I1,I3,I5},{I2,I3,I4},{I2,I3,I5},{I2,I4,I5}},然后根据频繁项集性质进行剪枝(第一种剪枝),即频繁项集的非空子集必须是频繁的
    {I1,I2,I3}的2项子集为{I1,I2},{I1,I3},{I2,I3},都在频繁2项集中,则保留;
    {I1,I2,I5}的2项子集为{I1,I2},{I1,I5},{I2,I5},都在频繁2项集中,则保留;
    {I1,I3,I5}的2项子集为{I1,I3},{I1,I5},{I3,I5},由于{I3,I5}不是频繁2项集,移除该候选集;
    {I2,I3,I4}的2项子集为{I2,I3},{I2,I4},{I3,I4},由于{I3,I4}不是频繁2项集,移除该候选集;
    {I2,I3,I5}的2项子集为{I2,I3},{I2,I5},{I3,I5},由于{I3,I5}不是频繁2项集,移除该候选集;
    {I2,I4,I5}的2项子集为{I2,I4},{I2,I5},{I4,I5},由于{I4,I5}不是频繁2项集,移除该候选集。通过剪枝,得到候选集{{I1,I2,I3},{I1,I2,I5}},扫描交易数据库,计算包含候选3项集的记录数(第二种阈值剪枝)

    频繁3项集

    4)根据频繁3项集,计算频繁4项集。重复上述的思路,得到{I1,I2,I3,I5},根据频繁项集定理,它的子集{I2,I3,I5}为非频繁项集,所以移除该候选集。从而,频繁4项集为空,至此,计算频繁项集的步骤结束。

    步骤2,根据频繁项集,计算关联规则。
    这里以频繁3项集{I1,I2,I5}为例,计算关联规则。{I1,I2,I5}的非空子集为{I1,I2}、{I1,I5}、{I2,I5}、{I1}、{I2}和{I5}。

    规则1,{I1,I2}=>{I5},置信度为{I1,I2,I5}的支持度除以{I1,I2}的支持度,即2/4=50%,因其小于最小置信度,所以删除该规则。
    同理,最后可以得到{I1,I5}=>{I2},{I2,I5}=>{I1}和{I5}=>{I1,I2}为3条强关联规则。

    缺点

    (1)在每一步产生侯选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;

    (2)每次计算项集的支持度时,都对数据库D中的全部记录进行了一遍扫描比较,如果是一个大型的数据库的话,这种扫描比较会大大增加计算机系统的I/O开销。而这种代价是随着数据库的记录的增加呈现出几何级数的增加。因此人们开始寻求更好性能的算法。

    改进

    1)基于划分的方法。该算法先把数据库从逻辑上分成几个互不相交的块,每次单独考虑一个分块并对它生成所有的频繁项集,然后把产生的频繁项集合并,用来生成所有可能的频繁项集,最后计算这些项集的支持度。这里分块的大小选择要使得每个分块可以被放入主存,每个阶段只需被扫描一次。而算法的正确性是由每一个可能的频繁项集至少在某一个分块中是频繁项集保证的。
    上面所讨论的算法是可以高度并行的。可以把每一分块分别分配给某一个处理器生成频繁项集。产生频繁项集的每一个循环结束后.处理器之间进行通信来产生全局的候选是一项集。通常这里的通信过程是算法执行时间的主要瓶颈。而另一方面,每个独立的处理器生成频繁项集的时间也是一个瓶颈。其他的方法还有在多处理器之间共享一个杂凑树来产生频繁项集,更多关于生成频繁项集的并行化方法可以在其中找到。
    2)基于Hash的方法。Park等人提出了一个高效地产生频繁项集的基于杂凑(Hash)的算法。通过实验可以发现,寻找频繁项集的主要计算是在生成频繁2—项集Lk
    上,Park等就是利用这个性质引入杂凑技术来改进产生频繁2—项集的方法。
    3)基于采样的方法。基于前一遍扫描得到的信息,对它详细地做组合分析,可以得到一个改进的算法,其基本思想是:先使用从数据库中抽取出来的采样得到一些在整个数据库中可能成立的规则,然后对数据库的剩余部分验证这个结果。这个算法相当简单并显著地减少了FO代价,但是一个很大的缺点就是产生的结果不精确,即存在所谓的数据扭曲(Dataskew)。分布在同一页面上的数据时常是高度相关的,不能表示整个数据库中模式的分布,由此而导致的是采样5%的交易数据所花费的代价同扫描一遍数据库相近。
    4)减少交易个数。减少用于未来扫描事务集的大小,基本原理就是当一个事务不包含长度为志的大项集时,则必然不包含长度为走k+1的大项集。从而可以将这些事务删除,在下一遍扫描中就可以减少要进行扫描的事务集的个数。这就是AprioriTid的基本思想。

    2.FP-growth算法

    由于Apriori方法的固有缺陷.即使进行了优化,其效率也仍然不能令人满意。2000年,Han Jiawei等人提出了基于频繁模式树(Frequent Pattern Tree,简称为FP-tree)的发现频繁模式的算法FP-growth。在FP-growth算法中,通过两次扫描事务数据库,把每个事务所包含的频繁项目按其支持度降序压缩存储到FP—tree中。在以后发现频繁模式的过程中,不需要再扫描事务数据库,而仅在FP-Tree中进行查找即可,并通过递归调用FP-growth的方法来直接产生频繁模式,因此在整个发现过程中也不需产生候选模式。该算法克服了Apriori算法中存在的问颢.在执行效率上也明显好于Apriori算法。

    构造FP-Tree

    挖掘频繁模式前首先要构造FP-Tree,算法伪码如下:
    输入:一个交易数据库DB和一个最小支持度threshold.
    输出:它的FP-tree.
    步骤:
    1.扫描数据库DB一遍.得到频繁项的集合F和每个频繁项的支持度.把F按支持度递降排序,结果记为L.
    2.创建FP-tree的根节点,记为T,并且标记为’null’.然后对DB中的每个事务Trans做如下的步骤.
    根据L中的顺序,选出并排序Trans中的事务项.把Trans中排好序的事务项列表记为[p|P],其中p是第一个元素,P是列表的剩余部分.调用insert_tree([p|P],T).
    函数insert_tree([p|P],T)的运行如下.
    如果T有一个子结点N,其中N.item-name=p.item-name,则将N的count域值增加1;否则,创建一个新节点N,使它的count为1,使它的父节点为T,并且使它的node_link和那些具有相同item_name域串起来.如果P非空,则递归调用insert_tree(P,N).

    挖掘频繁模式

    FP-Tree进行挖掘,算法如下:
    输入:一棵用算法一建立的树Tree
    输出:所有的频繁集
    步骤:
    调用FP-growth(Tree,null).
    procedure FP-Growth ( Tree, x)
    {
    (1)if (Tree只包含单路径P) then
    (2) 对路径P中节点的每个组合(记为B)
    (3) 生成模式B并x,支持数=B中所有节点的最小支持度
    (4) else 对Tree头上的每个ai,do
    {
    (5) 生成模式B= ai 并 x,支持度=ai.support;
    (6) 构造B的条件模式库和B的条件FP树TreeB;
    (7)if TreeB != 空集
    (8)**then **call FP-Growth ( TreeB , B )
    }
    }

    举个栗子

    构建FP-tree
      FP-growth算法通过构建FP-tree来压缩事务数据库中的信息,从而更加有效地产生频繁项集。FP-tree其实是一棵前缀树,按支持度降序排列,支持度越高的频繁项离根节点越近,从而使得更多的频繁项可以共享前缀。

    根据上面的例子,构建FP-tree。

    频数

    得到新的顺序:

    用户交易排序数据集

    FP-tree的根节点为null,不表示任何项。接下来,对事务型数据库进行第二次扫描,从而开始构建FP-tree:
      第一条记录<I2,I1,I5>对应于FP-tree中的第一条分支<(I2:1),(I1:1),(I5:1)>:

    第一条记录

    由于第二条记录<I2,I4>与第一条记录有相同的前缀<I2>,因此<I2>的支持度加一,同时在(I2:2)节点下添加节点(I4:1)。所以,FP-tree中的第二条分支是<(I2:2),(I4:1)>:

    第二条记录

    第三条记录<I2,I3>与前两条记录相比,只有一个共同前缀<I2>,因此,只需要在(I2:3)下添加节点<I3:1>:

    第三条记录

    第四条记录<I2,I1,I4>与之前所有记录共同前缀<I2,I1>,因此在<I2,I1>节点下添加节点<I4>:

    第四条记录

    类似地,将第五条记录<I1,I3>作为FP-tree的一个分支,更新相关节点的支持度:

    第五条记录

    以此类推的到最后的树:

    FP-tree

    综上,FP-tree的节点可以定义为:

    class TreeNode { private: String name; // 节点名称 int count; // 支持度计数 TreeNode *parent; // 父节点 Vector<TreeNode *> children; // 子节点 TreeNode *nextHomonym; // 指向同名节点 ... }

    从FP-tree中挖掘频繁模式(Frequent Patterns)
      我们从头表的底部开始挖掘FP-tree中的频繁模式。在FP-tree中以I5结尾的节点链共有两条,分别是<(I2:7),(I1:4),(I3:2),(I5:1)>和<(I2:7),(I1:4),(I5:1)>。

    其中,第一条节点链表表示客户购买的物品清单<I2,I1,I3,I5>在数据库中共出现了1次。需要注意到是,尽管<I2,I4>在第一条节点链中出现了4次,单个物品<I2>出现了7次,但是它们与I5一起出现只有1次,所以在条件FP-tree中将<(I2:7),(I1:4),(I3:2),(I5:1)>记为<(I2:1),(I1:1),(I3:1),(I5:1)>。

    同理,第二条节点链表示客户购买的物品清单<(I2:7),(I1:4),(I5:1)>在数据库中只出现了一次。

    我们将p的前缀节点链<(I2:1),(I1:1),(I3:1),(I5:1)>和<(I2:1),(I1:1),(I5:1)>称为I5的条件模式基(conditional pattern base)

    我们将I5的条件模式基作为新的事务数据库,每一行存储p的一个前缀节点链,根据第二节中构建FP-tree的过程,计算每一行记录中各种物品的支持度,然后按照支持度降序排列,仅保留频繁项集,剔除那些低于支持度阈值的项,建立一棵新的FP-tree,这棵树被称之为I5的条件FP-tree:

    I5的条件FP-tree

    从图可以看到I5的条件FP-tree中满足支持度阈值的剩下2个节点,所以以I5结尾的频繁项集有(I5:2),(I1,I5 :2),(I2,I5 :2),(I1,I2,I5 :2)。

    同理可得I3的条件FP-tree:

    I3的条件FP-tree

    得到以I3结尾的频繁项集有(I3:4),(I1,I3 :4),(I2,I3 :4),(I1,I2,I3 :2)。

    于是,以I4结尾的频繁项集有(I4:2),(I2,I4 :2),以I2结尾的频繁项集有(I2:7),以I1结尾的频繁项集有(I1:6),(I2,I1 :4)。

    最后计算关联。

    引用:
    http://baike.baidu.com/link?url=3LCct6owUbtQJp8m-y5F-8VfpnRroF1-gVijGeI8J9znoZS1cWHxv2Z9kubuBMwDTIY5YUGm-8u0AhPO1xeU9lTFasXq0JiRuXmrMenhQm5bFxBpNrWOswuMO-kPx0je
    备注:
    http://www.cnblogs.com/datahunter/p/3903413.html


    展开全文
  • 关联分析(二):关联模式的评估

    千次阅读 2019-04-08 16:43:15
    关联分析方法具有产生大量模式的潜在能力,在真正的商业数据上,数据量与数据维数都非常大,很容易产生数以千计、万计甚至百万计的模式,而其中很大一部分可能并不让人感兴趣,筛选这些模式,以识别最有趣的模式并非...

           关联分析方法具有产生大量模式的潜在能力,在真正的商业数据上,数据量与数据维数都非常大,很容易产生数以千计、万计甚至百万计的模式,而其中很大一部分可能并不让人感兴趣,筛选这些模式,以识别最有趣的模式并非一项平凡的任务,因为“一个人的垃圾在另一个人那里可能就是财富”,因此建立一组广泛接受的评价关联模式质量的标准是非常重要的。评价标准可以通过客观统计论据建立,例如上一篇提到过得支持度与置信度等,也可以通过主观论据建立,例如一些专家经验知识等。

    1.客观统计论据

            利用客观统计论据评价模式时,一般通过计算模式的客观兴趣度来度量,而这样的度量一般是基于相依表(contingency table)得到,下表是一对二元变量AB的相依表,用\overline{A}(\overline{B})表示A(B)不出现在事务记录中

                                                     

    f_{11}表示AB均出现在事务记录中的次数,f_{10}表示A出现、B未出现在事务记录中的次数,f_{01}表示B出现、A未出现在事务记录中的次数,f_{00}表示AB均未出现在事务记录中的次数,f_{1+}表示A出现在事务记录中的次数,f_{0+}表示A未出现在事务记录中的次数,f_{+1}表示B出现在事务记录中的次数,f_{+0}表示B未出现在事务记录中的次数,N表示事务记录的总数。

           1.1  支持度

            支持度用于筛选出频繁项集,但是该度量有一个缺点,一些支持度较低、但让人感兴趣的模式会被忽略掉,模式毕竟是只出现在部分数据中的,因此使用支持度度量可能会出现这种情况。

           1.2  置信度

            置信度用于评估规则的可信程度,但是该度量有一个缺点,没有考虑规则后件的支持度问题,例如在下面的相依表中

                                                   

           规则{茶}\rightarrow{咖啡}的支持度为15%,置信度为75%,先不考虑支持度,只看置信度会觉得比较高,因为可能会认为爱喝茶的人一般也爱喝咖啡。我们再来看一下喝咖啡的人的支持度,达到80%,规则{茶}\rightarrow{咖啡}的置信度75%高,这说明什么问题?并不是爱喝茶的人一般爱喝咖啡,从而使得规则置信度高,而是爱喝咖啡的人本身就很多,所以这条规则是一个误导。

           1.3  提升度与兴趣因子

           由于置信度存在的缺陷,人们又提出了称作提升度的度量:

                                                                                          lift(A\rightarrow B)=\frac{c(A\rightarrow B)}{s(B)}

     提升度定义为规则置信度与规则后件支持度的比率。对于二元变量,提升度等价于兴趣因子

                                                                                   I(A,B)=\frac{s(A,B)}{s(A)\times s(B)}=\frac{Nf_{11}}{f_{1+}f_{+1}}

     兴趣因子比较的是模式的频率与统计独立假设下计算的基线频率,对于相互独立的两个变量,其基线频率定义为:

                                                                                           \frac{f_{11}}{N}=\frac{f_{1+}}{N}\frac{f_{+1}}{N}

     从这个角度,可以将兴趣因子解释如下:

                                                            

           在1.2节的例子中,规则{茶}\rightarrow{咖啡}的兴趣因子为I=\frac{0.15}{0.2*0.8}=0.9375,这表明喝茶的人数与喝咖啡的人数之间呈负相关,因此这条规则是不合理的。

           使用提升度与兴趣因子来评判规则有一个问题,我们以提升度为例来说明,当规则置信度与规则后件支持度数值大小相近时,提升度就不足以说明问题,比率的形式掩盖了分子、分母本身的数值大小。例如下面这个例子,有两个相依表(p,q)(r,s)如下

                                                   

                                                   

                                                                      lift(p,q)=\frac{880/930}{930/1000}=1.02

                                                                      lift(r,s)=\frac{20/70}{70/1000}=4.08

           如果仅仅用提升度来评判规则,那么显而易见的是规则\left \{ r\rightarrow s \right \}优于\left \{ p\rightarrow q \right \},但是我们评判规则优劣时还应该具体到任务场景中,例如在文本挖掘中,经常用一对词语同时出现在文档中的频数来分析这对词语的关联程度,在这种情况下,提升度就不是一个最佳度量。

           1.4  相关分析

           相关分析是一种基于统计学的技术,在之前《数据测量与相似性分析》的博文中曾经说明过,对于连续型变量,相关度用皮尔森相关系数表示(https://blog.csdn.net/huguozhiengr/article/details/83033465),对于二元变量,相关度可以用\phi系数度量

                                                                                 \phi =\frac{f_{11}f_{00}-f_{01}f_{10}}{\sqrt{f_{1+}f_{+1}f_{0+}f_{+0}}}

           相关度的值从-1(完全负相关)到+1(完全正相关),如果变量是相互独立的,那么相关度为0。如果变量是正相关,那么f_{11}应该大于f_{10}f_{00}应该大于f_{01},因此相关度大于0,同理,如果变量负相关,相关度应该小于0。

           使用相关分析评判规则时,存在一定局限性,相关分析中把事务记录中项的出现于不出现视为同等重要,例如在1.3节的例子中,\phi (p,q)=0.232\phi (r,s)=0.232,二者相同,因此相关分析更适合于分析对称的二元变量。

           1.5  IS度量

           IS度量用于处理非对称二元变量,其定义如下:

                                                             IS(A,B)=\sqrt{I(A,B)\times s(A,B)}=\frac{s(A,B)}{\sqrt{s(A)s(B)}}

    从该定义式中可以看出,当规则的兴趣因子与支持度都很大时,IS度量值就很大。在1.3节的例子中,IS \, \, (p,q)=0.946,

    IS\, \, (r,s)=0.286,可以看到在此情况下IS度量给出的结果与兴趣因子与\phi系数相反。在分析兴趣因子时,我们提到比率的形式掩盖了分子、分母本身数值的大小,而在IS度量中则考虑到了规则的支持度,这在一定程度上弥补了兴趣因子的不足之处。

            IS度量也存在与置信度类似的局限性——即使是不相关或者负相关的模式,也能得到较大的 IS度量,当两个变量独立时

                                         IS(A,B)_{indep}=\frac{s(A,B)}{\sqrt{s(A)s(B)}}=\frac{s(A)s(B)}{\sqrt{s(A)s(B)}}=\sqrt{s(A)s(B)}

    由于s(A)s(B)均小于1,因此得到 IS度量小于各自的支持度。关于这个局限性也可以这样理解,IS度量的定义式变换如下

                                  IS(A,B)=\sqrt{I(A,B)\times s(A,B)}=\sqrt{\frac{s(A,B)}{s(A)s(B)}s(A,B)}=\sqrt{ c(A,B)c(B,A)}

    可以看到IS度量表示成了规则\left \{ A\rightarrow B \right \}\left \{ B\rightarrow A \right \}的几何均值。

          1.6  其它客观兴趣度度量

                                     

     2.客观兴趣度度量的性质     

           从第1节中举的几个简单例子中就可以看出,在一种情况下不同度量给出的结果可能会相差很大,甚至是矛盾的,而在更复杂的实际情况中,这种情况更是常见,因此有必要研究一下客观兴趣度度量的性质。

           2.1  反演性

           事务记录A、B、C、D分别如下,1表示某一项存在,0表示不存在

         

    A1000001
    B0001000
    C0111110
    D1110111

            查看该事务记录表发现,记录C与记录A的购买内容刚好相反,记录D与记录B的购买内容刚好相反, 在事务记录表中这种操作称为反演。在两个事务记录呈反演的数据集中,相依表中的f_{11}f_{00}f_{10}f_{01}数值刚好相反,若此时客观度量在这两个数据集中结果不变,则称该度量满足反演性,满足反演性的度量有\phi系数、几率、集体强度,而前面介绍的兴趣因子和IS等度量则不满足反演性。

           在二元变量中,反演性讨论的是变量对称性问题下的度量问题,显然,满足反演性的度量更适合于对称的二元变量数据事务集中,在非对称的二元变量数据集中,不满足反演性的度量则更适合。

           2.2  零加性

           在事务记录中,有一些既没有出现规则中的前件,也没有出现后件,这样的记录是与规则无关的,被统计在相依表的f_{00}项中。在数据记录集中添加一些与规则无关的记录,称为零加操作。如果在零加操作下(即增加f_{00}的值,而其它项频数保持不变),客观度量仍然保持不变,则称该客观度量满足零加性。

           我们搜集到的数据集中不可避免的会包含一些多余的数据(当然,数据的多余是相对于规则而言的),如果这些多余的数据影响到了规则的挖掘与评定,如果我们就要考量一下选用的挖掘方法与客观度量是否合适。满足零加性的度量有余弦度量(IS)、Jaccard度量。

           2.3  缩放性

           下表是1993年与2004年注册某课程的学生的性别与成绩的相依表,表中的数据表明,自1993年来男生的数量翻了一番,而女生的数量则是以前的3倍,然后2004年的男生、女生的表现并不比1993年的表现得更好,因为高分与低分的男同学比例保持不变,女同学也是这样。

                      

    k_{1}k_{2}k_{3}k_{4}表示对相依表中的行和列的缩放倍数。若对相依表中f_{11}f_{10}f_{01}f_{00}进行缩放之后,客观度量保持不变,则称该度量具有缩放不变性,在以上介绍的度量中(包括图片中的客观度量),只有几率(\alpha)满足缩放不变性。

    3.主观论据

            在评估关联模式时引入主观信息是一件比较困难的事情,这需要来自领域专家的大量先验信息,常见的一些将主观信息加入到模式发现任务中的方位有以下几种:

    • 可视化方法:通过数据可视化方法呈现出数据中蕴含的信息,领域专家由此解释和检验发现的模式,只有符合观察到的信息的模式才被认为是有趣的。
    • 基于模板的方法:这种方法可以限制发现的模式类型,只有满足指定模板的模式才被认为是有趣的。
    • 主观兴趣度量:基于领域信息定义一些主观度量来过滤显而易见和没有实际价值的模式。

    4.辛普森悖论

           在介绍   分类:贝叶斯分类方法  中就提到过,我们在分析中可能会忽略掉一些隐藏变量,而这些变量对分析结果影响较大,在关联模式挖掘中,这就可能导致观察到的一对变量间的联系消失或者逆转,这种现象就是所谓的辛普森悖论。下面通过一个例子说明这种现象。

           考虑高清电视(HDTV)销售与健身器材销售之间的联系。在下列相依表中,规则 {买HDTV=是}\rightarrow{买健身器材=是}的置信度为99/180=55%,而规则{买HDTV=否}\rightarrow{买健身器材=是}的置信度为54/120=45%,该规则暗示买HDTV的人更可能买健身器材(这里举置信度的例子只是为了说明辛普森悖论现象,很明显以上两个规则的置信度均不高,不足以成为规则)。

    买HDTV买健身器材 
     
    9981180
    5466120
     153147300

       如果将购买这两种物品的人群 大学生、在职人员,那么会得到下列相依表

    顾客组买HDTV买健身器材总数
    大学生1910
    43034
    在职人员9872170
    503686

    可以看到,对于大学生:

                                                               c({买HDTV=是}\rightarrow{买健身器材=是})=1/10=10%

                                                               c({买HDTV=否}\rightarrow{买健身器材=是})=4/34=11.8%

    对于在职人员:

                                                               c({买HDTV=是}\rightarrow{买健身器材=是})=98/170=57.7%

                                                               c({买HDTV=否}\rightarrow{买健身器材=是})=50/86=58.1%

    可以看到,在两组人群中,依据规则置信度得到的结论刚好与之前相反,这就是辛普森悖论现象,当然,可能是由于选择的客观度量的原因,所以才会出现这种现象,那么我们用兴趣因子来重新计算一下。

    不考虑人群因素影响是,

                                                             I({买HDTV=是}\rightarrow{买健身器材=是})= 300*99/(180*153)=1.078

                                                            I({买HDTV=否}\rightarrow{买健身器材=是})= 300*54/(120*153)=0.882

    依此得到的结论是:买HDTV的人更可能买健身器材

    现在考虑人群因素的影响,对于大学生:

                                                           I({买HDTV=是}\rightarrow{买健身器材=是})= 44*1/(5*10)=0.88

                                                          I({买HDTV=否}\rightarrow{买健身器材=是})= 44*4/(34*5)=1.035

    对于在职人员:

                                                         I({买HDTV=是}\rightarrow{买健身器材=是})= 256*98/(170*148)=0.997

                                                         I({买HDTV=否}\rightarrow{买健身器材=是})= 256*50/(86*148)=1.006

    可以看到,得到的结论刚好与之前相反,使用兴趣因子做度量时同样出现了辛普森悖论。(当然,还可以继续使用其它度量算一下,我就不算了,这里只是为了说明问题)

           辛普森现象的存在警示我们,在解释变量之间的关联要特别小心,因为一些可能存在、没有考虑的因素可能会影响模式。要做到模式的解释,就需要我们拥有一定的背景知识,拿上面的例子说明,HDTV与健身器材并不是普通物品(这很重要,就像收入低的人群去吃豪华大餐一样,这不是一件很常见的事情),它的购买群体是值得考虑的,最起码得知道是水购买了这些物品。

    5.小结

          文中介绍规则评估方面的内容,主要是客观度量的介绍,可以看到对于同一个规则,采用不同度量可能会得到相反的结论,这是由于度量的定义导致,没有一个客观度量能适用于所有模式挖掘任务中,因为每种度量总会有一些未考虑的方面,因此在我们的工作中,充分了解、理解数据,运用背景知识显得很重要,有时也可以考虑多种度量结合的方式来帮助我们发现有趣的模式。

     

     

     

           

           

           

     

           

           

           

             

     

      

            

                         

     

       

         

           

     

    展开全文
  • Apriori算法关联分析与pyhon实现

    千次阅读 2014-11-05 22:23:56
    Apriori算法关联分析与pyhon实现,关联规则里面最基本算法 Apriori算法,关联规则生成。
  • 使用Apriori算法进行关联分析

    千次阅读 2016-03-02 21:39:52
    从规模数据集中寻找物品间的隐含关系被称作关联分析或者关联规则学习。下面首先详细讨论关联分析,然后讨论Apriori原理,Apriori算法正式基于该原理得到的。接下来创建函数频繁项集高效发现的函数,然后从频繁项集中...
  • 数据挖掘十大算法(四):Apriori(关联分析算法)

    万次阅读 多人点赞 2018-08-29 21:38:50
    同样的该算法也是在一堆数据集中寻找数据之间的某种关联,这里主要介绍的是叫做Apriori的‘一个先验’算法,通过该算法我们可以对数据集做关联分析——在大规模的数据中寻找有趣关系的任务,本文主要介绍使用Apriori...
  • 关联规则分析

    千次阅读 2017-11-27 17:22:00
    关联规则是形如X→Y的蕴涵式,其中, X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后继(consequent或right-hand-side, RHS) 故事   在描述有关关联规则的一些细节之前,先来看一个有趣的...
  • 关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。 关联分析是从大量数据中发现项集之间有趣的关联和相关联系。关联分析的一...
  • 关联分析(Apriori)

    千次阅读 2017-10-17 14:42:05
    之前总结的典型关联分析是目标通过计算数据间的相关系数来寻找多维度数据的关系,但直观来讲,在实际生活中如果某一件事总是和另一件事同时出现,那么这两件事之间一定是有某种关系的,比如著名的啤酒和尿布。...
  • 全基因组关联分析(GWAS)简介

    千次阅读 2021-02-25 11:08:46
    全基因组关联分析(GWAS)简介 全基因组关联分析(GWAS)是广泛用于寻找复杂遗传疾病关联基因的重要手段。通过遗传学研究找到了很多致病突变体,这些突变体是指染色体上的变异位点。全基因组关联分析试图找到染色体...
  • 关联规则分析

    千次阅读 2011-06-18 13:52:00
    1.什么是关联规则 "尿布与啤酒"的故事大家都有听过,这里就不罗嗦了。 按常规思维,尿布与啤酒风马牛不相及,若不是借助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据内在这一有价值的...关联分析
  • 典型关联分析(CCA)算法原理

    万次阅读 2015-07-24 16:13:43
    典型关联分析(CCA)算法原理、问题的提出、算法实现
  • Apriori算法实现关联分析

    千次阅读 2017-01-22 14:55:56
    摘要: 主要是讲解一些数据挖掘中频繁模式挖掘的Apriori算法原理应用实践 当我们买东西的时候,我们会发现物品展示方式是不同,购物以后优惠券...这种从大规模数据集中寻找物品间的隐含关系被称为关联分析或者关联规
  • 众所周知,亚马逊有一个非常坑爹的规定,那就是同一个人或企业只能运营一个账号,并采用严格的程序对此进行监控。如果发现账户关联,则存在封号的风险。...一、什么是VPS VPS,英文全称为Virtual Private Server
  • Apriori(关联分析算法)

    千次阅读 2020-06-29 08:53:53
    同样的该算法也是在一堆数据集中寻找数据之间的某种关联,这里主要介绍的是叫做Apriori的‘一个先验’算法,通过该算法我们可以对数据集做关联分析——在大规模的数据中寻找有趣关系的任务,本文主要介绍使用Apriori...
  • SAS EM(一)关联分析(数据+实战)

    千次阅读 2020-10-02 18:32:53
    SAS EM(一)关联分析 关联规则挖掘技术可以发现不同商品在消费者购买过程中的相关性。给定一组事务集合,其中每个事务是一个项目集;一个关联规则是形如 X ->Y 的蕴涵式, X 和 Y 表示项目集,且 X∩ Y = Φ, X 和 ...
  • SPSS Modeler关联分析(第十八章)

    千次阅读 2021-02-22 17:56:18
    常利用关联规则技术对超市购物篮进行分析,随着数据挖掘技术的不断成熟,关联分析也逐渐被应用于网站分析、气象分析、社交媒体分析等方面。 1. 关联分析基本概念 将上表的每一行记录称为一个事务。每个事务由事务...
  • R语言关联分析之啤酒和尿布

    千次阅读 2018-01-12 16:58:17
    关联分析 概述 啤酒和尿布的故事,我估计大家都听过,这是数据挖掘里面最经典的案例之一。它分析的方法就关联分析关联分析,顾名思义,就是研究不同商品之前的关系。这里就发现了啤酒和尿布这两个看起来...
  • 关联分析之Apriori算法

    万次阅读 多人点赞 2014-10-25 23:02:27
    1.数据挖掘与关联规则
  • 转载请注明作者和出处: ...开发平台: Win10 + Python3.6 + Anaconda3 编  者: 无尾 一、前言 1、关联分析 2、Apriori原理 3、使用Apriori算法来发现频繁集 一、前言  在...
  • 阅读本文之前建议先理解关联分析的基本概念与术语。传送门 本文简单介绍关联分析中的先验(Apriori)原理与Apriori算法,持续更新与补充。 先验(Apriori)原理 原理简介: 如果一个项集是频繁的,则它的所有子集一定也...
  • 很多甲方都会提关联分析,但你要在细问要做什么样的关联分析,估计大多数甲方都不太能详细说出来,很多乙方对此也是藏着掖着,可能也是核心机密不愿意细说。下面就来聊一下我对关联分析模型的一点思考。 一、概述 ...
  • 一、Case-Control 关联分析模型 (第一部分主要是在人类中) 卡方检验 举例 逻辑回归 逻辑混合模型 二、(动植物)数量性状关联分析模型 ...
  • 利用关联分析的方法可以发现联系如关联规则或频繁项集。 二元表示 每一行对应一个事务,每列对应一个项,项二元变量表示 项在事务中出现比不出现更重要,因此项是非对称的的二元变量。 项集(Itemset):包含0个...
  • 画统计图 确定分析数列 母序列(母指标):能反映系统
  • 全基因组关联分析(GWAS)

    万次阅读 2014-05-05 10:02:05
    全基因组关联分析是一种在人类或动植物全基因组中寻找变异序列的方法,全英文名为Genome-wide association study,缩写名为GWAS。 2005年,Science杂志报道了第一篇GWAS研究——年龄相关性黄斑变性,之后陆续出现了...
  •  前面我们在讲解对比分析法时,大家可能会有这样的疑问:对比分析法主要是通过对进出中间设备的数据包做对比分析,从而得出相关结论的,但是,我们都知道,很多中间设备会对经过它的数据包做一些修改和处理,那么...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 197,688
精华内容 79,075
关键字:

关联分析所用到的技术