强规则定义
对于一个频繁集L,找到所有的L的非空子集非空子集f,如果f -> L - f,的概率满足最小置信度,则这是一个强规则。
如果{A,B,C,D}是一个频繁集,则它有如下候选规则
ABC -> D, ABD -> C, ACD -> B, BCD -> A, A -> BCD, B -> ACD, C -> ABD, D -> ABC,AB -> CD, AC -> BD, AD -> BC, BC -> AD, BD -> AC, CD -> AB
从中我们可以看出:
如果L的大小|L| = k, 则一共有(2的k次方减2) 个候选关联规则(除去 空集和全集)。
简化计算
根据公式我们可以推导出如下规则:
对于L = {A,B,C,D},它的子集的置信度有如下规则,
c(ABC -> D)>=c(AB -> CD) >= c(A -> BCD)
从而
图中被红圈标注的皆是不满足最小置信度的规则。
算法实现(只计算了满足的强规则,未对算法进行简化)
/**
* 计算一个项集产生的关联规则的所有置信度
* @param $itemset 要计算的某一项集
* @param $lItemset 所有满足支持度的集合
* @param $count 该项集的支持度
* @return $confidence 求出满足最小置信度的关联数组
*/
public function confidence($itemset, $lItemset