數據流挖掘

《Mining of Massive Datasets》 第四章(Mining Data Streams )知識點提要
本章 pdf 下載鏈接:http://infolab.stanford.edu/~ullman/mmds/ch4.pdf
本書資料鏈接:http://mmds.org

前言

  • 流數據處理的若干限制
    1. 數據以一個或多個流的方式到來,流元素分發速度快,必須對數據及時處理
    2. 通常來說數據量十分大,無法存儲整個數據流
  • 流處理算法通常在內存中執行,一般不會或者極少訪問二級存儲器
  • 數據流處理的每個算法都在某個程度上包含流的匯總過程
  • 核心問題:How to make critical calculations about the stream using a limited amount of memory?
  • 流處理算法的原則:通常情況下,獲得問題的近似解比精確解要高效得多。

1. 流處理模型

1.1 數據流管理系統

  • 類比數據庫管理系統,流處理器實際上也可以看成是一個數據管理系統


    數據流管理系統

    若干個流進入系統,每個流的數據流、數據類型不必相同,流元素到達速率不受系統控制,對流數據,不及時處理會永久丟失。

  • 歸檔存儲器容量大,速度慢,通常進行歸檔處理,無法滿足快速應答查詢,但是同樣不能存儲整個數據流
  • 有限工作存儲器容量小,速度快,可存儲部分流數據,用于快速應答查詢
  • ad-hoc 查詢:用戶根據自己的需求,靈活的選擇查詢條件,系統能夠根據用戶的選擇生成相應的統計報表,用戶無需對 SQL 和數據庫架構有了解

1.2 流查詢

流查詢主要有兩種方式:固定查詢(standing query)和 ad hoc 查詢。

固定查詢

固定查詢永遠不變地執行并在適當的時候產生輸出結果,如查詢傳感器的最高溫。

ad hoc 查詢

  • 通過存儲數據流的合適部分或者流概要信息來為查詢的應答做準備
  • 可以在工作存儲器上保存每個流的滑動窗口,將窗口看成是關系數據庫而在其上執行任意的 SQL 查詢

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

    因此,平均重復查詢數目:

代表性樣本采樣

  • 挑選1/10 的用戶并將他們所有的搜索查詢放入樣本中,不考慮其他用戶的搜索查詢
  • 使用哈希函數將用戶名或用戶 ID 哈希到桶中,提取一個桶的用戶。
  • 更一般的,若想得到 a/b 比例的用戶,可以哈希到 b 個桶中,提取前 a 個桶。

選擇哪些用戶作為代表性用戶至關重要

樣本規模的變化

  • 哈希函數 h,元組鍵值 K,閾值 t
  • 樣本由滿足 h(K) <= t 的元組組成
  • 調整樣本空間大小:降低閾值 t 為 t-1,刪除樣本空間中 h(K) = t 的元組

2.2 固定窗口大小抽樣

樣本空間大小固定,不會隨著流規模的擴大而增長

  • 樣本空間 S,能容納 s 個樣本
  • 任何時候都盡可能保持足夠多的元組,并且樣本空間已滿時,隨著流增長會丟棄某些元組,丟棄元組會被新元組取代。
  • 保證任何時候選擇選擇某一任意位置的概率和選擇其他位置的概率相等。可用歸納法證明,n 個元素時概率是 s/n,第 n+1 個元素到達時是 s/n+1。

3. 流過濾

即只接受流中滿足某個準則的元組集合。

布隆過濾器

一個布隆過濾器由以下幾部分組成

  1. n 個位組成的數組(視為 n 個桶),每個位的初始值為0。
  2. 一系列哈希函數 h1,h2 ... hk。每個哈希函數將流元組鍵值映射到上述 n 個桶中。
  3. m 個鍵值組成的集合 S(樣本準則)。
  • 對于流中的元組,若鍵值在集合 S 中,則通過過濾器。
  • 對于集合 S 中所有鍵值,利用每個哈希函數進行處理,將在數組的對應位置為1。
  • 當鍵值K的流元素到達時,檢查所有的哈希函數h對應為是否為1,如果是則允許通過。

假陽率

所有真正的負例當中被判為正例的比例,即本來不能通過的流元素卻通過過濾的比例

使用飛鏢投擲模型來模擬布隆過濾。假設 y 支飛鏢和 x 個靶位,預計給定靶位至少被投中一次的概率。

  • 給定飛鏢不能投中給定靶位概率 (x-1)/x
  • y 支飛鏢全部沒有命中給定靶位的概率 [(x-1)/x]^y,即
  • 根據重要極限公式

    y 支飛鏢全部沒有命中給定靶位的概率為 e^(-y/x),故假陽率位 1- e^(-y/x)

    故對于有 k 個哈希函數的布隆過濾器,假陽率為

4. 流中獨立元素的數目統計

使用若干不同的哈希算法和隨機算法,在每個流空間開銷較小的情況下得到近似結果

FM(Flajolet-Martin)算法

  • 基本思想:如果流中看到的不同元素越多,那么不同的哈希值也會越多,同時,也越可能看到其中一個值變得“異常”。具體的異常性質是該值后多個0結束。
  • 任何流元素 a 應用哈希函數 h 時,位串 h(a) 的尾部將以 0 結束(可能沒有),尾部 0 的數目稱為尾長,流中所有元素的最大尾長為 R。
  • 用 2^R 來估計目前為止流中獨立元素數目。

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

假定流中有 m 個獨立元素,那么任何元素的哈希值末尾不滿足至少有 r 個 0 的概率為


可改寫為
  • 結論
    1. 如果 m 遠大于 2^r,那么發現一個尾長長度至少為 r 的概率接近1;
    2. 如果 m 遠小于 2^r,那么發現一個尾長長度至少為 r 的概率接近0。

組合估計

  1. 平均值

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

  • 會受到偶然極大值得影響,即某個哈希函數得到的 2^R 過大。( 2^R 是以指數成倍增長的)
  1. 中位數

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

  • 得到的值永遠都是 2 的冪,不可能得到非常近似的估值
  1. 平均值和中位數組合

先將哈希函數分成若干組,組內取平均值,組外取中位數

將哈希函數分成若干組,組內取中位數,組外取平均值

5. 矩估計

流的 k 階矩:流中至少出現一次的元素出現次數的 k 次方之和

  • 0 階矩表示流中獨立元素個數
  • 1 階矩表示整個流的長度,也就是元素個數
  • 2 階矩度量流中元素分布的非均勻性。越小越均勻。

二階矩估計的 AMS 算法

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374