2013年4月9日 星期二

網事, 你的網站有在成長嗎? 迴歸線圖版

在 iSearch  的演講中, 我難得用剪貼的方式來講我想說的, 從 Google Analytics 來看網站的成長是很累的, 尤其是下面三個問題:

1. 要解決每週的周期問題?
2. 兩個數字就能決定成長嗎?
3. 你每天要這樣看嗎?

而我當時剪了幾張圖:

這個是 Google Analytics 最標準的流量圖, 從上圖的確是很難判斷這網站有沒有在成長? 而比較好的方式, 就是用區間做比較, 如下圖:

雖然可以從數字的上升與下降, 但還是很難看得出有沒有在成長, 因為這區間比較太不敏感了, 即使我們改成用週為單位來看:
這樣就好看多了, 但說起來, 若真的去畫出迴歸線的話, 還蠻清楚可以看得出來的:
當加入了月迴歸與週迴歸是否就容易判斷了呢? 但更重要的是最左下角的一個計算, 也就是上一篇所說的 "燈號":

Signal: -17.01 

因為我們即使去做區間比較, 或者是迴歸分析, 不是準確度不足, 不然就是敏感度不足, 或者是會有矛盾現像, 雖然說有的數字是成長, 有的數字是退步, 代表進入一個不穩定狀態, 但要真正的判斷成長與否, 用燈號是最準的.

而之前 "網事" 的警示燈在我眼中已經是不夠準確的了, 因此有進去用的人會發現被這圖表的趨示取代, 不只算出燈號給你看, 也畫出迴歸趨勢圖給你做參考的依據, 甚至最有趣的是從週迴歸與月迴歸可以看到長期與短期的趨向, 雖然燈號比較受短期影響, 但也不會乎略長期的價值.

Anyway, 若還沒試的人可以用用看, 跟我講你的想法.

而我在這邊也開放我這個部落格的趨勢, 我想應該有人就看出有趣的地方了, 迴歸線圖不只不會受到一些突然大量流量的影響, 甚至在現在的狀況是:

IMHO, 黑貘來說
Week Slope: -0.67 Yint: 46
Week Trend: -1.45%
Month Slope: 0.13 Yint: 36
Month Trend: 0.36%
Signal: 19.17 

也就是週斜率, 月斜率不一致, 而信號居然沒跟週斜率一至的有趣現像, 而我覺得現在這個部落格是成長的沒錯, 因此可以證明看週斜率並不是好事, 大家可以來看趨勢圖的 Live Demo, 會不會覺得數字是相當有趣的事阿!?

2013年4月8日 星期一

你網站有在成長嗎? 最困難的數學題.....

有時, 最簡單的問題往往是最困難的問題, .....

這幾個月我遇到數學系的教授或畢業的朋友, 我就一直問他一個問題:

若我們知道一個時間序列, 知道它是有週期性的, 但除外, 往往會遇到一些變異突然變高與變低, 能找到一個系統去排除這種不是誤差數字, 找到這時間序列的真正走向嗎?

上面這樣說聽起來很玄, 事實上就是若我們知道一個網站的訪客狀況, 而我們知道這對象本來就有依每週的週期變化, 但往往遇到活動就或暴量, 遇到機器問題就或掛掉, 在不知道這些事情的情型下, 卻又能夠排除這個巨量 "誤差", 找到這網站是否真的有在成長或是在衰退?

因此要知道網站有沒有在成長的計算, 不是單純的比較兩個週期的數字變化那麼簡單, 要符合下面四個問題或要求:

1. 要解決週期變化
2. 要解決巨量誤差
3. 要能夠很敏感的知道最近的改變
4. 要能夠很穩定的不要有錯誤警報

當然還有一個更重要的問題: 學習區間要越短, 收斂要很快, .......

這下子就很麻煩的, 甚至在某些觀點, 上面的要求是 "互斥" 的, 當然不是這意思, 而是說要同時滿足是相當困難的.

而我在三個月信誓旦旦的寫出一篇, 網事, 網站的成長與燈號, 裏面有說到我用三個方法解決掉這個問題:

1. 移動平均: 消瀰掉週期產生的變動差異.
2. 過濾離峰值: 也就是 Data Cleaning, 去掉一些事件產生的離峰值.
3. 迴歸分析: 算出最接近的成長斜率.


但當我寫完之後, 我就開始後悔了, 因為這方法, 距離真正要解決最上面的四個問題還有段距離, 因此這三個月我就懸滯在這邊了, 雖然主要因為是過年的關係, 但這個問題我一直放在心上想辦法解決.

的確我也說: 畢竟這個數值是種猜測, 是永遠猜不準的, 即使猜得很準有時意義也沒這麼高, 對經營者而言, 就是希望網站一直成長, 成長越多越好, 但是若是讓他知道, 除了活動與機器掛掉外, 還有甚麼 "基本功" 做對或做錯, 而讓網站成長或衰退, 而從過去看現在, 從現在決定未來該怎麼走, 這件事也是挺重要的, 若能夠算得更準也是好事.

而在兩個星期在跟某教授聊完天後, 我就在想說還有甚麼解法是我沒想到的, 而我那時想的是傅立葉
的計算方式, 來去看週期走向, 但在想, 事實上我們很清楚人的行為就是每週的週期是最強的, 扣掉這個不是月, 就是季與年, 但我們在做經營決策若是用這種週期就太糟糕了, 應該是跟據每天最新的數字去行動才對.

因此我就想說, 做個最基本的微分差來看變化, 當時一直覺得我們看微分的變化通常不是指趨向, 而是趨向的改變, 而我當時想到若是我放棄移動平均, 而是用週期的變化平均, 說不定是有解的, 不只是移動平均是不須要的, 甚至是迴歸更不須要.

我在那時才發現我一直被既有的算式給綁住, 這問題說不定就如同最基本的答案, 只要看最基礎的成長狀況, 只是不一樣的是不能看整個區間, 而是要每天每天去看, 然後再來去算 "平均".

因此最後的演算法是:

1. 算出每天跟上週同期的變化 (消瀰週期性)
2. 過濾離峰值 (這跟之前是一樣)
3. 用半衰期的方式去求平均

而為甚麼用半衰期的方式去求平均, 這是我在前年做 "神貘天氣" 時想很久的方法, 也就是我們知道越近的資料越準確, 而我們如何去用一連串的預測來去求平均, 此時我就覺得幸好當時有做這專案, 不然遇到這問題我還真不知道如何解決, 此時, 這四個問題就真的有解了.

的確, 這個數學題很難, 但事實上是看起來很難罷了, 因為某些茫點讓我們限制了一些思考以及方向,有時用最簡單的方式就可以解決, 因此最後還是用很簡單的數學, 連迴歸都沒用到, 只是做基本的差分, 甚至我原本想要套用一個 "當高次方程式參數比低次很小的時候可以忽略", 但後來想想還是直接做掉好了, 最後終於讓我放下我一直覺得不夠好的大石頭.

在上個星期我在一場 iSearch 的演講說到網事, 裏面有幾張投影片可以給大家分享, 從這邊大概就可以知道網事是在解決甚麼問題了, 只是解決的夠不夠好罷了....

熱門文章