記得在做電商運營初期,每每為我們頻道的促銷活動鎖取得的“超高”銷售額感動,但后來隨着工作的深入,我越來越覺得這里面水很深。商家運營、品類運營不斷的通過刷單來獲取其所需,或是商品搜索排名,或是某種kpi指標,但這些所謂的“臟數據”,卻妨礙了平台運營者對於真實數據的分析和促銷效果的評估。今天我們討論一種非監督學習算法(Unsupervised Learning Algorithm),試圖在真實數據中,找出並標注異常數據。
該算法是基於高斯分布的異常檢測算法(Anomaly Detection Algorithm),在很多場景中被廣泛使用。其算法的核心思想是:給定一個m*n維訓練集,將訓練集轉換為n為的高斯分布,通過對m個訓練樣例的分布分析,得出訓練集的概率密度函數,即得出訓練集在各個維度上的數學期望μ和方差σ^2,並且利用少量的Cross Validation集來確定一個閾值ε。當給定一個新的點,我們根據其在高斯分布上算出的概率,及閾值ε,判斷當p<ε判定為異常,當p>ε判定為非異常。
該算法在一維下很好理解,而對於具有n維指標的訓練樣例來說,則稍微復雜。在二維情況下,訓練樣例分別分布於x1軸和x2軸,其概率密度函數可以用x1與x2確定的點,在三維空間中的高度來表征。如下圖:

事實上,對於無偏移的n維高斯分布,其概率密度函數可以使用以下兩種方式來表示:
概率式:


矩陣式:


關於ε的確定,我們需要部分已知結果的訓練樣例作為CV集。在訓練過程中,嘗試多種ε的值,然后根據F1 Score來選擇ε的值,其計算方式為:
1、將預測與真實值的4種組合列出:預測為真且正確(TP),預測為真且錯誤(TN),預測為假且錯誤(FN),預測為假且正確(TN)
2、計算准確率(precision=TP/(TP+FP))和召回率(recall=TP/(TP+FN));
3、計算F1:

4、根據F1的最大值選擇ε

