資料分析基本概念:Outlier、Robustness、Sensitivity、Sanity

Robustness 指的是這個數據、方法有多穩,多不容易受到假設、參數改變、隨機偏誤或是 outlier 的影響。

本篇介紹資料分析、解讀時常會碰到的幾個概念:Outlier、Robustness、Sensitivity、Sanity。不管你是否從事『資料』相關職位,在工作甚至生活中都有可能接觸到『資料』。了解資料分析的基本概念,可以幫助我們更正確的認識資料代表的意義,更有效率的應用資料做出正確的決定,避免不必要的謬誤。


Outlier 

Outlier 就是跟大部分的數值差很多的點,一般的定義包含 1.5 倍 quantile(統計上的傳統), 2.5 倍 STD (心理學和某些領域會用),以及根據實際應用需求人工決定。

但是也要注意,篩選 Outlier 過程很可能過於隨心所欲,變成『先射箭,再畫靶』(也就是overfitting to hyperparameter)。例如說:針對某個 metrics,你就是想要最後的平均值落在 10 以下,可能會一直修改篩選 outlier 的規則直到目的達成。

更好的 outlier 處理方式不是直接刪除,而是把案例抓出來,看看造成 outlier 的原因(才知道是否應該刪除)。定義 outlier 也可以用來抓出可能的資料錯誤,以及挑選需要人工複查(manual review)的案例。古早時期,有些人習慣用 999,-999 等明顯不正確的數值代表缺失的資料(missing data),如果碰到這種情況,也可以藉由挑選 outlier 發現。

呈現數值時,最好將不去除和去除 outlier 的數據並列。而如果數值涉及比較,更要謹慎,最好是用『事先決定的』同樣定義方法去除 outlier 以避免 overfitting to hyperparameter。

Robustness and Sensitivity

Robustness 指的是這個數據、方法有多穩,多不容易受到假設、參數改變、隨機偏誤或是 outlier 的影響。假如有個模型,預測網站流量明年會增長 20%,但是只要稍微改動一個假設的參數,預測就會變成 -20%,那麼這個麼預測就是很不 robust 的。

一個常見的增加 robustness 的方法,就是用 中位數 (median) 取代 平均數(mean)。例如照護機構中被照顧的人的平均年齡,可能會因為一個年輕的植物人被拉低很多,中位數就不太會受到這類單一事件的影響。

不是所有任務都要追求 robustness,有些時候,工作需求就是緊盯著數據上的極端值(例如機器的使用率,算法給出的浮動價格等等,有極端值時需要即時發現處理),這種時候反而要用『不 robust』 的方法監控。

Sensitivity 可以翻譯為敏感度,基本上就是 robustness 的相反。Sensitivity analysis 常常被用來測試結果(y)對於哪些因素(x1, x2,…)特別敏感。例如:一個定價策略下的『盈利』,是否對『成本』過於敏感。通常我們不喜歡重要的結果對於無法控制的事情太過敏感。

Sensitivity analysis 也可以用來找出關鍵著力點,比如建立一個模型研究客戶的忠誠度跟整個客戶旅程中每一步驟的關係,結果發現客戶忠誠對『第一個接觸的員工』最為敏感,就要加強對員工的訓練。

更重要的概念是:如果是關鍵的決定,大方向不應該過於依賴選擇的方法。

Sanity check

Sanity 就是『合理性』的意思,嚴格來說這不是一個數據分析的專用語,日常生活或公司業務都很常使用。用任何方法得到一個數據,都需要 做 Sanity check:就是重新檢視看看『這樣對嗎?』

比如說我們做了一個 數據模型,得出結論是『大學生每週最佳睡眠時間是20 』,以常理判斷就知道是錯誤;除了訴諸這種常理推斷,Sanity check 的常見方法還包含概數估算以及和其他數字比較。商業環境中,很多類似的愚蠢錯誤如果沒有加入 sanity check 的步驟,也會不小心造成很大的影響。

有一則關於 資料分析基本概念:Outlier、Robustness、Sensitivity、Sanity 的留言

發表留言