自组织映射的 SOM 算法,真的是个挺有意思的老朋友了。用它来做聚类、文本分类、甚至是生物数据挖掘,都还挺顺手的。最妙的是,它可以把高维数据投影到二维网格上,还保留拓扑关系,像是数据的“地图”一样直观。
芬兰科学家 Kohonen 发明这玩意已经 40 多年了,虽然是无监督学习,但真不代表它“无脑”,反而在多探索式任务上管用。是在搞清楚一堆看不懂的数据之间到底啥像啥的时候,SOM 就像个可视化侦探。
SOM 的训练过程也不复杂,权重初始化、找 BMU、带着邻居节点一起慢慢收敛,最终把类似的数据贴到附近的格子里。用matlab
或者Python
(搭配MiniSom
)搞搞,也就几百行搞定。
拿来做文本分类挺香的,尤其是你手头有几千上万条用户反馈或评论时,SOM 可以帮你快速看出数据堆里都藏着哪些主题。还可以搭配MySQL数据库,做批量数据管理也不在话下。
另外,在生物信息学领域,SOM 用来基因表达、蛋白质聚类也早就是惯例了。你要是搞科研的,顺手再装个TBtools
,SOM 和图形展示都能省不少力。
作者这篇 paper 还提到一个小改进,试了用多个最佳匹配模型的线性组合,嗯,算是对原算法的小升级吧。适合多模态数据,像图像+文本这种混搭型场景。
如果你正好想找个不靠标签就能数据的工具,又不想上来就写一堆深度学习模型,那SOM真的可以一试。