本文是研究所學生課的一次大作業,本文介紹的支援向量機僅僅是支援向量機算法的第一層了解,想要深入了解,請看看支援向量機的三層了解。
https://link.juejin.cn?target= 1:支援向量機算法介紹
近年來,在網絡安全方面AI和機器學習的出現,極大的改變了網絡安全的運作方式。如今,機器學習技術可以幫助我們有效的部署網絡安全技術。通過機器學習,現有的網絡安全系統可以通過分析相關安全資料并從中學習,以預防類似的網絡攻擊,同時機器學習技術可以讓網絡安全從業者更加主動的預防網絡威脅,并且可以給出預防網絡威脅的更優解決方案。随着計算機硬體裝置的不斷更新疊代,随之而來的是計算機運算能力的不斷提高,機器學習領域也迎來了飛速發展。在網絡安全領域應用機器學習,可以讓安全人員更加高效的組織和管理安全日志資料,因為這些資料往往涉及到分類,預測,關聯規則學習等,而這些任務都是機器學習較為擅長處理的。本文将着重介紹機器學習中用于分類的一種算法(支援向量機算法)在網絡安全中的應用。本文主要講了支援向量機的主要架構,以及對線性分類的支援向量機進行了分析與數學推導,由于本人能力有限,并未對支援向量機在多元條件下的分類進行分析介紹。
https://link.juejin.cn?target= 1.1:什麼是支援向量機
要明白支援向量機,首先要從分類說起,分類是機器學習領域非常重要的一項任務,簡單的說,分類就是将擁有同一屬性的事物歸為一類。本文要介紹的支援向量機便是一種分類算法。支援向量機顧名思義,主要包含了兩個部分,一是支援向量,二是機器,在機器學習領域常把算法看做是一種機器,例如分類機也叫分類器。至于什麼是支援向量,下文将給出詳細的介紹。至于支援向量機算法的主要工作,正如下圖所示,将不同類别的事物進行分類。

1.2:支援向量機有多強
支援向量機算法源于統計學理論,是機器學習領域獲得最多關注的算法,無論是在手寫識别,面部檢測,垃圾郵件分類,基因分類,入侵檢測都有着廣泛的應用。支援向量機可以幫助我們在複雜的資料中找到準确的關系,與其他算法相比也擁有更加準确的結果,下文将從不同角度介紹支援向量機的強大之處。
(1)分類精度高,分類效果好。下圖是Python語言的機器學習庫Scikit-learn官網給出的不同機器學習分類算法在指定資料集下的分類效果與準确率示意圖。從下圖可以看出同樣的輸入資料集,支援向量機對比決策樹,随機森林,自适應增強,樸素貝葉斯等分類算法擁有跟高的準确率和更好的分類效果。
(2)實際應用廣泛。支援向量機無論是在文本分類還是在人臉識别,手寫數字型識别,圖像分類,蛋白質分類等領域都有着廣泛的作用。實驗結果表明支援向量機算法在進行模型訓練的時候,僅僅三四輪的相關回報之後,就能實作比傳統分類方法高出很多的精度。
(3)學術論文引用率高,學術應用前景好。因為支援向量機算法是機器學習裡最接近深度學習的一種算法,鑒于其分類精度高,分類效果好,在各個學科中都有着廣泛的使用。原始的支援向量機算法是1963年被發明的,後經不斷改進,到今天它的理論和數學推導都已經比較完善,支援向量機算法背後偉大的數學理論基礎可以說是人類數學上的偉大成就。從學術的角度看支援向量機算法,無論是軟體工程,通信工程或是人工智能,自然語言處理,網絡安全,等計算機相關領域的論文都或多或少的有着支援向量機算法的身影。下圖是知網2000年到2019年間支援向量機算法相關主題的論文年度發表趨勢示意圖,更加直覺的展示了近年來支援向量機算法在論文中被廣泛應用的盛況。
1.3:支援向量機的工作方式
如果不考慮數學推導的話,支援向量機所作的事情其實是非常簡單的,一個簡單的線性支援向量機分類器是在兩個不同的類之間建立一條直線來進行分類,分類後意味着該直線一側的所有資料樣本代表一類,而直線的另一側則代表另一類。這樣看來,直線并不是唯一的。類似的分類算法并不隻有支援向量機一種,例如K近鄰算法,但是支援向量機算法優于其他算法的原因在于,支援向量機算法能夠選取最優的那條線進行分類。下圖有助于幫助我們了解支援向量機的工作方式。假如,我們在圖上有一些資料點,我們想将黃色的原點分為一類,黑色的點分為一類。支援向量機算法的核心就在于找到那條最佳的分界線,我們也将這條分界線稱之為決策邊界。
決策邊界不一定是一條直線,它也可以是其它形式的線條,同時決策邊界也被稱為超平面,這個名詞的由來是因為可以有時候可以找到具有多個特征的決策邊界。例如下圖所示的使用RBF核心的非線性SVM(支援向量機)的決策邊界。支援向量機後續的所有步驟算法都是為了求解這條最優的決策邊界,這也是整個支援向量機算法最終的求解目标。
1.4:支援向量機的類型
支援向量機有兩種不同的類型,每種類型的SVM,都有自己的用途。
- 簡單SVM:通常用于解決線性分類和回歸問題。
- 核心SVM:針對非線性資料,具有更高的靈活性,其超平面不僅僅适用于二維空間,還可以解決多元空間的資料分類問題。
https://link.juejin.cn?target= 2:支援向量機算法原理
https://link.juejin.cn?target= 2.1:了解超平面的概念
在幾何中,超平面是一個空間的子空間,它是次元比所在空間小一維的空間,如果資料空間是三維的,那麼超平面就是二維的平面,如果資料空間是二維的,那麼超平面就是一維的直線。在二分類問題中,如果一個超平面能夠将資料集劃分為兩個集合,其中每一個集合包含一個單獨的類别,那麼這個超平面就是決策邊界,我們上文提到過支援向量機的核心就在于尋找最優的那條決策邊界。正如下圖所示,對于一個已知的資料集來說,讓訓練誤差為0的決策邊界可以有無數條,而支援向量機算法就是要幫我們尋找最優的那條。整個算法的核心也都是圍繞這個展開的。是以了解超平面是後續了解支援向量機算法的關鍵。
2.2:決策邊界何時最優
上文我們提到,支援向量機算法的核心目标就是去尋找最優的決策邊界,那麼決策邊界滿足什麼條件是最優的決策邊界就是我們比較關心的問題。上圖中那麼多條決策邊界,我們随意選取一條決策邊界,在上面那個資料集中均可以作為決策邊界使用,但是我們無法保證這條決策邊界在未知資料集上依然有較高的準确率。對于現有的資料集來說,假如我們選取B1,B2兩條可能的決策邊界,我們把決策邊界B1向兩邊平移,直到碰到距離這條決策邊界最近的一類元素然後停下,也就是下圖所示的□和○,形成兩個新的超平面分别是b11和b12,然後我們将原始的決策邊界移動到b11和b12中間,確定新的決策邊界距離b11和b12的距離相等。此時b11與b12之間的距離叫做B1這條決策邊界的邊際,通常記做d。
對決策邊界B2也執行同樣的操作,然後我們對比以下這兩個決策邊界,這兩個決策邊界B1,B2對現有的資料集的訓練誤差均為0。那麼這兩個決策邊界到底誰更加優秀呢?
接下來,我們引入和原本的資料集相同分布的測試樣本,即下圖所示的紅色□和○,從下圖我們可以看出,在測試集上面,對于決策邊界B1來說,依然沒有一個樣本分類錯誤,其泛化誤差為0,但是對于決策邊界B2來說,出現了錯誤分類的情況,那麼此時B2的泛化誤差就大于決策邊界B1。是以對于測試集來說決策邊界B1更加優秀,那麼這一實驗結果告訴我們什麼結論呢?那就是擁有更大邊際的決策邊界擁有更高的準确率和更低的泛化誤差,這裡的邊際就是上文我們提到的d,這一結論是擁有嚴格的數學證明的,符合結構風險最小化定律,本文不對這一定律進行推導,隻做簡單介紹。
如果邊際(d)很小,任何輕微的擾動都會對決策邊界的分類産生很大影響,邊際很小會出現在訓練集上表現良好,但是在測試集上表現糟糕的情況,也就是出現了過拟合的現象。是以,文章到這裡我們有了新的目标,那就是找一個邊際更大的決策邊界,這個邊際越大越好。
支援向量機就是通過找出邊際最大的決策邊界,來對資料進行分類的分類器。是以支援向量機又叫做最大邊際分類器。
https://link.juejin.cn?target= 2.3:決策邊界的數學推導
經過上文的分析,我們的目标變成了找出邊際最大的決策邊界。這個問題的本質是最優化的問題,在機器學習中最優化問題往往和損失函數聯系在一起,支援向量機算法也不例外,是通過将損失函數降到最低來尋找邊際最大的決策邊界。