数据流挖掘

2020-06-02  本文已影响0人  愚人v

《Mining of Massive Datasets》 第四章(Mining Data Streams )知识点提要
本章 pdf 下载链接:http://infolab.stanford.edu/~ullman/mmds/ch4.pdf
本书资料链接:http://mmds.org

前言

1. 流处理模型

1.1 数据流管理系统

1.2 流查询

流查询主要有两种方式:固定查询(standing query)和 ad hoc 查询。

固定查询

固定查询永远不变地执行并在适当的时候产生输出结果,如查询传感器的最高温。

ad hoc 查询

2. 数据抽样

2.1 固定比例抽样

样本的规模会随着流的增长而增长

假定搜索引擎收到查询流,流由三元组(user,query,time)组成
Question:在过去一个月用户所提交的重复查询的比率是多少?假设只能存储 1/10 的流元素

显然的做法是对每个查询产生一个 0~9 的随机数,当且仅当随机数为0时才存储该元组。大数定律会保证大部分用户所存储的查询比例接近 1/10。

但是,如果问题变成求用户提交的平均重复查询数目,上述抽样机制会带来错误。

  • 假设某用户有 x 个搜索查询提交了一次, d 个搜索查询提交了两次,不存在超过 2 次的其他查询。
  • 显然该问题的正确答案时:d/(x+d)

但是,如果采用上述 1/10 的抽样机制,得到的结果会是 d/( 10x+19d )

  • 对于原本 d 个提交 2 次的搜索查询,只有 d/100 会在样本中再重复 2 次(1/10 * 1/10 * d)
  • 而原本 d 个提交 2 次的搜索查询样本中只出现一次的概率是:1/10 * 9/10 + 9/10 * 1/10 = 18/100

    因此,平均重复查询数目:

代表性样本采样

选择哪些用户作为代表性用户至关重要

样本规模的变化

2.2 固定窗口大小抽样

样本空间大小固定,不会随着流规模的扩大而增长

3. 流过滤

即只接受流中满足某个准则的元组集合。

布隆过滤器

一个布隆过滤器由以下几部分组成

  1. n 个位组成的数组(视为 n 个桶),每个位的初始值为0。
  2. 一系列哈希函数 h1,h2 ... hk。每个哈希函数将流元组键值映射到上述 n 个桶中。
  3. m 个键值组成的集合 S(样本准则)。

假阳率

所有真正的负例当中被判为正例的比例,即本来不能通过的流元素却通过过滤的比例

使用飞镖投掷模型来模拟布隆过滤。假设 y 支飞镖和 x 个靶位,预计给定靶位至少被投中一次的概率。

  • 给定飞镖不能投中给定靶位概率 (x-1)/x
  • y 支飞镖全部没有命中给定靶位的概率 [(x-1)/x]^y,即
  • 根据重要极限公式

    y 支飞镖全部没有命中给定靶位的概率为 e^(-y/x),故假阳率位 1- e^(-y/x)

    故对于有 k 个哈希函数的布隆过滤器,假阳率为

4. 流中独立元素的数目统计

使用若干不同的哈希算法和随机算法,在每个流空间开销较小的情况下得到近似结果

FM(Flajolet-Martin)算法

流元素 a 的哈希值 h(a) 末尾至少有 r 个 0 的概率为 2^(-r)。

假定流中有 m 个独立元素,那么任何元素的哈希值末尾不满足至少有 r 个 0 的概率为

可改写为

组合估计

  1. 平均值

假定在每个哈希函数上得到不同的 2^R,然后求平均值

  1. 中位数

取每个哈希函数得到不同的 2^R 的中位数。

  1. 平均值和中位数组合

先将哈希函数分成若干组,组内取平均值,组外取中位数

将哈希函数分成若干组,组内取中位数,组外取平均值

5. 矩估计

流的 k 阶矩:流中至少出现一次的元素出现次数的 k 次方之和

二阶矩估计的 AMS 算法

上一篇下一篇

猜你喜欢

热点阅读