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

640?wx_fmt=gif

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

640?wx_fmt=jpeg

文章目录

        什么是机器学习?

  •  机器学习的常用算法

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

    • 决策树算法

    • 支持向量机

  • 小结


什么是机器学习?

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

机器学习的常用算法

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

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

640?wx_fmt=jpeg

神经元

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

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

640?wx_fmt=jpeg

感知器

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

感知器线性可分与不可分

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

XOR问题求解

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

640?wx_fmt=jpeg

多层感知器

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

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

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

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


决策树算法

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

640?wx_fmt=jpeg

决策树示意图

图 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所示。

640?wx_fmt=jpeg

SVM原理

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

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

640?wx_fmt=jpeg

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/

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


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg

长按扫码关注





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP

RDKit一个用于化学信息学的python库。使用支持向量回归(SVR)来预测logP。 分子的输入结构特征是摩根指纹,输出是logP。代码示例:#导入依赖库import numpy as npfrom rdkit import Chemfrom rdkit.Chem.Crippen import MolLogPfrom rdkit import Chem, Da…

移除 ZooKeeper 的 kafka 2.8 ,更快了

这段时间招聘季,后台收到不少关于 Kafka 的问题,确实 Kafka 近两年的行情,可谓是水涨船高了。根本原因是,是 Apache Kafka 作为一款开源的消息引擎系统。凭借高可靠、高吞吐、高可用、可伸缩等优越特性,在数据采集、传…

浅议SSH协议

什么是SSH? SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性…

机器学习 vs 深度学习到底有啥区别,为什么更多人选择机器学习

机器学习和深度学习有什么区别?让我们从本文中寻找答案。目标本文中,我们将深度学习与机器学习作比较。我们将逐一了解他们。我们还会讨论他们在各个方面的不同点。除了深度学习和机器学习的比较,我们还将研究它们未来的趋势。对比介绍深度学…

dreamweaver连接mysql数据库 发生一个不知名错误_用DREAMWEAVER连接数据库测试时总是弹出发生一个不知名的错误 你好! 请问一下这个问题你是怎么解的?...

展开全部2018年05月05日 19:11:13阅读数:1 编辑如图,PHPMySQLDreamweaverCS6连接MySQL就出现不知名错误,查遍全网也没有解决办法。32313133353236313431303231363533e58685e5aeb931333365653139笔者是机械学的专业,电脑是小白&…

ASP.Net 管道模型 VS Asp.Net Core 管道 总结

1 管道模型 1 Asp.Net Web Form管道请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入HttpRuntime类进行进一步处理。HttpRuntime通过请求信息创建HttpContext上下文对象,此对象将贯…

py2exe for python3_使用Py2Exe for Python3创建自己的exe程序

最近使用Python 3.5写了一个GUI小程序,于是想将该写好的程序发布成一个exe文件,供自己单独使用。至于通过安装的方式使用该程序,我没有探索,感兴趣的读者可以自己摸索。1 介绍我使用的开发环境是python3.4(实际上我是在另一个64位…

实际体验SpanT 的惊人表现

前言最近做了一个过滤代码块功能的接口。就是获取一些博客文章做文本处理,然后这些博客文章的代码块太多了,很多重复的代码关键词如果被拿过来处理,那么会对文本的特征表示已经特征选择会有很大的影响。所以需要将这些代码块的部分给过滤掉。…

AI人工智能资料分享来袭,还不快来!

小天从大学开始,便开启资料收集功能。近几年以AlphaGo为契机,人工智能进入新的发展阶段,再加上日常的深入研究,小天收集整理了丰富的AI学习资料,内容涵盖“深度学习资料包”,“数据挖掘资料包”&#xff0c…

聊一聊Jmeter的简单使用

背景 近段时间,团队想补强测试这一块,减少重复性的一些工作,让一些内容可以自动化起来,同时对开发同学写的接口的性能也开始有所要求了。考虑到团队内没有人有测试开发的经验,所以前期的选择还是以工具为主&#xff0c…

win7录制系统声音 加入立体声混音 camtasia recorder录屏

很多时候,我们录屏的时候都并不是非得通过麦克风来说话,比如,你想跟好友分享一首歌曲的时候,那么你总不能把麦拿到喇叭那儿录制噻,那样录出来的不仅很麻烦,而且歌曲质量很差!那么怎么录制系统正…

百万大奖参赛攻略 | 让程序员走向财富自由

还在担忧你的区块链项目曝光量小、品牌商业化进程慢、得不到投资人关注吗?这里有站上巨人肩膀的最全攻略!2018年金链盟中国区块链应用大赛,开始向全国企事业单位、科研机构、项目团队、开发者队伍征集应用案例啦!想参加的你们&…

Web通用令牌JwtBuilder

JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。Nuget包:NewLife.Core、NewLife.Secrurity源码地址&a…

mysql---复杂的sql语句join的使用(left join,right join)

2019独角兽企业重金招聘Python工程师标准>>> SELECT u.*,count(u.id) AS sum FROM user AS uLEFT JOIN post AS pON p.user_id u.id RIGHT JOIN user_has_group as upON up.user_id u.id RIGHT JOIN user_has_email as ueON ue.user_id u.idWHERE u.username ! A…

你真的不了解这个地球

全世界有3.14 % 的人已经关注了数据与算法之美1. 首先来看看地球,看起来不错哟,地球~2. 图中圈圈里头的人口,比其他地区的所有总和都还要多。3. 以整个地球史来看,曾活过的人类高达1150亿人,其中包括现存的…

Squid反向代理加速缓存+负载均衡实验架构

实验环境: 公司有两台web服务器,运行同一套网站,读取同一台mysql数据库。 两台web服务器的主机名如下: test1.com 192.168.1.119 test2.com 192.168.1.120 squid服务器ip:192.168.1.123 DNS: 192.168.9.254 实验思路&a…

levedb 导入 mysql_LevelDB-初始篇

简介:LevelDB是一个基于本地文件的存储引擎,非分布式存储引擎,原理基于BigTable(LSM文件树),无索引机制,存储条目为Key-value。适用于保存数据缓存、日志存储、高速缓存等应用,主要是避免RPC请求带来的延迟…

当时我就震惊了:无穷带来的各种悖论

全世界有3.14 % 的人已经关注了数据与算法之美希尔伯特旅馆悖论(Hilberts paradox of Grand Hotel)希尔伯特旅馆有无限个房间,并且每个房间都住了客人。一天来了一个新客人,旅馆老板说:“虽然我们已经客满,…

砸了140亿的计算机视觉,未来到底如何?

指纹解锁、刷脸识别、语音转换文字、机器人看病、Alphago我们已经深刻的感受到,人工智能在改变我们的工作方式和认知。通过 SAS 针对企业人工自能就绪调研的报告可以看到,大部分企业认为人工智能还处于初期阶段,“目前,我们正在部…

记一次 .NET WPF布草管理系统 挂死分析

一:背景 1. 讲故事这几天看的 dump 有点多,有点伤神伤脑,晚上做梦都是dump,今天早上头晕晕的到公司就听到背后同事抱怨他负责的WPF程序挂死了,然后测试的小姑娘也跟着抱怨。。。嗨,也不知道是哪一个迭代改出…