TPFU算法

写在前面:模糊效用(fuzzy utility)挖掘和不确定数据集(uncertain dataset)之间有什么区别吗?两者又是不是能够结合在一起使用呢?今天要记录的这篇算法虽然年代久远(2015年,two-phase algorithm),但确实一篇比较经典的 fuzzy utility algorithm,需要好好研究一番

Fuzzy utility mining with upper-bound measure

样例

Fuzzy Method

Membership value

Transaction Dataset

Transaction database.png

Utility of Each Item

Utility of each item.png

定义

  • 项集(itemset):由 I={i1,i2,,in}I=\lbrace i_1, i_2, \ldots, i_n \rbrace 中的多个项组成的子集 {i1,,il}\lbrace i_1, \ldots, i_l \rbrace,且 1<ln1 < l \le nijiki_j \not= i_k(jkj \not= k); ll 表示的是该项集的长度,我们称为 llitemsetitemset

  • 量化交易项集(quantitative transaction database):量化交易项集(QDB)由许多条交易项组成 {Trans1,Trans2,,Transy,Transz}\lbrace Trans_1, Trans_2, \ldots, Trans_y, Trans_z \rbrace,其中下标指代每条交易项的编号(TID),zz 表示该 QDB 中总共有多少条交易项

  • 模糊集合(fuzzy set):每条交易项都是由许多 itemset 组成,在交易项 TransyTrans_y 中项 izi_z(下标代表第几个)的模糊量化值 fyzf_{yz} = (\big( fyz1Rz1\frac{f_{yz1}}{R_{z1}}+fyz2Rz2\frac{f_{yz2}}{R_{z2}}+\dots+fyzlRzl\frac{f_{yzl}}{R_{zl}}+\dots+fyzhRzh\frac{f_{yzh}}{R_{zh}} )\big),其中 RzlR_{zl} 指的是项 izi_z 属于哪些模糊区间(本文中是 LowLowMiddleMiddleHighHighfyzlf_{yzl} 同理),izi_zTransyTrans_y 中的数量用 vyzv_{yz} 表示。比如项 DDTrans6Trans_6 中模糊集合的量化值为 f6,Df_{6,D}=(0.6/D.Low,0.4/D.Middle,0/D.High)(0.6/D.Low, 0.4/D.Middle, 0/D.High)

    Ps. 0.6、0.4 和 0 这三个数字来源于第一个样例(Fuzzy Method),因为垂直于Quantity轴的直线会至多与两个模糊区间相交,所以在本文中一个项的模糊集量化值至多同时存在两个,计算方式可以看作是求解相似三角形

  • 利润值(external utility):每个项都有一个唯一的效用值,为了方便理解通常称为利润值,使用 s(iz)s(i_z) 表示(若为负数又会如何处理呢?)

  • 在某条交易项上项的模糊效用值(fuzzy utility of item in a transaction):思路和一般项的效用值计算方式一致,在模糊效用挖掘中计算公式为 fuyzlfu_{yzl}=fyzl×vyz×s(iz)f_{yzl} \times v_{yz} \times s(i_z);同样以在 Trans6Trans_6 中的项 DD 为例,f6,Df_{6,D}=0.6×3×30.6 \times 3 \times 3,而求解在整个数据集中项所有的模糊效用在之后介绍

  • 在某条交易项上项集的模糊效用值(fuzzy utility of itemset in a transaction):同样是在某条交易项中,fuyXfu_{yX}=fyX×RyzlX(vyz×s(iz))f_{yX}\times\sum_{R_{yzl} \subseteq X}(v_{yz} \times s(i_z)),需要特别指出 fyXf_{yX} 是取在项集 XX 所有项元素 izi_z 中,其模糊量化值最小的作为该值进行计算;比如在 Trans6Trans_6 中,模糊项 C.LowC.LowD.LowD.Low 的模糊量化值分别是 110.60.6,那么 f6,{C.Low,D.Low}f_{6,\lbrace C.Low, D.Low \rbrace}=0.60.6

  • 项的模糊效用值(fuzzy utility of item):在整个数据集中,项的模糊效用值计算公式为 afuzafu_z=izlyfuyzl\sum_{i_{zl} \in y}fu_{yzl}

  • 项集的模糊效用值(fuzzy utility of itemset):在整个数据集中,项集的模糊效用值计算公式为 afuXafu_X=yfuyX\sum_{y}fu_{yX};同样以项集 XX={C.Low,D.Low}\lbrace C.Low, D.Low \rbrace 为例,afuXafu_X=fu2,Xfu_{2,X}+fu4,Xfu_{4,X}+fu6,Xfu_{6,X}+fu8,Xfu_{8,X}=33.233.2

  • 高模糊效用项集(high fuzzy utility itemset):当某个项集的模糊效用值不小于给定的阈值 λ\lambda,那么我们称该项集是高模糊效用项集(HFU

  • 在某条交易项上项的最大模糊效用值(maximal fuzzy utility of item in a transaction):因为在一条交易项集上存在许多模糊区间,所以对某个项 izi_z 必然是有一个最大的模糊量化值和最小的模糊量化值,文中取最大的模糊效用值作为上边界预估值计算,达到 downward-closure property 的效果

  • 交易项的最大模糊效用值(maximal fuzzy utility of a transaction):因为有项的最大模糊效用值,自然由多个项组成的交易项自然也有最大模糊效用值,计算公式为 mtfuymtfu_y=izTransymfuyz\sum_{i_z \subseteq Trans_y}mfu_{yz}

  • 模糊效用上边界(fuzzy utility upper-bound):根据交易项的最大模糊效用值来求上边界(预估值,类似于 TWUTWU)可以求得项集 XX 的预估值 fubbXfubb_X=XTransyQDBmtfuy\sum_{X \subseteq Trans_y \subseteq QDB}mtfu_y

  • 候选高模糊效用项集(high fuzzy utility upper-bound itemset):当一个项集的模糊效用上边界值不小于阈值 λ\lambda 时,该项集有可能是 HFU,还需要进一步计算核实

算法

TPFU Algorithm

TPFU algorithm.png

总结

TPFU算法没有使用到很厉害的剪枝策略或者其它计算方法,因为是属于经典的 two-phase 类算法,所以阅读伪代码并没有很大的难度。个人有以下几点疑问:1)在 Phase I 过程中,反复遍历 QDB,在实际代码中也是如此吗?2)只使用一个 upper-bound 是不是会让边界值显得不够紧凑?3)有没有更高效的方法计算各种最大值?4)在实际代码中是用数组还是hashmap存储这些数据?文中也提到,FUM 不同于之前研究的 HUEM 那般简单,更多的是为了得到有用的关联规则,用 ”很小、小、合适、大、很大“(Membership Function) 这样的形容词代替精准的数字,更符合我们日常生活中的描述习惯,但随之而来的就是求解步骤更加繁琐,具体细节还需要进一步研究代码

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享