如此牛逼的聚类算法,却鲜为人知……
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。
总结
详细介绍了SOM的思想和思想来源;
详细介绍了SOM算法流程;
详细介绍了SOM在聚类,特征提取,数据压缩方面的作用。
参考
SOM-wiki
注:本文仅代表作者个人观点。如有不同看法,欢迎留言反馈/讨论。
—End—
扫码关注汤汤,第一时间接收
最新鲜的实用干货和赛事动态~
往期回顾
分享、在看与点赞
一起学习变niubility~