1

我有这个数据集,我认为它很适合制作 SOM。因此,我将其转换为文本:

10
12  1   0   0    
13  3   0   0    
14  21  0   0    
19  1983    15  0    
24  5329    48  0    
29  4543    50  0    
34  3164    32  0    
39  1668    22  1    
44  459 4   0    
49  17  0   0

我使用的是 Octave,所以我使用以下命令转换了数据:

dataIn = fopen('data.txt','r');
n = fscanf(dataIn,'%d',1);
D = fscanf(dataIn,'%f'); %D is a 1 x n column matrix
D = D'; %Transpose the data D is now an n x 1 matrix
D = reshape(D, 4, []); % give D the shape of a 4 x n/4 matrix
D = D(2:4, :); % the dimensions to be used for the SOM will come from the bottom three rows

现在,我正在应用 SOM 脚本来使用 D 生成地图。脚本在这里 ,它使用 findBMU 定义为:

%finds best matching unit in SOM O
function [r c ] = findBMU( iv,O ) 
dist = zeros(size(O)); for i=1:3
dist(:,:,i) = O(:,:,i)-iv(i);   
iv(i); 
end 
dist = sum(dist.^2,3); 
[v r] = min(min(dist,[],2)); 
[v c] = min(min(dist,[],1));

最后,它以如下所示的随机地图开始: 随机颜色图

它变成: 索姆

问题是,我不知道我的 SOM 在说什么。我该如何阅读?

4

1 回答 1

0

首先,您应该知道 Octave 最多只能提供 SOM 方法的近似值。SOM 的主要方法优势是(所有)隐含参数的潜在透明访问,而这些参数不能再在 Octave 中访问。

其次,考虑到您的数据,首先通过汇总信息来严重破坏信息然后将其提供给 SOM 并没有多大意义。基本上,您在上面显示的表格中有四个变量:年龄,总 N,单 N,双 N。您销毁的是有关该地区的信息。

这样,您将三个分布放入 SOM。您唯一可以期待的是集群。然而,SOM 并不是为构建集群而构建的。相反,SOM 用于诊断和预测建模,以便找到最准确的模型和最相关的变量。注意术语“最佳匹配单元”!

但是,在您的示例中,您只能在 SOM 中找到一个分布。基本上,没有解释,因为既没有变量也没有预测/诊断目的。

例如,您可以建立一个模型,确定分布的相似性。然而,为此,您应该使用拟合优度检验(非参数,Kolmogorof-Smirnov),而不是 SOM。

于 2014-02-06T17:16:37.390 回答