美文网首页
图像分割-无监督聚类分割

图像分割-无监督聚类分割

作者: 小幸运Q | 来源:发表于2020-05-23 15:44 被阅读0次

https://blog.csdn.net/ycy0706/article/details/90439245


(1) kmeans

1.聚类簇数K没有明确的选取准则,但是在实际应用中K一般不会设置很大,可以通过枚举法,比如令K从2到10。其实很多经典方法的参数都没有明确的选取准则,如PCA的主元个数,可以通过多次实验或者采取一些小技巧来选择,一般都会达到很好的效果。

2.从Kmeans算法框架可以看出,该算法的每一次迭代都要遍历所有样本,计算每个样本到所有聚类中心的距离,利用重心调整聚类中心,因此当样本规模非常大时,算法的时间开销是非常大的。

3.Kmeans算法是基于距离的划分方法,只适用于分布为凸形的数据集,不适合聚类非凸形状的类簇

非凸类簇
  • k的选择:对于所有的簇计算误差平方和,得出一个逐渐收敛的曲线,根据这个曲线得出最佳k

2.层次聚类

为了不用提前指明k的个数,我们采用从下而上地把小的cluster合并聚集,或者从上而下地将大的cluster进行分割的方法。目前一般用得比较多的是从下而上地聚集。

image.png

层次聚类的缺点是计算量比较大,因为要每次都要计算多个cluster内所有数据点的两两距离。另外,由 于层次聚类使用的是贪心算法,得到的显然只是局域最优,不一定就是全局最优,这可以通过加入随机效应解决。

每个样本点都是一个cluster,通过计算cluster的距离来作大概判断。如果合并的两个小 cluster同属于一个目标cluster,那么它们的距离就不会太大。但当合并出来K个目标cluster后,再进行合并,就是在这K个cluster间进行合并了,这样合并的cluster的距离就会有一个非常明显的突变。

image.png

(1) Self Organizing Maps (SOM) 基于神经网络的聚类算法

本质上是一种只有输入层--隐藏层的神经网络。隐藏层中的一个节点代表一个需要聚成的类。训练时采用“竞争学习”的方式,每个输入的样例在隐藏层中找到一个和它最匹配的节点,称为它的激活节点。输入层神经元个数代表了输入数据的维数(RGB)

image.png

SOM的一个特点是,隐藏层的节点是有拓扑关系的。这个拓扑关系需要我们确定,如果想要一维的模型,那么隐藏节点依次连成一条线;如果想要二维的拓扑关系,那么就行成一个平面

image.png
  • SOM的过程:

1) 初始化:每个节点随机初始化自己的参数W={w1,w2...wn}。每个节点的参数个数与Input的维度相同。

竞争(输出)层最少节点数量 =5\sqrt N

2)对于每一个输入数据,找到与它最相配的节点。假设输入时D维的, 即 X={x_i, i=1,...,D},那么判别函数可以为欧几里得距离:(寻找最近的神经元)

d_j(x)=\sum_{i=1}^{n}(x_i-w_{ji})^2, \text{n is dimention}

  1. 找到激活节点I(x)之后,我们也希望更新和它临近的节点。令S_ij表示节点i和j之间的距离,对于I(x)临近的节点(范围大小Nc),分配给它们一个更新权重:(更新邻近神经元的权重)

T_{j,I(x)}=e^{(-S^2_{j,I(x)}/2\sigma^2)}

简单地说,临近的节点根据距离的远近,更新程度要打折扣(远的更新少近的更新多)。

image.png

4)接着就是更新节点的参数了。按照梯度下降法更新:

\Delta w_{ji}=\eta(t)T_{j,I(x)} (t) (x_i-w_{ji})

学习率\eta(t)=\frac{1}{t+1.1},t是迭代次数

迭代,直到收敛。

  • 同样是无监督的聚类方法,SOM与K-Means有什么不同呢?

1)K-means需要事先定下类的个数,也就是K的值。 SOM则不用,隐藏层中的某些节点可以没有任何输入数据属于它。所以,K-Means受初始化的影响要比较大。

2)K-means为每个输入数据找到一个最相似的类后,只更新这个类的参数。SOM则会更新临近的节点。所以K-mean受noise data的影响比较大,SOM的准确性可能会比k-means低(因为也更新了临近节点)。

3) SOM的可视化比较好。优雅的拓扑关系图 。


  • SOM 用于生成训练样本的低维空间,可以将高维数据间复杂的非线性统计关系转化为简单的几何关系,且以低维的方式展现,因此通常在降维问题中会使用它。

  • SOM 与其它人工神经网络不同,因为它们使用的是竞争性学习而不是错误相关的学习,后者涉及到反向传播和梯度下降。在竞争性学习中,各个节点会相互竞争响应输入数据子集的权利。训练数据通常没有标签,映射会学习根据相似度来区分各个特征。

som.gif image.png

(2) DBSCAN算法

1)DBSCAN算法会以任何尚未访问过的任意起始数据点为核心点,并对该核心点进行扩充。这时我们给定一个半径/距离ε,任何和核心点的距离小于ε的点都是它的相邻点。

2)如果核心点附近有足够数量的点,则开始聚类,且选中的核心点会成为该聚类的第一个点。如果附近的点不够,那算法会把它标记为噪声(之后这个噪声可能会成为簇中的一部分)在这两种情形下,选中的点都会被标记为“已访问”。(抗噪能力很强)

3)一旦聚类开始,核心点的相邻点,或者说以该点出发的所有密度相连的数据点(注意是密度相连)会被划分进同一聚类。然后我们再把这些新点作为核心点,向周围拓展ε,并把符合条件的点继续纳入这个聚类中。

4)重复步骤2和3,直到附近没有可以扩充的数据点为止,即簇的ε邻域内所有点都已被标记为“已访问”。

  • DBSCAN的主要缺点:当聚类的密度不同时,DBSCAN的性能会不如其他算法。这是因为当密度变化时,用于识别邻近点的距离阈值ε和核心点的设置会随着聚类发生变化。而这在高维数据中会特别明显,因为届时我们会很难估计ε。

(3) 高斯混合模型(GMM)

它是多个高斯分布函数的线性组合,理论上可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况。

我们假设数据点满足不同参数下的高斯分布——比起均值,这是一个限制较少的假设。我们用两个参数来描述聚类的形状:均值和标准差。以二维分布为例,标准差的存在允许聚类的形状可以是任何种类的椭圆形。

如果数据点符合某个高斯分布,那它就会被归类为那个聚类。

  • 过程:

1.首先,我们确定聚类的数量(如K-Means),并随机初始化每个聚类的高斯分布参数。

2.根据每个聚类的高斯分布,计算数据点属于特定聚类的概率。如果数据点越接近高斯质心,那它属于该聚类的概率就越高。

3.在这些概率的基础上,我们为高斯分布计算一组新的参数,使聚类内数据点的概率最大化。我们用数据点位置的加权和来计算这些新参数,其中权重就是数据点属于聚类的概率。

GMM有两个关键优势。首先它比K-Means更灵活,由于标准差的引入,最后聚类的形状不再局限于圆形,它还可以是大小形状不一的椭圆形——K均值实际上是GMM的一个特例,其中每个聚类的协方差在所有维上都接近0。其次,权重的引入为同一点属于多个聚类找到了解决方案。如果一个数据点位于两个聚类的重叠区域,那我们就可以简单为它定义一个聚类,或者计算它属于X聚类的百分比是多少,属于Y聚类的百分比是多少。简而言之,GMM支持混合“成员”。

过程

相关文章

  • 图像分割-无监督聚类分割

    https://blog.csdn.net/ycy0706/article/details/90439245 (1...

  • 医疗图像分割--聚类算法

    基于聚类的分割方法属于无监督的人工智能分割方法, 聚类分析较传统医学图像分割方法, 具有无监督性、高效性和自适应性...

  • 常见的分割理论

    基于SVM的分割,基于图论的分割,集合轮廓分割以及特征聚类分割

  • python与机器学习聚类:31省市居民家庭消费水平和学生月上网

    31省市居民家庭消费水平 聚成四类 聚成三类 学生月上网时间分布 kmeans实现图像分割

  • 图像分割

    图像分割 什么是图像分割? 图像分割就是预测图像中每一个像素所属的类别或者物体。图像分割有两个子问题,一个是只预测...

  • 聚类算法k-means

    聚类算法 聚类算法 是 无监督学习 聚类算法有特征,无标签,是无监督分类。 sklearn 聚类模块 cluste...

  • 基于聚类的“图像分割”实例编写

    图像分割: 利用图像的灰度,颜色,纹理,形状的等特征,把图像分成若干个互不重叠的区域,并使这些特征在同一区域内呈现...

  • 图像分割方法

    主流医学图像分割方法:[1] 基于图论的分割方法中心思想:将图像映射为一张无向图(带权的无向图),图像中的像素点相...

  • K-mean(2018-05-05)

    非监督学习 定义:训练数据无类。 包括:类簇 (训练数据能分成某些组,例如:市场分割,社交网络分析,基因检测); ...

  • 图像分割算法总结

    图像处理的很多任务都离不开图像分割。因为图像分割在cv中实在太重要(有用)了,就先把图像分割的常用算法做个总...

网友评论

      本文标题:图像分割-无监督聚类分割

      本文链接:https://www.haomeiwen.com/subject/fvdcahtx.html