蒙特卡洛方法分析Web頁面瀏覽量

做者|Michael Grogan 編譯|VK 來源|Towards Data Sciencepython

蒙特卡洛這種方法在金融等領域獲得了普遍的應用,以便對各類風險情景進行建模。web

然而,該方法在時間序列分析的其餘方面也有重要的應用。在這個特定的例子中,讓咱們看看蒙特卡洛方法如何被用來爲web頁面瀏覽量建模。數組

以上時間序列來源於Wikimedia Toolforge,是從2019年1月到2020年7月維基百科上「醫療」一詞的網頁瀏覽量的時間序列。數據都是按每日劃分的。dom

咱們能夠看到,時間序列天天都顯示出顯著的波動性,而且顯示了數據中一些奇怪的「峯值」的典型特徵。或者說,在這些天中,搜索該術語的次數特別高。機器學習

試圖對這樣的時間序列進行直接預測一般是徒勞的。這是由於不可能從統計學上預測搜索詞什麼時候會出現峯值,由於這會受到獨立於過去數據的影響。例如,與健康有關的重大新聞事件會致使搜索該詞的高峯。學習

然而,特別有趣的是咱們能夠建立一個模擬,以分析web頁面統計的許多潛在場景,並估計在不正常的場景下這個搜索詞的頁面瀏覽量有多高或多低。.net

機率分佈

當運行蒙特卡羅模擬時,重要的是要注意所使用的分佈類型。code

考慮到頁面瀏覽量不能爲負,咱們假設分佈是正偏態的。orm

如下是數據的柱狀圖:blog

咱們能夠看到,分佈顯示正偏態,有幾個離羣值使分佈尾部向右傾斜。

>>> series = value;
>>> skewness = series.skew();
>>> print("Skewness:");
>>> print(round(skewness,2));
Skewness:
0.17

此分佈的偏態爲0.17。

QQ圖代表,除了出現的異常值外,大多數值的分佈都是正態分佈。

然而,更可能的是,因爲正偏態,該數據表示對數正態分佈。咱們將數據轉換爲對數格式將致使分佈的正態性。

>>> mu=np.mean(logvalue)
>>> sigma=np.std(logvalue)
>>> x = mu + sigma * np.random.lognormal(mu, sigma, 10000)
>>> num_bins = 50

這是對數數據的分佈,更能表明正態分佈。

此外,此分佈的偏態如今爲-0.41。

>>> logvalue=pd.Series(logvalue)
>>> logseries = logvalue;
>>> skewness = logseries.skew();
>>> print("Skewness:");
>>> print(round(skewness,2));
Skewness:
-0.41

這代表有輕微的負偏態,但QQ圖仍顯示正態分佈。

蒙特卡羅模擬

既然數據已經被適當地轉換,就能夠生成蒙特卡羅模擬來分析頁面瀏覽量統計的潛在結果範圍。頁面瀏覽量按照所選的分佈以對數格式表示。

首先,計算時間序列的平均值和波動率(用標準差衡量)。

>>> mu=np.mean(logvalue)
>>> sigma=np.std(logvalue)
>>> x = mu + sigma * np.random.lognormal(mu, sigma, 10000)
>>> num_bins = 50

而後用x定義相應的數組,使用mu和sigma,再生成10000個隨機數,這些隨機數按照定義的均值和標準差遵循對數正態分佈。

array([5.21777304, 5.58552424, 5.39748092, ..., 5.27737933, 5.42742056, 5.52693816])

如今,讓咱們繪製直方圖。

一樣,這些值以對數格式表示。咱們看到這個形狀表明正態分佈。如前所述,蒙特卡羅模擬的思想不是預測網頁瀏覽量自己,而是提供在許多不一樣的模擬中網頁瀏覽量的估計值,以便肯定

  • 1)大多數網頁瀏覽量的範圍;
  • 2)分佈中極值的範圍。

結論

在本文中,你看到了:

  • 蒙特卡羅模擬的應用

  • 偏態在定義分佈中的做用

  • 如何進行模擬以識別得到極值的機率

原文連接:https://towardsdatascience.com/monte-carlo-simulations-in-python-analysing-web-page-views-b6dbec2ba683

歡迎關注磐創AI博客站: http://panchuang.net/

sklearn機器學習中文官方文檔: http://sklearn123.com/

歡迎關注磐創博客資源彙總站: http://docs.panchuang.net/

相關文章
相關標籤/搜索