目录
2.2 重要参数init & random_state & n_init 初始化质心
1 概述
机器学习当中,有相当一部分算法属于“
无监督学习
”
,无监督的算法在训练的时候只需要特征矩阵
X
,不需要标签。
PCA
降维算法就是无监督学习中的一种,聚类算法,也是无监督学习的代表算法之一。
聚类算法又叫做
“
无监督分类
”
,其目的是将数据划分成有意义或有用的组(或簇)。这种划分可以基于我们的业务 需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布。
![](https://i-blog.csdnimg.cn/blog_migrate/5ec452bce87c9c9b4685baf5cad9b310.png)
KMeans
算法将一组
N
个样本的特征矩阵
X
划分为
K
个无交集的簇,直观上来看是簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。
簇中所有数据的均值通常被称为这个簇的
“
质心
”
(
centroids
)。在一个二维平面中,一簇数据点的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。
2 sklearn中的聚类算法
在
KMeans
算法中,簇的个数
K
是一个超参数,需要我们人为输入来确定。
KMeans
的核心任务就是根据我们设定好的K
,找出
K
个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。
![](https://i-blog.csdnimg.cn/blog_migrate/521e44c751948f49cf1f0e844f29b378.png)
那什么情况下,质心的位置会不再变化呢?当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇都是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。
我们认为,
被分在同一个簇中的数据是有相似性的,而
不同簇中的数据是不同的
,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求制定不同的商业或者科技策略。
我们追求“
簇内差异小,簇外差异大”
。而这个
“
差异
“
,由
样本点到其所在簇的质心的距离
来衡量。
对于一个簇来说,所有样本点到质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差异就越小。而距离的衡量方法有多种,令 表示簇中的一个样本点, 表示该簇中的质心,n
表示每个样本点中的特征数目,
i
表示组成点 的每个特征,则该样本点到质心的距离可以由以下距离来度量:
![](https://i-blog.csdnimg.cn/blog_migrate/2c6b518c6c832d7c8f2d39197227a991.png)
如我们采用欧几里得距离,则一个簇中所有样本点到质心的距离的平方和为:
![](https://i-blog.csdnimg.cn/blog_migrate/288be7db72d77a33a3eff12fad4d2771.png)
其中,
m
为一个簇中样本的个数,
j
是每个样本的编号。这个公式被称为
簇内平方和
(
cluster Sum of Square
),又叫做Inertia
。而将一个数据集中的所有簇的簇内平方和相加,就得到了整体平方和(
Total Cluster Sum of Square),又叫做
total inertia
。
Total Inertia
越小,代表着每个簇内样本越相似,聚类的效果就越好。
因此
KMeans
追求的是,求解能够让
Inertia
最小化的质心
。实际上,在质心不断变化不断迭代的过程中,总体平方和是越来越小的。我们可以使用数学来证明,当整体平方和最小的时候,质心就不再发生变化了。如此,K-Means
的求解过程,就变成了一个最优化问题。
损失函数本质是用来衡量模型的拟合效果的,只有有着求解参数需求的算法,才会有损失函数。Kmeans
不求解什么参数,它的模型本质也没有在拟合数据,而是在对数据进行一种探索。
K-Means
不存在什么损失函数,Inertia
更像是
Kmeans
的模型评估指标,而非损失函数。
重要参数
n_clusters