R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例

自组织地图(SOM)是一种强大的无监督数据可视化工具,它通过降维技术,在较低(通常二维)的空间中有效地展示高维数据集的内在结构和特征。

由Kaizong Ye,Coin Ge撰写

在本文中,我们将详细探讨如何帮助客户利用R语言实现SOM,以可视化银行客户的信用人口属性数据。


首先,我们对数据集进行了初步的探索,通过summary(data)命令获取了数据的统计概览,有助于我们理解数据的分布和特性。然而,由于直接展示原始数据表格较为冗长,此处省略具体统计信息,并通过image.png图片链接代替,以直观地展示数据的分布情况。


summary(data)
image.png

训练SOM

接下来,我们利用SOM算法对数据进行训练。通过设置im = 10, ydim=10, topo="hexagonal"等参数,我们构建了一个具有10×10网格的六边形拓扑结构的SOM模型。训练过程中,SOM算法通过迭代优化,逐渐将数据点映射到二维网格上的不同位置,形成聚类结构。


im = 10, ydim=10, topo="hexagonal")

查看训练过程的聚类距离

为了评估训练效果,我们查看了聚类过程中的距离变化。通过计算不同迭代次数下聚类中心的距离,我们可以观察到随着训练的进行,聚类中心逐渐趋于稳定,表明SOM模型已经成功捕捉到了数据的内在结构。


视频

LSTM神经网络架构和原理及其在Python中的预测应用

探索见解

去bilibili观看

探索更多视频


自适应网页宽度的 Youku 视频

视频

CNN(卷积神经网络)模型以及R语言实现

探索见解

去bilibili观看

探索更多视频


视频

主成分分析PCA降维方法和R语言分析葡萄酒可视化实例

探索见解

去bilibili观看

探索更多视频

image.png

对聚类结果进行可视化

随后,我们对聚类结果进行了可视化。通过绘制不同聚类在二维网格上的分布图,我们可以清晰地看到不同类别的客户在信用人口属性上的差异和相似性。

image.png
image.png
image.png
2.png
image.png
image.png

此外,我们还计算了针对不同聚类大小的k均值WCSS(Within-Cluster Sum of Squares)度量。WCSS度量用于评估聚类效果的好坏,通过比较不同聚类数量下的WCSS值,我们可以确定一个理想的聚类数量。我们通过绘制WCSS与聚类数量的关系图(image.png图片链接),发现当聚类数量为6时,WCSS值达到一个相对较小的稳定点,因此我们将数据划分为6个类别进行后续分析。


plot(1:15, wss, type="b", xlab="N
image.png

从结果中我们可以看到将数据划分成不同类别后得到的组间距离。然后我们将数据划分成6个类别,然后查看数据的聚类情况。

最后,我们根据确定的聚类数量对数据进行了重新划分,并在二维网格上展示了聚类结果。通过为每个群集分配不同的颜色,我们得到了直观的聚类地图(image.png图片链接)。这些地图不仅展示了不同类别客户在信用人口属性上的分布情况,还为我们提供了深入理解客户群体的有力工具。

image.png

QQ截图20220530175957.png

R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化

阅读文章


image.png

主成分分析 PCA算法

主成分分析是一种常用于数据降维和特征提取的统计方法。通过PCA,我们可以将原始的高维数据转换为一组低维的正交变量(即主成分),这些变量能够最大限度地保留原始数据中的变异信息。


随时关注您喜欢的主题



ata , center = TRUE, scale. = TRUE) PLPW.pca$rotation[,1:4]
image.png

执行完上述代码后,您可以得到每个变量在前四个主成分上的载荷值,从而了解哪些变量对主成分的影响最大。

image.png

从结果中我们可以看到方差的变化情况。从图中我们可以看到,从第四个主成分开始方差解释率没有明显的变化,因此我们可以看前三个主成分的载核情况,从而发现有趣的变量

目前三个主成分的载荷情况中,我们可以看到下面这些变量在前三个主成分中均有较大的载荷,因此可以认为这些变量是比较重要的。

image.png

多层感知机(MLP)

为了部署一个用于预测尚未评估客户信用价值的预测模型,我们采用了一种基于循环迭代的策略来优化模型参数。该策略的核心思想是通过不断调整参数,建模数据,并记录每次参数变化对应的准确度,从而绘制出准确度曲线,以便筛选出最优的准确度所对应的参数。

首先,我们对训练集进行归一化处理,以确保不同特征之间的尺度一致,从而提高模型的训练效率。归一化后的训练集被用于构建多层感知机模型。


trainset <- normT

接下来,我们训练多层感知机模型。在这个例子中,我们设置了隐藏层大小为5,学习率为0.01,最大迭代次数为250。同时,为了监控模型的性能,我们还提供了测试集作为输入。

utsTrain, trainset$targetsTrain, size=5, learnFuncParams=c(0.01), maxit=250, inputsTest=trains
image.png

训练完成后,我们进行预测,并计算预测结果。

为了评估模型的性能,我们计算了训练集和测试集上的混淆矩阵。混淆矩阵提供了模型在各个类别上的预测准确率、召回率等关键指标。

混淆矩阵的可视化展示了模型在训练集和测试集上的预测性能。从图中可以直观地看出模型在各个类别上的预测准确性。


confusionMatrix(tra.6))
image.png

我们采用迭代方法寻找最优参数,通过对不同参数组合进行建模,得到了以下的准确度曲线图:

image.png

从准确度曲线图中可以清晰地观察到,当参数设置为5时,模型的准确度达到了最高值75%。这表明在该参数设置下,模型能够更好地学习和预测数据中的模式。

基于这一发现,我们设定了最优参数,并重新构建了模型。通过对比备用参数的结果,我们发现模型的准确度有了显著的提升。在训练集上,准确度从26%提高到了71.66%,而在测试集上,准确度也从27%提升到了54.74%。这一显著的改进证明了使用最优参数对于提高模型性能的重要性。

我们还通过计算混淆矩阵的对角线元素之和与矩阵所有元素之和的比值来进一步验证模型的准确度。在训练集上,该比值为0.7166157,而在测试集上为0.5474006,这进一步支持了我们的结论,即最优参数使得模型的准确度得到了大幅度的提高。


 > sum(diag( tab1))/sum(tab1)
image.png
image.png

此外,我们还绘制了ROC曲线来评估模型的分类性能。ROC曲线上的每个点对应一个阈值,反映了在不同阈值下模型的真阳性率(TPR)和假阳性率(FPR)。


plotROC(predictTestSet[,2], trainset$targetsTest[,2])
image.png

从ROC曲线图中可以看出,模型的预测效果位于左上方,这意味着模型在保持较低的假阳性率的同时,能够捕获到大部分的真实阳性样本。这进一步证明了模型具有较好的分类性能。

综上所述,通过迭代寻找最优参数并重新构建模型,我们成功地提高了模型的准确度,并通过ROC曲线验证了模型的分类性能。这些结果为我们深入理解客户群体和优化信用评估流程提供了有力的支持。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498