- 简述一下K-means算法的原理和工作流程
- 输入k,表示数据聚类到k簇
- 随机选出 k个质心
- 将每个点归到距离最近的质心所属簇
- 求簇中每个点均值,求出该质心新的位置
- 循环3、4
- 当质心不再发生变化停止迭代
- K-means中常用的到中心距离的度量有哪些?
- 欧几里得距离
- 曼哈顿距离
- 余弦相似度
- K-means 中的k值如何选取?
- 随机选取,画出k和轮廓系数(Silhouette Coefficient)的学习曲线,选择最佳k值
- 手肘法:
- K-means 算法中初始点的选择对最终结果有影响吗?
- 不同的初始值结果可能不一样
- 对计算速度有影响。更好的选取初始点,可以加快聚类速度
- K-means 聚类中每个类别中心的初始点如何选择?
- 随机选择初始质心
- 不停更新质心,求出更佳中心
- K-means 中空聚类的处理
- 选择一个距离当前任何质心最远的点。这将消除当前对总平方误差影响最大的点。
- 从具有最大SSE的簇中选择一个替补的质心,这将分裂簇并降低聚类的总SSE。如果有多个空簇,则该过程重复多次。
- 如果噪点或者孤立点过多,考虑更换算法,如密度聚类
- K-means 是否会一直陷入选择质心的循环停不下来?
- 不会,有数学证明Kmeans一定会收敛,大概思路是利用SSE的概念(也就是误差平方和),即每个点到自身所归属质心的距离的平方和,这个平方和是一个凸函数,通过迭代一定可以到达它的局部最优解。(不一定是全局最优解)
- 但同时为了让模型更快,可以设置:
- 迭代次数设置
- 设定收敛判断距离
- 如何快速收敛数据量超大的 K-means?
- 方法1:洗牌后的数据,先选区部分数据,求出质心,确定局部最佳 k 值;使用上述求出的质心,作为初始质心,聚类全量数据
- 方法2:Mini Batch Kmeans使用了一种叫做Mini Batch(分批处理)的方法对数据点之间的距离进行计算。Mini Batch的好处是计算过程中不必使用所有的数据样本,而是从不同类别的样本中抽取一部分样本来代表各自类型进行计算。由于计算样本数量少,所以会相应的减少运行时间,但另一方面抽样页必然会带来准确度的下降。
- K-means算法的优点和缺点是什么?
- 缺点:
- 需要人为输入 k值,且很难确定;
- 局部最优;
- 对噪音和异常点敏感;
- 需样本存在均值(限定数据种类);
- 聚类效果依赖于聚类中心的初始化;
- 对于非凸数据集或类别规模差异太大的数据效果不好
- 优点:
- 简单、易于理解、实现容易;
- 可解释性强;
- 基于少量数据也可达到较好效果。
- 缺点:
- 如何对K-means聚类效果进行评估?
- 簇内距离最小化,簇外距离最大化
- 计算每个点轮廓系数;观察每个类中各个点轮廓系数分布
- a是Xi与同簇的其他样本的平均距离,称为凝聚度
- b是Xi与最近簇中所有样本的平均距离,称分离度
- 1 - a/max(a,b)
- 当 a==b,轮廓系数=0,说明这两个簇中数据应该属于同一个簇
- a > b, 轮廓系数负数,说明聚类效果不好
- a < b ,轮廓系数越接近1,说明聚类效果越好
- K-Means与KNN有什么区别
- KNN是分类算法,K-means是聚类算法;
- KNN是监督学习,K-means是非监督学习
- KNN喂给它的数据集是带Label的数据,已经是完全正确的数据,K-means喂给它的数据集是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序。
- KNN没有明显的前期训练过程,K-means有明显的前期训练过程
- K的含义KNN来了一个样本x,要给它分类,即求出它的y,就从数据集中,在X附近找距离它最近的K个数据点,这K个数据点,类别C占的个数最多,就把x的label设为c.
- K-means中K是人工固定好的数字,假设数据集合可以分为k个簇,由于是依靠人工定好,需要一些先验知识。
Previous
支持向量机内容概要
2021-01-20
Next
k-means 算法知识点梳理
2021-01-12