本文主要简述聚类算法族。聚类算法与前面文章的算法不同,它们属于非监督学习。
1、K-means聚类
记k个簇中心,为
μ1
,
μ2
,…,
μk
,每个簇的样本数为
Ni
假设每个簇中的数据都满足分布
N(μi,σ)
,即方差相同,均值不同的GMM。
则每一个样本点的分布函数为:
ϕi=12πσ2‾‾‾‾‾√exp(−(xi−μ)22σ2)
可求出其似然函数
Lμ=ϕ1×ϕ2×...
且可求其对数似然为(以三个点为例)
lμ=12∑j=1k∑Nji=1(xI−μj)2
求驻点有:
μj=1Nj∑i=1Nxi
因此,以均方误差为目标函数的时候肯定是收敛的。用其他函数作为目标函数不一定收敛。
注: k 的选择采用“手肘法”,注意不是交叉验证,它连标签都没有!
2、密度聚类
代表算法:DBSCAN
K-means对噪声敏感,密度聚类对噪声不敏感。
3、层次聚类
按层次聚类,由上至下或由下至上,优点是可以任意选择聚类数
4、谱聚类
Step1:对样本点俩俩计算相似度
Wn×n=[Sij]
Step2:将
Wn×n
的主对角线元素全部置为0,把每行元素的值相加,第
i
行的和为
Step3:令
Ln×n=Dn×n−Wn×n
,称为拉普拉斯矩
阵。这个 L 是半正定的,它最小的特征值为0。
Step4:求L矩阵的特征值和特征向量,将所有特征值从小大排列,取出前k个(聚类数为k),将其对应的特征向量如下排列: