Kohonen SOM Maps:将输入标准化为未知范围

时间:2010-04-16 08:27:27

标签: machine-learning som self-organizing-maps

根据“Jeff Heaton使用Java神经网络简介”,Kohonen神经网络的输入必须是介于-1和1之间的值。

可以预先确定范围已知的输入: 例如RGB(125,125,125),其中范围被称为0到255之间的值:
1.除以255:(125/255)= 0.5>> (0.5,0.5,0.5)
2.乘以2并减1:((0.5 * 2)-1)= 0>> (0,0,0)

问题是我们如何将范围未知的输入标准化,例如我们的身高或体重。

另外,其他一些论文提到输入必须归一化为0到1之间的值。这是正确的方法,“-1和1”或“0和1”?

2 个答案:

答案 0 :(得分:6)

您始终可以使用压缩功能将无限间隔映射到有限间隔。例如。你可以使用tanh.

您可能希望将tanh(x * l)与手动选择的l一起使用,以免在同一区域中放置太多对象。因此,如果您猜测数据的最大值为+/- 500,则可能需要使用tanh(x / 1000)作为映射,其中x是对象的值。甚至可能有意义地减去猜测x的均值,得到tanh((x - mean)/ max)。

答案 1 :(得分:4)

根据我对Kohonen SOM的了解,他们的具体规范化并不重要。

嗯,它可能通过特定的选择来学习算法的参数值,但最重要的是输入点的不同尺寸必须具有相同的大小。

想象一下,每个数据点不是具有三个RGB分量的像素,而是具有一个国家的统计数据的矢量,例如,地区,人口,.... 对于学习部分的收敛来说,重要的是所有这些数字具有相同的大小。

因此,如果您不知道确切的范围并不重要,您只需要知道数据的特征幅度。

对于重量和尺寸,我确信如果你将它们分别分别减去200千克和3米,你的所有数据点都会落在0 1 1]的间隔内。你甚至可以使用50公斤和1米重要的是所有坐标都是1阶。

最后,您可以考虑在数据上运行一些线性分析工具(如POD),这些工具可以自动为您提供规范化数据的方法,以及用于初始化地图的子空间。

希望这有帮助。