機器學(xué)習(xí)算法概覽:異常檢測算法/常見算法/深度學(xué)習(xí)
本文是對機器學(xué)習(xí)算法的一個概覽,以及個人的學(xué)習(xí)小結(jié)。通過閱讀本文,可以快速地對機器學(xué)習(xí)算法有一個比較清晰的了解。本文承諾不會出現(xiàn)任何數(shù)學(xué)公式及推導(dǎo),適合茶余飯后輕松閱讀,希望能讓讀者比較舒適地獲取到一點有用的東西。
本文主要分為三部分,第一部分為異常檢測算法的介紹,個人感覺這類算法對監(jiān)控類系統(tǒng)是很有借鑒意義的;第二部分為機器學(xué)習(xí)的幾個常見算法簡介;第三部分為深度學(xué)習(xí)及強化學(xué)習(xí)的介紹。最后會有本人的一個小結(jié)。
1 異常檢測算法異常檢測,顧名思義就是檢測異常的算法,比如網(wǎng)絡(luò)質(zhì)量異常、用戶訪問行為異常、服務(wù)器異常、交換機異常和系統(tǒng)異常等,都是可以通過異常檢測算法來做監(jiān)控的,個人認為這種算法很值得我們做監(jiān)控的去借鑒引用,所以我會先單獨介紹這一部分的內(nèi)容。
異常定義為“容易被孤立的離群點 (more likely to be separated)”——可以理解為分布稀疏且離密度高的群體較遠的點。用統(tǒng)計學(xué)來解釋,在數(shù)據(jù)空間里面,分布稀疏的區(qū)域表示數(shù)據(jù)發(fā)生在此區(qū)域的概率很低,因而可以認為落在這些區(qū)域里的數(shù)據(jù)是異常的。
圖1-1離群點表現(xiàn)為遠離密度高的正常點
如圖1-1所示,在藍色圈內(nèi)的數(shù)據(jù)屬于該組數(shù)據(jù)的可能性較高,而越是偏遠的數(shù)據(jù),其屬于該組數(shù)據(jù)的可能性就越低。
下面是幾種異常檢測算法的簡介。
1.1 基于距離的異常檢測算法
圖1-2 基于距離的異常檢測
思想:一個點如果身邊沒有多少小伙伴,那么就可以認為這是一個異常點。
步驟:給定一個半徑r,計算以當(dāng)前點為中心、半徑為r的圓內(nèi)的點的個數(shù)與總體個數(shù)的比值。如果該比值小于一個閾值,那么就可以認為這是一個異常點。
1.2 基于深度的異常檢測算法
圖1-3 基于深度的異常檢測算法
思想:異常點遠離密度大的群體,往往處于群體的最邊緣。
步驟:通過將最外層的點相連,并表示該層為深度值為1;然后將次外層的點相連,表示該層深度值為2,重復(fù)以上動作??梢哉J為深度值小于某個數(shù)值k的為異常點,因為它們是距離中心群體最遠的點。
1.3 基于分布的異常檢測算法
圖1-4 高斯分布
思想:當(dāng)前數(shù)據(jù)點偏離總體數(shù)據(jù)平均值3個標準差時,可以認為是一個異常點(偏離多少個標準差可視實際情況調(diào)整)。
步驟:計算已有數(shù)據(jù)的均值及標準差。當(dāng)新來的數(shù)據(jù)點偏離均值3個標準差時,視為異常點。
1.4 基于劃分的異常檢測算法
圖1-5孤立深林
思想:將數(shù)據(jù)不斷通過某個屬性劃分,異常點通常能很早地被劃分到一邊,也就是被早早地孤立起來。而正常點則由于群體眾多,需要更多次地劃分。
步驟:通過以下方式構(gòu)造多顆孤立樹:在當(dāng)前節(jié)點隨機挑選數(shù)據(jù)的一個屬性,并隨機選取屬性的一個值,將當(dāng)前節(jié)點中所有數(shù)據(jù)劃分到左右兩個葉子節(jié)點;如果葉子節(jié)點深度較小或者葉子節(jié)點中的數(shù)據(jù)點還很多,則繼續(xù)上述的劃分。異常點表現(xiàn)為在所有孤立樹中會有一個平均很低的樹的深度,如圖1-5中的紅色所示為深度很低的異常點。