写在前面:模糊效用(fuzzy utility)挖掘和不确定数据集(uncertain dataset)之间有什么区别吗?两者又是不是能够结合在一起使用呢?今天要记录的这篇算法虽然年代久远(2015年,two-phase algorithm),但确实一篇比较经典的 fuzzy utility algorithm,需要好好研究一番
Fuzzy utility mining with upper-bound measure
样例
Fuzzy Method
Transaction Dataset
Utility of Each Item
定义
-
项集(itemset):由 中的多个项组成的子集 ,且 ,(); 表示的是该项集的长度,我们称为 –
-
量化交易项集(quantitative transaction database):量化交易项集(QDB)由许多条交易项组成 ,其中下标指代每条交易项的编号(TID), 表示该 QDB 中总共有多少条交易项
-
模糊集合(fuzzy set):每条交易项都是由许多 itemset 组成,在交易项 中项 (下标代表第几个)的模糊量化值 = +++++ ,其中 指的是项 属于哪些模糊区间(本文中是 , 和 , 同理), 在 中的数量用 表示。比如项 在 中模糊集合的量化值为 =
Ps. 0.6、0.4 和 0 这三个数字来源于第一个样例(Fuzzy Method),因为垂直于Quantity轴的直线会至多与两个模糊区间相交,所以在本文中一个项的模糊集量化值至多同时存在两个,计算方式可以看作是求解相似三角形
-
利润值(external utility):每个项都有一个唯一的正效用值,为了方便理解通常称为利润值,使用 表示(若为负数又会如何处理呢?)
-
在某条交易项上项的模糊效用值(fuzzy utility of item in a transaction):思路和一般项的效用值计算方式一致,在模糊效用挖掘中计算公式为 =;同样以在 中的项 为例,=,而求解在整个数据集中项所有的模糊效用在之后介绍
-
在某条交易项上项集的模糊效用值(fuzzy utility of itemset in a transaction):同样是在某条交易项中,=,需要特别指出 是取在项集 所有项元素 中,其模糊量化值最小的作为该值进行计算;比如在 中,模糊项 和 的模糊量化值分别是 和 ,那么 =
-
项的模糊效用值(fuzzy utility of item):在整个数据集中,项的模糊效用值计算公式为 =
-
项集的模糊效用值(fuzzy utility of itemset):在整个数据集中,项集的模糊效用值计算公式为 =;同样以项集 = 为例,=+++=
-
高模糊效用项集(high fuzzy utility itemset):当某个项集的模糊效用值不小于给定的阈值 ,那么我们称该项集是高模糊效用项集(HFU)
-
在某条交易项上项的最大模糊效用值(maximal fuzzy utility of item in a transaction):因为在一条交易项集上存在许多模糊区间,所以对某个项 必然是有一个最大的模糊量化值和最小的模糊量化值,文中取最大的模糊效用值作为上边界预估值计算,达到 downward-closure property 的效果
-
交易项的最大模糊效用值(maximal fuzzy utility of a transaction):因为有项的最大模糊效用值,自然由多个项组成的交易项自然也有最大模糊效用值,计算公式为 =
-
模糊效用上边界(fuzzy utility upper-bound):根据交易项的最大模糊效用值来求上边界(预估值,类似于 )可以求得项集 的预估值 =
-
候选高模糊效用项集(high fuzzy utility upper-bound itemset):当一个项集的模糊效用上边界值不小于阈值 时,该项集有可能是 HFU,还需要进一步计算核实
算法
TPFU Algorithm
总结
TPFU算法没有使用到很厉害的剪枝策略或者其它计算方法,因为是属于经典的 two-phase 类算法,所以阅读伪代码并没有很大的难度。个人有以下几点疑问:1)在 Phase I 过程中,反复遍历 QDB,在实际代码中也是如此吗?2)只使用一个 upper-bound 是不是会让边界值显得不够紧凑?3)有没有更高效的方法计算各种最大值?4)在实际代码中是用数组还是hashmap存储这些数据?文中也提到,FUM 不同于之前研究的 HUEM 那般简单,更多的是为了得到有用的关联规则,用 ”很小、小、合适、大、很大“(Membership Function) 这样的形容词代替精准的数字,更符合我们日常生活中的描述习惯,但随之而来的就是求解步骤更加繁琐,具体细节还需要进一步研究代码