赞
踩
自组织地图(SOM)是一种强大的无监督数据可视化工具,它通过降维技术,在较低(通常二维)的空间中有效地展示高维数据集的内在结构和特征。在本文中,我们将详细探讨如何帮助客户利用R语言实现SOM,以可视化银行客户的信用人口属性数据(点击文末“阅读原文”获取完整代码数据)。
相关视频
首先,我们对数据集进行了初步的探索,通过summary(data)
命令获取了数据的统计概览,有助于我们理解数据的分布和特性。然而,由于直接展示原始数据表格较为冗长,此处省略具体统计信息,并通过图片代替,以直观地展示数据的分布情况。
summary(data)
接下来,我们利用SOM算法对数据进行训练。通过设置im = 10, ydim=10, topo="hexagonal"
等参数,我们构建了一个具有10x10网格的六边形拓扑结构的SOM模型。训练过程中,SOM算法通过迭代优化,逐渐将数据点映射到二维网格上的不同位置,形成聚类结构。
im = 10, ydim=10, topo="hexagonal")
为了评估训练效果,我们查看了聚类过程中的距离变化。通过计算不同迭代次数下聚类中心的距离,我们可以观察到随着训练的进行,聚类中心逐渐趋于稳定,表明SOM模型已经成功捕捉到了数据的内在结构。
随后,我们对聚类结果进行了可视化。通过绘制不同聚类在二维网格上的分布图,我们可以清晰地看到不同类别的客户在信用人口属性上的差异和相似性。
点击标题查阅往期内容
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化
左右滑动查看更多
01
02
03
04
此外,我们还计算了针对不同聚类大小的k均值WCSS(Within-Cluster Sum of Squares)度量。WCSS度量用于评估聚类效果的好坏,通过比较不同聚类数量下的WCSS值,我们可以确定一个理想的聚类数量。我们通过绘制WCSS与聚类数量的关系图,发现当聚类数量为6时,WCSS值达到一个相对较小的稳定点,因此我们将数据划分为6个类别进行后续分析。
plot(1:15, wss, type="b", xlab="N
从结果中我们可以看到将数据划分成不同类别后得到的组间距离。然后我们将数据划分成6个类别,然后查看数据的聚类情况。
最后,我们根据确定的聚类数量对数据进行了重新划分,并在二维网格上展示了聚类结果。通过为每个群集分配不同的颜色,我们得到了直观的聚类地图(image.png图片链接)。这些地图不仅展示了不同类别客户在信用人口属性上的分布情况,还为我们提供了深入理解客户群体的有力工具。
主成分分析是一种常用于数据降维和特征提取的统计方法。通过PCA,我们可以将原始的高维数据转换为一组低维的正交变量(即主成分),这些变量能够最大限度地保留原始数据中的变异信息。
- ata , center = TRUE, scale. = TRUE)
-
- PLPW.pca$rotation[,1:4]
执行完上述代码后,您可以得到每个变量在前四个主成分上的载荷值,从而了解哪些变量对主成分的影响最大。
从结果中我们可以看到方差的变化情况。从图中我们可以看到,从第四个主成分开始方差解释率没有明显的变化,因此我们可以看前三个主成分的载核情况,从而发现有趣的变量
目前三个主成分的载荷情况中,我们可以看到下面这些变量在前三个主成分中均有较大的载荷,因此可以认为这些变量是比较重要的。
为了部署一个用于预测尚未评估客户信用价值的预测模型,我们采用了一种基于循环迭代的策略来优化模型参数。该策略的核心思想是通过不断调整参数,建模数据,并记录每次参数变化对应的准确度,从而绘制出准确度曲线,以便筛选出最优的准确度所对应的参数。
首先,我们对训练集进行归一化处理,以确保不同特征之间的尺度一致,从而提高模型的训练效率。归一化后的训练集被用于构建多层感知机模型。
trainset <- normT
接下来,我们训练多层感知机模型。在这个例子中,我们设置了隐藏层大小为5,学习率为0.01,最大迭代次数为250。同时,为了监控模型的性能,我们还提供了测试集作为输入。
utsTrain, trainset$targetsTrain, size=5, learnFuncParams=c(0.01), maxit=250, inputsTest=trains
训练完成后,我们进行预测,并计算预测结果。
为了评估模型的性能,我们计算了训练集和测试集上的混淆矩阵。混淆矩阵提供了模型在各个类别上的预测准确率、召回率等关键指标。
混淆矩阵的可视化展示了模型在训练集和测试集上的预测性能。从图中可以直观地看出模型在各个类别上的预测准确性。
confusionMatrix(tra.6))
我们采用迭代方法寻找最优参数,通过对不同参数组合进行建模,得到了以下的准确度曲线图:
从准确度曲线图中可以清晰地观察到,当参数设置为5时,模型的准确度达到了最高值75%。这表明在该参数设置下,模型能够更好地学习和预测数据中的模式。
基于这一发现,我们设定了最优参数,并重新构建了模型。通过对比备用参数的结果,我们发现模型的准确度有了显著的提升。在训练集上,准确度从26%提高到了71.66%,而在测试集上,准确度也从27%提升到了54.74%。这一显著的改进证明了使用最优参数对于提高模型性能的重要性。
我们还通过计算混淆矩阵的对角线元素之和与矩阵所有元素之和的比值来进一步验证模型的准确度。在训练集上,该比值为0.7166157,而在测试集上为0.5474006,这进一步支持了我们的结论,即最优参数使得模型的准确度得到了大幅度的提高。
> sum(diag( tab1))/sum(tab1)
此外,我们还绘制了ROC曲线来评估模型的分类性能。ROC曲线上的每个点对应一个阈值,反映了在不同阈值下模型的真阳性率(TPR)和假阳性率(FPR)。
plotROC(predictTestSet[,2], trainset$targetsTest[,2])
从ROC曲线图中可以看出,模型的预测效果位于左上方,这意味着模型在保持较低的假阳性率的同时,能够捕获到大部分的真实阳性样本。这进一步证明了模型具有较好的分类性能。
综上所述,通过迭代寻找最优参数并重新构建模型,我们成功地提高了模型的准确度,并通过ROC曲线验证了模型的分类性能。这些结果为我们深入理解客户群体和优化信用评估流程提供了有力的支持。
点击文末“阅读原文”
获取全文完整代码数据资料。
本文选自《R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例》。
点击标题查阅往期内容
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC
R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。