【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图]
【补充说明】聚类算法可以作为独立方法将数据聚成不同簇,也可以作为数据挖掘任务(例如分类、关联规则等)的预处理!
【补充说明】聚类算法与分类算法的主要区别在于训练时的样本有无标签,聚类算法无监督学习,分类算法有监督学习!
【再说一句】本文主要介绍机器学习中聚类算法的演变路径,和往常一样,不会详细介绍各算法的具体实现,望理解!
一、相似性衡量方法
1. 基于距离
- 闵可夫斯基距离(Minkowski Distance):计算距离的通用的公式
- 曼哈顿距离(即城市块距离Manhattan distance):h=1(例如用于L1正则化等)
- 欧几里德距离(用的比较多):h=2(例如用于L2正则化等)
- 其他距离:例如核函数距离K(x,y)、DTW距离、Mahalanobis距离等
2. 基于相似系数
例如余弦相似度等,主要优势在于不受原线性变换的影响,可以轻松地转换为距离,但其运算速度相对较慢。
二、基于划分的聚类
1. K-Means聚类
主要步骤如下:
(1) 确定要聚类的数量K,并随机初始化K个簇的中心点。
(2)将每个样本分配到与其距离最近的中心点所在的簇(这里采用欧氏距离)。
(3)计算每一个簇内所有样本点的平均值,作为该簇的新中心点。
迭代重复以上这些步骤,直到各簇中心点在迭代过程中变化不大(即小于设定的阈值)。
K-Means聚类的优点:
- 原理简单&