R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析

简介: R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析

原文链接:http://tecdat.cn/?p=19077


导入


自组织映射 (SOM)是一种工具,通过生成二维表示来可视化高维数据中的模式,在高维结构中显示有意义的模式。通过以下方式使用给定的数据(或数据样本)对SOM进行“训练”:


  • 定义了网格的大小。

  • 网格中的每个单元都在数据空间中分配了一个初始化向量。

  • 例如,如果要创建22维空间的地图,则会为每个网格单元分配一个22维向量。

  • 数据被反复输入到模型中进行训练。每次输入训练向量时,都会执行以下过程:

  • 识别具有最接近训练向量的代表向量的网格单元。

  • 随着训练向量的多次输入,收敛的参数使调整变得越来越小,从而使地图稳定。

该算法赋予SOM的关键特征:数据空间中接近的点在SOM中更接近。因此,SOM可能是表示数据中的空间聚类的好工具。


Kohonen映射类型


下面的示例将使用2015/16 NBA赛季的球员统计数据。我们将查看每36分钟更新一次的球员统计信息。这些数据可从 http://www.basketball-reference.com/获得。我们已经清理了数据。

NBA <- read.csv("NBA_cleaned.csv", 
    sep = ",", header = T, check.names = FALSE)

基本SOM


在创建SOM之前,我们需要选择要在其中搜索模式的变量。

colnames(NBA)
##  \[1\] ""       "Player" "Pos"    "Age"    "Tm"     "G"      "GS"    
##  \[8\] "MP"     "FG"     "FGA"    "FG%"    "3P"     "3PA"    "3P%"   
## \[15\] "2P"     "2PA"    "2P%"    "FT"     "FTA"    "FT%"    "ORB"   
## \[22\] "DRB"    "TRB"    "AST"    "STL"    "BLK"    "TOV"    "PF"    
## \[29\] "PTS"

我们从简单示例开始:

som(scale(NBA\[res1\], grid = somgrid(6, 4, "rectangular")

请注意,我们标准化了训练数据,并定义了网格大小。标准SOM图可为网格单元的代表矢量创建这些饼图表示,其中半径对应于特定维度上的大小。


点击标题查阅往期内容


R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集


01

02

03

04

热图SOM


我们可以通过将每个球员分配到具有最接近该球员状态的代表向量来识别地图。“计数”类型的SOM根据球员数量创建了一个热图。

# 色带
colors <- function(n, alpha = 1) {
    rev(heat.colors(n, alpha))
}

绘图点


您可以使用“映射”类型的SOM将球员绘制为网格上的点。我们与常规SOM进行可视化比较。

每个地图单元格的代表性矢量显示在右侧。左侧是根据其状态与这些代表向量的接近程度绘制的球员图表。


环形SOM


下一个示例是一种更改几何形状的方法。在为上述示例训练SOM时,我们使用了矩形网格。由于边缘(尤其是拐角处)的单元比内部单元具有更少的邻居,因此倾向于将更多的极端值推到边缘。

par(mfrow = c(1, 2))plot(NBA.SOM2, type = "mapping", pchs = 20, main = "Mapping Type SOM")plot(NBA.SOM2, main = "Default SOM Plot")

映射距离


当用绘制时 type = "dist.neighbours",单元格将根据与它们最近的邻居的距离着色,这使我们可以直观地看到高维空间中不同要素之间的距离。

plot(SOM2, type = "dist.neighbours")

有监督SOM


有监督的SOM使我们可以进行分类。到目前为止,我们仅将三维数据映射到二维。当我们处理更高维度的数据时,SOM的实用性变得更加明显,因此让我们使用扩展的球员统计信息列表来做这个受监督的示例:

我们创建有监督的SOM,并根据球员在球场上的位置对其进行分类。我们将数据随机分为训练集和测试集。

indices <- sample(nrow(NBA), 200)
training <- scale(NBA\[indices, NBA.measures2\])
testing <- scale(NBA\[-indices, NBA.measures2\], center = attr(training, 
    "scaled:center"), scale = attr(training, "scaled:scale"))

请注意,当我们重新标准化测试数据时,我们需要根据训练数据的方式对其进行标准化。

您可以在训练算法中对训练变量(NBA.training)与预测变量(NBA$Pos)进行加权。现在让我们检查预测的准确性:

##                 
##                  Center Point Guard Power Forward Shooting Guard
##   Center             16           0            26              1##   Point Guard         0          49             0             12##   Power Forward      10           1            29              5##   Shooting Guard      0           8             4             38##   Small Forward       0           0            15              9##                 
##                  Small Forward
##   Center                     4##   Point Guard               11##   Power Forward              8##   Shooting Guard            19##   Small Forward             38

可视化预测:

这次,我们使用xweight 参数为权重衡量球员统计数据 。

使用type = "codes" 我们进行绘制,可以 得到标准的可视化球员状态(Codes X)和球员位置预测(Codes Y)。

add.cluster.boundaries(NBA.SOM4, NBA.SOM4.hc)

该视图使我们可以将球员统计数据与位置预测进行比较。


可视化预测:自定义SOM


在最后一个示例中,我们将对该type = mapping 图进行一些自定义, 以便我们可以同时表示实际球员位置和SOM的预测位置。我们将从可视化开始。

背景颜色绘制的球员点的背景代表其真实位置。

bg.pallet <- c("red", "blue", "yellow", "purple", "green")
# 为所有单元格制作仅背景颜色的矢量
base.color.vector <- bg.pallet\[match(position.predictions, levels(NBA$Pos))\]
# 设置alpha以最大的预测置信度标准化max.conf <- apply(NBA.SOM4$codes$Y, 1, max)
相关文章
|
1月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
21天前
|
Linux 数据安全/隐私保护 Windows
linux 搭建cloudreve win映射网络驱动器WebDav
linux 搭建cloudreve win映射网络驱动器WebDav
26 1
|
1月前
|
机器学习/深度学习 自然语言处理 网络安全
【pkuseg】由于网络策略组织下载请求,因此直接在github中下载细分领域模型medicine
【pkuseg】由于网络策略组织下载请求,因此直接在github中下载细分领域模型medicine
29 1
|
1月前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
|
1月前
|
机器学习/深度学习 数据可视化 算法
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
|
1月前
|
机器学习/深度学习 数据可视化 算法
R语言聚类分析、因子分析、主成分分析PCA农村农业相关经济指标数据可视化|数据分享
R语言聚类分析、因子分析、主成分分析PCA农村农业相关经济指标数据可视化|数据分享
|
1月前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
1月前
|
机器学习/深度学习 数据可视化 算法
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例1
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言神经网络模型金融应用预测上证指数时间序列可视化
R语言神经网络模型金融应用预测上证指数时间序列可视化
|
1月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为