聚类
之前我们讲到的都是监督学习,下面让我们来看对于无监督学习我们应该如何进行分类呢?无监督学习对应的就是给定的样本点我们不给输出值来进行分类
K-means
K-means是一种十分常用的算法,它的过程就是对于给定的K个初始点,首先根据各个样本点到其的距离进行分类,之后将这K个初始点位置更新为本类内所有点的平均位置,再不断迭代,直到K个聚类中心的位置不变
采用这种方法我们对于非分离聚类也能进行很好的分类
对于k-means算法实际上也有代价函数,那就是所有点到本聚类中心距离的平方
而算法的实际过程实际上是将这两步分开了
随机初始化
由于初始点是我们需要确定的,因此初始点的选取往往会影响到分类效果,我们往往会随机选择样本点作为K个类的初始点。从下图我们可以看出初始点选取不同可能会导致算法收敛到局部最优点
因此在我们应用算法的时候应该随机化初始点,并且多次重复选择最优的结果
聚类数量
上面讲了K个点应该如何进行初始化,那么K应该怎么确定呢?一个很好的方法叫做肘部方法(elbow method),也就是选择代价函数有明显变化的一点作为聚类的数量,但是在实践的过程中我们往往会遇到代价函数随聚类数量K平滑下降的情况,那么此时我们就很难选择K。
还有一种选取聚类数量的原则就是根据实际需求来选择