離散分佈——泊松分佈、指數分佈

概述

搜索引擎使用網絡爬蟲在爬網頁時,有一個重要的策略是對已經爬過的網頁,要隔段時間重爬一次,防止網頁更新導致索引庫中的網頁過期。怎麼確定這個時間間隔呢?通常會用到泊松分佈。

泊松分佈

先解釋一下泊松分佈:假設過去很長一段時間內的跟蹤統計數據表明,某醫院每個小時會出生3個小孩兒,這個數據就屬於泊松分佈。因爲這個數據滿足幾個條件:1、這個數據是在很長的一個時間段內來統計得到的;2、每小時出生的小孩兒基本穩定在一個水平;3、每個小時出生的小孩兒數量互不影響;4、隨意選取某一個小時來看出生小孩兒數量的話,會發現出生3個的概率很大,出生2個或4個的概率會變小,出生0個或10個的概率極小。用圖表示,就是這樣的:
這裏寫圖片描述

回到網頁更新爬取這個話題,用R給出應用解決方案:
假設根據過去經驗,某網站更新頻率爲一天3次。

//該網站一天更新0,1,2,3,4,5次的概率分別有多大?
dpois(c(0,1,2,3,4,5),3)//0.04978707 0.14936121 0.22404181 0.22404181 0.16803136 0.10081881
//該網站一天更新0,0~1,0~2,0~3,0~4,0~5次的概率分別有多大?
ppois(c(0,1,2,3,4,5),3)//0.04978707 0.19914827 0.42319008 0.64723189 0.81526324 0.91608206
//上面兩個函數d爲密度函數,p爲累計函數,還有q爲分位函數,r爲隨機函數。

從這裏很容易看出泊松分佈的特點。更新頻率均值附近的概率較大,越往兩邊越小,且右尾部很長。

指數分佈

既然更新頻率符合泊松分佈,那如果把每次網頁的更新時間點之間的時間間隔記錄下來,這些數據就必然服從指數分佈。圖形化之後,指數分佈的圖是這個樣子的:
這裏寫圖片描述
下面給出R語言的應用方法
已經網站平均每天更新頻率爲3次,可以計算出平均更新時間間隔爲8小時。

//網站剛剛更新過一次之後,1,2,3,4,5,6,7,8小時之後的又有更新概率爲別是多少?
pexp(c(1,2,3,4,5,6,7,8),1/8)//0.1175031 0.2211992 0.3127107 0.3934693 0.4647386 0.5276334 0.5831380 0.6321206

根據指數分佈的概率密度圖,加上我們可以接受的爬取網頁時的命中率,我們就可以計算出讓爬蟲隔多長時間爬一次最合適了。

參考

泊松分佈和指數分佈:10分鐘教程
泊松分佈與美國槍擊案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章