无监督学习——聚类算法
把相似的个体统一起来,方便后续的操作。这里相似个体的生成是由计算机自己看成而不需要标签,所以称为无监督学习。
K-means算法
下图是没有 标签的样本点,想通过算法自动实现分成两簇的任务;当然人很容易看出来怎样能够分成两类,但是机器采用了欧氏距离的方式来进行判别。
第一步,首先随机的选取两个中心点,或者说是分类聚类中心,如图中的红色和蓝色;
第二步,将所有的样本点到两个点的距离进行计算,并且将样本点标记到为到最近的中心点那个颜色,实现了初步的分类;
第三步,将同一类别的样本点数据,求各维度的均值,然后新的坐标为新的标记点;
重复第二步,重复计算样本点到标记点的距离,重新分类;
重复第三步,再次刷新中心点的位置
接下来不断的重复以上的步骤一、二,指导达到终止条件,比如中心位置不改变,或者达到迭代次数。
输入的参数:
- K的大小
- 训练集(n维)
算法实现过程:
实际上,第一步的簇分配过程,以及中心点的再分配都是在优化代价函数。而实际上通过代价函数直接优化不太可实现。
对于不分离的簇,K-means算法也能够将它们进行分离,知道顾客体重和身高,进行分簇,然后进行衣服型号的设计。
优化目标
样本点到中心点的欧氏距离最小!它的优化其实就是算法原理中的不断迭代。
随机初始化
有很多初始化的方法,但效果往往最好的是:
随机初始化:随机选取样本点中的K个当做分簇中点
局部最优解的情况:
为了防止这种情况,在聚类数在10以内时,可以初始化50-1000次,然后对不不同的最终优终点计算代价函数,选取最小的即可!
选取聚类数量
视化图、根据需要选择
根据自己的需要,或者直观看一下画出来的图来进行分类;实际就是根据自己的后续需求来进行选择。比如衣服要做3个型号的款式,则只需要3类就可以了。
Elbow Method
但是有些时候会是没有肘的,不太好判断,因此可作为参考的方式。