过去几个月我一直在研究自组织地图(SOM)。但是我仍然对理解尺寸减少部分有一些困惑。你能建议任何简单的方法来理解SOM在任何现实世界中的真实工作数据集(如来自UCI存储库的数据集)。
答案 0 :(得分:2)
好的,首先请参考一些以前的相关问题,这些问题可以让您更好地理解SOM的降维和可视化属性。 Plotting the Kohonen map - Understanding the visualization, Interpreting a Self Organizing Map
第二个测试SOM属性的简单案例:
我将使用MATLAB编程语言来举例说明如何做以及从学习过程中提取的内容。
CODE:
% create a dataset with 3 clusters and 3 features
x=[ones(1000,1)*0.5,zeros(1000,1),zeros(1000,1)];
x=[x;[zeros(1000,1),ones(1000,1)*0.5,zeros(1000,1)]];
x=[x;[zeros(1000,1),zeros(1000,1),ones(1000,1)*0.5]];
x=x+rand(3000,3)*0.2;
x=x';
%define a 20x20 SOM through MATLAB "selforgmap" function, and train using the "train"
net = selforgmap([20 20]);
[net,tr] = train(net,x);
%display the number of hits, neighbour distance, and plane maps figure,plotsomplanes(net)
figure,plotsomnd(net)
图中,plotsomhits(净,x)的
输出:
因此,在第一个图中,您已经可以看到将3000x3数据集压缩为20x20x3地图(减少了近10倍)。您还可以看到您的组件可以轻松地压缩为3个单独的类。
当您查看邻居距离并点击地图时(图2和图3),这一点就更加明显了:
在图2中,节点与其邻居(通过节点权重之间的欧几里德距离及其邻居权重计算得越多)越不同,这两个节点之间的颜色越深。因此,我们可以看到3个高度相关的节点区域。我们可以使用这个图像和阈值来获得3个不同的区域(3个簇),然后获得平均权重。
在图3中,显示了来自数据集的每个节点中标签的样本数量。可以看出,之前的3个区域呈现出稍微均匀的样本分布(考虑到3个簇具有相同数量的样本,这是有意义的),并且界面节点(划分3个区域的节点)不映射任何样本。我们再次使用此图像并对其进行阈值处理,例如获得3个不同的区域(3个聚类),然后获得平均权重。
因此,与此数据集和一些简单的后处理相结合,您可以将数据集从3000X3减少到3x3矩阵