zoukankan      html  css  js  c++  java
  • 关联规则项目[数据挖掘]关联规则挖掘

    废话就不多说了,开始。。。

           联关则规(association rule)是据数中所含蕴的一类要重法则。联关则规发掘的目标是在据数项目中找出有所的并发关系(cooccurrence relationships),这类关系也称为联关(association)。联关则规发掘的经典应用是购物篮(Market Basket), 联关则规发掘并没有斟酌客户购置商品时的序顺。

          在分析联关则规发掘法算前,我们先懂得一些相干的观点。

          联关则规的基本观点

          联关则规发掘问题常通可以表述为:I={i1, i2, …, im}是一个项目(Item)合集,T={t1,t2, …, tn} 是一个事务(Transaction)合集,其中个每事务ti是一个项目合集, 并且满意ti属于I。

          一个联关则规是一个如下式形含蕴的关系X—> Y, 其中X是I的真子集,Y也是I的真子集,并且X∩Y=Ф, X 或 Y是一个项目的合集, 称作项集(ItemSet),并且X为前件,Y为后件。

          如果项集X是事务T的子集,X在T中的支撑数计(表现为X.count)是T中含包X的事务目数。

         支撑度(Support):定义为 supp(X) = X.count / count(D) = P(X)

         置信度:一条则规X—> Y的置信度指的是“既含包了X又含包了Y的事务数量占有所含包了X的事务的百分比”,可以作看是件条率概P(Y|X)

         置信度定义为定义为 conf(X->Y) = supp(X ∪ Y) / supp(X) = P(Y|X)。

         候选集(Candidate itemset):通过向下合并得出的项集。定义为C[k]。

         繁频集(Frequent itemset):支撑度大于即是特定的最小支撑度(Minimum Support/minsup)的项集。表现为L[k]。注意,繁频集的子集一定是繁频集。

            晋升比率(晋升度Lift):lift(X -> Y) = lift(Y -> X) = conf(X -> Y)/supp(Y) = conf(Y -> X)/supp(X) = P(X and Y)/(P(X)P(Y))  

        

         支撑度表现一个事物生发的率概, 而置信度表现两个事物的联关强度。

       

          联关则规发掘的目标:给定一个事务集T,联关则规发掘是指"找出T中有所满意支撑度和置信度分离高于一个用户指定的最小支撑度(minsup)和最小置信度(minconf)的联关则规"

             Apriori法算(演绎法算)

        联关则规发掘法算的计设可以分解为两个子问题:

        

        

    1.生成有所繁频项目集:即找到有所支撑度大于最小支撑度的项集(Itemset)。
        每日一道理
    古人云:“海纳百川,有容乃大。”人世间,不可能没有矛盾和争吵,我们要以磊落的胸怀和宽容的微笑去面对它 。哈伯德也曾说过:“宽恕和受宽恕的难以言喻的快乐,是连神明都会为之羡慕的极大乐事。”让我们从宽容中享受快乐,从谅解中体会幸福吧!

                      2.从繁频项目集中生成有所可托联关则规:即从骤步1中选出置信度大于最小置信度的项。

      Apriori法算中定假项集I中的项目都采用了字典排序,这个很要重,因此在实现Apriori法算的时候,对项目的编码很要重。

      

    frequent-itemset-gen(T)

        C[1]<--init-pass(T); //对事务集T行进第一轮搜索,生成1-候选集 F[1]<--{f|f属于C[1], supp(f) >=minsup} //从1-候选会合选出1-繁频集 for(k=2; F[k-1]<>NULL; k++) { C[k]<--candidate-gen(F[k-1]); for each t 属于 T { for each c属于C[k] { if c is contianed in t then c.count++; } } F[k]<--{c属于C[k]| supp(c) >= minsup} } return F<-- UF[k]

    candidate-gen(F[k-1])

        C[k] <---NULL; //初始化k-候项选集 for all f1, f2 属于F[k-1] with f1={i1, i2, …, ik-2, ik-1} f2={i1, i2, …, ik-2, i`k-1} and ik-1 < i`k-1 //找出有所的“只有最后一项不同的k-1繁频项目对” { c<---{i1, i2, …, ik-2, ik-1, i`k-1}; //根据字典序合并两个k-1项,构成k候项选 C[k].add(c); for each (k-1)-subset s of c //将c中取人以k-1个项,成形k-1子项 { if(s 不属于 F[k-1]) { C[k].delete(c) } } } return C[k]

         

    genRules(F)

        for (属于F的个每k-繁频项目 f[k], k>=2) { r1<---- gen 1-item rule of f[k] with confidence >= minConf and support<---f[k].count/n H[1].add({f[k]} -{ r1}); ap-genRules(f[k], H[1] ); }

        

        ap-genRules(f[k], H[m])

        

        if (k > m + 1 && H[m]<> NULL) { H[m+1] <--- candidate-gen(H[m]); for (each h[m+1] in H[m+1]) { conf = f[k].count / (f[k] - h[m+1]).count; if (conf >= minConf) { gen the rule(f[k] - h[m + 1]) -->h[m+1] with confidence = conf and support = f[k].support / n; } else { delete h[m + 1] from H[m+1]; } } ap-enRules(f[k], H[m+1]); }

        

    文章结束给大家分享下程序员的一些笑话语录: 现在社会太数字化了,所以最好是有一个集很多功能于一身的设备!

  • 相关阅读:
    android listview去掉分割线
    svn 上传 过滤
    PPPOE 模拟环境搭建
    Android笔记之网络-基本了解
    ios多线程操作(五)—— GCD串行队列与并发队列
    UVa 679
    android中更改spinner、AutoCompleteTextView切割线的颜色
    Cocos2d-x中触摸事件
    全然符合package.json在CommonJS中的规范
    Hibernate实体对象继承策略
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3059995.html
Copyright © 2011-2022 走看看