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

640?wx_fmt=gif

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

在上一篇中,我们介绍了几种常用的监督学习方法。在本篇中,我们介绍无监督学习方法中的聚类方法。聚类是在高维度的未标注数据中寻找特征的一系列方法。其思想是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能的大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。由于聚类算法不需要有标签的数据,所以聚类算法在很多领域得到了广泛的应用,如模式识别、数据分析、图像处理、市场研究、客户分割、Web文档分类等。本篇将介绍K-means聚类,层次聚类和DBSCAN聚类三种聚类算法。

640?wx_fmt=jpeg

文章目录

        K-means聚类

  • 层次聚类算法

  • DBSCAN

K-means聚类

K-means聚类算法是一种应用非常广泛的聚类方法,是一种划分聚类方法。其基本思想为:给定一个包含n个对象的数据集,K-means聚类算法可以构建数据的k个划分,每个划分就是一个簇,并且满足:

    1、每个簇至少包含一个对象。

    2、每个对象必须属于并且仅属于一个簇。

K-means算法的流程如图 1所示。

640?wx_fmt=jpeg

当结果簇是密集的,而且簇和簇之间的区别比较明显时,K-means的效果较好。对于大数据集,K-means是相对可伸缩的和高效的,它的复杂度是O(nkt),其中,n是对象的个数,k是簇的数目,t是迭代的次数。

K-means的最大问题是要求先给出k的个数。k的选择一般基于经验值和多次实验结果。对于不同的数据集,k的取值没有可借鉴性。另外,K-means对孤立数据点是敏感的,少量噪声数据就能对平均值造成极大的影响。

层次聚类算法

与K-means算法不同,层次聚类算法不再产生单一聚类,而是产生一个聚类层次,也就是说产生一棵层次树。层次聚类算法最多包含n步,其中,n是数据集中对象的数量。每一步执行的操作就是在前面步骤的聚类基础上生成新聚类。层次聚类算法的流程如图 2所示。

640?wx_fmt=jpeg

1、将每个对象归为一类, 共得到n类,每类仅包含一个对象。类与类之间的距离就是它们所包含的对象之间的距离。

2、找到最接近的两个类并合并成一类,于是总的类数少了一个。

3、重新计算新的类与所有旧类之间的距离。

4、重复第2步和第3步,直到最后合并成一个类为止(此类包含了n个对象)。

由于这种聚类算法迭代合并所有分类,所以这种层次聚类称为“凝聚”法。也有一种“划分”层次聚类法,与“凝聚”相反,它先将所有对象放在同一类中,并不断划分成更小的类,划分法一般很少使用。

DBSCAN

(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)

DBSCAN是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇,并能够在具有噪声的空间数据库中发现任意形状的簇。

DBSCAN算法基于一个事实:一个聚类可以由其中的任何核心对象唯一确定。等价可以表述为:任一满足核心对象条件的数据对象p,数据集D中所有从p密度可达的数据对象o所组成的集合构成了一个完整的聚类C,且p属于C。

算法流程可以描述为:扫描整个数据集,找到任意一个核心点,对该核心点进行扩充。扩充的方法是寻找从该核心点出发的所有密度相连的数据点(注意是密度相连)。遍历该核心点的邻域内的所有核心点(因为边界点是无法扩充的),寻找与这些数据点密度相连的点,直到没有可以扩充的数据点为止。最后聚类成的簇的边界节点都是非核心数据点。之后就是重新扫描数据集(不包括之前寻找到的簇中的任何数据点),寻找没有被聚类的核心点,再重复上面的步骤,对该核心点进行扩充直到数据集中没有新的核心点为止。数据集中没有包含在任何簇中的数据点就构成异常点。

DBSCAN算法的显著优点是聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类。与K-means算法比较,DBSCAN算法不需要输入要划分的聚类个数。但是由于它直接对整个数据库进行操作,且进行聚类时使用了一个全局性的表征密度的参数,因此也具有两个比较明显的弱点:

    1、当数据量增大时,要求较大的内存支持,I/O消耗也很大。

    2、当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差。


小结:本篇介绍了无监督学习的聚类算法中常用到的三种方法。至此机器学习算法方面的介绍也暂告一段落。


转自网站绿盟科技博客

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

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

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


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg

长按扫码关注



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

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

相关文章

一图看懂 ASP.NET Core 中的服务生命周期

翻译自 Waqas Anwar 2020年11月8日的文章 《ASP.NET Core Service Lifetimes (Infographic)》 [1]ASP.NET Core 支持依赖关系注入(DI)软件设计模式,该模式允许我们注册服务、控制如何实例化这些服务并将其注入到不同的组件中。一些服务可以在…

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

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

支持向量回归代码_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)希尔伯特旅馆有无限个房间,并且每个房间都住了客人。一天来了一个新客人,旅馆老板说:“虽然我们已经客满,…