Apriori算法:我们以下图某个杂货店的交易清单进行讲解。
交易号码商品0豆奶,莴苣1莴苣,尿布,葡萄酒,甜菜2豆奶,尿布,葡萄酒,橙汁3莴苣,豆奶,尿布,葡萄酒4莴苣,豆奶,尿布,橙汁
首先介绍两个基本概念:
支持度:
一个项集的支持度为:数据集中包含该项集的记录所占的比例。如{豆奶}的支持度为4/5。{豆奶,尿布}的支持度为3/5。支持度是针对项集而言的,所以可以定义一个最小支持度,只保留满足最小支持度的项集。
可信度或者置信度:
是针对类似{尿布}->{葡萄酒}的关联规则定义的。可信度被定义为:支持度(
{尿布,
葡萄酒
}
)/支持度({
尿布
})。上图中
支持度(
{尿布,
葡萄酒
}
)=3/5,
支持度({
尿布
})=4/5,所以
{尿布}->{葡萄酒}的可信度为3/4 = 0.75。这意味着对包含尿布的所有记录,,我们的规则对其中的75%都适用。
Apriori算法的基本原理为:如果某个项集是频繁的,那么它的所有子集也是频繁的。反过来说,如果某个项集是非频繁集,那个它的超集也一定是非频繁集。
如果我们想要通过计算各个项集的支持度来找出频繁项集,就可以先从子集开始计算,如果判断得出某个子集为非频繁项集,那么它的超集就不用计算了。使用该原理就避免了项集数目的指数增长,从而可以在合理时间内计算出频繁项集。