自组织地图(SOM)是一种强大的无监督数据可视化工具,它通过降维技术,在较低(通常二维)的空间中有效地展示高维数据集的内在结构和特征。
在本文中,我们将详细探讨如何帮助客户利用R语言实现SOM,以可视化银行客户的信用人口属性数据。
在开展数据分析工作的初始阶段,我们首要任务便是对所获取的数据集进行全面且细致的初步探索。该数据集来源广泛且内容丰富,其包含的信息对于后续深入分析以及挖掘有价值的洞察起着关键作用。
为了能够快速且有效地把握数据的整体状况,我们巧妙运用了summary(data)
命令。这一命令犹如一把神奇的钥匙,在数据分析领域有着极为重要的地位。当我们在数据分析工具(例如 R 语言环境)中输入此命令后,它便迅速对数据集中的每一个变量展开全面的分析。对于数值型变量,它能够精准地计算出诸如最小值、最大值、均值、中位数、四分位数等关键统计量。这些统计量能够清晰地反映出数据在数值范围上的跨度,以及数据的集中趋势和离散程度。对于分类变量,它则会统计出每个类别出现的频次,让我们一目了然地知晓不同类别在数据集中的占比情况。通过这些丰富且全面的统计概览信息,我们得以快速且深入地理解数据的分布特征以及其内在的特性,为后续更为复杂和深入的分析工作奠定了坚实的基础。
不过,在实际操作过程中我们也面临着一个现实问题。倘若将通过summary(data)
命令生成的原始数据表格完整且直接地展示出来,将会是一份极为冗长的内容。这不仅会占据大量的篇幅,使报告显得繁杂冗长,而且在阅读过程中会让读者陷入繁琐的数据细节之中,难以迅速捕捉到关键信息,严重影响阅读体验以及对数据整体的理解和把握。基于此,我们经过审慎的考虑,决定在此处省略具体的统计信息。为了弥补这一信息缺失,同时又能让大家直观地了解数据的分布情况,我们精心准备了一张名为image.png
的图片。
summary(data)
训练SOM
接下来,我们利用SOM算法对数据进行训练。通过设置im = 10, ydim=10, topo="hexagonal"
等参数,我们构建了一个具有10×10网格的六边形拓扑结构的SOM模型。训练过程中,SOM算法通过迭代优化,逐渐将数据点映射到二维网格上的不同位置,形成聚类结构。
im = 10, ydim=10, topo="hexagonal")
查看训练过程的聚类距离
为了评估训练效果,我们查看了聚类过程中的距离变化。通过计算不同迭代次数下聚类中心的距离,我们可以观察到随着训练的进行,聚类中心逐渐趋于稳定,表明SOM模型已经成功捕捉到了数据的内在结构。
视频
LSTM神经网络架构和原理及其在Python中的预测应用
视频
CNN(卷积神经网络)模型以及R语言实现
视频
主成分分析PCA降维方法和R语言分析葡萄酒可视化实例
对聚类结果进行可视化
随后,我们对聚类结果进行了可视化。通过绘制不同聚类在二维网格上的分布图,我们可以清晰地看到不同类别的客户在信用人口属性上的差异和相似性。
此外,我们还计算了针对不同聚类大小的k均值WCSS(Within-Cluster Sum of Squares)度量。WCSS度量用于评估聚类效果的好坏,通过比较不同聚类数量下的WCSS值,我们可以确定一个理想的聚类数量。我们通过绘制WCSS与聚类数量的关系图(image.png图片链接),发现当聚类数量为6时,WCSS值达到一个相对较小的稳定点,因此我们将数据划分为6个类别进行后续分析。
plot(1:15, wss, type="b", xlab="N
从结果中我们可以看到将数据划分成不同类别后得到的组间距离。然后我们将数据划分成6个类别,然后查看数据的聚类情况。
最后,我们根据确定的聚类数量对数据进行了重新划分,并在二维网格上展示了聚类结果。通过为每个群集分配不同的颜色,我们得到了直观的聚类地图(image.png图片链接)。这些地图不仅展示了不同类别客户在信用人口属性上的分布情况,还为我们提供了深入理解客户群体的有力工具。
主成分分析 PCA算法
主成分分析是一种常用于数据降维和特征提取的统计方法。通过PCA,我们可以将原始的高维数据转换为一组低维的正交变量(即主成分),这些变量能够最大限度地保留原始数据中的变异信息。
随时关注您喜欢的主题
ata , center = TRUE, scale. = TRUE)
PLPW.pca$rotation[,1:4]
执行完上述代码后,您可以得到每个变量在前四个主成分上的载荷值,从而了解哪些变量对主成分的影响最大。
从结果中我们可以看到方差的变化情况。从图中我们可以看到,从第四个主成分开始方差解释率没有明显的变化,因此我们可以看前三个主成分的载核情况,从而发现有趣的变量
目前三个主成分的载荷情况中,我们可以看到下面这些变量在前三个主成分中均有较大的载荷,因此可以认为这些变量是比较重要的。
多层感知机(MLP)
为了部署一个用于预测尚未评估客户信用价值的预测模型,我们采用了一种基于循环迭代的策略来优化模型参数。该策略的核心思想是通过不断调整参数,建模数据,并记录每次参数变化对应的准确度,从而绘制出准确度曲线,以便筛选出最优的准确度所对应的参数。
首先,我们对训练集进行归一化处理,以确保不同特征之间的尺度一致,从而提高模型的训练效率。归一化后的训练集被用于构建多层感知机模型。
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曲线验证了模型的分类性能。这些结果为我们深入理解客户群体和优化信用评估流程提供了有力的支持。
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!