您的位置:首页 > 其它

关联规则项目[数据挖掘]关联规则挖掘

2013-05-04 20:30 211 查看
废话就不多说了,开始。。。

联关则规(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]);
}

文章结束给大家分享下程序员的一些笑话语录:

现在社会太数字化了,所以最好是有一个集很多功能于一身的设备!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: