聚类与应用

谱聚类

rbf kernel

原型聚类:Kmeans、GMM高斯混合模型【独立的cluster】

有些聚类算法是可以看作树状的重叠,不用输入k

kmeans的损失函数是每个类到中心点的平方误差和,且损失函数的最小化是一个NP问题

容易陷入局部最小。

那么陷入局部最小怎么办呢?

————kmeans对初始化中心敏感

改进:kmeans++

————缓解方法:

1. 初始第一个聚类中心为某个样本点,初始化第二个中心离第一个点最远,初始化第三个中心离前两个最远....

2. 多初始化几遍,选所有这些据类中损失函数(到聚类中心的平方和最小)

3. 优化的初始化聚类方法kmeans++


————关于k的选择

1. 很经典的“肘点法”--把损失函数在不同的k下的画出来

2. 选取不同的k值,画出损失函数曲线

3. 选取“肘点值”

图像聚合

kmeans不同k下的聚合

关于k的选定,比如80w商品,期望每个类有100个商品。直接聚合的话跑起来会非常的慢。这时会通过商品的一些文本信息,比如下装、牛仔裤、长裤,短裤等先做一个分类。可能聚合成200个类,然后再对这200个类并行跑。

还有一种情况比如说聚类成2000个类,再对每个类进行遍历,有些类里包含的样本个数非常少,这样的类是可以不分出来的,也能减少分类的个数。

kmeans先进行切分,逐层去用比较好。

kmeans和kmeans++的区别:

1. 初始化。kmeans随机初始化,kmeans++每次初始最远的点

-------kmeans的局限性

1. 属于“硬聚类”,每个样本只能有一个类别。其他的一些聚类方法(GMM或者模糊kmeans允许软聚类)

2. kmeans对于异常点的“免疫力”很差,我们可以通过一些调整(比如中心不直接取均值,而是找均值最近的样本点代替)

3. 对于团状的数据点集区分度好,对于带状(环绕)等“非凸”形状不太好。(用谱聚类或者特征映射)

聚类与应用_第1张图片
带状聚类


聚类与应用_第2张图片
对于密度不同的效果也不太好

-------层次聚类

聚类与应用_第3张图片
层次聚类

----Kmeans VS 层次聚类

1. Kmeans这种扁平聚类产出一个聚类结果(都是独立的)

2. 层次聚类可以根据聚类程度不同,有不同的结果

3. Kmeans需要指定聚类的个数k,层次聚类不用

4. 通常来说Kmeans比层次聚类快

5. Kmeans用的多,可以用K-median

----高斯混合模型!其实我到现在不怎么懂

GMM的优势?

1. 可理解性好

看作多个分布的组合

2. 速度快

  因为使用EM这种高效算法,时间复杂度O(tkn)

3. 学术上比较直观

最大数据似然概率

4. 可以拓展到其他分布的混合

多个多项式分布做类别判定

劣势:

1. 初始化要慎重,不然可能掉到局部最优里去

2. 需要手工指定K(高斯分布)的个数

3. 对于非凸的分布数据集也无能为力


总结:怎么做的

1. 根据当前的参数指定概率分布

2. 根据概率分布重新估计参数

你可能感兴趣的:(聚类与应用)