转自:https://www.cnblogs.com/sylvanas2012/p/5117056.html

自组织映射神经网络, 即Self Organizing Maps (SOM), 可以对数据进行无监督学习聚类。它的思想很简单,本质上是一种只有输入层--隐藏层的神经网络。隐藏层中的一个节点代表一个需要聚成的类。训练时采用“竞争学习”的方式,每个输入的样例在隐藏层中找到一个和它最匹配的节点,称为它的激活节点,也叫“winning neuron”。 紧接着用随机梯度下降法更新激活节点的参数。同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。

所以,SOM的一个特点是,隐藏层的节点是有拓扑关系的。这个拓扑关系需要我们确定,如果想要一维的模型,那么隐藏节点依次连成一条线;如果想要二维的拓扑关系,那么就行成一个平面,如下图所示(也叫Kohonen Network):

既然隐藏层是有拓扑关系的,所以我们也可以说,SOM可以把任意维度的输入离散化到一维或者二维(更高维度的不常见)的离散空间上。 Computation layer里面的节点与Input layer的节点是全连接的。

拓扑关系确定后,开始计算过程,大体分成几个部分:

1) 初始化:每个节点随机初始化自己的参数。每个节点的参数个数与Input的维度相同。

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

3) 找到激活节点I(x)之后,我们也希望更新和它临近的节点。令S_ij表示节点i和j之间的距离,对于I(x)临近的节点,分配给它们一个更新权重:

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

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

迭代,直到收敛。

与K-Means的比较

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

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

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

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

参考文献:http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf

转载于:https://www.cnblogs.com/bonelee/p/8191539.html

Self Organizing Maps (SOM): 一种基于神经网络的聚类算法相关推荐

  1. 一种基于邻域的聚类算法

    基本概念: 给定数据集D = {d1,d2 ,.. ,dn},p和q是D中的两个任意对象.我们使用欧氏距离来评估p和q之间的距离,表示为 dist(p,q). 我们将首先给出k-最近邻集合和反向的定义 ...

  2. 一种基于神经网络的由PPG信号估计连续血压算法【翻译】

    一种基于神经网络的由PPG信号估计连续血压算法 摘要 由光体积描记(PPG)信号得到的血压和脉搏持续时间之间存在关系,但并不总是线性的.为了从PPG信号中估计血压,本文采用了人工神经网络(ann).训 ...

  3. 一种基于暗通道先验算法的图像去雾技术研究

    目录 一.绪论 二.雾霭图像模型与暗通道先验 三.透射率估计 四.大气光值估计 五.实例分析 参考文献 一.绪论 图像去雾技术,是由何凯明.孙健等人在CVPR2009提出来的,并获得当年CVPR最佳论 ...

  4. Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。

    Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法.Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致.在工程实践意义上来说, ...

  5. DBSCAN聚类︱scikit-learn中一种基于密度的聚类方式

    文章目录 @[toc] 一.DBSCAN聚类概述 1.伪代码 2.优点: 3.缺点: 4.与其他聚类算法比较 二.sklearn中的DBSCAN聚类算法 1.主要函数介绍: 最重要的两个参数: 其他主 ...

  6. DL之BP:FFNN(前馈神经网络)结构与BP(一种训练神经网络的方法)算法的简介、训练神经网络的五大方法(RLS/GA/SA/PSO/BP)、FFNNLM对比BP之详细攻略

    DL之BP:FFNN(前馈神经网络)结构与BP(一种训练神经网络的方法)算法的简介.训练神经网络的五大方法(RLS/GA/SA/PSO/BP).FFNNLM对比BP之详细攻略 目录 FFNN(前馈神经 ...

  7. 基于网格的聚类算法STING

    基于网格的聚类算法STING STING方法简介 ① 全称 : STING , Statistical Information Grid , 统计信息网格 , 是一种 多分辨率聚类技术 ; ② 划分方 ...

  8. 《MATLAB 神经网络43个案例分析》:第34章 广义神经网络的聚类算法——网络入侵聚类

    <MATLAB 神经网络43个案例分析>:第34章 广义神经网络的聚类算法--网络入侵聚类 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB 神经网络 ...

  9. 机器学习-无监督学习-聚类:聚类方法(二)--- 基于密度的聚类算法【DBSCAN文本聚类算法,密度最大值文本聚类算法】

    密度聚类方法的指导思想是,只要样本点的密度大于某阀值,则将该样本添加到最近的簇中. 基于密度的聚类算法假设聚类结构能够通过样本分布的紧密程度确定,以数据集在空间分布上的稠密程度为依据进行聚类,即只要一 ...

最新文章

  1. 在注意力中重新思考Softmax:分解非线性,这个线性transformer变体实现多项SOTA
  2. android设置tls版本,Android O移除HttpsURLConnection中不安全的TLS版本回退
  3. python入门之函数调用内置函数_第九篇 python基础之函数,递归,内置函数
  4. Mozilla Labs Apps Developer Preview发布了
  5. 绑定服务调用本地服务中的方法
  6. 可用于神经网络的一些matlab函数
  7. SQLServer基础之数据页类型:GAM,SGAM,PFS
  8. linux编辑音频文件,Linux 上的最佳音频编辑工具推荐
  9. timthumb+php,timthumb.php生成缩略图参数详解
  10. Reason of Random Initialization - Neural Networks
  11. Fluent.TGrid.v4.0.16
  12. eclipse运行不了jsp代码,错误代码:couldn't create the java virtual machine. a fatal exception has occurred.
  13. Python 使jupyter notebook 从指定浏览器启动 以及编程中途更换浏览器
  14. 企业级负载均衡LVS集群——DR模式下的(加权)轮询调度器、DR模式下的健康检测(ldirectord)
  15. 安装oh my zsh后出现的目录权限问题
  16. ACM训练方法_该我自己检讨了_By LCY
  17. 中国计算机应用大会2021,2021中国计算机教育大会
  18. Neo4J 与 Cypher 查询语言基础
  19. emWin—显示汉字
  20. LeetCode题解(0930):和相同的二元子数组(Python)

热门文章

  1. float类型为什么不精确等于0_程序中算钱不能用浮点类型是个什么坑?
  2. 如何创建第一个java程序_创建第一个java程序
  3. java 父类转子类_Java多态,对象转型,和简单工厂模式。希望对您有帮助!
  4. 【一篇文章搞懂】dockerfile构建镜像的命令
  5. 零基础基于U-Net网络实战眼底图像血管提取
  6. 机器学习(MACHINE LEARNING)MATLAB模拟退火算法【SA】
  7. matlab水印剪切攻击程序,可以运行的水印matlab程序(嵌入,提取,攻击测试等).doc
  8. java agv,Java 访问控制关键字
  9. zend framework mysql_Zend Framework连接Mysql数据库实例分析
  10. java sql编辑器_Java工程师完整学习路线