机器学习(一) K-means聚类
聚类算法K-means是硬聚类算法,是目标函数聚类算法的代表。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。其核心思想是:随机选定K(聚类数)个初始中心,然后根据这K个初始中心,将N个数据点根据欧氏距离进行聚类,每个数据点离哪个初始中心更近就归于此初始中心一类,直至聚类完成,再计算每个聚类的均值作为新的中心,然后再根据欧氏距离进行聚类,如此迭代下去,直至收敛(即重新计算的中心与前一次计算的中心位置一致)。
其算法过程如下:
- 从数据集N个数据中选择K个初始聚类中心;
- 对剩余的(N-K)个数据计算到K个初始聚类中心的欧氏距离,并将其归类于最小距离的中心的类;
- 对K个类重新进行计算,得到迭代后的聚类中心;
- 迭代步骤2~3直到聚类中心不再变化或者变化小于设置的阈值为止。
算法优缺点:
优点:
- 算法快速、简单;
- 对大数据集有较高的效率并且是可伸缩性的;
- 时间复杂度近于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(nkt) ,其中n代表数据集中对象的数量,t代表着算法迭代的次数,k代表着簇的数目。
缺点:
- 聚类数K是事先给定的,然而有时候我们并不知道k,只能凭经验给出。
- k-means需要初始聚类中心,然而传统k-means的初始中心是随机指定的。随机指定初始中心会导致聚类的迭代次数增加,聚类错误(局部最优而非全局最优)等等后果。
- 易受异常点干扰,也会导致迭代次数增加。