目录
一、前言
聚类算法是一种无监督的机器学习方法,其数据没有标签。简单来说,聚类就是把相似的东西分在在一组。但是因为没有标签,如何评估学习的好坏非常困难,而且如何调参也是不易。
本文主要介绍两种聚类算法:K-means和DBSCAN。
二、K-means算法
也叫k均值聚类算法,其每次迭代前需要得到簇类样本均值。
2.1 k-means的概念
要得到簇的个数,即几堆,需要指定K值。
质心:均值,即向量各维度取平均即可,这是迭代需要的
距离的度量:(判断两个东西是否相似)常见的有欧式距离,余弦相似度,但数据需要先标准化。
优化目标:,其中k代表簇的个数,表示质心(均值),即表示把每个簇的样本和质心的距离都算出来求和,再求最小值。
2.2 K-means的工作流程
如图所示:
1. 根据K值,随机创建K个初始化质心点(Initialozation Randomly selecr K center points。如图(a)随机创建K=2个初始化质心点。
2. 算出所有样本点到质心点的距离,得到样本属于那个簇。如图(b)
3. 更新,根据簇内样本重新算出簇内的质心。如图(c)
4. 重复执行2,3步,重新划分簇类,直至质心不在变化。如图(d,e,f,g,h,i)
2.3 优势
简单,快捷,适合常规数据集
我们可以看到对于如上图所示的复杂数据集,K-means聚类算法表现差强人意。
2.4 劣势
K值难以确立
复杂度与样本呈线性关系
很难发现任意形状的簇
2.5 K-means的可视化
网址:Visualizing K-Means Clusteringhttps://www.naftaliharris.com/blog/visualizing-k-means-clustering/
选择随机数据集
玩!!!!!!!!!
三、DBSCAN算法
3.1 基本概念
(Density-Based Spatial clustering of Application with noise)基于密度的带有噪声的聚类应用
核心对象:若某个点的密度达到算法设定的阈值则视其为核心点。即领域内点的数量不小于MinPts。
邻域的距离阈值:设定半径为。
直接密度可达:若某点P在点q的邻域内,且q是核心对象,则p-q是直接密度可达。
密度可达:若有一个点的序列对于任意是直接密度可达的,则称以到达是密度可达的,这实际上是直接密度可达的“传播”。
密度相连:若从某核心点P出发,点q和点k都是密度可达的则称点q和点k是密度相连的。
边界点:属于某一个类的非核心点,不能再发展下线了。
噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。
其中A:核心对象 B,C:边界点 N:离群点(噪声点)
3.2 工作流程
参数D:输入数据 参数:指定半径 MinPts:密度阈值
参数选择:半径,可以根据K距离来设定:找突变点
K距离:给定数据集计算点到集合D的子集 S中的所有点距离,距离按照从小到大的顺序排列,d(k)就被称为K距离。
MinPts:k距离中的k值,一般取小一些,多次尝试。
3.3 优势
不需要指定簇数
可以发现任意形状的簇
擅长找到离群点(检测任务)
两个参数就够了
3.4 劣势
高维数据有些困难(可以做降维)
参数难以选择(参数对结果影响大)
sklearn中的效率很慢
3.5 可视化展示
网址:Visualizing DBSCAN Clusteringhttps://www.naftaliharris.com/blog/visualizing-dbscan-clustering/