什么是自组织映射算法(SOM)?
SOM 代表自组织特征映射。它是一种基于神经网络观点的聚类和数据可视化技术。不管SOM的神经网络基础如何,在基于原型的聚类修改的上下文中,它只是以最小形式呈现。
SOM算法如下:
初始化质心。
重复
选择下一个对象。
确定与该对象最近的质心。
刷新该质心以及附近的质心,即在一定的邻域内。
直到质心变化不大或超过阈值。
将每个对象分配给其最近的质心,并更新质心和聚类。
**初始化** - 此步骤(第1行)可以通过多种方式实现。一种方法是从数据的相应元素观测值范围内随机选择质心的每个元素。
虽然此方法有效,但它并非最佳方法,尤其是在实现快速收敛方面。另一种方法是从可用数据点中随机选择初始质心。这非常类似于为K均值随机选择质心。
**对象选择** - 循环中的第一步(第3行)是选择下一个对象。这很简单,但存在一些挑战。由于收敛可能需要多次迭代,每个数据对象可能会被使用多次,尤其是在对象数量较少的情况下。但如果对象数量很大,则不需要使用每个对象。还可以通过提高特定对象组在训练集中的频率来提高其影响。
**分配** - 确定最近的质心(第4行)很容易,尽管需要定义距离度量。使用欧几里得距离度量,也使用点积度量。使用点积距离时,数据向量通常预先归一化,参考向量在每一步都归一化。在这种方法中,使用点积度量与使用余弦相似度相同。
**更新** - 更新步骤(第5行)比较复杂。设m1…mk为质心。对于时间步长t,设p(t)为当前对象(点),并假设p(t)的最近质心为mj。因此,对于时间t+1,第j个质心通过以下等式更新:
$$\mathrm{mj(t + 1) = mj(t) + hj(t)(p(t) - mj(t))}$$
**终止** - 确定何时达到稳定的质心集是一个重要的问题。理想情况下,迭代应持续到出现收敛,即直到参考向量不再改变或变化很小时为止。收敛的成本取决于多种因素,包括数据和𝛼(t)。