聚类算法汇总
来源:互联网 发布:天猫就是淘宝吗 编辑:程序博客网 时间:2024/06/06 01:03
作为无监督领域(unsupervised)一个太过famous的算法了,聚类(clustering)就是对大量未知标注的数据集,按照数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小. 然而,里面仍然有很多需要注意的地方,对于聚类本身,目前也有很多改进版本了,所以还是需要总结一下的。
相似度的度量
各种相似度的度量方式及其相关性见我的这篇博客。
K-means算法
这个算法大家都熟,跟KNN是兄弟,简单实用易操作,它也是其他一些聚类算法的鼻祖。
具体的步骤为:
对于输入样本
- 选择初始的K个class center
μ1,μ2,...,μK ; - 对于每个样本
xi ,将其标记为距离类别中心最近的类别,即:yi=argmin1≤j≤K||xi−μj|| ; - 将每个类别中心更新为隶属该类别的所有样本的均值:
μj=1|cj|∑i∈cjxi ;
4.重复上述两步,直至算法收敛。
收敛条件为:迭代次数/簇中心变化率/最小平方误差MSE(Minimum Squared Error)E=∑ki=1∑x∈Ci||x−μi||22
簇类个数怎么定?
- 根据先验经验:如果我们事先已经知道类的类的个数,直接设置即可。
- 增加交叉验证;
初始的簇类中心怎么定?
K-means对初始值敏感,有可能会陷入局部最优解,可以优化如下:
1. 先随机给定1个点,然后计算所有点到这个样本点的距离,距离越大的样本被选中做第二个中心点的概率大,距离越小的样本被选中的概率小;
2. 这样便有了2个簇类中心点。然后计算所有样本到这两个中心点的距离,选择其他样本点到这两个样本点中较近的距离作为衡量标准。距离越大被选中的概率越大;
3. 这样便有了3个簇类中心点。做法依然同上,知道选出k个簇类中心。
(这样做并不能完全使所有所有的中心店刚好取在不同的簇类中,但是可以一定程度上避免很多样本点取自同一个簇。而在实践中,为了计算方便,可以直接按照距离来计算 —— 随机选择一个点,然后选其他中心点时如果选中的点距离该样本点的距离小于某个阈值,则放弃。)
K-means是一个解决聚类问题的经典算法,简单有效,但不太适合于发现非凸形状的簇或者大小差别很大的簇,对噪声和孤立点比较敏感。
层次聚类
层次聚类是对给定数据集进行层次的分解,直到满足一定的条件。
- 凝聚的层次聚类:AGNES算法。一种自底向上的策略,首先将每个对象作为一个簇,然后依次合并那些原子簇使之形成更大的簇,直到满足一定条件;
- 分裂的层次聚类:DIANA算法。一种自顶向下的策略,首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到满足一定条件。
聚类过程如图所示:
密度聚类
密度聚类又称基于密度的聚类(Density-based clustering),此算法假设聚类结构能通过样本分布的紧密程度确定。其中,最著名的而一种算法叫做DBSCAN算法(Density-Based Spatial Clustering of Application with Noise).
假设给定数据集
ϵ -邻域:对于xj∈D ,其邻域包含样本即D中与xj 的距离不大于ϵ 的样本,即Nϵ(xj)=xi∈D|dist(xi,xj)≤ϵ ;- 核心对象(core object):若
xj 的ϵ -邻域至少包含MinPts个样本,则xj 是一个核心对象; - 密度直达(directly density-reachable):若
xj 位于xi 的ϵ -邻域中,且xi 是核心对象,则称xj 由xi 密度直达; - 密度相连(density-connected):对
xi 与xj ,若存在xk 使得xi 与xj 均由xk 密度可达,则称xi 与xj 密度相连。
算法流程:
1. 如果一个点p的
2. 寻找并合并核心对象直接密度可达的对象;
3. 没有新点可以更新簇时,算法结束。
谱聚类
- 谱:方针作为线性算子,它的所有特征值的全体统称为方针的谱;
- 方阵的谱半径为最大的特征值;
- 矩阵A的谱半径:
(ATA) 的最大特征值。
- 矩阵A的谱半径:
- 谱聚类是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类从而达到对样本数据聚类的目的。
假设给定一组数据
下面用相似度图来解决样本数据的聚类问题:找到一个图的划分,形成若干个组,使得不同组之间有较低的权值,组内有较高的权值。
- 给定无向图
G=<V,E> ,则可以得到它的邻接矩阵W=(wij)i,j=1,...,n ,(设置主对角线元素为0);- 若两个点的相似度值越大,表示这两个点越相似;
- 定义
wij=0 表示vi,vj 两个点灭有任何相似性;
- 顶点的度di形成度矩阵D(是一个对角阵):
di=∑nj=1wij - W的第i行元素的和为
vi 的度; - 除主对角线元素,D的其他位置为0
- W的第i行元素的和为
- 未正则的拉普拉斯矩阵:L = D - W
- 正则的拉普拉斯矩阵:
- 对称拉普拉斯矩阵
Lsym=D−12⋅L⋅D12=I−D−12⋅W⋅D12
- 对称拉普拉斯矩阵
谱聚类算法
输入:n个点
1. 计算n * n的相似度矩阵W和度矩阵D;
2. 计算拉普拉斯矩阵L = D - W;
3. 计算L的前k个特征向量
4. 将k个列向量
5. 对于
6. 使用k-meas算法将点
7. 输出簇
文章来源:http://blog.csdn.net/u010161630/article/details/51793141谱聚类算法有点像降维算法哦。
可以使用正则化的拉普拉斯矩阵代替算法中未正则过的。
- 聚类算法汇总
- 聚类算法汇总
- 聚类算法实践经验汇总
- 排序算法汇总一------插入类算法
- 排序算法汇总二------交换类算法
- 算法汇总
- 算法汇总
- 算法汇总
- 算法汇总
- 算法汇总
- 算法汇总
- 算法汇总
- 排序算法--排序算法汇总
- 排序算法--排序算法汇总
- 算法导论排序算法汇总
- 简单算法试题汇总
- 排序算法汇总
- 算法链接汇总
- 金蝶EAS·BOS,附件处理,代码实现附件复制到下游单据
- hadoop出现hadoop2.X部署警告: Unable to load native-hadoop library 总结
- 调试重定向
- JAVA 泛型中的extends和super
- oc截屏
- 聚类算法汇总
- mysql语句(一)
- 【MySql】杂记
- SpringBoot配置属性之NOSQL
- Oracle之row_number函数
- Java keytool命令说明
- Leetcode算法题目:N-Queens
- 以内存形式运行Xcode
- Linux内核中断处理