首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用自组织映射神经网络(SOM)进行客户细分

自组织_映射神经网络(SOM)是一种无监督的数据可视化技术,可用于可视化低维(通常为2维)表示形式的高维数据集。在本文中,我们研究了如何使用R创建用于客户细分的SOM。

相关视频

SOM由1982年在芬兰的Teuvo Kohonen首次描述,而Kohonen在该领域的工作使他成为世界上被引用最多的芬兰科学家。通常,SOM的可视化是六边形节点的彩色2D图。

SOM

SOM可视化由多个“节点”组成。每个节点向量具有:

在SOM网格上的位置

与输入空间维度相同的权重向量。(例如,如果您的输入数据代表人,则可能具有变量“年龄”,“性别”,“身高”和“体重”,网格上的每个节点也将具有这些变量的值)

输入数据中的关联样本。输入空间中的每个样本都“映射”或“链接”到网格上的节点。一个节点可以代表多个输入样本。

SOM的关键特征是原始输入数据的拓扑特征保留在图上。这意味着将相似的输入样本(其中相似性是根据输入变量(年龄,性别,身高,体重)定义的)一起放置在SOM网格上。例如,所有高度大约为1.6m的55岁女性将被映射到网格同一区域中的节点。考虑到所有变量,身材矮小的人将被映射到其他地方。在身材上,高个的男性比小个的胖男性更接近高个头的女性,因为他们“相似”得多。

SOM热图

典型的SOM可视化是“热图”。热图显示了变量在SOM中的分布。理想情况下,相似年龄的人应该聚集在同一地区。

下图使用两个热图说明平均教育水平和失业率之间的关系。

SOM算法

从样本数据集生成SOM的算法可总结如下:

选择地图的大小和类型。形状可以是六边形或正方形,具体取决于所需节点的形状。通常,最好使用六边形网格,因为每个节点都具有6个近邻 。

随机初始化所有节点权重向量。

从训练数据中选择一个随机数据点,并将其呈现给SOM。

在地图上找到“最佳匹配单位”(BMU)–最相似的节点。使用欧几里德距离公式计算相似度。

确定BMU“邻居”内的节点。

–邻域的大小随每次迭代而减小。

所选数据点调整BMU邻域中节点的权重。

–学习率随着每次迭代而降低。

–调整幅度与节点与BMU的接近程度成正比。

重复步骤2-5,进行N次迭代/收敛。

R中的SOM

训练

R可以创建SOM和可视化。

# 在R中创建自组织映射

# 创建训练数据集(行是样本,列是变量

# 在这里,我选择“数据”中可用的变量子集

data_train 

#将带有训练数据的数据框更改为矩阵

#同时对所有变量进行标准化

#SOM训练过程。

data\_train\_matrix 

#创建SOM网格

#在训练SOM之前先训练网格

grid(xdim = 20, ydim=20, topo="hexagonal")

#最后,训练SOM,迭代次数选项,

#学习率

model 可视化

可视化可以检察生成SOM的质量,并探索数据集中变量之间的关系。

训练过程:

随着SOM训练迭代的进行,从每个节点的权重到该节点表示的样本的距离将减小。理想情况下,该距离应达到最小。此图选项显示了随着时间的进度。如果曲线不断减小,则需要更多的迭代。

#SOM的训练进度

plot(model, type="changes")

节点计数

我们可以可视化映射到地图上每个节点的样本数。此度量可以用作图质量的度量-理想情况下,样本分布相对均匀。选择图大小时,每个节点至少要有5-10个样本。

#节点数

plot(model, type="count")

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20220929A04Q3E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券