vlambda博客
学习文章列表

如此牛逼的聚类算法,却鲜为人知……

DF数据汤·“熬汤人”

Zach,在移动机器人领域来回乱撞的小迷鹿,热爱生活,热爱学习。

这是DataFountain第10篇原创干货约稿

如果你也想在这里分享出你的干货文字

戳→

立刻加入DF学习分享小分队

一起熬碗浓浓的数据汤叭~

如此牛逼的聚类算法,却鲜为人知……



SOM(Self-Organizing Map)意为自组织映射。通过学习样本空间中的数据,生成一个低维度的离散的映射,具有相同或相似特性的样本子集将会映射到同一区域;具有不同特征的样本子集将映射到不同的区域。


它的思想来源于对大脑皮层工作机制的研究:大脑皮层对输入的响应是分区域的,针对某一输入,有些区域响应激烈,有些区域响应平淡。


SOM 就是想建立类似大脑皮层工作机制的神经网络,以很好的区分样本达到聚类的作用。


SOM 的一个典型的网络结构如下:

如此牛逼的聚类算法,却鲜为人知……

图1 SOM典型的网络结构


输入层 输入的是每一个样本的特征向量;输出层 一般是[102,152]个格点组成的二维网格;每个格点与输入层相连,连线Wij意为权重;格点和格点之间连续意为格点之间的距离。


我们的目标就是要训练这样的一个网络,最终达到的效果就是:输入不同种类的样本,输出层响应的区域不一样(红色表示响应激烈,蓝色表示响应冷淡)


下面我们详细介绍一下如何训练这个网络:

  • Step1:对所有的权重参数进行小参数初始化;
  • Step2:输入一个样本([x 1,x 2,…,x n]),依次计算每一个格点权向量([w i1,w i2,…,w in])的欧式距离,把距离最短 (可以认为最相似)的输出层格点记作BMU (Best Match Unit)
  • Step3:BMU会影响到它周围的节点,我们把BMU的影响范围确定一个半径δ,然后根据下面的公式更新BMU和影响力范围之内的邻居;


Wv(s+1)=Wv(s)+Q(u,v,s)·α(s)·(D(t)-Wv(s)


Wv(s+1)表示在第s+1步的迭代中节点Wv(s)的参数;

Wv(s)表示在第s步的迭代中节点v的参数;

Q(u,v,s)表示节点u和v在第s步迭代中的空间距离;

u表示输入向量D(t)的BMU;

α(s)表示单调递减的学习率。

  • Step4:重复Step2和Step3,直到满足迭代的次数要求。


下面的动图显示了SOM网络的训练过程,BMU和它的邻居会逐渐靠近样本。

如此牛逼的聚类算法,却鲜为人知……

下面这副图也可以说明了SOM的训练过程和效果:

如此牛逼的聚类算法,却鲜为人知……

图2 SOM训练过程


白色的点表示选取的样本;黄色区域表示白色点的BMU和它的领域;经过不断地迭代,参数更新,网格被不断地拉扯到样本空间;最后,网格基本覆盖了样本空间,每一个网格就是所覆盖区域的响应区间。


SOM的应用


SOM的最典型的应用就是聚类(映射),也有一个非常有名的例子来说明这个使用。就是把不同的动物按照属性映射到二维输出平面上,性质相似的动物在平面的位置也相近。动物的属性列表如下:

如此牛逼的聚类算法,却鲜为人知……

图3 动物属性


SOM 网络结构如下:

如此牛逼的聚类算法,却鲜为人知……

图4 动物聚类SOM网络结构


最终的分类效果:

如此牛逼的聚类算法,却鲜为人知……

图5 动物分类效果


除了用作聚类,SOM还可以用作特征提取和数据压缩。我们把最终训练得到的网格用一组特征向量表示,即可提取了一类样本的特征表示,这就是特征提取;SOM网络将高纬度的样本空间(还保持了拓扑结构不改变)投影到了低维度空间,这就是数据压缩。


有意想使用SOM网络的可以参考 miniSom。


总结


  1. 详细介绍了SOM的思想和思想来源;

  2. 详细介绍了SOM算法流程;

  3. 详细介绍了SOM在聚类,特征提取,数据压缩方面的作用。


参考


SOM-wiki



注:本文仅代表作者个人观点。如有不同看法,欢迎留言反馈/讨论。


—End—


扫码关注汤汤,第一时间接收

最新鲜的实用干货和赛事动态~

如此牛逼的聚类算法,却鲜为人知……

往期回顾

分享、在看与点赞

一起学习变niubility~