数据分析|聚类算法原理(1) k-means
前言
这几天整理了一下之前的学习笔记,主要是关于聚类算法以及分类算法相关的原理。本文主要介绍聚类经典算法k-means的基本原理,之后几篇关于聚类的算法可能会涉及到基于高斯混合的期望最大化聚类、基于密度的聚类(DBSCAN)方法、以及层次聚类。
一.什么是聚类?
聚类分析是将样品或变量按照他们在性质上的亲疏程度进行分类的数据分析方法,是典型的无监督分析方法。举一个比较形象的例子就是,比如说把人和其他动物放在一起比较的时候,可以根据一些属性特征,比如肢体特征、呼吸特征、是否会使用火等等将人和其他动物分离开,分离出来人、猴子、鱼类等等。
二.聚类应用
1.市场
可以通过对人群进行聚类,进行精准营销
2.生物
找到动物或者植物的相似特征,根据相似特征进行区分动植物
3.地震研究
对经常发生地震的区域进行聚类,区分危险区域与安全区域
4.社交网络
对经常互相联系的人们进行聚类,探索朋友圈
三.算法原理
1.确定一个k值
2.随机选择k个聚类中心点
3.每一个数据点都分配到最近的质心
4.使用每个簇的中心值去更新每一个质心
5.重复直到不再产生新的分配
6.返回K质心
重复5-->3过程,直到不产生新的分配
如上图中通过不断迭代最终确定了质心,一般数据迭代五次就可以得到质心。
四.聚类效果函数
1.Silhouette函数
a(i):指的是一个点与其分在一个组的点的平均距离
b(i):指的是一个点与不在一个组内的点的最小平均距离
每个点都有 a(i)和b(i)两个值
当ai=0的时候si=1
当b
s(i)取值范围 (-1,1)
上图中右边部分是x轴就是si值,y轴便是点的位置
x轴的si轴越趋向于1,说明聚合程度越好
2.DB指标(Davies-Bouldin)
DB指标通过描述样本内的类内散度与各聚类中心的间距,定义为:
k:聚类数目
Wi:类Ci中的所有样本到其聚类中心的平均距离
Wj:表示类Ci中所有样本到Cj中心的平均距离
Cij:表示类Ci和Cj中心之间的距离。
DB越小表示类与类之间的相似度越低,从而对应更加的聚类效果。
五.K-means优缺点
1.优点
(1)算法简单
(2)时间复杂度O(t*k*n)(t:迭代次数,k:初始设置的k值,n:数据点的数量)
2.缺点
(1)K值的选取比较麻烦
(2)初始点没有选好可能会收敛到局部最优点
(3)对噪点敏感(在非常远的一个点可能会对整体聚类产生影响,因为K-means算法使用的是均值)
(4)不适合做规则图形的聚类,比较适合做球状数据的聚类
六.Sklearn中K-means算法
1.Kmeans算法参数
介绍几个主要的参数:
n_clusters:聚类的k值,默认为8
max_iter:最大迭代次数,默认300次
init='k-means++':默认使用k-means算法
2.Kmeans主要方法
(1)fit():计算聚类
(2)fit_predict():计算簇的质心,并给每个样本预测类别
(3)predict():给每个样本估计最近的簇
(4)score():计算聚类误差
参考
1.K-means参数解释:
2.sklearn学习路径图: