一. 聚类概念
无监督问题:
我们手里没有标签了
聚类:
相似的东西分到一组
难点:
如何评估,如何调参
二. K-MEANS算法
2.1 基本概念
K值:
要得到簇的个数,需要指定K值
(我们需要将数据分为几类,K值就指定为该数值)
质心:
均值,即向量各维取平均即可
距离的度量:
常用欧几里得距离和余弦相似度(先标准化)
优化目标:
2.2 工作流程
image.png图a:
原始的数据集
图b:
随机指定了两个初始的点
图c-e:
改变x点的位置 或者调整参数来改变
2.3 优势和劣势
优势:
简单,快速,适合常规数据集
劣势:
- K值难确定
- 复杂度与样本呈线性关系
- 很难发现任意形状的簇
三. DBSCAN算法
3.1 基本概念
密度相连:
若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。
边界点:
属于某一个类的非核心点,不能发展下线了
直接密度可达:
若某点p在点q的r 邻域内,且q是核心点则p-q直接密度可达。
噪声点:
不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的
图解:
A:核心对象
B,C:边界点
N:离群点
3.2 工作流程
参数D:
输入数据集
参数ϵ:
指定半径
MinPts:
密度阈值
3.3 参数选择
半径ϵ:
可以根据K距离来设定:找突变点K距离:给定数据集P={p(i); i=0,1,…n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。
MinPts:
k-距离中k的值,一般取的小一些,多次尝试。
3.4 优势和劣势
3.4.1 优势
- 不需要指定簇个数
- 可以发现任意形状的簇
- 擅长找到离群点(检测任务)
- 两个参数就够了
这类通过K-means方法是没办法聚类的,但是通过DBSCAN算法是可以出色的完成
image.png
image.png
image.png
3.4.2 劣势
- 高维数据有些困难(可以做降维)
- 参数难以选择(参数对结果的影响非常大)
- Sklearn中效率很慢(数据削减策略)
四. 算法可视化
官方提供了一个可视化的算法动态演示,真的很给力。
K-Means:
https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
DBSCAN:
https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/
网友评论