看见到洞见之引子(二)机器学习算法
《看见到洞见》系列文章汇聚、分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验,力求由浅入深层次递进,实战到方法论双线剖析。此文为系列文章之引子第二篇,深入浅出的对常用的数据分析和机器学习的算法进行介绍。
在上一篇中,我们介绍了几种常用的监督学习方法。在本篇中,我们介绍无监督学习方法中的聚类方法。聚类是在高维度的未标注数据中寻找特征的一系列方法。其思想是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能的大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。由于聚类算法不需要有标签的数据,所以聚类算法在很多领域得到了广泛的应用,如模式识别、数据分析、图像处理、市场研究、客户分割、Web文档分类等。本篇将介绍K-means聚类,层次聚类和DBSCAN聚类三种聚类算法。
文章目录
K-means聚类
层次聚类算法
DBSCAN
K-means聚类
K-means聚类算法是一种应用非常广泛的聚类方法,是一种划分聚类方法。其基本思想为:给定一个包含n个对象的数据集,K-means聚类算法可以构建数据的k个划分,每个划分就是一个簇,并且满足:
1、每个簇至少包含一个对象。
2、每个对象必须属于并且仅属于一个簇。
K-means算法的流程如图 1所示。
当结果簇是密集的,而且簇和簇之间的区别比较明显时,K-means的效果较好。对于大数据集,K-means是相对可伸缩的和高效的,它的复杂度是O(nkt),其中,n是对象的个数,k是簇的数目,t是迭代的次数。
K-means的最大问题是要求先给出k的个数。k的选择一般基于经验值和多次实验结果。对于不同的数据集,k的取值没有可借鉴性。另外,K-means对孤立数据点是敏感的,少量噪声数据就能对平均值造成极大的影响。
层次聚类算法
与K-means算法不同,层次聚类算法不再产生单一聚类,而是产生一个聚类层次,也就是说产生一棵层次树。层次聚类算法最多包含n步,其中,n是数据集中对象的数量。每一步执行的操作就是在前面步骤的聚类基础上生成新聚类。层次聚类算法的流程如图 2所示。
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/
版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。
数据与算法之美
用数据解决不可能
长按扫码关注
看见到洞见之引子(二)机器学习算法相关推荐
- 机器学习算法与Python实践之(二)支持向量机(SVM)初
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习算法与Python实践之(二)支持向量机
http://blog.csdn.net/zouxy09/article/details/17291543 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己 ...
- 机器学习算法与Python实践之(二)支持向量机(SVM)初级
机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...
- ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测
ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测 目录 输出结果 数据集展示 输出结果 1.k-NN 2.LoR 4.DT 5.RF ...
- 机器学习算法与Python实践之(二)k近邻(KNN)
机器学习算法与Python实践之(二)k近邻(KNN) (基于稀疏矩阵的k近邻(KNN)实现) 一.概述 这里我们先来看看当我们的数据是稀疏时,如何用稀疏矩阵的特性为KNN算法加速.KNN算法在之 ...
- 机器学习算法平台alink_Alink漫谈(十二) :在线学习算法FTRL 之 整体设计
Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 [Toc] 0x00 摘要 Alink 是阿里巴巴基于实时计算引擎 Flink 研发的新一代机器学习算法平台,是业界首个同时支持批式算法. ...
- 机器学习算法系列(二十二)-近似k近邻算法-Annoy(Approximate Nearest Neighbor / ANN)
阅读本文需要的背景知识点:k近邻算法.一丢丢编程知识 一.引言 前面一节我们学习了机器学习算法系列(二十一)-k近邻算法(k-Nearest Neighbor / kNN Algorithm),其 ...
- 机器学习算法系列(二十)-梯度提升决策树算法(Gradient Boosted Decision Trees / GBDT)
阅读本文需要的背景知识点:自适应增强算法.泰勒公式.One-Hot编码.一丢丢编程知识 一.引言 前面一节我们学习了自适应增强算法(Adaptive Boosting / AdaBoost Alg ...
- 机器学习算法(二):基于决策树的分类预测
机器学习算法(二):基于决策树的分类预测 决策树的介绍和应用 简介 决策树构建的伪代码 特征划分选择 信息增益 信息增益率 基尼系数 应用场景 优缺点 基于企鹅数据集的决策树实战 Step1:函数库导 ...
最新文章
- 运行PHP出现No input file specified错误解决办法
- TSS描述符表的作用
- .NET Core SignalR Redis底板详解(一)
- 安卓手机文件管理器简单横向评比 - imsoft.cnblogs
- 两条信号之间加电容_上海贴片电阻电容厂家地址-华腾电子
- Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.
- CodeForces - 722C Destroying Array (并查集/集合的插入和删除)
- 使用 WinRAR 将bat转exe
- PS基础操作之图像处理(一)
- 台式计算机怎么连接蓝牙 win10,win10台式电脑蓝牙怎么开启(开启电脑蓝牙的步骤图)...
- 计算机位置不可用d 桌面,win10系统开机提示desktop不可用位置如何解决
- POI 2011 切题记
- 数据仓库之数据质量监控
- ChatGPT 最好的替代品
- cleanup(cleanup什么意思中文)
- 数字电路学习——三极管的使用
- 《商务与经济统计》(二)
- 使用PS制作圆角图片
- ARM 指令 LDR
- 空间计量经济学 Spatial Econometrics
热门文章
- 你知道怎么使用DebugView查看调试信息吗?
- .NET Core应用框架AA介绍(二)
- C#并行编程(3):并行循环
- Asp.NetCore轻松学-部署到 Linux 进行托管
- Docker最全教程——从理论到实战(九)
- ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
- 在收购 Sun 的六年后,Oracle 终于瞄准了 Java 的非付费用户
- 微软加入Linux基金会共建开源生态,并对谷歌加入.NET社区的举措表示欢迎
- 用 Visual Studio 发布一个 Azure 云 Web 应用程序
- .NET跨平台之Sake和KoreBuild