python异常值检测_python – 使用RPCA的异常值
我讀到了使用RPCA查找時間序列數據的異常值.我對RPCA的基本原理和理論有所了解.我有一個執行RPCA的
Python庫,并且幾乎有兩個矩陣作為輸出(L和S),輸入數據的低秩近似和稀疏矩陣.
輸入數據:(行為一天,10個要素為列.)
DAY 1 - 100,300,345,126,289,387,278,433,189,153
DAY 2 - 300,647,245,426,889,987,278,133,295,153
DAY 3 - 200,747,145,226,489,287,378,1033,295,453
獲得的產出:
L
[[ 125.20560531 292.91525518 92.76132814 141.33797061 282.93586313
185.71134917 199.48789246 96.04089205 192.11501055 118.68811072]
[ 174.72737183 408.77013914 129.45061871 197.24046765 394.84366245
259.16456278 278.39005349 134.0273274 268.1010231 165.63205458]
[ 194.38951303 454.76920678 144.01774873 219.43601655 439.27557808
288.32845493 309.71739782 149.10947628 298.27053871 184.27069609]]
S
[[ -25.20560531 0. 252.23867186 -0. 0.
201.28865083 78.51210754 336.95910795 -0. 34.31188928]
[ 125.27262817 238.22986086 115.54938129 228.75953235 494.15633755
727.83543722 -0. -0. 26.8989769 -0. ]
[ 0. 292.23079322 -0. 0. 49.72442192
-0. 68.28260218 883.89052372 0. 268.72930391]]
推論:(我的問題)
現在我如何推斷可歸類為異常值的點.對于前者通過查看數據,我們可以說1033看起來像一個異常值. S矩陣中的對應條目是883.89052372,其與S中的其他條目相比更多.可以使用具有固定閾值的概念來找出S矩陣條目與輸入矩陣中的對應原始值的偏差來確定該點.是異常值?還是我完全理解RPCA的概念錯了? TIA的幫助.
最佳答案 您正確理解了穩健PCA(RPCA)的概念:稀疏矩陣S包含異常值.
但是,S通常會包含許多觀察結果(非零值),您可能不會將其歸類為異常.如你所知,過濾掉這些點是個好主意.
應用固定閾值來識別相關異常值可能適用于一個數據集.但是,如果底層分布的均值和方差發生變化,則在許多數據集上使用閾值可能會產生較差的結果.
理想情況下,您計算異常分數,然后根據該分數對異常值進行分類.一種簡單的方法(通常用于異常值檢測)是查看您的數據點(潛在異常值)是否位于假定分布的尾部.
例如,如果您假設您的分布是高斯分布,則可以計算Z分數(z):
z =(x-μ)/σ,
其中μ是平均值,σ是標準偏差.
然后,您可以將閾值應用于計算的Z分數,以便識別異常值.例如:如果對于給定的觀察z> 3,數據點是異常值.這意味著您的觀察值與平均值相差超過3個標準偏差,并且位于高斯分布的0.1%尾部.與使用非標準化值的閾值相比,這種方法對數據的變化更為魯棒.此外,調整對異常值進行分類的z值比為每個數據集查找實際比例值(在您的情況下為883.89052372)更簡單.
總結
以上是生活随笔為你收集整理的python异常值检测_python – 使用RPCA的异常值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果供应商赛尔康拟将印度员工人数增加逾一
- 下一篇: 中兴新机通过工信部无线电核准,预计为 A