1. Python和機(jī)器學(xué)習(xí)擴(kuò)展異常檢測(cè)
1.1. 機(jī)器學(xué)習(xí)有助于大規(guī)模數(shù)據(jù)可觀測(cè)性和數(shù)據(jù)監(jiān)控
1.1.1. 配備了機(jī)器學(xué)習(xí)的檢測(cè)器可以更靈活地應(yīng)用到更多的數(shù)據(jù)表上,從而消除了隨著數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)湖的增長(zhǎng)進(jìn)行手動(dòng)檢查和手動(dòng)操作的需要
1.1.2. 機(jī)器學(xué)習(xí)檢測(cè)器可以實(shí)時(shí)學(xué)習(xí)和適應(yīng)數(shù)據(jù)乎赴,并且可以捕獲到人眼看不到的復(fù)雜的季節(jié)模式
1.1.3. 使用機(jī)器學(xué)習(xí)中的一些概念忍法,用更規(guī)整的方式來(lái)勾勒問(wèn)題,從而提供大規(guī)模的數(shù)據(jù)可觀測(cè)性和數(shù)據(jù)信任
1.2. 構(gòu)建一個(gè)完美的預(yù)測(cè)器是不可能的无虚,而且對(duì)任何有趣的預(yù)測(cè)問(wèn)題都是如此
1.3. 在假陽(yáng)性和假陰性之間缔赠,或者在精確率和召回率之間,總要有所取舍
1.4. 真陽(yáng)性
- 1.4.1. 當(dāng)一個(gè)數(shù)據(jù)點(diǎn)確實(shí)有問(wèn)題且我們的檢測(cè)器也同樣發(fā)出認(rèn)為其“異秤烟猓”的信號(hào)時(shí)
1.5. 假陽(yáng)性
1.5.1. 預(yù)測(cè)異常嗤堰,但實(shí)際正常
1.5.2. 雖然發(fā)出了數(shù)據(jù)監(jiān)控警報(bào),但并沒(méi)有真正出現(xiàn)問(wèn)題
1.5.3. 浪費(fèi)了用戶的時(shí)間來(lái)對(duì)警報(bào)做出響應(yīng)
1.5.4. 假陽(yáng)性是我們檢測(cè)到異常但存疑的數(shù)據(jù)點(diǎn)實(shí)際上沒(méi)有異常的情況
-
1.5.5. 假陽(yáng)性檢測(cè)就像狼來(lái)了度宦,換句話說(shuō)就是你的算法給出了“異程呦唬”的結(jié)果,但數(shù)據(jù)點(diǎn)實(shí)際上沒(méi)有任何問(wèn)題
- 1.5.5.1. “喊狼來(lái)了”的探測(cè)器
1.6. 真陰性
- 1.6.1. 當(dāng)一個(gè)數(shù)據(jù)點(diǎn)一切正常且我們的檢測(cè)器也沒(méi)有檢測(cè)到它(即發(fā)出“不異掣瓿”的信號(hào))時(shí)
1.7. 假陰性
1.7.1. 預(yù)測(cè)正常离唬,但實(shí)際異常
1.7.2. 確實(shí)存在問(wèn)題,但沒(méi)有發(fā)出數(shù)據(jù)監(jiān)控警報(bào)
1.7.3. 把一個(gè)真正的問(wèn)題忽視了
1.7.4. 假陰性是數(shù)據(jù)點(diǎn)確實(shí)有問(wèn)題但檢測(cè)器沒(méi)有檢測(cè)到的情況
-
1.7.5. 假陰性檢測(cè)就像一只沉睡的警犬划鸽,也就是說(shuō)你的算法會(huì)讓問(wèn)題無(wú)法被發(fā)現(xiàn)
1.7.5.1. “沉睡警犬型”的探測(cè)器
1.7.5.2. 過(guò)于保守的檢測(cè)器永遠(yuǎn)不會(huì)發(fā)出異常檢測(cè)输莺,這意味著當(dāng)事情真的出錯(cuò)時(shí),它們也肯定會(huì)錯(cuò)過(guò)
1.8. 異常檢測(cè)是一項(xiàng)無(wú)監(jiān)督任務(wù)
1.8.1. 無(wú)監(jiān)督學(xué)習(xí)是一種機(jī)器學(xué)習(xí)任務(wù)裸诽,在該任務(wù)中嫂用,最優(yōu)行為在訓(xùn)練時(shí)是不可知的
-
1.8.2. 你正在訓(xùn)練的數(shù)據(jù)并沒(méi)有附加任何標(biāo)簽
1.8.2.1. 你可能不得不把異常檢測(cè)稱為無(wú)監(jiān)督學(xué)習(xí),因?yàn)楫惓2](méi)有一個(gè)統(tǒng)一的基本事實(shí)
-
1.8.2.2. 沒(méi)有基本事實(shí)丈冬,你就無(wú)法得到錯(cuò)誤信號(hào)
1.8.2.2.1. 你無(wú)法得到預(yù)測(cè)結(jié)果和你應(yīng)該預(yù)測(cè)的結(jié)果之間的差異
1.8.3. 對(duì)于任何給定的數(shù)據(jù)點(diǎn)嘱函,異常檢測(cè)器會(huì)發(fā)出“異常”或“非異彻∪铮”的預(yù)測(cè)
1.8.4. 存疑的數(shù)據(jù)點(diǎn)要么是真正的問(wèn)題往弓,要么完全就不是問(wèn)題
-
1.8.5. 即使是最訓(xùn)練有素的異常檢測(cè)算法也不可能完全避免假陽(yáng)性和假陰性
1.8.5.1. 機(jī)器學(xué)習(xí)改進(jìn)數(shù)據(jù)監(jiān)控警報(bào)
1.8.5.2. 出于簡(jiǎn)單的統(tǒng)計(jì)原因,兩者無(wú)法同時(shí)避免
1.8.5.3. 其實(shí)更少的假陽(yáng)性會(huì)以更多的假陰性為代價(jià)蓄氧,反之亦然
1.9. 提高精確率和召回率
-
1.9.1. 精確率(又稱查準(zhǔn)率)被定義為做出正確預(yù)測(cè)的概率
1.9.1.1. 在所有做出的“陽(yáng)性”預(yù)測(cè)中函似,有多少是正確的呢?
1.9.1.2. 具有高精確率的檢測(cè)器是“精確的”匀们,因?yàn)楫?dāng)它預(yù)測(cè)事件異常時(shí)缴淋,往往是正確的
1.9.1.3. 精確率通常告訴我們發(fā)出陽(yáng)性警報(bào)時(shí)正確的頻率
-
1.9.1.4. 具有高精確率的模型會(huì)輸出可信的警報(bào),因?yàn)樗鼈兊母呔_率保證了它們很少“喊狼來(lái)了”
1.9.1.4.1. 一個(gè)高精確率的模型是一個(gè)很少喊狼來(lái)了的模型
1.9.1.4.2. 它發(fā)出警報(bào)時(shí),你最好相信它
-
1.9.2. 召回率(又稱查全率)被定義為實(shí)際異常被檢測(cè)到的概率
1.9.2.1. 在所有真正的異常中重抖,我們捕捉到了多少呢露氮?
1.9.2.2. 具有高召回率的檢測(cè)器能夠很好地“召回”,它捕獲實(shí)際上是真異常的概率很高
1.9.2.3. 召回率告訴我們對(duì)問(wèn)題真正發(fā)出警報(bào)的數(shù)量
-
1.9.2.4. 具有高召回率的模型是可靠的钟沛,因?yàn)樗鼈兊母哒倩芈时WC了它們很少忽略真正存在的問(wèn)題
1.9.2.4.1. 有良好召回率的模型就像一只敬業(yè)的警犬
1.9.2.4.2. 你可以放心畔规,這個(gè)模型會(huì)捕獲到所有真正的問(wèn)題
-
1.9.3. 數(shù)據(jù)世界是由可量化的目標(biāo)來(lái)運(yùn)行的,在大多數(shù)情況下恨统,我們需要一個(gè)單一的目標(biāo)來(lái)進(jìn)行優(yōu)化叁扫,而不是兩個(gè)
1.9.3.1. 將精確率和召回率組合成一個(gè)被稱為F分?jǐn)?shù)(F-score)的指標(biāo)
1.9.3.2. Fβ被稱為加權(quán)F分?jǐn)?shù),因?yàn)椴煌摩轮翟谟?jì)算中權(quán)衡精確率和召回率有所不同
-
1.9.3.3. Fβ分?jǐn)?shù)表示:“我認(rèn)為召回率是精確率重要程度的β倍畜埋∧澹”
1.9.3.3.1. 當(dāng)β = 1時(shí),該等式認(rèn)為兩個(gè)指標(biāo)一樣重要
1.9.3.3.2. 當(dāng)β > 1時(shí)悠鞍,表示召回率比精確率更重要
1.9.3.3.2.1. 我更關(guān)心捕捉到所有的異常对室,而不是偶爾引起的錯(cuò)誤警報(bào)
1.9.3.3.3. 設(shè)置β<1,精確率會(huì)更重要
1.9.3.3.3.1. 我更關(guān)心我的警報(bào)是真實(shí)的咖祭,而不是捕捉每一個(gè)真正的問(wèn)題
1.9.4. Facebook Prophet是一種預(yù)測(cè)模型掩宜,用于大規(guī)模處理時(shí)間序列數(shù)據(jù)中的日、周么翰、月和年的季節(jié)性關(guān)系
-
1.9.5. TensorFlow是用于各種任務(wù)(包括自然語(yǔ)言處理牺汤、計(jì)算機(jī)視覺(jué)和時(shí)間序列異常檢測(cè))的流行機(jī)器學(xué)習(xí)庫(kù)
1.9.5.1. 對(duì)高級(jí)異常檢測(cè)算法一些有用且記錄完備的實(shí)現(xiàn)
1.9.5.2. 在行業(yè)場(chǎng)景中更受歡迎
-
1.9.6. PyTorch
1.9.6.1. 在Facebook開(kāi)發(fā)的另一個(gè)機(jī)器學(xué)習(xí)Python庫(kù)
1.9.6.2. 可實(shí)現(xiàn)與TensorFlow(由Google開(kāi)發(fā))類(lèi)似的用例
1.9.6.3. 通常在行業(yè)中的學(xué)術(shù)領(lǐng)域具有較高的知名度
-
1.9.7. scikit-learn是另一個(gè)流行的機(jī)器學(xué)習(xí)軟件包
1.9.7.1. 有k鄰近(k-nearest neighbor)算法和孤立森林(isolation forest)算法的版本,這是兩種常用的聚類(lèi)(clustering)方法
1.9.7.2. 用Python開(kāi)發(fā)的
-
1.9.8. MLflow
1.9.8.1. 由Databricks的創(chuàng)建者開(kāi)發(fā)的一種流行的實(shí)驗(yàn)跟蹤開(kāi)源工具
1.9.8.2. 實(shí)驗(yàn)跟蹤是指在開(kāi)發(fā)和生產(chǎn)中管理機(jī)器學(xué)習(xí)模型的過(guò)程
1.9.8.3. 實(shí)驗(yàn)跟蹤是管理機(jī)器學(xué)習(xí)模型開(kāi)發(fā)和訓(xùn)練的過(guò)程浩嫌,包括超參數(shù)比較檐迟、依賴項(xiàng)檢查、管理和編排訓(xùn)練作業(yè)码耐、保存模型快照和收集日志等任務(wù)
1.9.8.4. 主要是一個(gè)實(shí)驗(yàn)跟蹤和再現(xiàn)軟件
-
1.9.8.5. 開(kāi)發(fā)異常檢測(cè)軟件的一個(gè)重要方面是保證代碼在不同機(jī)器上的運(yùn)行是相同的
1.9.8.5.1. 不會(huì)希望在本地解決了一個(gè)錯(cuò)誤(bug)锅减,但在生產(chǎn)環(huán)境中卻無(wú)法應(yīng)用
-
1.9.9. TensorBoard
1.9.9.1. TensorFlow的可視化工具包
1.9.9.2. 無(wú)須使用TensorFlow建模即可使用該軟件
1.10. 檢測(cè)新鮮度事件
1.10.1. 越長(zhǎng)的中斷就越有可能是真實(shí)的事件,但誰(shuí)也無(wú)法保證
1.10.2. 弱相關(guān)性會(huì)讓一個(gè)好的模型足夠有效但并不完美
1.11. F分?jǐn)?shù)
1.11.1. F分?jǐn)?shù)是分類(lèi)準(zhǔn)確性指標(biāo)伐坏,旨在兼顧優(yōu)化精確率和召回率
1.11.2. 對(duì)于統(tǒng)計(jì)學(xué)家來(lái)說(shuō)該分?jǐn)?shù)的定義是模型精確率和召回率的調(diào)和平均值
1.11.3. F1分?jǐn)?shù)旨在平衡精確率和召回率,它認(rèn)為精確率和召回率同等重要
1.11.4. 對(duì)于導(dǎo)彈探測(cè)系統(tǒng)來(lái)說(shuō)握联,假陽(yáng)性比假陰性要好桦沉。這意味著召回率比精確率更重要
-
1.11.5. 當(dāng)β=1時(shí),這個(gè)方程與F1分?jǐn)?shù)方程相同
- 1.11.5.1. 當(dāng)β=1時(shí)金闽,這個(gè)方程與F1分?jǐn)?shù)方程相同
1.11.6. 當(dāng)召回率更重要時(shí)纯露,我們應(yīng)該預(yù)期F2分?jǐn)?shù)高于F1分?jǐn)?shù)
1.12. 模型的準(zhǔn)確率重要嗎
1.12.1. 準(zhǔn)確率并不像檢測(cè)器的平均正確率那么簡(jiǎn)單,而且對(duì)于不同的應(yīng)用程序來(lái)說(shuō)代芜,其定義也不應(yīng)該相同
-
1.12.2. 根據(jù)設(shè)置的閾值來(lái)繪制精確率埠褪、召回率和F1分?jǐn)?shù),則會(huì)發(fā)現(xiàn)一些重要的信息
-
1.12.2.1. 具有低閾值的激進(jìn)檢測(cè)器具有最佳的召回率
1.12.2.1.1. 它們可以更快地發(fā)出警報(bào),從而發(fā)現(xiàn)更多真正的問(wèn)題
-
1.12.2.2. 更保守一些的檢測(cè)器具有更好的精確率
1.12.2.2.1. 它們只對(duì)可能是真實(shí)的嚴(yán)重異常發(fā)出警報(bào)
-
1.12.3. 任何關(guān)于模型準(zhǔn)確率的討論钞速,如果沒(méi)有某種基準(zhǔn)事實(shí)與模型預(yù)測(cè)進(jìn)行比較贷掖,都是不完整的
2. 異常檢測(cè)算法
2.1. 近乎實(shí)時(shí)地檢測(cè)問(wèn)題
2.2. 向需要了解情況的人發(fā)出警報(bào)
2.3. 提供信息以幫助防止未來(lái)發(fā)生宕機(jī)
2.4. 規(guī)則定義
2.4.1. 規(guī)則定義為某些指標(biāo)值設(shè)置了明確的切分點(diǎn),并確定了相對(duì)于閾值的異常值
2.4.2. 只有當(dāng)大多數(shù)數(shù)據(jù)點(diǎn)都在閾值范圍內(nèi)時(shí)渴语,這種方法才能被稱為“異称煌”檢測(cè)
2.4.3. 規(guī)則定義具有令人難以置信的可擴(kuò)展性,可用于定義極為明確的服務(wù)級(jí)別協(xié)議驾凶、數(shù)據(jù)正常運(yùn)行時(shí)間保證等
2.5. 自回歸模型
2.5.1. 自回歸適用于時(shí)間序列的異常檢測(cè)牙甫,其中數(shù)據(jù)點(diǎn)使用時(shí)間戳對(duì)象進(jìn)行排序
2.5.2. 時(shí)間戳對(duì)象進(jìn)行排序。自回歸模型從以前的時(shí)間步長(zhǎng)獲取數(shù)據(jù)调违,將它們輸入回歸(線性)模型窟哺,并使用該輸出來(lái)預(yù)測(cè)下一個(gè)時(shí)間戳的數(shù)據(jù)將在哪里
2.5.3. 偏離自回歸預(yù)測(cè)太遠(yuǎn)的數(shù)據(jù)點(diǎn)會(huì)被標(biāo)記為異常
2.5.4. 自回歸移動(dòng)平均(ARMA)檢測(cè)算法和ARIMA檢測(cè)算法
2.6. 指數(shù)平滑
2.6.1. 指數(shù)平滑法可以從時(shí)間序列中消除趨勢(shì)和季節(jié)性,以便人們可以使用更簡(jiǎn)單的方法(例如技肩,ARIMA)進(jìn)行后續(xù)分析
-
2.6.2. Holt-Winters是一個(gè)用于時(shí)間序列預(yù)測(cè)的著名季節(jié)性模型且轨,并且還有豐富的分類(lèi)系統(tǒng)
2.6.2.1. 累加性(additive)
2.6.2.2. 累乘性(multiplicative)
2.6.2.3. 阻尼法(damped,又稱衰減法)
2.6.2.4. 非阻尼法(nondamped)
2.7. 聚類(lèi)
- 2.7.1. 聚類(lèi)技術(shù)[如k近鄰算法或孤立森林算法]通過(guò)將相似的數(shù)據(jù)點(diǎn)放入同一個(gè)數(shù)據(jù)桶中亩鬼,并提醒你注意那些“和桶中數(shù)據(jù)差異較大的數(shù)據(jù)點(diǎn)”來(lái)發(fā)現(xiàn)異常
2.8. 超參數(shù)調(diào)優(yōu)
2.8.1. 有些參數(shù)通過(guò)數(shù)據(jù)的使用和訓(xùn)練過(guò)程才能獲得
2.8.2. 被稱為超參數(shù)的其他參數(shù)則不是通過(guò)學(xué)習(xí)過(guò)程獲得的殖告,反而超參數(shù)可以以特定方式去幫助模型的學(xué)習(xí)和推斷過(guò)程
2.9. 集成模型框架
- 2.9.1. 集成模型框架充分利用了聚類(lèi)、指數(shù)平滑和自回歸節(jié)點(diǎn)等各種方法的優(yōu)點(diǎn)雳锋,將它們組合成一個(gè)前饋神經(jīng)網(wǎng)絡(luò)黄绩,并使用多數(shù)投票集成算法將它們的預(yù)測(cè)結(jié)合起來(lái)
3. 數(shù)據(jù)質(zhì)量監(jiān)控器
3.1. 在為數(shù)據(jù)系統(tǒng)構(gòu)建數(shù)據(jù)質(zhì)量監(jiān)控器時(shí),重要的是要區(qū)分玷过,你是在使用來(lái)自數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)化整體數(shù)據(jù)爽丹,還是在使用現(xiàn)代數(shù)據(jù)湖生態(tài)系統(tǒng)中的復(fù)雜數(shù)據(jù)
3.2. 主要區(qū)別
-
3.2.1. 你必須考慮的入口點(diǎn)數(shù)量
3.2.1.1. 數(shù)據(jù)湖系統(tǒng)往往具有大量的入口點(diǎn),這意味著應(yīng)該假設(shè)從不同來(lái)源輸入的數(shù)據(jù)具有高度的異構(gòu)性
3.2.1.2. 要警惕“一刀切”的建模方法
3.2.1.3. 另一種方法是使用集成模型架構(gòu)辛蚊,或者簡(jiǎn)單地為每個(gè)用例使用單獨(dú)的模型
3.2.2. 要如何收集并存儲(chǔ)元數(shù)據(jù)
3.2.3. 你會(huì)如何訪問(wèn)該元數(shù)據(jù)
3.3. 直接從數(shù)據(jù)湖中收集的元數(shù)據(jù)可能需要經(jīng)過(guò)不同級(jí)別的預(yù)處理后粤蝎,才能指望異常檢測(cè)算法從它們當(dāng)中獲得有價(jià)值的信息
3.4. 類(lèi)型可能需要強(qiáng)制(隱式)轉(zhuǎn)換,模式可能需要對(duì)齊袋马,而你可能會(huì)發(fā)現(xiàn)在運(yùn)行檢測(cè)器的訓(xùn)練任務(wù)之前初澎,自己在數(shù)據(jù)中獲得了全新的增強(qiáng)特征