導航:首頁 > 網路問題 > 神經網路數據異常

神經網路數據異常

發布時間:2023-03-16 17:20:48

⑴ 人工神經網路概念梳理與實例演示

人工神經網路概念梳理與實例演示
神經網路是一種模仿生物神經元的機器學習模型,數據從輸入層進入並流經激活閾值的多個節點。
遞歸性神經網路一種能夠對之前輸入數據進行內部存儲記憶的神經網路,所以他們能夠學習到數據流中的時間依賴結構。
如今機器學習已經被應用到很多的產品中去了,例如,siri、Google Now等智能助手,推薦引擎——亞馬遜網站用於推薦商品的推薦引擎,Google和Facebook使用的廣告排名系統。最近,深度學習的一些進步將機器學習帶入公眾視野:AlphaGo 打敗圍棋大師李世石事件以及一些圖片識別和機器翻譯等新產品的出現。
在這部分中,我們將介紹一些強大並被普遍使用的機器學習技術。這當然包括一些深度學習以及一些滿足現代業務需求傳統方法。讀完這一系列的文章之後,你就掌握了必要的知識,便可以將具體的機器學習實驗應用到你所在的領域當中。
隨著深層神經網路的精度的提高,語音和圖像識別技術的應用吸引了大眾的注意力,關於AI和深度學習的研究也變得更加普遍了。但是怎麼能夠讓它進一步擴大影響力,更受歡迎仍然是一個問題。這篇文章的主要內容是:簡述前饋神經網路和遞歸神經網路、怎樣搭建一個遞歸神經網路對時間系列數據進行異常檢測。為了讓我們的討論更加具體化,我們將演示一下怎麼用Deeplearning4j搭建神經網路。
一、什麼是神經網路?
人工神經網路演算法的最初構思是模仿生物神經元。但是這個類比很不可靠。人工神經網路的每一個特徵都是對生物神經元的一種折射:每一個節點與激活閾值、觸發的連接。
連接人工神經元系統建立起來之後,我們就能夠對這些系統進行訓練,從而讓他們學習到數據中的一些模式,學到之後就能執行回歸、分類、聚類、預測等功能。
人工神經網路可以看作是計算節點的集合。數據通過這些節點進入神經網路的輸入層,再通過神經網路的隱藏層直到關於數據的一個結論或者結果出現,這個過程才會停止。神經網路產出的結果會跟預期的結果進行比較,神經網路得出的結果與正確結果的不同點會被用來更正神經網路節點的激活閾值。隨著這個過程的不斷重復,神經網路的輸出結果就會無限靠近預期結果。
二、訓練過程
在搭建一個神經網路系統之前,你必須先了解訓練的過程以及網路輸出結果是怎麼產生的。然而我們並不想過度深入的了解這些方程式,下面是一個簡短的介紹。
網路的輸入節點收到一個數值數組(或許是叫做張量多維度數組)就代表輸入數據。例如, 圖像中的每個像素可以表示為一個標量,然後將像素傳遞給一個節點。輸入數據將會與神經網路的參數相乘,這個輸入數據被擴大還是減小取決於它的重要性,換句話說,取決於這個像素就不會影響神經網路關於整個輸入數據的結論。
起初這些參數都是隨機的,也就是說神經網路在建立初期根本就不了解數據的結構。每個節點的激活函數決定了每個輸入節點的輸出結果。所以每個節點是否能夠被激活取決於它是否接受到足夠的刺激強度,即是否輸入數據和參數的結果超出了激活閾值的界限。
在所謂的密集或完全連接層中,每個節點的輸出值都會傳遞給後續層的節點,在通過所有隱藏層後最終到達輸出層,也就是產生輸入結果的地方。在輸出層, 神經網路得到的最終結論將會跟預期結論進行比較(例如,圖片中的這些像素代表一隻貓還是狗?)。神經網路猜測的結果與正確結果的計算誤差都會被納入到一個測試集中,神經網路又會利用這些計算誤差來不斷更新參數,以此來改變圖片中不同像素的重要程度。整個過程的目的就是降低輸出結果與預期結果的誤差,正確地標注出這個圖像到底是不是一條狗。
深度學習是一個復雜的過程,由於大量的矩陣系數需要被修改所以它就涉及到矩陣代數、衍生品、概率和密集的硬體使用問題,但是用戶不需要全部了解這些復雜性。
但是,你也應該知道一些基本參數,這將幫助你理解神經網路函數。這其中包括激活函數、優化演算法和目標函數(也稱為損失、成本或誤差函數)。
激活函數決定了信號是否以及在多大程度上應該被發送到連接節點。階梯函數是最常用的激活函數, 如果其輸入小於某個閾值就是0,如果其輸入大於閾值就是1。節點都會通過階梯激活函數向連接節點發送一個0或1。優化演算法決定了神經網路怎麼樣學習,以及測試完誤差後,權重怎麼樣被更准確地調整。最常見的優化演算法是隨機梯度下降法。最後, 成本函數常用來衡量誤差,通過對比一個給定訓練樣本中得出的結果與預期結果的不同來評定神經網路的執行效果。
Keras、Deeplearning4j 等開源框架讓創建神經網路變得簡單。創建神經網路結構時,需要考慮的是怎樣將你的數據類型匹配到一個已知的被解決的問題,並且根據你的實際需求來修改現有結構。
三、神經網路的類型以及應用
神經網路已經被了解和應用了數十年了,但是最近的一些技術趨勢才使得深度神經網路變得更加高效。
GPUs使得矩陣操作速度更快;分布式計算結構讓計算能力大大增強;多個超參數的組合也讓迭代的速度提升。所有這些都讓訓練的速度大大加快,迅速找到適合的結構。
隨著更大數據集的產生,類似於ImageNet 的大型高質量的標簽數據集應運而生。機器學習演算法訓練的數據越大,那麼它的准確性就會越高。
最後,隨著我們理解能力以及神經網路演算法的不斷提升,神經網路的准確性在語音識別、機器翻譯以及一些機器感知和面向目標的一些任務等方面不斷刷新記錄。
盡管神經網路架構非常的大,但是主要用到的神經網路種類也就是下面的幾種。
3.1前饋神經網路
前饋神經網路包括一個輸入層、一個輸出層以及一個或多個的隱藏層。前饋神經網路可以做出很好的通用逼近器,並且能夠被用來創建通用模型。
這種類型的神經網路可用於分類和回歸。例如,當使用前饋網路進行分類時,輸出層神經元的個數等於類的數量。從概念上講, 激活了的輸出神經元決定了神經網路所預測的類。更准確地說, 每個輸出神經元返回一個記錄與分類相匹配的概率數,其中概率最高的分類將被選為模型的輸出分類。
前饋神經網路的優勢是簡單易用,與其他類型的神經網路相比更簡單,並且有一大堆的應用實例。
3.2卷積神經網路
卷積神經網路和前饋神經網路是非常相似的,至少是數據的傳輸方式類似。他們結構大致上是模仿了視覺皮層。卷積神經網路通過許多的過濾器。這些過濾器主要集中在一個圖像子集、補丁、圖塊的特徵識別上。每一個過濾器都在尋找不同模式的視覺數據,例如,有的可能是找水平線,有的是找對角線,有的是找垂直的。這些線條都被看作是特徵,當過濾器經過圖像時,他們就會構造出特徵圖譜來定位各類線是出現在圖像的哪些地方。圖像中的不同物體,像貓、747s、榨汁機等都會有不同的圖像特徵,這些圖像特徵就能使圖像完成分類。卷積神經網路在圖像識別和語音識別方面是非常的有效的。
卷積神經網路與前饋神經網路在圖像識別方面的異同比較。雖然這兩種網路類型都能夠進行圖像識別,但是方式卻不同。卷積神經網路是通過識別圖像的重疊部分,然後學習識別不同部分的特徵進行訓練;然而,前饋神經網路是在整張圖片上進行訓練。前饋神經網路總是在圖片的某一特殊部分或者方向進行訓練,所以當圖片的特徵出現在其他地方時就不會被識別到,然而卷積神經網路卻能夠很好的避免這一點。
卷積神經網路主要是用於圖像、視頻、語音、聲音識別以及無人駕駛的任務。盡管這篇文章主要是討論遞歸神經網路的,但是卷積神經網路在圖像識別方面也是非常有效的,所以很有必要了解。
3.3遞歸神經網路
與前饋神經網路不同的是,遞歸神經網路的隱藏層的節點里有內部記憶存儲功能,隨著輸入數據的改變而內部記憶內容不斷被更新。遞歸神經網路的結論都是基於當前的輸入和之前存儲的數據而得出的。遞歸神經網路能夠充分利用這種內部記憶存儲狀態處理任意序列的數據,例如時間序列。
遞歸神經網路經常用於手寫識別、語音識別、日誌分析、欺詐檢測和網路安全
遞歸神經網路是處理時間維度數據集的最好方法,它可以處理以下數據:網路日誌和伺服器活動、硬體或者是醫療設備的感測器數據、金融交易、電話記錄。想要追蹤數據在不同階段的依賴和關聯關系需要你了解當前和之前的一些數據狀態。盡管我們通過前饋神經網路也可以獲取事件,隨著時間的推移移動到另外一個事件,這將使我們限制在對事件的依賴中,所以這種方式很不靈活。
追蹤在時間維度上有長期依賴的數據的更好方法是用內存來儲存重要事件,以使近期事件能夠被理解和分類。遞歸神經網路最好的一點就是在它的隱藏層裡面有「內存」可以學習到時間依賴特徵的重要性。
接下來我們將討論遞歸神經網路在字元生成器和網路異常檢測中的應用。遞歸神經網路可以檢測出不同時間段的依賴特徵的能力使得它可以進行時間序列數據的異常檢測。
遞歸神經網路的應用
網路上有很多使用RNNs生成文本的例子,遞歸神經網路經過語料庫的訓練之後,只要輸入一個字元,就可以預測下一個字元。下面讓我們通過一些實用例子發現更多RNNs的特徵。
應用一、RNNs用於字元生成
遞歸神經網路經過訓練之後可以把英文字元當做成一系列的時間依賴事件。經過訓練後它會學習到一個字元經常跟著另外一個字元(「e」經常跟在「h」後面,像在「the、he、she」中)。由於它能預測下一個字元是什麼,所以它能有效地減少文本的輸入錯誤。
Java是個很有趣的例子,因為它的結構包括很多嵌套結構,有一個開的圓括弧必然後面就會有一個閉的,花括弧也是同理。他們之間的依賴關系並不會在位置上表現的很明顯,因為多個事件之間的關系不是靠所在位置的距離確定的。但是就算是不明確告訴遞歸神經網路Java中各個事件的依賴關系,它也能自己學習了解到。
在異常檢測當中,我們要求神經網路能夠檢測出數據中相似、隱藏的或許是並不明顯的模式。就像是一個字元生成器在充分地了解數據的結構後就會生成一個數據的擬像,遞歸神經網路的異常檢測就是在其充分了解數據結構後來判斷輸入的數據是不是正常。
字元生成的例子表明遞歸神經網路有在不同時間范圍內學習到時間依賴關系的能力,它的這種能力還可以用來檢測網路活動日誌的異常。
異常檢測能夠使文本中的語法錯誤浮出水面,這是因為我們所寫的東西是由語法結構所決定的。同理,網路行為也是有結構的,它也有一個能夠被學習的可預測模式。經過在正常網路活動中訓練的遞歸神經網路可以監測到入侵行為,因為這些入侵行為的出現就像是一個句子沒有標點符號一樣異常。
應用二、一個網路異常檢測項目的示例
假設我們想要了解的網路異常檢測就是能夠得到硬體故障、應用程序失敗、以及入侵的一些信息。
模型將會向我們展示什麼呢?
隨著大量的網路活動日誌被輸入到遞歸神經網路中去,神經網路就能學習到正常的網路活動應該是什麼樣子的。當這個被訓練的網路被輸入新的數據時,它就能偶判斷出哪些是正常的活動,哪些是被期待的,哪些是異常的。
訓練一個神經網路來識別預期行為是有好處的,因為異常數據不多,或者是不能夠准確的將異常行為進行分類。我們在正常的數據里進行訓練,它就能夠在未來的某個時間點提醒我們非正常活動的出現。
說句題外話,訓練的神經網路並不一定非得識別到特定事情發生的特定時間點(例如,它不知道那個特殊的日子就是周日),但是它一定會發現一些值得我們注意的一些更明顯的時間模式和一些可能並不明顯的事件之間的聯系。
我們將概述一下怎麼用 Deeplearning4j(一個在JVM上被廣泛應用的深度學習開源資料庫)來解決這個問題。Deeplearning4j在模型開發過程中提供了很多有用的工具:DataVec是一款為ETL(提取-轉化-載入)任務准備模型訓練數據的集成工具。正如Sqoop為Hadoop載入數據,DataVec將數據進行清洗、預處理、規范化與標准化之後將數據載入到神經網路。這跟Trifacta』s Wrangler也相似,只不過它更關注二進制數據。
開始階段
第一階段包括典型的大數據任務和ETL:我們需要收集、移動、儲存、准備、規范化、矢量話日誌。時間跨度的長短是必須被規定好的。數據的轉化需要花費一些功夫,這是由於JSON日誌、文本日誌、還有一些非連續標注模式都必須被識別並且轉化為數值數組。DataVec能夠幫助進行轉化和規范化數據。在開發機器學習訓練模型時,數據需要分為訓練集和測試集。
訓練神經網路
神經網路的初始訓練需要在訓練數據集中進行。
在第一次訓練的時候,你需要調整一些超參數以使模型能夠實現在數據中學習。這個過程需要控制在合理的時間內。關於超參數我們將在之後進行討論。在模型訓練的過程中,你應該以降低錯誤為目標。
但是這可能會出現神經網路模型過度擬合的風險。有過度擬合現象出現的模型往往會在訓練集中的很高的分數,但是在遇到新的數據時就會得出錯誤結論。用機器學習的語言來說就是它不夠通用化。Deeplearning4J提供正則化的工具和「過早停止」來避免訓練過程中的過度擬合。
神經網路的訓練是最花費時間和耗費硬體的一步。在GPUs上訓練能夠有效的減少訓練時間,尤其是做圖像識別的時候。但是額外的硬體設施就帶來多餘的花銷,所以你的深度學習的框架必須能夠有效的利用硬體設施。Azure和亞馬遜等雲服務提供了基於GPU的實例,神經網路還可以在異構集群上進行訓練。
創建模型
Deeplearning4J提供ModelSerializer來保存訓練模型。訓練模型可以被保存或者是在之後的訓練中被使用或更新。
在執行異常檢測的過程中,日誌文件的格式需要與訓練模型一致,基於神經網路的輸出結果,你將會得到是否當前的活動符合正常網路行為預期的結論。
代碼示例
遞歸神經網路的結構應該是這樣子的:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder(
.seed(123)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
.weightInit(WeightInit.XAVIER)
.updater(Updater.NESTEROVS).momentum(0.9)
.learningRate(0.005)
.gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)
.(0.5)
.list()
.layer(0, new GravesLSTM.Builder().activation("tanh").nIn(1).nOut(10).build())
.layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)
.activation("softmax").nIn(10).nOut(numLabelClasses).build())
.pretrain(false).backprop(true).build();
MultiLayerNetwork net = new MultiLayerNetwork(conf);
net.init();
下面解釋一下幾行重要的代碼:
.seed(123)
隨機設置一個種子值對神經網路的權值進行初始化,以此獲得一個有復驗性的結果。系數通常都是被隨機的初始化的,以使我們在調整其他超參數時仍獲得一致的結果。我們需要設定一個種子值,讓我們在調整和測試的時候能夠用這個隨機的權值。
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
決定使用哪個最優演算法(在這個例子中是隨機梯度下降法)來調整權值以提高誤差分數。你可能不需要對這個進行修改。
.learningRate(0.005)
當我們使用隨機梯度下降法的時候,誤差梯度就被計算出來了。在我們試圖將誤差值減到最小的過程中,權值也隨之變化。SGD給我們一個讓誤差更小的方向,這個學習效率就決定了我們該在這個方向上邁多大的梯度。如果學習效率太高,你可能是超過了誤差最小值;如果太低,你的訓練可能將會永遠進行。這是一個你需要調整的超參數。

⑵ 大數據科學家需要掌握的幾種異常值檢測方法

引言

異常值檢測與告警一直是工業界非常關注的問題,自動准確地檢測出系統的異常值,不僅可以節約大量的人力物力,還能盡早發現系統的異常情況,挽回不必要的損失。個推也非常重視大數據中的異常值檢測,例如在運維部門的流量管理業務中,個推很早便展開了對異常值檢測的實踐,也因此積累了較為豐富的經驗。本文將從以下幾個方面介紹異常值檢測。

1、異常值檢測研究背景

2、異常值檢測方法原理

3、異常值檢測應用實踐

異常值檢測研究背景

異常值,故名思議就是不同於正常值的值。 在數學上,可以用離群點來表述,這樣便可以將異常值檢測問題轉化為數學問題來求解。

異常值檢測在很多場景都有廣泛的應用,比如:

1、流量監測

互聯網上某些伺服器的訪問量,可能具有周期性或趨勢性:一般情況下都是相對平穩的,但是當受到某些黑客攻擊後,其訪問量可能發生顯著的變化,及早發現這些異常變化對企業而言有著很好的預防告警作用。

2、金融風控

正常賬戶中,用戶的轉賬行為一般屬於低頻事件,但在某些金融詐騙案中,一些嫌犯的賬戶就可能會出現高頻的轉賬行為,異常檢測系統如果能發現這些異常行為,及時採取相關措施,則會規避不少損失。

3、機器故障檢測

一個運行中的流水線,可能會裝有不同的感測器用來監測運行中的機器,這些感測器數據就反應了機器運行的狀態,這些實時的監測數據具有數據量大、維度廣的特點,用人工盯著看的話成本會非常高,高效的自動異常檢測演算法將能很好地解決這一問題。

異常值檢測方法原理

本文主要將異常值檢測方法分為兩大類:一類是基於統計的異常值檢測,另一類是基於模型的異常值檢測。

基於統計的方法  

基於模型的方法

1、基於統計的異常值檢測方法

常見的基於統計的異常值檢測方法有以下2種,一種是基於3σ法則,一種是基於箱體圖。

3σ法則  

箱體圖

3σ法則是指在樣本服從正態分布時,一般可認為小於μ-3σ或者大於μ+3σ的樣本值為異常樣本,其中μ為樣本均值,σ為樣本標准差。在實際使用中,我們雖然不知道樣本的真實分布,但只要真實分布與正太分布相差不是太大,該經驗法則在大部分情況下便是適用的。

箱體圖也是一種比較常見的異常值檢測方法,一般取所有樣本的25%分位點Q1和75%分位點Q3,兩者之間的距離為箱體的長度IQR,可認為小於Q1-1.5IQR或者大於Q3+1.5IQR的樣本值為異常樣本。

基於統計的異常檢測往往具有計算簡單、有堅實的統計學基礎等特點,但缺點也非常明顯,例如需要大量的樣本數據進行統計,難以對高維樣本數據進行異常值檢測等。

2、基於模型的異常值檢測

通常可將異常值檢測看作是一個二分類問題,即將所有樣本分為正常樣本和異常樣本,但這和常規的二分類問題又有所區別,常規的二分類一般要求正負樣本是均衡的,如果正負樣本不均勻的話,訓練結果往往會不太好。但在異常值檢測問題中,往往面臨著正(正常值)負(異常值)樣本不均勻的問題,異常值通常比正常值要少得多,因此需要對常規的二分類模型做一些改進。

基於模型的異常值檢測一般可分為有監督模型異常值檢測和無監督模型異常值檢測,比較典型的有監督模型如oneclassSVM、基於神經網路的自編碼器等。 oneclassSVM就是在經典的SVM基礎上改進而來,它用一個超球面替代了超平面,超球面以內的值為正常值,超球面以外的值為異常值。

經典的SVM  

1

 基於模型的方法

2

基於神經網路的自編碼器結構如下圖所示。

自編碼器(AE)

將正常樣本用於模型訓練,輸入與輸出之間的損失函數可採用常見的均方誤差,因此檢測過程中,當正常樣本輸入時,均方誤差會較小,當異常樣本輸入時,均方誤差會較大,設置合適的閾值便可將異常樣本檢測出來。但該方法也有缺點,就是對於訓練樣本比較相近的正常樣本判別較好,但若正常樣本與訓練樣本相差較大,則可能會導致模型誤判。

無監督模型的異常值檢測是異常值檢測中的主流方法,因為異常值的標注成本往往較高,另外異常值的產生往往無法預料,因此有些異常值可能在過去的樣本中根本沒有出現過, 這將導致某些異常樣本無法標注,這也是有監督模型的局限性所在。 較為常見的無監督異常值檢測模型有密度聚類(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一種典型的無監督聚類方法,對某些類型的異常值檢測也能起到不錯的效果。該演算法原理網上資料較多,本文不作詳細介紹。

IF演算法最早由南京大學人工智慧學院院長周志華的團隊提出,是一種非常高效的異常值檢測方法,該方法不需要對樣本數據做任何先驗的假設,只需基於這樣一個事實——異常值只是少數,並且它們具有與正常值非常不同的屬性值。與隨機森林由大量決策樹組成一樣,IsolationForest也由大量的樹組成。IsolationForest中的樹叫isolation tree,簡稱iTree。iTree樹和決策樹不太一樣,其構建過程也比決策樹簡單,因為其中就是一個完全隨機的過程。

假設數據集有N條數據,構建一顆iTree時,從N條數據中均勻抽樣(一般是無放回抽樣)出n個樣本出來,作為這顆樹的訓練樣本。

在樣本中,隨機選一個特徵,並在這個特徵的所有值范圍內(最小值與最大值之間)隨機選一個值,對樣本進行二叉劃分,將樣本中小於該值的劃分到節點的左邊,大於等於該值的劃分到節點的右邊。

這樣得到了一個分裂條件和左、右兩邊的數據集,然後分別在左右兩邊的數據集上重復上面的過程,直至達到終止條件。 終止條件有兩個,一個是數據本身不可再分(只包括一個樣本,或者全部樣本相同),另外一個是樹的高度達到log2(n)。 不同於決策樹,iTree在演算法裡面已經限制了樹的高度。不限制雖然也可行,但出於效率考慮,演算法一般要求高度達到log2(n)深度即可。

把所有的iTree樹構建好了,就可以對測試數據進行預測了。預測的過程就是把測試數據在iTree樹上沿對應的條件分支往下走,直到達到葉子節點,並記錄這過程中經過的路徑長度h(x),即從根節點,穿過中間的節點,最後到達葉子節點,所走過的邊的數量(path length)。最後,將h(x)帶入公式,其中E(.)表示計算期望,c(n)表示當樣本數量為n時,路徑長度的平均值,從而便可計算出每條待測數據的異常分數s(Anomaly Score)。異常分數s具有如下性質:

1)如果分數s越接近1,則該樣本是異常值的可能性越高;

2)如果分數s越接近0,則該樣本是正常值的可能性越高;

RCF演算法與IF演算法思想上是比較類似的,前者可以看成是在IF演算法上做了一些改進。針對IF演算法中沒有考慮到的時間序列因素,RCF演算法考慮了該因素,並且在數據樣本采樣策略上作出了一些改進,使得異常值檢測相對IF演算法變得更加准確和高效,並能更好地應用於流式數據檢測。

IF演算法

RCF演算法

上圖展示了IF演算法和RCF演算法對於異常值檢測的異同。我們可以看出原始數據中有兩個突變異常數據值,對於後一個較大的突變異常值,IF演算法和RCF演算法都檢測了出來,但對於前一個較小的突變異常值,IF演算法沒有檢測出來,而RCF演算法依然檢測了出來,這意味著RCF有更好的異常值檢測性能。

異常值檢測應用實踐

理論還需結合實踐,下面我們將以某應用從2016.08.16至2019.09.21的日活變化情況為例,對異常值檢測的實際應用場景予以介紹:

從上圖中可以看出該應用的日活存在著一些顯著的異常值(比如紅色圓圈部分),這些異常值可能由於活動促銷或者更新迭代出現bug導致日活出現了比較明顯的波動。下面分別用基於統計的方法和基於模型的方法對該日活序列數據進行異常值檢測。

基於3σ法則(基於統計)

RCF演算法(基於模型)

從圖中可以看出,對於較大的突變異常值,3σ法則和RCF演算法都能較好地檢測出來, 但對於較小的突變異常值,RCF演算法則要表現得更好。

總結

上文為大家講解了異常值檢測的方法原理以及應用實踐。綜合來看,異常值檢測演算法多種多樣 ,每一種都有自己的優缺點和適用范圍,很難直接判斷哪一種異常檢測演算法是最佳的, 具體在實戰中,我們需要根據自身業務的特點,比如對計算量的要求、對異常值的容忍度等,選擇合適的異常值檢測演算法。

接下來,個推也會結合自身實踐,在大數據異常檢測方面不斷深耕,繼續優化演算法模型在不同業務場景中的性能,持續為開發者們分享前沿的理念與最新的實踐方案。

⑶ 演算法太多挑花眼

演算法太多挑花眼?教你如何選擇正確的機器學習演算法
機器學習演算法雖多,卻沒有什麼普適的解決方案。決策樹、隨機森林、樸素貝葉斯、深度網路等等等等,是不是有時候覺得挑花了眼呢?福利來啦~本文將教你慧眼識精,快速挑選出滿意的演算法!
機器學習既是一門科學,也是一種藝術。縱觀各類機器學習演算法,並沒有一種普適的解決方案或方法。事實上,有幾個因素會影響你對機器學習演算法的選擇。
有些問題是非常特別的,需要用一種特定的解決方法。例如,如果你對推薦系統有所了解,你會發現它是一類很常用的機器學習演算法,用來解決一類非常特殊的問題。而其它的一些問題則非常開放,可能需要一種試錯方法(例如:強化學習)。監督學習、分類、回歸等問題都是非常開放的,可以被用於異常檢測或建立更加廣泛的預測模型。
此外,我們在選擇機器學習演算法時所做出的一些決定與演算法的優化或技術層面關系並不大,而更多地與業務決策相關。下面,讓我們一起來看看有哪些因素能幫你縮小機器學習演算法的選擇范圍。
數據科學過程
在你開始研究不同的機器學習演算法前,你需要對自己擁有的數據、面對的問題及相關約束有清晰的了解。
理解你的數據
當我們決定使用哪種演算法時,我們所擁有的數據的類型和形態起著關鍵性的作用。有些演算法可以利用較小的樣本集合工作,而另一些演算法則需要海量的樣本。特定的演算法對特定類型的數據起作用。例如,樸素貝葉斯演算法對處理待分類的輸入特別有效,但是對於缺失值則一點都不敏感。
因此,你需要做到:
了解你的數據
1. 查看總結統計和數據可視化的結
百分比可以幫助你識別大多數數據的范圍
平均數和中位數可以描述集中趨勢
相關系數可以指出強的關聯性
2. 數據可視化
箱形圖可以識別出異常值
密度圖和直方圖可以顯示出數據的散布情況
散點圖可以描述二元關
數據清洗
1. 處理缺失值。缺失的數據對於某些模型的影響比對其它模型更大。即使是對於那些被用於處理缺失數據的模型來說,它們也可能對缺失數據很敏感(某些變數的缺失數據可能導致預測性能變差)
2. 選擇處理異常值的方法
異常值在多維數據中十分常見。
有些模型對異常值的敏感性比其它模型要低。通常而言,樹模型對於異常值的存在不太敏感。然而回歸模型、或者任何試圖使用方程的模型都會受到異常值的嚴重影響。
異常值可能是糟糕的數據收集造成的,也可能是合理的極值。
3. 數據需要被聚合嗎?
數據增強
1. 特徵工程是從原始數據中產生能夠被用於建模的數據的過程,可以起到以下幾種作用:
使模型更容易被解釋(如數據分箱(binning))
捕獲更復雜的關系(如神經網路)
減少數據冗餘並降低數據維度(如主成分分析(PCA))
重新縮放變數(如標准化或歸一化)
2. 不同的模型可能有不同的特徵工程的要求。有的模型有內置的特徵工程。
對問題進行分類
下一步是對問題進行分類。這是一個需要分兩步實現的過程。
1. 根據輸入分類:
如果你擁有的是帶標簽的數據,那麼這就是一個監督學習問題。
如果你擁有的是未標注過的數據,並且希望從中找到有用的結構,那麼這就是一個無監督學習問題。
如果你想要通過與環境的交互來優化一個目標函數,那麼這就是一個強化學習問題。
2. 根據輸出分類:
如果模型的輸出是一個(連續的)數字,那麼這就是一個回歸問題。
如果模型的輸出是一個類別,那麼這就是一個分類問題。
如果模型的輸出是一組用輸入數據劃分出的簇,那麼這就是一個聚類問題。
你想發現一個異常點嗎?此時你面對的就是一個異常檢測問題。
理解你要滿足的約束條
你需要考慮你能夠存儲數據的容量有多大?這取決於系統的存儲容量,你可能無法存儲若干 GB 大小的分類、回歸模型或者若干 GB 的用於聚類分析的數據。例如,在嵌入式系統中,你就會面臨這種情況。
對預測過程的速度是否有要求?在實時應用中,很顯然,盡快得出預測結果是十分重要的。例如,在自動駕駛問題中,應用必須盡可能快地對道路標志進行分類,以免發生交通事故。
對學習過程的速度是否有要求?在某些情況下,快速訓練模型是十分必要的:有時,你需要使用不同的數據集快速地實時更新你的模型。
尋找可用的演算法
當對自己的任務環境有了一個清晰的認識後,你就可以使用你所掌握的工具確定適用於待解決的問題並切實可行的演算法。一些影響你選擇模型的因素如下:
模型是否滿足業務目標
模型需要多少數據預處理工作
模型有多准確
模型的可解釋性如何
模型運行的速度有多快:構造模型需要多久?模型做出預測需要多長時間?
模型的可伸縮性如何
模型的復雜度是一個影響演算法選擇的重要標准。一般來說,一個更復雜的模型具備下列特徵:
它依賴於更多的特徵進行學習和預測(例如,使用十個而不是兩個特徵來預測目標)
它依賴於更復雜的特徵工程(例如,使用多項式特徵、交互特徵或主成分)
它有更大的計算開銷(例如,需要一個由 100 棵決策樹組成的隨機森林,而不是一棵單獨的決策樹)
除此之外,同樣的機器學習演算法可以基於參數的個數和某些超參數的選擇而變得更加復雜。例如:
回歸模型可以擁有更多的特徵,或者多項式項和交互項。
決策樹可以擁有更大或更小的深度。
將相同的演算法變得更加復雜增加了發生過擬合的幾率。

常用的機器學習演算法
線性回歸
這可能是機器學習中最簡單的演算法。例如,當你想要計算一些連續值,而不是將輸出分類時,可以使用回歸演算法。因此,當你需要預測一個正在運行的過程未來的值時,你可以使用回歸演算法。然而,當特徵冗餘,即如果存在多重共線性(multicollinearity)時,線性回歸就不太穩定。
在下列情況下可以考慮使用線性回歸:
從一個地方移動到另一個地方所需的時間
預測下個月某種產品的銷售情況
血液中的酒精含量對協調能力的影響
預測每個月禮品卡的銷售情況,並改善年收入的估算
Logistic 回歸
Logistic 回歸執行二進制分類,因此輸出二值標簽。它將特徵的線性組合作為輸入,並且對其應用非線性函數(sigmoid),因此它是一個非常小的神經網路的實例。
logistic回歸提供了許多方法對你的模型進行正則化處理,因此正如在樸素貝葉斯演算法中那樣,你不必擔心你的特徵是否相關。該模型還有一個很好的概率化的解釋。不像在決策樹或者支持向量機中那樣,你可以很容易地更新你的模型以獲取新的數據。如果你想要使用一個概率化的框架,或者你希望在未來能夠快速地將更多的訓練數據融合到你的模型中,你可以使用 logistic 回歸演算法。logistic 回歸還可以幫助你理解預測結果背後起作用的因素,它不完全是一個黑盒方法。
在下列情況下可以考慮使用 logistic 回歸演算法:
預測客戶流失
信用評分和欺詐檢測
評價市場營銷活動的效果
決策樹
決策樹很少被單獨使用,但是不同的決策樹可以組合成非常高效的演算法,例如隨機森林或梯度提升樹演算法。
決策樹很容易處理特徵交互,並且決策樹是一種非參數模型,所以你不必擔心異常值或者數據是否是線性可分的。決策樹演算法的一個缺點是,它們不支持在線學習,因此當你要使用新的樣本時,你不得不重新構建決策樹。決策樹的另一個缺點是,它很容易發生過擬合,而這就是像隨機森林(或提升樹)這樣的集成學習方法能夠派上用場的地方。決策樹也需要大量的內存空間(擁有的特徵越多,你的決策樹可能會越深、越大)
決策樹能夠很好地幫助你在諸多行動路徑中做出選擇:
做出投資決策
預測客戶流失
找出可能拖欠銀行貸款的人
在「建造」和「購買」兩種選擇間進行抉擇
銷售主管的資質審核
K-均值
有時,你完全沒有數據的標簽信息,並且你的目的是根據對象的特徵來為其打上標簽。這種問題被稱為聚類任務。聚類演算法可以在這種情況下被使用:例如,當你有一大群用戶,你希望根據他們共有的一些屬性將其劃分到一些特定的組中。
如果在你的問題聲明中有這樣的問題:例如,找出一群個體的組織形式,或將某些東西分組,或找出特定的組。這時,你就應該使用聚類演算法。
該方法最大的缺點是,K-均值演算法需要提前知道你的數據會有多少簇,因此這可能需要進行大量的試驗去「猜測」我們最終定義的簇的最佳個數——K。
主成分分析(PCA)
主成分分析能夠對數據進行降維。有時,你擁有各種各樣的特徵,這些特徵之間的相關性可能很高,而模型如果使用如此大量的數據可能會產生過擬合現象。這時,你可以使用主成分分析(PCA)技術。
主成分分析(PCA)能夠起作用的關鍵因素是:除了低維的樣本表徵,它還提供了各種變數的一種同步的低維表徵。同步的樣本和變數的表徵提供了一種能夠可視化地找到能夠表示一組樣本的特徵的變數的方法。
支持向量機
支持向量機(SVM)是一種在模式識別和分類問題中被廣泛應用的監督機器學習技術——當你的數據恰好有兩類時。
支持向量機准確率高,對於防止過擬合很好的理論保障。當你使用一個合適的核函數時,即使你的數據在基(低維)特徵空間中是線性不可分的,他們也可以很好地工作。支持向量機在文本分類問題中非常流行,在該問題中,輸入是一個維度非常高的空間是很正常的。然而,SVM 是一種內存密集型演算法,它很難被解釋,並且對其進行調優十分困難。
在下列現實世界的應用中,你可以使用支持向量機:
發現患有糖尿病等常見疾病的人
手寫字元識別
文本分類——將文章按照話題分類
股票市場價格預測
樸素貝葉斯
這是一種基於貝葉斯定理的分類技術,它很容易構建,非常適用於大規模數據集。除了結構簡單,據說樸素貝葉斯的表現甚至比一些復雜得多的分類方法更好。當 CPU 和內存資源有限時,樸素貝葉斯演算法也是一個很好的選項。
樸素貝葉斯非常簡單,你僅僅是在做大量的計數工作。如果樸素貝葉斯的條件獨立假設確實成立,樸素貝葉斯分類器的收斂速度會比 logistic 回歸這樣的判別模型更快,因此需要的訓練數據更少。即使樸素貝葉斯的假設不成立,樸素貝葉斯分類器往往也能很好地完成任務。如果你想使用一種快速的、簡單的、性能也不錯的模型,樸素貝葉斯是一個很好的選擇。這種演算法最大的缺點就是它不能學習到特徵之間的相互作用。
在下列真實世界的應用中,你可以使用樸素貝葉斯:
情感分析和文本分類
類似於 Netflix、Amazon 這樣的推薦系統
識別垃圾郵件
人臉識別
隨機森林
隨機森林是一種決策樹的集成方法。它能夠同時解決具有大規模數據集的回歸問題和分類問題,還有助於從數以千計的輸入變數中找出最重要的變數。隨機森林具有很強的可伸縮性,它適用於任何維數的數據,並且通常具有相當不錯的性能。此外,還有一些遺傳演算法,它們可以在具有最少的關於數據本身的知識的情況下,很好地擴展到任何維度和任何數據上,其中最簡單的實現就是微生物遺傳演算法。然而,隨機森林學習的速度可能會很慢(取決於參數設置),並且這種方法不能迭代地改進生成模型。
在下列現實世界的應用中,你可以使用隨機森林:
預測高危患者
預測零件在生產中的故障
預測拖欠貸款的人
神經網路
神經網路中包含著神經元之間連接的權重。這些權重是平衡的,逐次對數據點進行學習。當所有的權重都被訓練好後,如果需要對新給定的數據點進行回歸,神經網路可以被用於預測分類結果或一個具體數值。利用神經網路,可以對特別復雜的模型進行訓練,並且將其作為一種黑盒方法加以利用,而在訓練模型之前,我們無需進行不可預測的復雜特徵工程。通過與「深度方法」相結合,甚至可以採用更加不可預測的模型去實現新任務。例如,最近人們已經通過深度神經網路大大提升了物體識別任務的結果。深度學習還被應用於特徵提取這樣的非監督學習任務,也可以在人為干預更少的情況下,從原始圖像或語音中提取特徵。
另一方面,神經網路很難被解釋清楚,其參數設置也復雜地讓人難以置信。此外,神經網路演算法也都是資源密集型和內存密集型的。
SCIKIT 參考手冊
Scikit learning 為大家提供了一個非常深入的、解釋地很清楚的流程圖,它能夠幫助你選擇正確的演算法。我認為此圖十分方便。

結論
一般來說,你可以根據上面介紹的要點來篩選出一些演算法,但是要想在一開始就知道哪種方法最好是很難的。你最好多迭代幾次選擇演算法的過程。將你的數據輸入給那些你確定的潛在優秀機器學習演算法,通過並行或串列的方式運行這些演算法,最終評估演算法性能,從而選擇出最佳的演算法。
在最後,我想告訴你:為現實生活中的問題找到正確的解決方案,通常不僅僅是一個應用數學方法的問題。這要求我們對業務需求、規則和制度、相關利益者的關注點有所了解,並且具備大量的專業知識。在解決一個機器學習問題的同時,能夠結合並平衡這些問題是至關重要的,那些能做到這一點的人可以創造最大的價值。

⑷ BP神經網路的原理的BP什麼意思

原文鏈接:http://tecdat.cn/?p=19936

在本教程中,您將學習如何在R語言中創建神經網路模型。

神經網路(或人工神經網路)具有通過樣本進行學習的能力。人工神經網路是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網路是一個復雜的自適應系統。自適應意味著它可以通過調整輸入權重來更改其內部結構。

該神經網路旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字元識別到目標檢測。

本教程將涵蓋以下主題:

⑸ 什麼是BP神經網路

BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。

⑹ 異常檢測有哪些主要的分析方法

1. 概率統計方法
在基於異常檢測技術的IDS中應用最早也是最多的一種方法。
首先要對系統或用戶的行為按照一定的時間間隔進行采樣,樣本的內容包括每個會話的登錄、退出情況,CPU和內存的佔用情況,硬碟等存儲介質的使用情況等。
將每次採集到的樣本進行計算,得出一系列的參數變數對這些行為進行描述,從而產生行為輪廓,將每次采樣後得到的行為輪廓與已有輪廓進行合並,最終得到系統和用戶的正常行為輪廓。IDS通過將當前採集到的行為輪廓與正常行為輪廓相比較,來檢測是否存在網路入侵行為。
2. 預測模式生成法
假設條件是事件序列不是隨機的而是遵循可辨別的模式。這種檢測方法的特點是考慮了事件的序列及其相互聯系,利用時間規則識別用戶行為正常模式的特徵。通過歸納學習產生這些規則集,並能動態地修改系統中的這些規則,使之具有較高的預測性、准確性。如果規則在大部分時間是正確的,並能夠成功地運用預測所觀察到的數據,那麼規則就具有高可信度。
3. 神經網路方法
基本思想是用一系列信息單元(命令)訓練神經單元,這樣在給定一組輸入後、就可能預測出輸出。與統計理論相比,神經網路更好地表達了變數間的非線性關系,並且能自動學習並更新。實驗表明UNIX系統管理員的行為幾乎全是可以預測的,對於一般用戶,不可預測的行為也只佔了很少的一部分。

閱讀全文

與神經網路數據異常相關的資料

熱點內容
網路設備怎麼加密 瀏覽:283
只有流量沒有網路是什麼原因 瀏覽:336
從哪裡重置網路 瀏覽:735
qq登錄網路環境異常是什麼引起的 瀏覽:255
計算機網路技術學什麼高數 瀏覽:238
播放網路視多少 瀏覽:258
同一網路內電腦如何共享 瀏覽:489
手機看網路電視沒聲音怎麼回事 瀏覽:595
網路游戲玩一個小時多少流量 瀏覽:555
為什移動網路用不了 瀏覽:999
畫室和網路班哪個靠譜 瀏覽:84
路由器的網路怎麼用不了 瀏覽:277
酷派移動網路不可用 瀏覽:890
網路維護工具手機端 瀏覽:141
網路安全密碼怎麼解鎖 瀏覽:720
筆記本連接有線網路錯誤 瀏覽:692
普聯監控怎麼網路設置 瀏覽:86
為計算機網路配置的操作系統 瀏覽:633
設置還原網路設置的密碼是哪個 瀏覽:23
5g網路軟體哪個好用 瀏覽:130

友情鏈接