歡迎回到我的離群值博客系列。 在第一集,我們著眼於定義和直觀地識別異常值。 在第二集,我們使用分位數(通過箱線圖)來幫助識別一維中的異常值。
在本集中,我們將研究使用馬氏距離識別多個維度的異常值。 我們也快速瀏覽一下 T 2 ,這是馬哈拉諾比斯距離的簡單擴展。
多維異常值
圖 1 是其中一張圖的複製品第1集並顯示 1,000 個數據點的二維圖,其中有明顯的異常值(用紅色方塊標記):
Figure 1: 1,000 data points in two dimensions, outlier marked in redFigure 1: 1,000 data points in two dimensions, outlier marked in redFigure 1: 1,000 data points in two dimensions, outlier marked in redFigure 1: 1,000 data points in two dimensions, outlier marked in red圖 1:二維 1,000 個數據點,異常值標記為紅色
圖 1 中的散點圖使我們能夠輕鬆地在二維中直觀地確定離群值,即使離群值從單變量直方圖分佈來看並不明顯。 因此,盒須(分位數)技術描述於第2集分析多維數據時並不總是可靠。 並直觀地識別異常值(如第1集)隨著維數的增加變得困難。 那麼我們如何才能更可靠地檢測這些多維異常值呢?
馬哈拉諾比斯距離
馬氏距離 (D中號)為我們提供了一種識別多維異常值的數值方法。 它以其創建者印度統計學家 Prasanta Chandra Mahalanobis (1893-1972) 的名字命名。 有關馬哈拉諾比斯博士的更多信息,我引導您訪問這篇維基百科文章。
廣告中號圖 1 所示數據集的繪圖如下所示:
Figure 2: Mahalanobis Distance plot for 1,000 data points from Figure 1Figure 2: Mahalanobis Distance plot for 1,000 data points from Figure 1Figure 2: Mahalanobis Distance plot for 1,000 data points from Figure 1Figure 2: Mahalanobis Distance plot for 1,000 data points from Figure 1圖 2:圖 1 中 1,000 個數據點的馬氏距離圖
圖 2 按行順序顯示所有數據點與 D中號在 Y 軸上。 D 的值中號每個點表示每個點距所有數據點質心的標準化“距離”。 紅色數據點明顯從其餘點中脫穎而出,因此需要將其作為異常值進行進一步調查。
那麼這個計算是如何進行的呢?
一般方法
假設我們有 1,000 個點的二維分佈。 在每個維度中,999 個點是從均值為零、標準差為 1.0 的正態分佈總體中抽取的。 然後我添加了一個離群點作為樣本中的最後一個點。 如果我們製作 XY 散點圖,我們可能會得到這樣的結果:
Figure 3: Scatterplot of 1,000 uncorrelated data points, with one marked outlier (red)Figure 3: Scatterplot of 1,000 uncorrelated data points, with one marked outlier (red)Figure 3: Scatterplot of 1,000 uncorrelated data points, with one marked outlier (red)Figure 3: Scatterplot of 1,000 uncorrelated data points, with one marked outlier (red)圖 3:1,000 個不相關數據點的散點圖,其中一個標記為異常值(紅色)
請注意圖 3 中的紅色興趣點。 我們可以很容易地計算出1000個點樣本在每個維度上的均值和標準差,並且我們可以利用畢達哥拉斯定理計算出紅點到點質心的歐氏距離。 對於多維:

事實上,我們可以畫以質心為中心的圓,表示與質心的距離相等,如圖 4 所示:
Figure 4: Scatterplot of 1,000 uncorrelated data points, with equidistant circles from centroid overlaidFigure 4: Scatterplot of 1,000 uncorrelated data points, with equidistant circles from centroid overlaidFigure 4: Scatterplot of 1,000 uncorrelated data points, with equidistant circles from centroid overlaidFigure 4: Scatterplot of 1,000 uncorrelated data points, with equidistant circles from centroid overlaid圖 4:1,000 個不相關數據點的散點圖,其中與質心等距的圓重疊
在圖 4 中,圓圈表示到點質心 1、2、3 和 4 個單位(從最小到最大)的距離。 這裡可以清楚地看到,紅色的點距離點的質心最遠。 其距離用“d”表示。
如果我們有類似的尺度分佈(即標準差相同),那麼這種方法就很有效。但是,如果我們有不同的比例,如圖 5 所示,該怎麼辦?
Figure 5: Scatterplot of 1,000 uncorrelated data points, having different means and standard deviations in each dimension.Figure 5: Scatterplot of 1,000 uncorrelated data points, having different means and standard deviations in each dimension.Figure 5: Scatterplot of 1,000 uncorrelated data points, having different means and standard deviations in each dimension.Figure 5: Scatterplot of 1,000 uncorrelated data points, having different means and standard deviations in each dimension.圖 5:1,000 個不相關數據點的散點圖,每個維度具有不同的平均值和標準差。
這裡我們有兩個問題。 首先,X3 維度中的點的平均值不為零。 這很簡單,只需從所有數據點中減去平均值即可解決。
第二個問題是X3維度的標準差遠大於X1維度的標準差。 這使得距離計算毫無意義,除非我們能夠補償差異。 這也很容易完成。 校正從零開始的均值偏移後,我們只需將每個維度除以其標準差即可。 這可以對標準差中的任何不匹配進行標準化。 評估該距離的多維方程變為:

其中 m 和 s 代表每個維度的平均值和標準差。 如果我們進行這些計算並重新繪製標準化數據,我們會得到下圖:
Figure 6: Data from Figure 5 after transforming to correct for mean and standard deviation of each dimensionFigure 6: Data from Figure 5 after transforming to correct for mean and standard deviation of each dimensionFigure 6: Data from Figure 5 after transforming to correct for mean and standard deviation of each dimensionFigure 6: Data from Figure 5 after transforming to correct for mean and standard deviation of each dimension圖 6:經過轉換以校正每個維度的平均值和標準差後的圖 5 中的數據
所以現在我們有一種方法可以調整數據的非零均值和不等的標準差。 只要每個維度的數據相互獨立(即不相關),這種方法就很有效。但是,如果存在如圖 1 所示的相關性,那麼我們該怎麼辦?
實現此目的的一種方法是使用主組件來建立與數據趨勢一致的新軸,然後執行上述操作。 但這需要大量的點擊。 (如果對其如何工作感興趣,請參閱附錄 A。)
幸運的是,Mahalanobis 博士為我們提供了一種簡單而優雅的方法來計算這個距離!
用於計算距離的馬哈拉諾比斯方程
Mahalanobis 博士計算 D 的優雅方程中號是:
在哪裡:

是 i 的 N 維值的向量th單獨觀察到的數據點。
N = 感興趣的維度(或列)數。
T表示轉置操作。

是感興趣的 N 個維度(或列)中每個維度的均值向量。
S -1是所有數據點的 NxN 協方差矩陣的逆矩陣(可從 JMP 中的多元平台獲取)。
將適當的值代入上述方程可得出 D中號從我th指向數據集中所有點的質心。 如果您對這種計算的原理感興趣,請參閱附錄 B 中的一個小樣本問題。
JMP 中的 Mahalanobis 圖
D中號其本身對我們來說沒有什麼用處。 它僅在與其他數據點相比時才有意義。 JMP 中的 Mahalanobis 圖顯示了這些結果。
我們可以通過轉到分析/多元方法/多元,選擇列,然後從紅色下拉列表中選擇離群值分析/馬氏距離來生成馬氏圖。 對於圖 1 的示例數據集,給出:
Figure 7: Mahalanobis distances for 1,000 data point sample (repeat of Figure 2)Figure 7: Mahalanobis distances for 1,000 data point sample (repeat of Figure 2)Figure 7: Mahalanobis distances for 1,000 data point sample (repeat of Figure 2)Figure 7: Mahalanobis distances for 1,000 data point sample (repeat of Figure 2)圖 7:1,000 個數據點樣本的馬氏距離(重複圖 2)
這裡我們看到數據表第1行的數據點距離最大(D中號),表明它距離所有 10 個數據點的質心最遠。 藍線代表我們是否相信 D 的 95% 置信上限 (UCL)中號與零顯著不同。 紅點明顯高於 UCL,因此需要將其作為異常值進行進一步調查。
但異常值並不總是那麼容易檢測到,尤其是對於小數據集。 在附錄 B 的示例中,我展示了小數據集(三個維度上的 10 個數據點)的示例計算。 該數據集生成一個D中號情節如下圖所示:
Figure 8: Mahalanobis distances for 10 data point sample in Appendix BFigure 8: Mahalanobis distances for 10 data point sample in Appendix BFigure 8: Mahalanobis distances for 10 data point sample in Appendix BFigure 8: Mahalanobis distances for 10 data point sample in Appendix B圖 8:附錄 B 中 10 個數據點樣本的馬氏距離
D.中號繪圖已將點 1 識別為異常值。 但我們也看到D中號第 1 行與 D 沒有什麼不同中號對於第 7 行! 為什麼是這樣? 這個問題的答案還得等下一集才能揭曉!
關於 T 的快速說明2
聯合管理計劃還提供 T 選項2在分析/多變量方法/多變量下進行計算,然後進行離群值分析。 時間2就是 D 的平方中號。 有些人喜歡用它來強制異常值和大量數據之間有更多的視覺分離,但是 T 2確實包含與 D 相同的信息中號。
下一集
在下一集中,我們將介紹 Jackknife 距離,這是查看異常值的另一種方式,這將使上述示例數據集中的異常值脫穎而出。
查看本系列的所有帖子了解異常值。
附錄 A:使用主成分來識別異常值
如果我們有辦法旋轉圖 1 中的軸,使它們與數據趨勢對齊,那就太好了,如下所示:
Figure 9: Conceptual rotation of axes for two-dimensional data setFigure 9: Conceptual rotation of axes for two-dimensional data setFigure 9: Conceptual rotation of axes for two-dimensional data setFigure 9: Conceptual rotation of axes for two-dimensional data set圖 9:二維數據集軸的概念旋轉
然後我們可以使用前面描述的技術來標準化數據以檢測異常值。
實現此目的的一種方法是主成分分析 (PCA)。 PCA 找到最適合數據的正交(相互垂直)軸集。 您可以在數據集中擁有與原始維度(列)一樣多的主成分。 在 JMP 中,PCA 可以在兩個位置找到:在分析/多元方法/主成分下,或在分析/多元方法/多元下,然後從多元旁邊的紅色下拉列表中選擇主成分/相關性。 紅色下拉菜單還提供了將主成分保存回數據表的選項。 完成此操作後,您可以使用這些方法來校正上述平均值和標準差,以確定距質心的距離。
附錄 B:D中號示例數據集的計算
假設我們有一個包含 3 列 10 行的示例數據集:
Figure 10: Small sample data set used for DM example calculationsFigure 10: Small sample data set used for DM example calculationsFigure 10: Small sample data set used for DM example calculationsFigure 10: Small sample data set used for DM example calculations圖 10:用於 DM 示例計算的小樣本數據集
在 JMP 中,我們可以對這三列運行分析/多元方法/多元來生成以下散點圖矩陣:
Figure 11: Scatterplot matrix for example dataFigure 11: Scatterplot matrix for example dataFigure 11: Scatterplot matrix for example dataFigure 11: Scatterplot matrix for example data圖 11:示例數據的散點圖矩陣
在圖 11 中,我們可以看到,在 X1-X2 維度中進行比較時,第 1 行數據(以紅色突出顯示)似乎是異常值,但在 X1-X3 或 X2-X3 圖中並不那麼清晰。
我們想要計算第一個點的馬氏距離。 所以,填寫上面D中的向量和矩陣中號等式中,我們從興趣點開始:

每列的平均值可以通過多種不同的方式找到。 讓我們使用 Cols/Column Viewer,然後顯示摘要:
Figure 12: Summary statistics for example three-dimensional 10-point data setFigure 12: Summary statistics for example three-dimensional 10-point data setFigure 12: Summary statistics for example three-dimensional 10-point data setFigure 12: Summary statistics for example three-dimensional 10-point data set圖 12:三維 10 點數據集示例的匯總統計
因此均值向量變為:

接下來,我們需要協方差矩陣,可以在“分析/多元方法”下找到該矩陣。 從紅色下拉三角形中選擇協方差矩陣:
Figure 13: Covariance matrix for example three-dimensional 10-point data setFigure 13: Covariance matrix for example three-dimensional 10-point data setFigure 13: Covariance matrix for example three-dimensional 10-point data setFigure 13: Covariance matrix for example three-dimensional 10-point data set圖 13:三維 10 點數據集的協方差矩陣示例
我們還需要協方差矩陣的逆矩陣 S -1 。 JMP 不會從菜單系統向我們提供該信息,但我們可以從自定義腳本輕鬆獲取該信息,如下所示:
Figure 14: JMP JSL script to find inverse of a matrixFigure 14: JMP JSL script to find inverse of a matrixFigure 14: JMP JSL script to find inverse of a matrixFigure 14: JMP JSL script to find inverse of a matrix圖 14:用於查找矩陣逆的 JMP JSL 腳本
這導致:
S -1 =

然後我們只需插入並求解矩陣方程:





馬氏距離 (D中號對於示例數據集第 1 行中顯示的數據, ) 為 2.814。
Figure 15: Mahalanobis plot for example data set (repeat of Figure 8)Figure 15: Mahalanobis plot for example data set (repeat of Figure 8)Figure 15: Mahalanobis plot for example data set (repeat of Figure 8)Figure 15: Mahalanobis plot for example data set (repeat of Figure 8)圖 15:示例數據集的 Mahalanobis 圖(重複圖 8)