本文是對機(jī)器學(xué)習(xí)算法的一個(gè)概覽,以及個(gè)人的學(xué)習(xí)小結(jié)。通過閱讀本文,可以快速地對機(jī)器學(xué)習(xí)算法有一個(gè)比較清晰的了解。本文承諾不會出現(xiàn)任何數(shù)學(xué)公式及推導(dǎo),適合茶余飯后輕松閱讀,希望能讓讀者比較舒適地獲取到一點(diǎn)有用的東西。
本文主要分為三部分,第一部分為異常檢測算法的介紹,個(gè)人感覺這類算法對監(jiān)控類系統(tǒng)是很有借鑒意義的;第二部分為機(jī)器學(xué)習(xí)的幾個(gè)常見算法簡介;第三部分為深度學(xué)習(xí)及強(qiáng)化學(xué)習(xí)的介紹。最后會有本人的一個(gè)小結(jié)。
1 異常檢測算法
異常檢測,顧名思義就是檢測異常的算法,比如網(wǎng)絡(luò)質(zhì)量異常、用戶訪問行為異常、服務(wù)器異常、交換機(jī)異常和系統(tǒng)異常等,都是可以通過異常檢測算法來做監(jiān)控的,個(gè)人認(rèn)為這種算法很值得我們做監(jiān)控的去借鑒引用,所以我會先單獨(dú)介紹這一部分的內(nèi)容。
異常定義為“容易被孤立的離群點(diǎn) (more likely to be separated)”——可以理解為分布稀疏且離密度高的群體較遠(yuǎn)的點(diǎn)。用統(tǒng)計(jì)學(xué)來解釋,在數(shù)據(jù)空間里面,分布稀疏的區(qū)域表示數(shù)據(jù)發(fā)生在此區(qū)域的概率很低,因而可以認(rèn)為落在這些區(qū)域里的數(shù)據(jù)是異常的。

圖1-1離群點(diǎn)表現(xiàn)為遠(yuǎn)離密度高的正常點(diǎn)
如圖1-1所示,在藍(lán)色圈內(nèi)的數(shù)據(jù)屬于該組數(shù)據(jù)的可能性較高,而越是偏遠(yuǎn)的數(shù)據(jù),其屬于該組數(shù)據(jù)的可能性就越低。
下面是幾種異常檢測算法的簡介。
1.1 基于距離的異常檢測算法

圖1-2 基于距離的異常檢測
思想:一個(gè)點(diǎn)如果身邊沒有多少小伙伴,那么就可以認(rèn)為這是一個(gè)異常點(diǎn)。
步驟:給定一個(gè)半徑r,計(jì)算以當(dāng)前點(diǎn)為中心、半徑為r的圓內(nèi)的點(diǎn)的個(gè)數(shù)與總體個(gè)數(shù)的比值。如果該比值小于一個(gè)閾值,那么就可以認(rèn)為這是一個(gè)異常點(diǎn)。
1.2 基于深度的異常檢測算法

圖1-3 基于深度的異常檢測算法
思想:異常點(diǎn)遠(yuǎn)離密度大的群體,往往處于群體的最邊緣。
步驟:通過將最外層的點(diǎn)相連,并表示該層為深度值為1;然后將次外層的點(diǎn)相連,表示該層深度值為2,重復(fù)以上動作??梢哉J(rèn)為深度值小于某個(gè)數(shù)值k的為異常點(diǎn),因?yàn)樗鼈兪蔷嚯x中心群體最遠(yuǎn)的點(diǎn)。
1.3 基于分布的異常檢測算法

圖1-4 高斯分布
思想:當(dāng)前數(shù)據(jù)點(diǎn)偏離總體數(shù)據(jù)平均值3個(gè)標(biāo)準(zhǔn)差時(shí),可以認(rèn)為是一個(gè)異常點(diǎn)(偏離多少個(gè)標(biāo)準(zhǔn)差可視實(shí)際情況調(diào)整)。
步驟:計(jì)算已有數(shù)據(jù)的均值及標(biāo)準(zhǔn)差。當(dāng)新來的數(shù)據(jù)點(diǎn)偏離均值3個(gè)標(biāo)準(zhǔn)差時(shí),視為異常點(diǎn)。
1.4 基于劃分的異常檢測算法

圖1-5孤立深林
思想:將數(shù)據(jù)不斷通過某個(gè)屬性劃分,異常點(diǎn)通常能很早地被劃分到一邊,也就是被早早地孤立起來。而正常點(diǎn)則由于群體眾多,需要更多次地劃分。
步驟:通過以下方式構(gòu)造多顆孤立樹:在當(dāng)前節(jié)點(diǎn)隨機(jī)挑選數(shù)據(jù)的一個(gè)屬性,并隨機(jī)選取屬性的一個(gè)值,將當(dāng)前節(jié)點(diǎn)中所有數(shù)據(jù)劃分到左右兩個(gè)葉子節(jié)點(diǎn);如果葉子節(jié)點(diǎn)深度較小或者葉子節(jié)點(diǎn)中的數(shù)據(jù)點(diǎn)還很多,則繼續(xù)上述的劃分。異常點(diǎn)表現(xiàn)為在所有孤立樹中會有一個(gè)平均很低的樹的深度,如圖1-5中的紅色所示為深度很低的異常點(diǎn)。
2 機(jī)器學(xué)習(xí)常見算法
簡單介紹機(jī)器學(xué)習(xí)的幾個(gè)常見算法:k近鄰、k-means聚類、決策樹、樸素貝葉斯分類器、線性回歸、邏輯回歸、隱馬爾可夫模型及支持向量機(jī)。遇到講得不好的地方建議直接跳過。
2.1 K近鄰
圖2-1距離最近的3個(gè)點(diǎn)里面有2個(gè)點(diǎn)為紅三角,所以待判定點(diǎn)應(yīng)為紅三角
分類問題。對于待判斷的點(diǎn),從已有的帶標(biāo)簽的數(shù)據(jù)點(diǎn)中找到離它最近的幾個(gè)數(shù)據(jù)點(diǎn),根據(jù)它們的標(biāo)簽類型,以少數(shù)服從多數(shù)原則決定待判斷點(diǎn)的類型。
2.2 k-means聚類

圖2-2不斷迭代完成“物以類聚”
k-means聚類的目標(biāo)是要找到一個(gè)分割,使得距離平方和最小。初始化k個(gè)中心點(diǎn);通過歐式距離或其他距離計(jì)算方式,求取各個(gè)數(shù)據(jù)點(diǎn)離這些中心點(diǎn)的距離,將最靠近某個(gè)中心點(diǎn)的數(shù)據(jù)點(diǎn)標(biāo)識為同一類,然后再從標(biāo)識為同一類的數(shù)據(jù)點(diǎn)中求出新的中心點(diǎn)替代之前的中心點(diǎn),重復(fù)上述計(jì)算過程,直到中心點(diǎn)位置收斂不再變動。
2.3 決策樹

圖2-3 通過決策樹判斷今天是否適合打球
決策樹的表現(xiàn)形式和if-else類似,只是在通過數(shù)據(jù)生成決策樹的時(shí)候,需要用到信息增益去決定最先使用那個(gè)屬性去做劃分。決策樹的好處是表現(xiàn)力強(qiáng),容易讓人理解結(jié)論是如何得到的。
2.4 樸素貝葉斯分類器
樸素貝葉斯法師基于貝葉斯定理與特征條件獨(dú)立性假設(shè)的分類方法。由訓(xùn)練數(shù)據(jù)學(xué)習(xí)聯(lián)合概率分布,然后求得后驗(yàn)概率分布。(抱歉,沒圖,又不貼公式,就這樣吧-_-)
2.5 線性回歸

圖2-4 擬一條直線,與所有數(shù)據(jù)點(diǎn)實(shí)際值之差的和最小
就是對函數(shù)f(x)=ax+b,通過代入已有數(shù)據(jù)(x,y),找到最合適的參數(shù)a和b,使函數(shù)最能表達(dá)已有數(shù)據(jù)輸入和輸出之間的映射關(guān)系,從而預(yù)測未來輸入對應(yīng)的輸出。
2.6 邏輯回歸

圖2-5 邏輯函數(shù)
邏輯回歸模型其實(shí)只是在上述的線性回歸的基礎(chǔ)上,套用了一個(gè)邏輯函數(shù),將線性回歸的輸出通過邏輯函數(shù)轉(zhuǎn)化成0到1之間的數(shù)值,便于表示屬于某一類的概率。
2.7 隱馬爾科夫模型

圖2-6 隱藏狀態(tài)x之間的轉(zhuǎn)移概率以及狀態(tài)x的觀測為y的概率圖
隱馬爾科夫模型是關(guān)于時(shí)序的概率模型,描述由一個(gè)隱藏的馬爾科夫鏈隨機(jī)生成不可觀測的狀態(tài)的序列,再由各個(gè)狀態(tài)隨機(jī)生成一個(gè)觀測而產(chǎn)生觀測的序列的過程。隱馬爾科夫模型有三要素和三個(gè)基本問題,有興趣的可以單獨(dú)去了解。最近看了一篇有意思的論文,其中使用了隱馬爾可夫模型去預(yù)測美國研究生會在哪個(gè)階段轉(zhuǎn)專業(yè),以此做出對策挽留某專業(yè)的學(xué)生。公司的人力資源會不會也是通過這個(gè)模型來預(yù)測員工會在哪個(gè)階段會跳槽,從而提前實(shí)施挽留員工的必要措施?(^_^)
2.8 支持向量
圖2-7支持向量對最大間隔的支持
支持向量機(jī)是一種二分類模型,它的基本模型是定義在特征空間上的間隔最大的線性分類器。如圖2-7所示,由于支持向量在確定分離超平面中起著關(guān)鍵性的作用,所以將這種分類模型稱為支持向量機(jī)。
對于輸入空間中的非線性分類問題,可以通過非線性變換(核函數(shù))將它轉(zhuǎn)換為某個(gè)高維特征空間中的線性分類問題,在高維特征空間中學(xué)習(xí)線性支持向量機(jī)。如圖2-8所示,訓(xùn)練點(diǎn)被映射到可以容易地找到分離超平面的三維空間。
圖2-8將二維線性不可分轉(zhuǎn)換為三維線性可分
3 深度學(xué)習(xí)簡介
這里將簡單介紹神經(jīng)網(wǎng)絡(luò)的由來。介紹順序?yàn)椋焊兄獧C(jī)、多層感知機(jī)(神經(jīng)網(wǎng)絡(luò))、卷積神經(jīng)網(wǎng)絡(luò)及循環(huán)神經(jīng)網(wǎng)絡(luò)。
3.1 感知機(jī)

圖3-1輸入向量通過加權(quán)求和后代入激活函數(shù)中求取結(jié)果
神經(jīng)網(wǎng)絡(luò)起源于上世紀(jì)五、六十年代,當(dāng)時(shí)叫感知機(jī),擁有輸入層、輸出層和一個(gè)隱含層。它的缺點(diǎn)是無法表現(xiàn)稍微復(fù)雜一些的函數(shù),所以就有了以下要介紹的多層感知機(jī)。
3.2 多層感知機(jī)

圖3-2多層感知機(jī),表現(xiàn)為輸入與輸出間具有多個(gè)的隱含層
在感知機(jī)的基礎(chǔ)上,添加了多個(gè)隱含層,以滿足能表現(xiàn)更復(fù)雜的函數(shù)的能力,其稱之為多層感知機(jī)。為了逼格,取名為神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)的層數(shù)越多,表現(xiàn)能力越強(qiáng),但是隨之而來的是會導(dǎo)致BP反向傳播時(shí)的梯度消失現(xiàn)象。
3.3 卷積神經(jīng)網(wǎng)絡(luò)

圖3-3卷積神經(jīng)網(wǎng)絡(luò)的一般形式
全連接的神經(jīng)網(wǎng)絡(luò)由于中間隱含層多,導(dǎo)致參數(shù)數(shù)量膨脹,并且全連接方式?jīng)]有利用到局部模式(例如圖片里面臨近的像素是有關(guān)聯(lián)的,可構(gòu)成像眼睛這樣更抽象的特征),所以出現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)限制了參數(shù)個(gè)數(shù)并且挖掘了局部結(jié)構(gòu)這個(gè)特點(diǎn),特別適用于圖像識別。
3.4 循環(huán)神經(jīng)網(wǎng)絡(luò)

圖3-4 循環(huán)神經(jīng)網(wǎng)絡(luò)可以看成一個(gè)在時(shí)間上傳遞的神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)可以看成一個(gè)在時(shí)間上傳遞的神經(jīng)網(wǎng)絡(luò),它的深度是時(shí)間的長度,神經(jīng)元的輸出可以作用于下一個(gè)樣本的處理。普通的全連接神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)對樣本的處理是獨(dú)立的,而循環(huán)神經(jīng)網(wǎng)絡(luò)則可以應(yīng)對需要學(xué)習(xí)有時(shí)間順序的樣本的任務(wù),比如像自然語言處理和語言識別等。
4 個(gè)人小結(jié)
機(jī)器學(xué)習(xí)其實(shí)是學(xué)習(xí)從輸入到輸出的映射:
即希望通過大量的數(shù)據(jù)把數(shù)據(jù)中的規(guī)律給找出來。(在無監(jiān)督學(xué)習(xí)中,主要任務(wù)是找到數(shù)據(jù)本身的規(guī)律而不是映射)
總結(jié)一般的機(jī)器學(xué)習(xí)做法是:根據(jù)算法的適用場景,挑選適合的算法模型,確定目標(biāo)函數(shù),選擇合適的優(yōu)化算法,通過迭代逼近最優(yōu)值,從而確定模型的參數(shù)。
關(guān)于未來的展望,有人說強(qiáng)化學(xué)習(xí)才是真正的人工智能的希望,希望能進(jìn)一步學(xué)習(xí)強(qiáng)化學(xué)習(xí),并且要再加深對深度學(xué)習(xí)的理解,才可以讀懂深度強(qiáng)化學(xué)習(xí)的文章。
最后最后,由于本人也只是抽空自學(xué)了幾個(gè)月的小白,所以文中有錯(cuò)誤的地方,希望海涵和指正,我會立即修改,希望不會誤導(dǎo)到別人。
電子發(fā)燒友App


























評論