学习数据挖掘 2 :数据流中高频模式挖掘

什么是数据流(data stream)?

源源不断地、连续地产生地数据,称为数据流。现在科技发展迅猛,生活中处处可见数据流——微信上实时信息、天气预报系统采集的数据、证券交易记录等等。数据流是连续的,没有界限的,需要进行实时处理。对于一般有边界的、静态的数据,我们可以进行多次扫描;但对于数据流,我们往往只能进行一次扫描。同时,在大数据时代,数据的大量和更新的时间间隔短,更加造成了处理数据流的困难性。

高频模式的挖掘问题

大家知道,静态资源中也存在着高频模式,比如一篇文章的主题词,或者数学书的“结论平凡”或“留作习题”等话语。对于字数较少的文章,我们可以完全统计每个单词出现的次数,从而知道准确的频率数。当字数逐渐变多时,我们往往不能也不需要知道每个单词的频率数,因为我们更关心比如“出现频率大于20的所有单词”或“最高频的前5个词”等问题。所以,扫描第一遍文本时,我们可以利用一些启发式的算法,提出一些候选词汇;第二遍扫描时,对候选词汇进行一一核实,也可以做到完全准确。但是,数据流一般只可扫描一次,而启发算法又不是绝对准确的。既然无法完全准确,人们自然想到设计一些启发算法来控制错误率。

问题的陈述

假设数据流是由 《学习数据挖掘 2 :数据流中高频模式挖掘》 个字构成的( PS:前面说了数据流无边界emmmm, 这里就是截了一段来研究),每个字有 《学习数据挖掘 2 :数据流中高频模式挖掘》 种可能( 《学习数据挖掘 2 :数据流中高频模式挖掘》 非常大,和汉字的数量差不多大吧),我们的目标是,找到出现频率不小于 《学习数据挖掘 2 :数据流中高频模式挖掘》 的所有字。

班主任提出的四个测试,即武汉中考考察内容语文测试、数学测试、英语测试和政治测试。

以上面这句话为例,包括标点一共40个字,如果我们设置 《学习数据挖掘 2 :数据流中高频模式挖掘》 , 就应该能够挑选出“测”和“试”(各出现了5次)。

打擂法 (没找到专业名称555)

频率超过 《学习数据挖掘 2 :数据流中高频模式挖掘》 次的字数最多只有 《学习数据挖掘 2 :数据流中高频模式挖掘》 个,因此我们可以开一个长度为 《学习数据挖掘 2 :数据流中高频模式挖掘》 的数组用来存储候选者和频数。一开始数组为空。每从数据流读入一个词,数组这样更新:

  • 如果词在数组中,(操作A)那么该词相应频数加一;
  • 如果词不再数组中
    • 如果数组还没满,(操作B)那么将词加入数组中,并设置其频数为一(操作B);
    • 如果数组满了,由于我们无法将词加入数组,相对地,(操作C)我们将数组中所有词的频数减一。如果某个词频数降至零,就把它从数组中删除,从而空出一个候选位。

评价:

由于操作C每次会减 《学习数据挖掘 2 :数据流中高频模式挖掘》 个频数,而所有词的总频数是 《学习数据挖掘 2 :数据流中高频模式挖掘》 , 因此最多进行 《学习数据挖掘 2 :数据流中高频模式挖掘》 次操作C。于是,对于一个频数大于 《学习数据挖掘 2 :数据流中高频模式挖掘》 的词,最后( 《学习数据挖掘 2 :数据流中高频模式挖掘》 个词处理完毕)一定会出现在候选名单中。但是,一个频数小于 《学习数据挖掘 2 :数据流中高频模式挖掘》 的词,也可能出现在候选名单中,即假的正例。

比如在上面的例子中,设置 《学习数据挖掘 2 :数据流中高频模式挖掘》 时,我们最后保留下来的字是“测”(5次)、“试”(5次)、“、”(顿号,2次)和“治”(1次),其中“、”和“治”都是假的正例(false positive)。”治”这个是真不能忍qaq,它能留下来完全是因为它处在一个较有利的位置(在数据流的后部)。

待解决的问题:

  • 只出现一次,但处于数据流末端,从而幸运地保留下来的假的正例。
  • 无法给出错误率的上界。

Lossy Counting 算法

算法核心:

  • 将数据流分割成数个窗口
  • 每段分别进行严格统计出现的字和频数
  • 统计结束后和之前的数据进行整合、按频数排序,保留频数位于前 《学习数据挖掘 2 :数据流中高频模式挖掘》 的字。
  • 每个字的频数减少1(消灭只出现一次的字),频数变成0的字从候选名单中删除。

比如,我们取错误率 《学习数据挖掘 2 :数据流中高频模式挖掘》 , 窗口大小 《学习数据挖掘 2 :数据流中高频模式挖掘》 , 上面的例子变为

班主任提出的四个测试 | ,即武汉中考考察内容 |

语文测试、数学测试、 | 英语测试和政治测试。 |

按照Lossy Counting算法,最后得到的高频词只有”测””试”,而”、””治”都被滤掉了。

如果把例子中的”和”也改为顿号,即

班主任提出的四个测试 | ,即武汉中考考察内容 |

语文测试、数学测试、 | 英语测试、政治测试。 |

得到的高频词有”测” “试” “、”(统计得到的频率分别为2、2、1,真实的频率为5、5、3, 误差分别为3、3、2,差别挺大的,怎么肥四?)。

理论上可以计算出,误差的上界为 《学习数据挖掘 2 :数据流中高频模式挖掘》 。因此上面的误差是可以接受的。

如果想减少误差,我们可以加大窗口大小 《学习数据挖掘 2 :数据流中高频模式挖掘》 ,但这需要更大的存储空间。在实践中,应当在存储空间和准确率两者中作出权衡。

参考资料

数据流基本问题–确定频繁元素(二)lossy counting和sticky samplingblog.csdn.net《学习数据挖掘 2 :数据流中高频模式挖掘》
数据流基本问题–确定频繁元素(一) – CSDN博客blog.csdn.net
A comparative analysis of frequent pattern mining algorithms used for streaming data – PDF Free Downloadzapdf.com《学习数据挖掘 2 :数据流中高频模式挖掘》

    原文作者:善良的摩羯小明
    原文地址: https://zhuanlan.zhihu.com/p/42713938
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞