接触过机器学习(Machine learning)的看官都应该知道机器学习分为监督学习(supervised learning)和无监督学习(unsupervised learning)。通俗的来讲,监督学习是我们提供大量数据,并且这些数据都有其对应的具体标签(或具体的准确值、实际特征对应值),也就是算法中的y,例如:训练集{X,Y}。然后由我们利用回归算法或分类算法对数据进行训练、分析、得到预测值。无监督学习是我们提供大量数据,但是这些数据没有对应的标签,例如:训练集{X},由算法来进行提取具体结构进行分类。聚类算法就是无监督学习的一种,这篇博客里提到的是聚类算法中应用最普遍的K-means算法(K均值算法),以下作简要讲述。
1.1 聚类算法
聚类算法可以实现将给定的一组未加标签数据自动地分成有紧密关系的子集(或是簇)。
K- 均值是一个迭代算法,假设我们想要将数据聚类成 K 个组,其方法为:
1)首先选择K个随机的点,称为聚类中心(cluster centroids);
2)对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。
3)计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。
4)重复步骤 2-4 直至中心点不再变化。
Repeat {
for i = 1 to m
c(i) := index (form 1 to K) of cluster centroid closest to x(i)
for k = 1 to K
μk := average (mean) of points assigned to cluster k
}
算法分为两个步骤,第一个 for 循环是赋值步骤,即:对于每一个样例xi,计算其应该属于的类。第二个 for 循环是聚类中心的移动,即:对于每一个类K,重新计算该类的质心。1.2 优化目标(代价函数或畸变函数)
K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)为:
1.3 随机初始化
在运行 K- 均值算法的之前,我们首先要随机初始化所有的聚类中心点,下面介绍怎样做:
1. 我们应该选择K < m,即聚类中心点的个数要小于所有训练集实例的数量;
2. 随机选择K个训练实例,然后令K个聚类中心分别与这K个训练实例相等
K- 均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。
为了解决这个问题,我们通常需要多次运行 K- 均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值 均值的结果,选择代价函数最小的结果。这种方法在K较小时(2--10)比较有效,但是如果K较大,这么做也可能不会有明显地改善。
1.4 选择聚类数
一般根据实际应用需求人为设置聚类数K,不自动设置。但在不知需要多少聚类,而且Elbow method方法适用时,可选择方法中肘关节处K。
来源:CSDN
作者:Leo_Sheng
链接:https://blog.csdn.net/Leo_Sheng/article/details/80574489