链式效应:A与B相似,B与C相似,那么在聚类的时候便会将A、B、C聚合到一起,但是如果A与C不相似,就会造成聚类误差
聚类和分类:聚类无标签是无监督学习,分类有标签是监督学习
一、K-Means算法
K-Means是无监督学习的聚类算法
https://www.cnblogs.com/pinard/p/6164214.html
https://blog.csdn.net/ten_sory/article/details/81016748 (有代码和插图)
我的算法实现:https://editor.csdn.net/md/?articleId=122621063
获取数据 n 个 m 维的数据
随机生成 K 个 m 维的点
while(t)
for(int i=0;i < n;i++)
for(int j=0;j < k;j++)
计算点 i 到类 j 的距离
for(int i=0;i < k;i++)
1. 找出所有属于自己这一类的所有数据点
2. 把自己的坐标修改为这些数据点的中心点坐标
end
证明推导(https://zhuanlan.zhihu.com/p/149597282)
k-means的缺陷:
k-means算法对于凸性数据具有良好的效果,能够根据距离来讲数据分为球状类的簇,但对于非凸形状的数据点,就无能为力了
二、谱聚类算法
(spectral clustering):
https://www.cnblogs.com/pinard/p/6221564.html