1. K-means聚类算法原理
K-均值聚类算法是一种无监督的机器学习算法,其主要思想是将数据集分成 K 个不同的簇,其中每个簇都代表着数据集中某种特定的模式或特征。
工作原理:
- 从数据集T:
中的n个数据点中选取K个记为聚类中心,每个聚类中心对应一个簇;
- 计算其到每个聚类中心的距离,将其归类到距离最近的聚类中心所在的簇中;
- 重新计算每个簇的聚类中心;
- 重复第二步和第三步,直到聚类中心不再变化或达到预设的迭代次数。
优点:
- 算法简单、易于实现;
- 对于大数据集的聚类效果较好;
- 可以比较方便地扩展到高维数据集。
缺点:
- 需要提前确定簇的数量 K,且对于不同的数据集,正确的 K 值不同,此时需要根据经验或者尝试多种 K 值;
- 对于初始的聚类中心的选择敏感,不同的初始值可能会导致不同的聚类结果;
- 对于非凸的形状可能聚类效果较差。
2.距离函数的选择
常见的距离函数有欧氏距离(Euclidean distance)、曼哈顿距离(Manhattan distance)以及马氏距离(Mahalanobis distance)。针对不同研究对象需要选择合适的距离函数。
- 设X是n维空间向量
中的特征空间,
,
,
。则:
- 欧式距离:
- 曼哈顿距离:
- 马氏距离:
- 假设向量x的平均值为
,则其协方差可表示为:
,马氏距离就定义为:
-
(x−μ)本质上是向量与平均值的距离。然后,将其除以协方差矩阵(或乘以协方差矩阵的逆数)。这实际上是多元变量的常规标准化(z =(x – μ)/ sigma)。也就是说,z =(x向量)–(平均向量)/(协方差矩阵)。