本节课程的内容是聚类算法,主要介绍的是k均值和DBSCAN两个聚类算法,在了解过其基本的原理之后,就可以开始相应的实践操作
聚类:
在样本中寻找自然集群,事先是不知道存在哪些集群的。聚类是无监督学习,本质是探索数据的结构关系,常用于对客户细分,对文章聚类等
分类:对已经有标签的样本进行分类,已知存在有哪些类别
K-means
原理:事先划定k个点,计算其余点到这k个点的距离,根据距离最短原则划分类别,再重新计算k个类的中心,再进行迭代,直到中心的变化小于设定的阈值
确定聚类数k:K-means算法是无监督学习算法,事先并不知道数据可以聚成几类。使用画图的方式,在高维数据面前也是不可行的。
可以通过设定不同的k值,对应进行k-means聚类。计算k个聚簇内样本点到各自聚簇中心的距离和,把k个聚簇的距离和加总得到总距离。一般而言这个距离会随着k增大而减小,衰减的拐点对应的k值一般而言会是一个比较好的k值。
总距离可以表述为以下公式:
SSE=
Python实现:
iris上实现K-means
载入数据集
进行探索性数据分析,根据PetalWidthCm,PetalLengthCm绘制出三个类别的鸢尾花
Kmeans聚类
绘图比较聚类结果
K-means算法的局限
K-means算法适用于数据集呈现出类圆形、球形分布的,如果数据没有呈现出这种规律,很可能聚类的效果会是很差的
DBSCAN
DBSCAN,全称是Density-Based Spatial Clustering of Applications with Noise,是一种基于密度的聚类方法
原理:根据和min_samples把数据点分为三类点,一类是CORE(图中红色点):周围距离内有大于或等于min_sample个样本点; REACHABLE(图中蓝色点):周围距离内的样本点数量小于min_sample,但是可以被CORE点覆盖的点(也就是在CORE点以为半径范围内的点) ; OUTLIER(图中蓝色):异常点,不属于任何一个类别
预先需要给定的参数是:、min_samples,且对参数的选择非常敏感
CORE点需要满足的条件是范围内的数据点大于或等于min_samples
REACHABLE点是被纳入CORE点范围的点,但本身不满足作为CORE点的条件
- OUTLIER:除开以上两类以外的所有数据点
Python实现:
iris上实现DBSCAN
生成数据集
进行探索性数据分析
DBSCAN
补充知识
参数文档
K-means
- sklearn.cluster.KMeans
- sklearn 文档翻译之 sklearn.cluster.KMeans,文档是对K-means参数的中文解释
DBSCAN
- sklearn.cluster.dbscan
- 用scikit-learn学习DBSCAN聚类,文档是对DBSCAN参数的中文解释
算法步骤以及优缺点解释
K-means
K-means聚类步骤:
Step1: 随机选择k个质心(即k个类);
Step2: 计算每一个样本点到这些质心的距离,把样本点划分给距离最短的质心,从而把所有的样本点划分为k类,形成k个聚簇;
Step3: 对于每个类,重新计算聚簇的中心,确定该类的质心;
Step4: 若收敛,则结束;否则转到Step2.K-means缺点:
- K-means算法的随机性主要在于初始点的选取,且对聚类中心的初始选择比较敏感,初始点的选择会影响最终的聚类效果
- k值需要首先人工确定(启发式)。
- 对噪声比较敏感
DBSCAN
- 阅读dbscan算法步骤,了解DBSCAN的算法步骤
- 阅读DBSCAN聚类︱scikit-learn中一种基于密度的聚类方式 中DBSCAN的优缺点部分
任何算法都是有局限的,了解不同算法的优缺点可以帮助你更有针对性地应用算法
扩展阅读
聚类算法的模型评估
相对于有标签的数据集,可以比较容易地进行性能评估,基于无标签的数据建立的聚类算法模型,往往比较难评估其模型性能。
聚类模型的性能指标主要分为内部指标(Internal Index)和外部指标(External Index)两类。内部指标适用于无标注数据,根据聚类结果中簇内相似度和簇间分离度进行聚类质量评估;而外部指标适用于有标注数据,将聚类结果与已知类标签进行比较。
阅读聚类算法评价指标,了解如何对在有标签、无标签数据上建立起的聚类模型分别进行评估
数据分析师(入门) 港科大博后 王乐业 主讲
更多数据科学课程,上DC学院
关注DC,获取更多学习资源