最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

檢測異常值的4種方法和R語言時間序列分解異常檢測

2022-10-22 12:55 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=3232?

原文出處:拓端數(shù)據(jù)部落公眾號

檢測異常值的4種方法和R語言時間序列分解異常檢測

什么是異常值?

異常值是與其他觀測值有顯著差異的數(shù)據(jù)點(diǎn)。異常值會顯著扭曲特征分布和ML工作,因此我們需要觀察并形成處理它們的策略。

異常值是如何出現(xiàn)的?

這種觀察的出現(xiàn)可能是由以下原因引起的:

  • 測量方法的差異,例如,傳感器的靈敏度發(fā)生了變化;

  • 實(shí)驗(yàn)誤差,其中異常值可能是數(shù)據(jù)收集過程中錯誤的結(jié)果;

  • 引入新方法;

  • 數(shù)據(jù)收集階段或數(shù)據(jù)處理過程中的錯誤;

  • 或觀測值中方差的指示符。

根據(jù)異常值的性質(zhì),您可以保留它們或排除它們,例如,在實(shí)驗(yàn)錯誤的情況下,您希望刪除它們。

異常值的類型有哪些?

有 3 種類型的異常值:

  1. 全局:也稱為點(diǎn)異常值。這一觀察結(jié)果遠(yuǎn)遠(yuǎn)超出了整個數(shù)據(jù)集的范圍。例如:在一個班級中,所有學(xué)生的年齡都是相同的,但有一個關(guān)于500歲學(xué)生的記錄。

2. 條件:根據(jù)上下文,觀察樣本被認(rèn)為是異常的。例如,由于全球經(jīng)濟(jì)危機(jī),一個國家的經(jīng)濟(jì)表現(xiàn)急劇下降,一段時間內(nèi)較低的利率成為常態(tài)。

?

3. 集合:一組彼此接近且具有接近異常值的觀測值。如果點(diǎn)的子集作為聚合值與整個數(shù)據(jù)集顯著偏離,但單個數(shù)據(jù)點(diǎn)的值本身在上下文或全局意義上都不是異常的:

為什么識別異常值很重要?

機(jī)器學(xué)習(xí)算法對值的范圍和分布很敏感。異常值可能會誤導(dǎo) ML 模型,導(dǎo)致訓(xùn)練時間延長、準(zhǔn)確性降低,最終導(dǎo)致結(jié)果更差。但是,并非所有ML工作都受到異常值的影響,對于某些算法,您可以安全地忽略它們。

  • 異常值敏感算法:線性回歸、邏輯回歸、支持向量機(jī)

  • 異常免疫算法:所有基于樹或復(fù)雜的算法

在業(yè)務(wù)方面,您應(yīng)該了解為什么存在異常值,并且您可以將其刪除。例如,如果您有一個表示人身高的要素,并且其中一個觀測值包含一個字符串,而不是一個字符串,其奇怪值如 = “abc cm”,并且由于高度不能包含此類值,因此可以安全地將其刪除。

如何檢測異常值?

您可以通過使用不同類型的視覺效果輕松發(fā)現(xiàn)異常值:

  1. 箱線圖

以下是箱線圖顯示的內(nèi)容:

  • 中位數(shù)是位于排名序列中心的元素的值。請注意,中位數(shù)受異常值的影響較小,因此在中心顯示的是中位數(shù),而不是算術(shù)平均值。

  • 前四分位數(shù)(Q3 或 75%)是分?jǐn)?shù),只有 25% 的值高于該分?jǐn)?shù)。下四分位數(shù)(Q1 或 25%)是低于該值的值,只有 25% 的值。

  • 四分位間距 (IQR) 是 75% 和 25% 四分位數(shù)之間的差值。在此范圍內(nèi)有 50% 的值。例如,如果范圍很窄,則子組的成員在評估中是一致的。如果它是寬泛的,那么就沒有同質(zhì)的意見。

基于上述情況,您通??梢詸z測到高于“25% 百分位減去 1.5 x IQR”或低于“75% 百分位加 1.5 x IQR”的異常值,如上圖所示。

2. 直方圖

直方圖將數(shù)值數(shù)據(jù)聚合到稱為條柱的均勻間隔組中,并顯示每個條柱中值出現(xiàn)的頻率。條形圖是使用數(shù)字字段或百分比/比率字段創(chuàng)建的。直方圖有助于回答以下問題:值的分布是什么,它們在數(shù)據(jù)集中出現(xiàn)的頻率如何?

通過增加和減少條柱的數(shù)量,您可以影響數(shù)據(jù)分析的方式。雖然數(shù)據(jù)本身不會更改,但其外觀可能會更改。選擇正確數(shù)量的條柱對于正確解釋數(shù)據(jù)中的模式非常重要。太少的條柱可以隱藏一些模式,太多的條柱會夸大小的、可接受的數(shù)據(jù)更改的價值。正確的條柱數(shù)量將揭示在使用箱線圖時不可見的模式。

3.?散點(diǎn)圖

散點(diǎn)圖顯示兩個變量之間集合元素的分布。一個獨(dú)立參數(shù)的值沿 X 軸繪制,第二個從屬參數(shù)的值沿 Y 軸繪制。

散點(diǎn)圖上顯示的模式可用于查看不同類型的相關(guān)性。從點(diǎn)的一般聚類/相關(guān)線中顯著移除的點(diǎn)稱為異常值。

4.?Z 得分

z 得分也可以稱為標(biāo)準(zhǔn)分?jǐn)?shù),用于表示數(shù)據(jù)相對于均值的分布。此分?jǐn)?shù)表示低于或高于給定總體的標(biāo)準(zhǔn)差數(shù)。

z 的值可以在鐘形曲線上看到。其中 Z 得分的范圍從 -3 個標(biāo)準(zhǔn)差(正態(tài)分布曲線的最左邊角)到 +3 個標(biāo)準(zhǔn)差(正態(tài)分布曲線的最右邊角)。在大多數(shù)情況下,大于或小于 -+3 的值被標(biāo)識為異常值。

如何處理異常值?

在數(shù)據(jù)集中檢測到異常值后,您需要執(zhí)行以下 3 類操作:

  1. 刪除異常值。通常,如果您對數(shù)據(jù)應(yīng)該落在哪個范圍內(nèi)有很好的了解,例如人們的年齡,則可以刪除異常值,您可以安全地刪除超出該范圍的值。

  2. 更改異常值的值(例如,將值替換為平均值或最大值,例如90%百分位)

  3. 保留它。例如,如果 20%-40% 的數(shù)據(jù)是異常值,則不應(yīng)將其視為異常值,而應(yīng)進(jìn)一步研究它。

案例研究

我們最近有一個很棒的機(jī)會與一位客戶合作,要求構(gòu)建一個適合他們需求的異常檢測算法。業(yè)務(wù)目標(biāo)是準(zhǔn)確地檢測各種營銷數(shù)據(jù)的異常情況,這些數(shù)據(jù)包括跨多個客戶和Web源數(shù)千個時間序列的網(wǎng)站操作和營銷反饋。異常檢測算法,該算法基于時間并可從一個到多個時間序列進(jìn)行擴(kuò)展。

我們與許多教授數(shù)據(jù)科學(xué)的客戶合作,并利用我們的專業(yè)知識加速業(yè)務(wù)發(fā)展。

我們的客戶遇到了一個具有挑戰(zhàn)性的問題:按時間順序檢測每日或每周數(shù)據(jù)的時間序列異常。異常表示異常事件,可能是營銷域中的Web流量增加或IT域中的故障服務(wù)器。無論如何,標(biāo)記這些不尋常的事件確保業(yè)務(wù)順利運(yùn)行非常重要。其中一個挑戰(zhàn)是客戶處理的不是一個時間序列,而是需要針對這些極端事件進(jìn)行分析。

anomalize

這里有四個簡單步驟的工作要點(diǎn)。

  1. 第1步:安裝


  2. install.packages("tidyverse")


  3. 第2步:加載


  4. library(tidyverse)



  5. 第3步:收集時間序列數(shù)據(jù)



  6. tidyverse\_cran\_downloads


  7. ##?#?A?tibble:?6,375?x?3


  8. ##?#?Groups:?package?\[15\]


  9. ##?date?count?package


  10. ##


  11. ##?1?2017-01-01?873.?tidyr


  12. ##?2?2017-01-02?1840.?tidyr


  13. ##?3?2017-01-03?2495.?tidyr


  14. ##?4?2017-01-04?2906.?tidyr


  15. ##?5?2017-01-05?2847.?tidyr


  16. ##?6?2017-01-06?2756.?tidyr


  17. ##?7?2017-01-07?1439.?tidyr


  18. ##?8?2017-01-08?1556.?tidyr


  19. ##?9?2017-01-09?3678.?tidyr


  20. ##?10?2017-01-10?7086.?tidyr


  21. ##?#?...?with?6,365?more?rows


  22. 第4步:異常化


  23. 使用功能及時發(fā)現(xiàn)異常情況。

異常檢測工作流程

其中包括:

  • 用時間序列分解

  • 用檢測異常

  • 異常下限和上限轉(zhuǎn)換

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

PYTHON中用PROPHET模型對天氣時間序列進(jìn)行預(yù)測與異常檢測

左右滑動查看更多

01

02

03

04

時間序列分解

第一步是使用時間序列分解?!坝?jì)數(shù)”列被分解為“觀察”,“季節(jié)”,“趨勢”和“剩余”列。時間序列分解的默認(rèn)值是method = "stl",使用平滑器進(jìn)行季節(jié)性分解。

  1. ##?#?A?time?tibble:?6,375?x?6


  2. ##?#?Index:?date


  3. ##?#?Groups:?package?\[15\]


  4. ##?package?date?observed?season?trend?remainder


  5. ##


  6. ##?1?tidyr?2017-01-01?873.?-2761.?5053.?-1418.


  7. ##?2?tidyr?2017-01-02?1840.?901.?5047.?-4108.


  8. ##?3?tidyr?2017-01-03?2495.?1460.?5041.?-4006.


  9. ##?4?tidyr?2017-01-04?2906.?1430.?5035.?-3559.


  10. ##?5?tidyr?2017-01-05?2847.?1239.?5029.?-3421.


  11. ##?6?tidyr?2017-01-06?2756.?367.?5024.?-2635.


  12. ##?7?tidyr?2017-01-07?1439.?-2635.?5018.?-944.


  13. ##?8?tidyr?2017-01-08?1556.?-2761.?5012.?-695.


  14. ##?9?tidyr?2017-01-09?3678.?901.?5006.?-2229.


  15. ##?10?tidyr?2017-01-10?7086.?1460.?5000.?626.


  16. ##?#?...?with?6,365?more?rows

frequency并trend自動為您選擇。此外,可以通過輸入基于時間的周期(例如“1周”或“2個季度”)來更改選擇,可以確定有多少觀察屬于時間跨度。

異常檢測

下一步是對分解的數(shù)據(jù)執(zhí)行異常檢測。產(chǎn)生了三個新列:“remainder\_l1”(下限),“remainder\_l2”(上限)和“異?!保ㄊ?否標(biāo)志)。默認(rèn)方法是method = "iqr",在檢測異常時快速且相對準(zhǔn)確。

  1. ##?#?Groups:?package?\[15\]


  2. ##?package?date?observed?season?trend?remainder?remainder_l1


  3. ##


  4. ##?1?tidyr?2017-01-01?873.?-2761.?5053.?-1418.?-3748.


  5. ##?2?tidyr?2017-01-02?1840.?901.?5047.?-4108.?-3748.


  6. ##?3?tidyr?2017-01-03?2495.?1460.?5041.?-4006.?-3748.


  7. ##?4?tidyr?2017-01-04?2906.?1430.?5035.?-3559.?-3748.


  8. ##?5?tidyr?2017-01-05?2847.?1239.?5029.?-3421.?-3748.


  9. ##?6?tidyr?2017-01-06?2756.?367.?5024.?-2635.?-3748.


  10. ##?7?tidyr?2017-01-07?1439.?-2635.?5018.?-944.?-3748.


  11. ##?8?tidyr?2017-01-08?1556.?-2761.?5012.?-695.?-3748.


  12. ##?9?tidyr?2017-01-09?3678.?901.?5006.?-2229.?-3748.


  13. ##?10?tidyr?2017-01-10?7086.?1460.?5000.?626.?-3748.


  14. ##?#?...?with?6,365?more?rows,?and?2?more?variables:?remainder_l2?,


  15. ##?#?anomaly

現(xiàn)在嘗試另一個繪圖功能。它只適用于單個時間序列?!凹竟?jié)”消除每周的季節(jié)性。趨勢是平滑的。最后,檢測最重要的異常值。

  1. tidyverse\_cran\_downloads?%>%



  2. time_decompose(count,?method?=?"stl",?frequency?=?"auto",?trend?=?"auto")?%>%


  3. anomalize(remainder,?method?=?"iqr",?alpha?=?0.05,?max_anoms?=?0.2)?%>%



  4. plot\_anomaly\_decomposition()?+

異常下限和上限

最后一步是圍繞“觀察”值創(chuàng)建下限和上限。創(chuàng)建了兩個新列:“recomposed\_l1”(下限)和“recomposed\_l2”(上限)。

  1. ##?#?A?time?tibble:?6,375?x?11


  2. ##?#?Index:?date


  3. ##?#?Groups:?package?\[15\]


  4. ##?package?date?observed?season?trend?remainder?remainder_l1


  5. ##


  6. ##?1?tidyr?2017-01-01?873.?-2761.?5053.?-1418.?-3748.


  7. ##?2?tidyr?2017-01-02?1840.?901.?5047.?-4108.?-3748.


  8. ##?3?tidyr?2017-01-03?2495.?1460.?5041.?-4006.?-3748.


  9. ##?4?tidyr?2017-01-04?2906.?1430.?5035.?-3559.?-3748.


  10. ##?5?tidyr?2017-01-05?2847.?1239.?5029.?-3421.?-3748.


  11. ##?6?tidyr?2017-01-06?2756.?367.?5024.?-2635.?-3748.


  12. ##?7?tidyr?2017-01-07?1439.?-2635.?5018.?-944.?-3748.


  13. ##?8?tidyr?2017-01-08?1556.?-2761.?5012.?-695.?-3748.


  14. ##?9?tidyr?2017-01-09?3678.?901.?5006.?-2229.?-3748.


  15. ##?10?tidyr?2017-01-10?7086.?1460.?5000.?626.?-3748.


  16. ##?#?...?with?6,365?more?rows,?and?4?more?variables:?remainder_l2?,


  17. ##?#?anomaly?,?recomposed\_l1?,?recomposed\_l2

讓我們看一下“l(fā)ubridate”數(shù)據(jù)。我們可以plot\_anomalies()和設(shè)置time\_recomposed = TRUE。此功能適用于單個和分組數(shù)據(jù)。

  1. time_decompose(count,?method?=?"stl",?frequency?=?"auto",?trend?=?"auto")?%>%


  2. anomalize(remainder,?method?=?"iqr",?alpha?=?0.05,?max_anoms?=?0.2)?%>%


  3. time_recompose()?%>%


  4. #?繪制異常分解


  5. plot\_anomalies(time\_recomposed?=?TRUE)?+


  6. ggtitle("Lubridate?Downloads:?Anomalies?Detected")

預(yù)測

forecast是在執(zhí)行預(yù)測之前有效收集異常值的好方法。它使用基于STL的離群值檢測方法。它非???,因?yàn)樽疃嘤袃纱蔚鷣泶_定異常值帶。

結(jié)論

R軟件非常有效地用于檢測異常的許多傳統(tǒng)預(yù)測時間序列。但是,速度是一個問題,特別是在嘗試擴(kuò)展到多個時間序列時。

我們從中了解到所有軟件包的最佳組合:

  • 分解方法:我們包括兩個時間序列分解方法:( "stl"使用Loess的傳統(tǒng)季節(jié)分解)和"twitter"(使用中間跨度的季節(jié)分解)。

  • 異常檢測方法:我們包括兩種異常檢測方法:( "iqr"使用類似于3X IQR的方法forecast::tsoutliers())和"gesd"(使用Twitter使用的GESD方法AnomalyDetection)。

有問題歡迎下方留言!

點(diǎn)擊文末“閱讀原文”

獲取全文完整代碼數(shù)據(jù)資料。

本文選自《R語言時間序列分解和異常檢測方法應(yīng)用案例》。

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

R語言指數(shù)平滑法holt-winters分析谷歌Google Analytics博客用戶訪問時間序列數(shù)據(jù)

R語言O(shè)utliers異常值檢測方法比較

PYTHON中用PROPHET模型對天氣時間序列進(jìn)行預(yù)測與異常檢測

R語言用LOESS(局部加權(quán)回歸)季節(jié)趨勢分解(STL)進(jìn)行時間序列異常檢測

matlab使用分位數(shù)隨機(jī)森林(QRF)回歸樹檢測異常值

(數(shù)據(jù)挖掘)如何用大數(shù)據(jù)做用戶異常行為分析

R語言異常值檢測方法比較

時間序列分解和異常檢測方法應(yīng)用案例

matlab使用hampel濾波,去除異常值

Matlab中的偏最小二乘法(PLS)回歸模型,離群點(diǎn)檢測和變量選擇

R語言離群值處理分析

R語言線性回歸和時間序列分析北京房價影響因素可視化案例

R語言分布滯后線性和非線性模型(DLNM)分析空氣污染(臭氧)、溫度對死亡率時間序列數(shù)據(jù)的影響

Python面板時間序列數(shù)據(jù)預(yù)測:格蘭杰因果關(guān)系檢驗(yàn)Granger causality test藥品銷售實(shí)例與可視化

R語言從經(jīng)濟(jì)時間序列中用HP濾波器,小波濾波和經(jīng)驗(yàn)?zāi)B(tài)分解等提取周期性成分分析

R語言計(jì)量經(jīng)濟(jì)學(xué):工具變量法(兩階段最小二乘法2SLS)線性模型分析人均食品消費(fèi)時間序列數(shù)據(jù)和回歸診斷

R語言用標(biāo)準(zhǔn)最小二乘OLS,廣義相加模型GAM?,樣條函數(shù)進(jìn)行邏輯回歸LOGISTIC分類

R語言中實(shí)現(xiàn)廣義相加模型GAM和普通最小二乘(OLS)回歸

R語言中的偏最小二乘回歸PLS-DA

R語言中的偏最小二乘PLS回歸算法

偏最小二乘回歸(PLSR)和主成分回歸(PCR)

R語言用線性模型進(jìn)行預(yù)測:加權(quán)泊松回歸,普通最小二乘,加權(quán)負(fù)二項(xiàng)式模型,多重插補(bǔ)缺失值

R語言計(jì)量經(jīng)濟(jì)學(xué):虛擬變量(啞變量)在線性回歸模型中的應(yīng)用

PYTHON用時變馬爾可夫區(qū)制轉(zhuǎn)換(MRS)自回歸模型分析經(jīng)濟(jì)時間序列

R語言使用ARIMAX預(yù)測失業(yè)率經(jīng)濟(jì)時間序列數(shù)據(jù)

R語言經(jīng)濟(jì)學(xué):動態(tài)模型平均(DMA)、動態(tài)模型選擇(DMS)預(yù)測原油時間序列價格

R語言用向量自回歸(VAR)進(jìn)行經(jīng)濟(jì)數(shù)據(jù)脈沖響應(yīng)研究分析

R語言從經(jīng)濟(jì)時間序列中用HP濾波器,小波濾波和經(jīng)驗(yàn)?zāi)B(tài)分解等提取周期性成分分析

R語言計(jì)量經(jīng)濟(jì)學(xué)與有時間序列模式的機(jī)器學(xué)習(xí)預(yù)測

R語言使用灰色關(guān)聯(lián)分析(Grey Relation Analysis,GRA)中國經(jīng)濟(jì)社會發(fā)展指標(biāo)

R語言用向量自回歸(VAR)進(jìn)行經(jīng)濟(jì)數(shù)據(jù)脈沖響應(yīng)研究分析

R語言從經(jīng)濟(jì)時間序列中用小波濾波和經(jīng)驗(yàn)?zāi)J椒纸獾忍崛≈芷谛猿煞址治?/p>

R語言用向量自回歸(VAR)進(jìn)行經(jīng)濟(jì)數(shù)據(jù)脈沖響應(yīng)研究分析

R語言實(shí)現(xiàn)偏最小二乘回歸法 partial least squares (PLS)回歸

R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸

R語言Lasso回歸模型變量選擇和糖尿病發(fā)展預(yù)測模型

R語言實(shí)現(xiàn)貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析

Python貝葉斯回歸分析住房負(fù)擔(dān)能力數(shù)據(jù)集

Python用PyMC3實(shí)現(xiàn)貝葉斯線性回歸模型

?


檢測異常值的4種方法和R語言時間序列分解異常檢測的評論 (共 條)

分享到微博請遵守國家法律
尖扎县| 延吉市| 深泽县| 日照市| 寻乌县| 阜宁县| 固阳县| 双柏县| 绥江县| 微山县| 容城县| 合川市| 宁化县| 翁牛特旗| 毕节市| 商水县| 柳林县| 喜德县| 淮南市| 正宁县| 奉化市| 双柏县| 玛多县| 宁国市| 古浪县| 阜新市| 雷州市| 延庆县| 信阳市| 靖州| 浦城县| 资阳市| 澎湖县| 高淳县| 来凤县| 镇康县| 长白| 泊头市| 甘南县| 宜丰县| 南澳县|