《看见到洞见》系列文章汇聚、分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验,力求由浅入深层次递进,实战到方法论双线剖析。此文为系列文章之引子第一篇,深入浅出的对常用的数据分析和机器学习的算法进行介绍。

文章目录

什么是机器学习?

  • 机器学习的常用算法

    • 人工神经网络(Artificial Neural Network, ANN)

    • 决策树算法

    • 支持向量机

  • 小结

什么是机器学习?

机器学习(Machine Learning, ML)是人工智能的一个分支,是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。同时,机器学习是一个涉及到多个领域的交叉学科,其涵盖范围包括了概率论、统计学、逼近论、凸分析、计算复杂性理论等学科。目前,机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。

机器学习的常用算法

人工神经网络(Artificial Neural Network, ANN)

神经网络是机器学习的一个分支,与之对应的是生物神经网络。生物神经网络一般指由神经元组成的网络,用于产生意识,帮助生物进行思考与行动。那么什么是神经元呢?

神经元

如图 1所示为一个生物神经元的示意图。神经元通过树突接受来自外界或者其它神经元的刺激,并将刺激传至细胞体。而轴突将刺激从细胞体传至远处,传递给另一个神经元的树突或者肌体的效应器。而神经元之间的连接不是固定不变的。在生物体的学习和成长过程中,一些新的连接会被逐渐建立起来,而一些连接可能会消失。神经元之间的连接关系变迁就形成了生物体的学习过程。

那么什么是人工神经网络呢?人工神经网络是一种模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。与生物神经网络一样,人工神经网络同样由神经元组成,即感知器[1],如图 2所示。

感知器

感知器可以看做是一个最简单的神经网络,其信号传递方程为:

由传递方程可知,感知器本身为一个线性分类器。因此,其无法解决线性不可分的问题。如图 3所示,对于线性可分的AND(与)和OR(或)问题,感知器都可以对其进行求解。而对于XOR(异或)问题,由于其是一个线性不可分问题,所以感知器,也就是最简单的神经网络无法对其进行求解。

感知器线性可分与不可分

由于XOR问题不能用单个的感知器进行求解,那么可以考虑采用两层的感知器,其中,第一层感知器的输出作为第二层感知器的输入,如图 4所示。其中,权值为

其对XOR问题求解的示意图如图 5所示。

解决XOR问题的两层神经网络

XOR问题求解

因此,对于线性不可分的问题,可以采用多层的神经元互相连接的方式来进行求解。如果需要求解的问题更加复杂,就需要更多的神经元组合在一起,构成更加复杂的网络,如图 6所示。在人工神经网络中,网络相邻层之间的节点都通过有向边进行连接,箭头的方向代表了信号的传递方向,连接的权值代表了不同层神经元之间作用的强度。网络同一层的节点之间没有连接。

多层感知器

只有连接的神经网络还不能进行工作,因为其连接的权值还没有确定。因此首先需要通过有监督的方式训练神经网络,即学习过程。其经典的学习算法为反向传播(Back Propagation, BP)算法。由于BP算法的推导比较复杂,这里不做详细阐述,只介绍一下其基本思想:

1、信号的正向传播:输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段。

2、误差反向传播:将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

3、因此,人工神经网络方法的一般应用步骤为:1. 确定网络结构;2. 采用有监督的方法训练网络参数;3. 进行分类或者预测。

决策树算法

机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。决策树的示意图如图 7所示。

决策树示意图

图 7中的决策树用来预测贷款用户是否具有偿还贷款的能力。贷款用户主要具备三个属性:是否拥有房产,是否结婚,平均月收入。每一个内部节点都表示一个属性条件判断,叶子节点表示贷款用户是否具有偿还贷款的能力。例如:用户甲没有房产,没有结婚,月收入 6K。通过决策树的根节点判断,用户甲符合右边分支(拥有房产为“否”);再判断是否结婚,用户甲符合左边分支(是否结婚为否);然后判断月收入是否大于5K,用户甲符合左边分支(月收入大于5K),该用户落在“可以偿还”的叶子节点上。所以预测用户甲具备偿还贷款的能力。

可以看到,决策树的决策过程非常直观,容易被人理解。因此,决策树在很多领域得到了广泛的应用。

决策树的构造过程不依赖于领域知识,它使用属性选择度量来选择将元组最好地划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量,以确定各个特征属性之间的拓扑结构。属性选择度量算法有很多,常用的有ID3算法[2]和C4.5算法[3]。这里不介绍算法的具体流程,有兴趣的读者可以参考相关的文献。

从信息论知识中可知,期望信息越小,信息增益越大,从而纯度越高。所以ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。

ID3算法存在一个问题,就是偏向于多值属性。例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图解决这个问题。

在分类模型建立的过程中,很容易出现过拟合的现象。过拟合是指在模型学习训练中,训练样本达到非常高的逼近精度,但对检验样本的逼近误差随着训练次数的增加呈现出先下降后上升的现象。过拟合时训练误差很小,但是检验误差很大,不利于实际应用。

决策树的过拟合现象可以通过剪枝进行一定的修复。剪枝分为预先剪枝和后剪枝两种。预先剪枝指在决策树生长过程中,使用一定条件加以限制,使得产生完全拟合的决策树之前就停止生长。后剪枝是在决策树生长完成之后,按照自底向上的方式修剪决策树。后剪枝有两种方式,一种用新的叶子节点替换子树,该节点的预测类由子树数据集中的多数类来决定。另一种用子树中最常使用的分支代替子树。预先剪枝可能过早的终止决策树的生长,后剪枝一般能够产生更好的效果。但后剪枝在子树被剪掉后,决策树生长的一部分计算就被浪费了。

支持向量机

支持向量机(support vector machine, SVM)[4]是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。SVM是一种监督学习方法,其原理示意图如图 8所示。

SVM原理

SVM的主要思想是针对两类分类问题,寻找一个超平面作为两类训练样本点的分割,以保证最小的分类错误率。在线性可分的情况下,存在一个或多个超平面使得训练样本完全分开,SVM的目标是找到其中的最优超平面,即使得每一类数据中与超平面距离最近的向量距离超平面的距离达到最大。如图 8所示,中间的实线便是寻找到的最优超平面,其到两条虚线边界的距离相等。而虚线间隔边界上的点则是支持向量。

前面介绍了SVM方法在解决线性可分问题中的应用。线性不可分问题将如何处理呢?这就需要引入核函数的概念。通过核函数将待分类的数据映射到高维空间,来解决在原始空间中线性不可分的问题,如图 9所示。

SVM核函数

小结

本期介绍了监督学习中常用的三种方法的原理。在下一篇中,笔者将介绍无监督学习中的一类重要的方法——聚类。

参考文献

1、F. Rosenblatt, “The perceptron: A probabilistic model for information storage and organization in the brain,” Psychol. Rev., vol. 65, no. 6, pp. 386–408, 1958.

2、R. Quinlan, “Induction of decision trees,” Mach. Learn., vol. 1, no. 1, pp. 81–106, 1986.

3、R. Quinlan, C4.5: Programs for Machine Learning. San Mateo, CA, USA: Morgan Kaufmann, 1993.

4、V. Vapnik, The Nature of Statistical Learning Theory. New York, NY, USA: Spriner, 2010.

转自网站:绿盟科技博客

网站链接:http://blog.nsfocus.net/

文章链接:http://blog.nsfocus.net/machine-learning-algorithm1/

版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。

数据与算法之美

用数据解决不可能

长按扫码关注

看见到洞见之引子(一)机器学习算法相关推荐

  1. 看见到洞见之引子(二)机器学习算法

    <看见到洞见>系列文章汇聚.分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验,力求由浅入深层次递进,实战到方法论双线剖析.此文为系列文章之引子第二篇,深入浅出的对常用的 ...

  2. 机器学习算法基本工作流程

    数据科学家 - 主要步骤 观察大局 获得数据 从数据探索和可视化中获得洞见 机器学习算法的数据准备 选择和训练模型 微调模型 展示解决方案 启动.监控和维护系统 观察大局 获取明确的目标任务 明确目标 ...

  3. 机器学习算法的优点和缺点总结

    机器学习算法的优点和缺点总结 1.正则化算法(Regularization Algorithms) 它是另一种方法(通常是回归方法)的拓展,这种方法会基于模型复杂性对其进行惩罚,它喜欢相对简单能够更好 ...

  4. 机器学习算法基础知识

    在我们了解了需要解决的机器学习问题的类型之后,我们可以开始考虑搜集来的数据的类型以及我们可以尝试的机器学习算法.在这个帖子里,我们会介绍一遍最流行的机器学习算法.通过浏览主要的算法来大致了解可以利用的 ...

  5. 赠书 | 图解机器学习算法,看这文就够了!

    机器学习指的是计算机根据给定的问题.课题或环境进行学习,并利用学习结果解决问题或课题等的一整套机制(图 1-1). 图 1-1 分类的示意图 与机器学习共同成为热门话题的还有人工智能和深度学习.这里梳 ...

  6. 【机器学习】机器学习算法优缺点对比(汇总篇)

    作者 | 杜博亚 来源 | 阿泽的学习笔记 「本文的目的,是务实.简洁地盘点一番当前机器学习算法」.文中内容结合了个人在查阅资料过程中收集到的前人总结,同时添加了部分自身总结,在这里,依据实际使用中的 ...

  7. 机器学习算法易受攻击?阿里“安全基建”这样应对AI的不安全

    出品 | AI科技大本营(ID:rgznai100) 数字基建的浪潮之下,诸多行业领域都在加速融合5G.大数据中心.AI等新技术,向数字化转型.近日,多位全国政协委员.院士和安全行业专家提出,应尽快出 ...

  8. 解密Kernel:为什么适用任何机器学习算法?

    作者 | Marin Vlastelica Pogančić 译者 | 陆离 编辑 | 一一 出品 | AI科技大本营(ID:rgznai100) 机器学习中Kernel的秘密(一) 本文探讨的不是关 ...

  9. 最实用的机器学习算法优缺点分析,没有比这篇说得更好了

    AI技术年度盛会即将开启!11月8-9日,来自Google.Amazon.微软.Facebook.LinkedIn.阿里巴巴.百度.腾讯.美团.京东.小米.字节跳动.滴滴.商汤.旷视.思必驰.第四范式 ...

  10. 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)

    编译 | 林椿眄 出品 | AI科技大本营(公众号ID:rgznai100) [AI科技大本营导读]Python 被称为是最接近 AI 的语言.最近一位名叫Anna-Lena Popkes的小姐姐在G ...

最新文章

  1. 取消掉Transfer-Encoding:chunked
  2. 修改js文件需要重启服务器,关于Node.js中频繁修改代码重启服务器的问题
  3. apache-详细配置文件介绍+多种方式虚拟主机配置
  4. 数据结构--位图 BitMap
  5. Java Web学习笔记09:文件上传与下载
  6. LED显示驱动(七):图层基本测试总结
  7. python字典默认排序_Python字典练习:设置默认获取排序,小,知识点,setdefaultgetsorted...
  8. Linux课程---3、Linux远程登录和传输(操作Linux服务器软件)
  9. 入华五周年,微软亮AI、云计算成绩,制定“二五”新战略...
  10. 数据科学 IPython 笔记本 一、TensorFlow
  11. kali linux无线驱动安装,Kali Linux 安装WIFI无线网卡驱动:rtl8822bu 教程
  12. 使用 Cobertura 和反射机制提高 Java 单元测试中的代码覆盖率
  13. 数据分析师8大实用能力实战培养课程
  14. 抖音android 语言英语,谁都能抖音教英语吗?
  15. 实用新型专利属于发明专利吗
  16. 毕业设计 嵌入式 指纹识别系统实现
  17. 编解码学习笔记(基础)
  18. 《鬼谷子本经阴符七术》全文及翻译
  19. 《大道至简》的幕后故事(5):“愚公移山记”军事谋略篇
  20. c# 椭圆拟合库_利用C#版OpenCV实现圆心求取实例代码

热门文章

  1. .NET Core IdentityServer4实战 第Ⅴ章-单点登录
  2. 解决C# 7.2中的结构体性能问题
  3. BXUG第11期活动
  4. g4e基础篇#3 Git安装与配置
  5. ASP.Net Core Razor 页面路由
  6. .NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿
  7. ABP框架搭建项目系列教程基础版
  8. django17:importlib应用中间件代码思想
  9. Django08-1:模型层(ORM)--聚合查询/分组查询/F与Q查询/开启事务/常用字段及参数/自定义字段/数据库查询优化
  10. 谷歌F12调试公众号时,让鼠标显示出来