K-Means 算法是一种无监督学习,同时也是基于划分的聚类算法,一般用欧式距离作为衡量数据对象间相似度的指标,相似度与数据对象间的距离成反比,相似度越大,距离越小。算法需要预先指定初始聚类数目 k 以及 k 个初始聚类中心,根据数据对象与聚类中心之间的相似度,不断更新聚类中心的位置,不断降低类簇的误差平方和(Sum of Squared Error,SSE),当 SSE 不再变化或目标函数收敛时,聚类结束,得到最终结果。
核心思想是首先从数据集中随机选取 k个初始聚类中心Ci(1 ≤ i ≤ k),计算其余数据对象与聚类中心Ci的欧氏距离,找出离目标数据对象最近的聚类中心Ci,并将数据对象分配到聚类中心Ci所对应的簇中。然后计算每个簇中数据对象的平均值作为新的聚类中心,进行下一次迭代,直到聚类中心不再变化或达到最大的迭代次数停止。
空间中数据对象与聚类中心间的欧式距离计算公式为:
其中,x为数据对象,Ci为第 i个聚类中心,m为数据对象的维度,xj,Cij 为x和 Ci的第j个属性值。
整个数据集的误差平方和 SSE 计算公式为:
本分析方法中,如果涉及定类变量聚类,则会先对定类变量进行编码,然后再进行聚类。假如输入的变量存在缺失值,定类数据自动以众数填补,定量数据自动以平均数填补。
参考文献:
- 杨俊闯,赵超.K-Means聚类算法研究综述[J].计算机工程与应用,2019,55(23):7-1463
- Yadav J, Sharma M. A Review of K-mean Algorithm[J]. Int. J. Eng. Trends Technol, 2013, 4(7): 2972-2976.