本文是研究生课的一次大作业,本文介绍的支持向量机仅仅是支持向量机算法的第一层理解,想要深入理解,请看看支持向量机的三层理解。

1:支持向量机算法介绍

近年来,在网络安全方面AI和机器学习的出现,极大的改变了网络安全的运作方式。如今,机器学习技术可以帮助我们有效的部署网络安全技术。通过机器学习,现有的网络安全系统可以通过分析相关安全数据并从中学习,以预防类似的网络攻击,同时机器学习技术可以让网络安全从业者更加主动的预防网络威胁,并且可以给出预防网络威胁的更优解决方案。随着计算机硬件设备的不断更新迭代,随之而来的是计算机运算能力的不断提高,机器学习领域也迎来了飞速发展。在网络安全领域应用机器学习,可以让安全人员更加高效的组织和管理安全日志数据,因为这些数据往往涉及到分类,预测,关联规则学习等,而这些任务都是机器学习较为擅长处理的。本文将着重介绍机器学习中用于分类的一种算法(支持向量机算法)在网络安全中的应用。本文主要讲了支持向量机的主要框架,以及对线性分类的支持向量机进行了分析与数学推导,由于本人能力有限,并未对支持向量机在多维条件下的分类进行分析介绍。

1.1:什么是支持向量机

要明白支持向量机,首先要从分类说起,分类是机器学习领域非常重要的一项任务,简单的说,分类就是将拥有同一属性的事物归为一类。本文要介绍的支持向量机便是一种分类算法。支持向量机顾名思义,主要包含了两个部分,一是支持向量,二是机器,在机器学习领域常把算法看做是一种机器,例如分类机也叫分类器。至于什么是支持向量,下文将给出详细的介绍。至于支持向量机算法的主要工作,正如下图所示,将不同类别的事物进行分类。

1.2:支持向量机有多强

支持向量机算法源于统计学理论,是机器学习领域获得最多关注的算法,无论是在手写识别,面部检测,垃圾邮件分类,基因分类,入侵检测都有着广泛的应用。支持向量机可以帮助我们在复杂的数据中找到准确的关系,与其他算法相比也拥有更加准确的结果,下文将从不同角度介绍支持向量机的强大之处。
(1)分类精度高,分类效果好。下图是Python语言的机器学习库Scikit-learn官网给出的不同机器学习分类算法在指定数据集下的分类效果与准确率示意图。从下图可以看出同样的输入数据集,支持向量机对比决策树,随机森林,自适应增强,朴素贝叶斯等分类算法拥有跟高的准确率和更好的分类效果。

(2)实际应用广泛。支持向量机无论是在文本分类还是在人脸识别,手写数字体识别,图像分类,蛋白质分类等领域都有着广泛的作用。实验结果表明支持向量机算法在进行模型训练的时候,仅仅三四轮的相关反馈之后,就能实现比传统分类方法高出很多的精度。
(3)学术论文引用率高,学术应用前景好。因为支持向量机算法是机器学习里最接近深度学习的一种算法,鉴于其分类精度高,分类效果好,在各个学科中都有着广泛的使用。原始的支持向量机算法是1963年被发明的,后经不断改进,到今天它的理论和数学推导都已经比较完善,支持向量机算法背后伟大的数学理论基础可以说是人类数学上的伟大成就。从学术的角度看支持向量机算法,无论是软件工程,通信工程或是人工智能,自然语言处理,网络安全,等计算机相关领域的论文都或多或少的有着支持向量机算法的身影。下图是知网2000年到2019年间支持向量机算法相关主题的论文年度发表趋势示意图,更加直观的展示了近年来支持向量机算法在论文中被广泛应用的盛况。

1.3:支持向量机的工作方式

如果不考虑数学推导的话,支持向量机所作的事情其实是非常简单的,一个简单的线性支持向量机分类器是在两个不同的类之间建立一条直线来进行分类,分类后意味着该直线一侧的所有数据样本代表一类,而直线的另一侧则代表另一类。这样看来,直线并不是唯一的。类似的分类算法并不只有支持向量机一种,例如K近邻算法,但是支持向量机算法优于其他算法的原因在于,支持向量机算法能够选取最优的那条线进行分类。下图有助于帮助我们理解支持向量机的工作方式。假如,我们在图上有一些数据点,我们想将黄色的原点分为一类,黑色的点分为一类。支持向量机算法的核心就在于找到那条最佳的分界线,我们也将这条分界线称之为决策边界。

决策边界不一定是一条直线,它也可以是其它形式的线条,同时决策边界也被称为超平面,这个名词的由来是因为可以有时候可以找到具有多个特征的决策边界。例如下图所示的使用RBF内核的非线性SVM(支持向量机)的决策边界。支持向量机后续的所有步骤算法都是为了求解这条最优的决策边界,这也是整个支持向量机算法最终的求解目标。

1.4:支持向量机的类型

支持向量机有两种不同的类型,每种类型的SVM,都有自己的用途。

  • 简单SVM:通常用于解决线性分类和回归问题。
  • 内核SVM:针对非线性数据,具有更高的灵活性,其超平面不仅仅适用于二维空间,还可以解决多维空间的数据分类问题。

2:支持向量机算法原理

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)很小,任何轻微的扰动都会对决策边界的分类产生很大影响,边际很小会出现在训练集上表现良好,但是在测试集上表现糟糕的情况,也就是出现了过拟合的现象。所以,文章到这里我们有了新的目标,那就是找一个边际更大的决策边界,这个边际越大越好。

支持向量机就是通过找出边际最大的决策边界,来对数据进行分类的分类器。因此支持向量机又叫做最大边际分类器。

2.3:决策边界的数学推导

经过上文的分析,我们的目标变成了找出边际最大的决策边界。这个问题的本质是最优化的问题,在机器学习中最优化问题往往和损失函数联系在一起,支持向量机算法也不例外,是通过将损失函数降到最低来寻找边际最大的决策边界。

2.3.1:定义决策边界




2.3.2:定义决策边界的边际






2.3.3:求解最优决策边界


3:支持向量机算法的Python实现

前面四章详细介绍了什么是支持向量机算法以及支持向量机的特点与原理,并给出了如何求解支持向量机算法的数学过程推导,下面将通过Python语言对线性支持向量机进行可视化。

3.1:导入SVM所需模块

3.2:构造并可视化数据集


3.3:制作网格图


3.4:计算决策边界


4:支持向量机算法在网络安全中的应用

在研究支持向量机算法在网络安全中的应用之前,我们首先看看网络安全的主要任务有哪些,据统计网络安全的主要任务包括预测,预防,检测,响应和监测。支持向量机算法在每一个任务内都有着广泛的应用前景。下文将分别介绍支持向量机在网络,终端,应用程序和用户行为等安全方面发挥的重要作用。

4.1:SVM用于网络保护

网络保护,顾名思义是保护我们的网络免受入侵,那么入侵检测系统的解决方案就是网络安全领域比较关心的,传统的入侵检测方法大多采用密码签名的方法。在进行入侵检测方面,机器学习技术可以帮助我们进行网络流量的分析,在这里支持向量机具有检测速度快,分类精度高等特点,可以帮助安全人员识别不同类别的网络攻击,例如扫描和欺诈网络。

4.2:SVM用于终端保护

近年来,随着移动终端的不断普及,人们上网的方式不再像以前那样集中在PC端上网,越来越多的移动设备成为人们上网的首选,移动端的网络安全也越来越重要,层出不穷的勒索软件,垃圾软件,捆绑广告的软件,收集个人隐私的软件最新的检测移动端设备安全的软件是端点检测,不同的移动终端,有着不同的信息存储,但是这些信息之间有着一定的规律,支持向量机可以将这些不同类别的软件进行精准分类。

4.3:SVM用于应用程序保护

应用程序在当今社会已经与每一个人密不可分,我们每一个人的生活中充满了各种应用程序,例如桌面、Web、移动、微服务等等应用程序。多数针对应用程序的网络攻击是瞄准应用程序层中存在的可利用漏洞,随着应用程序的数量和复杂性不断增长,让该问题变得更加复杂。支持向量机算法在其中可以帮助安全人员分类已知的攻击类型,例如SQL注入等等。

支持向量机算法在网络安全中的应用相关推荐

  1. 网络安全中机器学习大合集 Awesome

    网络安全中机器学习大合集 from:https://github.com/jivoi/awesome-ml-for-cybersecurity/blob/master/README_ch.md#-da ...

  2. 支持向量机算法原理简介

    1,支持向量机概念简介 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向量机本身便是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中 ...

  3. 计算机网络rsa算法,计算机网络安全实验新报告--非对称密码算法RSA.doc

    计算机网络安全实验新报告--非对称密码算法RSA 网络安全实验报告 学院 网络工程专业 班 学号 姓名 成绩评定_______ 教师签名 实验 2 题目 非对称密码算法RSA 课程名称 网络安全 PA ...

  4. 支持向量机python代码_Python中的支持向量机SVM的使用(有实例)

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...

  5. 古老的spc也可以用机器学习(三)-支持向量机算法

    大家都很清楚SPC的中文叫统计过程控制,它的作用是发现过程数据中的异常行为,SPC有8种以上的判异规则,每一中判异规则对应可能的异常原因,非常实用. 现在大数据.机器学习应用越来越广泛,而机器学习算法 ...

  6. Python+sklearn使用支持向量机算法实现数字图片分类

    关于支持向量机的理论知识,大家可以查阅机器学习之类的书籍或网上资源,本文主要介绍如何使用Python扩展库sklearn中的支持向量机实现数字图片分类. 1.首先编写代码生成一定数量的含有数字的图片 ...

  7. 机器学习篇01:在线学习的支持向量机算法学习笔记

    在线学习的支持向量机算法学习笔记 oisvm算法实现说明 oisvm算法实现说明 % 本程序是用于实现基于在线学习的调制信号识别的程序 % % % 第一步:调制信号的生成 % 首先是7个信号:2ASK ...

  8. 机器学习之支持向量机算法(二)

    五.SVM求解实例 上面其实已经得出最终的表达式了,下面我们会根据一些具体的点来求解α的值.数据:3个点,其中正例 X1(3,3) ,X2(4,3) ,负例X3(1,1) 如下图所示 我们需要求解下式 ...

  9. 机器学习算法系列(十四)-硬间隔支持向量机算法(Hard-margin Support Vector Machine)

    阅读本文需要的背景知识点:拉格朗日乘子法.KKT条件.一丢丢编程知识 一.引言   前面一节我们介绍了一种分类算法--朴素贝叶斯分类器算法,从概率分布的角度进行分类.下面我们会花几节来介绍另一种在分类 ...

最新文章

  1. Mac下pycharm如何安装tensorflow
  2. AI硬件碎片化难题,英特尔想用“一个API”解决,还推出新的编程语言DPC++
  3. SQL Server 安装好后 Always On群组配置
  4. codeforce#365D Free Market
  5. 深入探索.NET框架内部了解CLR如何创建运行时对象
  6. Java基础整理(二)
  7. android 按钮点击声音,如何在Android中单击按钮时播放声音?
  8. BootStrap里面好看的背景色
  9. MyBatis的搭建流程(idea+maven)
  10. 第七课 Linux裸机开发+SourceInsight3.5使用+notepad++使用
  11. 苹果mac视频和字幕下载软件:Downie
  12. DB2 错误 54001
  13. Atitit 简历外语版 英语 日语 1.经历了很多项目实践,具备较为宽广的IT从业与信息化工作背景,具备若干创业历程,道路曲折,初心不改。在相关领域累计了较深的深度(细化度)与高度(抽象度)与广度
  14. Unity 3D下载安装教程
  15. CISSP 重点知识点总结2
  16. 一帮一 分数 15作者 陈越单位 浙江大学
  17. 银行卡识别技术-移动支付新宠儿
  18. 在htmlfor循环制作菱形基础上制作空心菱形
  19. 高级转录组调控分析和R语言数据可视化第十三期 (线上/线下同时开课)
  20. 钉钉小程序编译时提示 ‘dd is not defined‘

热门文章

  1. WEEK2 区块链和分布式账本 Blockchains and Distributed Ledger
  2. 美团(Leaf)分布式ID算法(实战)
  3. 京津跨域通勤特征与职住空间分布研究
  4. CentOS 7 下 zookeeper ACL 超级管理员使用
  5. java.bankaccount_java编写BankAccount类
  6. java--手速游戏
  7. 从旷视河图中窥见AIoT的未来
  8. 计算机图形学中的渲染管线
  9. 干货|语音识别框架最新进展——深度全序列卷积神经网络登场
  10. Linux内核中的container_of宏