简介
SOM算法,是硕士课程《模式识别》中,”聚类“章节中,一个知识点。
鉴于我们的教材写的稀烂,中文博客的内容基本上就是抄来抄去,难得有个原创的,专业术语乱飞,不是人类的语言,根本看不懂。
因此,在之后的内容,我会用非常不严谨的方式,去描述一下这个算法,到底在作什么妖。
另外,这些链接可能也对你理解有帮助:
很灵性人大的示例:https://blog.csdn.net/wangxin110000/article/details/22150557
公式写的很简洁,并且有代码可以参考:https://zhen8838.github.io/2018/11/07/som/
解释
SOM在搞什么?
自组织映射算法,这个译名看起来高大上,白话的意思是:我们自己动-找对应关系-算法。
类似:一个老师分出了四波学生和四个学生代表,让他们自己想主意(自组织),最终能让一个代表管一波学生(对应关系)。
怎么搞?
输入:n个d维的向量。
n代表数量,比如学生数量。
d维代表特征,指的是单一学生的性质,性别,身高,体重之类的。
输出:m个圈圈(神经),或者排成一个阵,或者是一列。
我们一般搜索到的神经元结构图,下层的那些小圆点,都代表一个数据的不同特征。
上层的神经元圈圈,是输出。
在这个算法中,重要的是中间的连线!
这个是常见的图1,输出是一个阵
这是常见的图2,输出是一个一维串
一次输入d维,每一个输出点,都藏着独有的d个权重,只要 输入 和 权重 结合,那么就能得到输出点。
这个算法核心是,我拿来一个输入(d个特征),去试着匹配每个输出的权重(d个权重/输出),用欧几里得距离。如果逮着了个最近的权重,那么我去更新这个权重,让它朝着此刻的输入点方向靠近。
和k聚类不同的是,一个靠近权重,一个靠近输出点。
SOM就好像是,每个人轮流去拿一把武器,如果A觉得武器1最趁手,那么武器1的形状就会向着A的手性改变,而B觉得武器1也挺好,那么武器1也会朝着B的手型改,但是C觉得武器1的手感就是shit,所以武器1不会去匹配C的手型。到最后,武器1就能够大体概括A和B这两个人的手型,他俩人就属于同一个类型了。