【简单数据】聚类算法初识
【聚类】
根据数据的相似性进行分组。相似性衡量方法有距离、相似系数、核函数和DTW。介绍5种常用的聚类。
【means聚类】
最优距离求解问题(质心到区域内点距离和最小)。
获取数据 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
关键部分:距离算法、质心更新。
输入条件:聚类数量
输出结果:质心、距离
距离算法;欧式距离(各属性欧式距离),聚类边界。
质心更新:均值(各属性向量均值),也是趋向密度最大,依靠上次聚类值。
评价指标:误差平方和。(目标函数)
局部最优:质心选取不合理(2个质心在一个类)。
【mean-shift聚类】
密度最优求解问题(半径确定,质心趋向密度最大)。
计算某一点A与其周围半径R内的向量距离的平均值M,计算出该点下一步漂移(移动)的方向(A=M+A)。当该点不再移动时,其与周围点形成一个类簇,计算这个类簇与历史类簇的距离,满足小于阈值D即合并为同一个类簇,不满足则自身形成一个类簇。直到所有的数据点选取完毕。
关键部分:质心更新(即密度算法,趋向密度最大)。
输入条件:半径距离(欧式距离)。
输出结果:质心、聚类数量。
密度算法/质心更新:加权向量均值。
改进算法:核函数/高斯函数(半径即带宽),给每个向量赋予权重,距离更近的点贡献更大(权重就是滤波,滤掉距离较远的点/大于带宽)。
质心寻找:依靠遍历并标记。
局部最优:不同的簇不同的密度,最终找到自己的最大。
【DBSCAN聚类】
限定密度条件问题。
密度算法/质心更新:依靠区域内点数。
质心寻找:依靠遍历和标记。
【EM聚类】
如果一组数据有隐式数据,能够更好的帮助聚类,就可以用EM。实质上是反馈和迭代的过程。
GMM是点到质心的密度概率,K-means是点到质心的距离。EM求的是密度最优问题。质心更新依靠上次聚类点。
【层次聚类】
步骤一:(初始化)将每个样本都视为一个聚类;
步骤二:计算各个聚类之间的相似度;
步骤三:寻找最近的两个聚类,将他们归为一类;
步骤四:重复步骤二,步骤三;直到所有样本归为一类或指定几类。
这个比较容易懂。
to be continued
—