写在最前:本文没有过多的涉及数学公式,倒是像一个复习回顾的笔记,读者请注意!!!
聚类
聚类算法有很多种,其中最基本的一种算法是K-means。
一、K-means 聚类
输入:数据集X,聚类中心的个数K
输出:Cluster indicator
1、K-means的工作过程
首先随机初始化聚类中心->对每个样本点计算距离该样本点最近的聚类中心(或者将这个过程简单的称为类别分配)->根据前一步计算出的结果,计算每个类中所有的样本点的平均值。让聚类中心等于这个均值(或将这个过程简单的称为移动聚类中心)->不断重复类别分配和移动聚类中心的过程直到模型收敛。
随机初始化聚类中心是一个非常重要的工作,它在很大程度上将会导致模型能不能收敛到全局最优。为了尽可能的得到全局最优的聚类结果,一种普遍的策略就是进行多次随机初始化,然后不断迭代。也可以这么理解,如果将随机初始化聚类中心然后迭代模型至收敛认为是一次聚类的话,那么多次随机初始化策略实际上就是进行多次聚类,然后取得到的最优的模型。这是一种尽可能得到全局最优的策略,但并不总是有效。 比如,如果要聚的类太大的话。多次聚类也不一定就能找到全局最优。聚类次数一般在50-1000次。
2、K-means损失函数
通俗来讲,K-means的损失函数就是所有样本点与其对应的聚类中心之间的距离(具体公式去参考其他资料)。这里有点模糊的地方就是:K-means是怎么优化这个损失函数的呢?这里显然没有用到梯度下降。在类别分配的时候,对每个样本点计算距离该样本点最近的聚类中心。这个过程就是在最小化损失函数。
3、聚类中心数量的选取法则
肘部法则: 选择一系列聚类中心的值,比如:K=1..10。对每个K进行聚类。得到算法收敛后的损失函数的值。然后可视化一下这些损失函数。如果在某个K时之前,损失函数下减小的很厉害,而在这之后,损失函数减小的很缓慢。整个图像看起来是一个弯着的手肘。
那么这个K通常就是最好的值。然而,很多情况下很难获得这样的图像。那就要根据实际意义进行选取。
根据实际应用场景的意义选择: 根据实际的应用场景具体分析。
4、Cluster Indicator示意图
reference from:CDIMC-net: Cognitive Deep Incomplete Multi-view Clustering Network