R语言在数据挖掘课程教学中的应用案例剖析——以2021年数学建模C题为例
摘要
关键词
R语言;数据挖掘;上机实验教学;应用案例分析
正文
贵州理工学院教育教学改革研究项目
项目编号:[JGYB201904]
项目名称:基于产学研融合的R语言课程实践教学的探索与研究
高等学校大学数学教学研究与发展中心教学改革项目(CMC20160303);贵州省教育厅省级教学内容和课程体系改革研究项目(2020128,2021210);贵州省教育厅省级金课(2022JKXX0140);贵州省教育厅省级本科高校优秀教学团队(YLDX201615);贵州理工学院教育教学改革研究项目(2022JXGL02,JGYB201804);贵州理工学院混合教学模式改革项目(2018HHKC04)等资助
一、引言
根据贵州理工学院人才培养方案,应用统计学专业培养的人才既需要扎实的统计学理论功底,还要具备利用计算机解决生产、生活中实际问题的综合能力。随着企业对于人才培养的要求越来越高,高校对于专业的社会适应性培养越来越重视。从培养方案,到课程的设置,再到每门课程的内容讲解都越来越精细化。学生如何能更好的吸收知识,更好的掌握课堂及相应的课外知识,也是老师们在不断探索的重点。
案例教学法在计算机语言类的学习当中,有着非常重要的地位,同学们也非常的感兴趣,本文以《R语言与数据挖掘实验》这门课程为例,以2021年数学建模C题生产企业原材料的订购与运输的相关问题为驱动,把行业的需求背景与数据挖掘方法的背景进行融合,针对贵州理工学院应用统计学专业的学生设计一堂——R语言中聚类分析知识的实验教学课程,课程讲授课时为3课时,前提是学生已经学习过R语言编程及可视化课程。
二、课堂教学
(一)问题引入
1、问题背景介绍:参照2021年全国大学生数学建模大赛C题,生产企业与原料供应单位存在一定的供求关系,对于任何生产企业来说,原料的正常供给是自身产品的按质按量完成的基本要求,故需要对重要的原料供应商进行重点关照,现需要对原料供应商客户的价值进行重点分析和挖掘。
2、案例挖掘目标:结合企业自身需求,结合402 家供应商的供货和订货的数据情况,需要实现以下目标。
(1)借助已有的数据,对原料供应商数据进行预处理操作。
(2)对不同的供应商类别构造重要特征,筛选出不同类别原料供应商的重要性。
(3)对企业确定原材料供应商给出一定的建议。
(二)知识点和案例结合讲授
1、数据挖掘的基本流程介绍
2、数据的预处理
(1)数据的分析及理解
数据分为两部分:企业的订货量及供应商的订货量,包含了240个月的数据。特点是数据量比较大,内容和企业单位比较多,含有一些空值。为了建立对供应商的重要性分类,必须建立相关的指标。为此,在数据的基础上,理性的得出相关的指标体系,如月平均供应量(sum),订货的频率(freq),违约频数(against),匹配率(match)等。
由于原材料的种类有三类(A、B、C),基于此种情况,我们可以采用三种不同原材料在这种指标体系下的数据建模。
(2)数据预处理动手操作
实验基本操作:(1)数据读取及两个表格之间数据的相互转换。(2)求和和求平均值的操作。(3)数据频数的统计计算。(4)数据的保存。(5)数据的标准化。
3、数据建模
(1)构建供应商客户价值的关键指标
根据实际问题中,考虑影响生产最重要的因素有订货的平均数 (J),订货的频率(F),违约率(A),匹配率(M)构建。
订货的月平均数(J):240个月,每家的供货量总数除以240个月。平均数值越高,说明供应商的提供原料越多,客户价值越高。
订货的频率(F):240个月,每家供应商参与供货的次数总和。频率越高,说明供应商提供原料次数越多,交易次数越多,客户价值越高。
信用度(A):240个月,企业的订货量与供应商的供货量之间的关系,若订货量大于供货量多少,算守信用;若订货量小于供货量,算违约,不守信用。次数进行累加求和。信用度越高,说明生产保证度较高,符合企业需要,客户价值越高。
匹配率(M):240个月,计算供应商的供货总量与企业的订货总量的比值关系,数值接近100%或者大于100%,说明匹配率比较好,说明客户适合企业选择供应商。
根据以上,对关键指标数据进行标准化处理,便可以构建基于JFAM特征的原料供应客户价值模型。
(2) R语言聚类建模知识讲解及实现
2.1 K-means聚类算法讲解
K-Means聚类算法是一种基于质心的划分方法,输入聚类个数k,以及包含n个数据对象的数据库,输出满足误差平方和最小标准的k个聚类。
算法步骤如下:
Step1:从n个样本数据中随机选取k个对象作为初始的聚类中心。
Step2:分别计算每个样本到各个聚类质心的距离,将样本分配到距离最近的那个聚类中心类别中。
Step3:所有样本分配完成后,重新计算k个聚类的中心。
Step4:与前一次计算得到的k个聚类中心比较,如果聚类中心发生变化,转step2,否则转step5。
Step5:当质心不发生变化时停止并输出聚类结果。
2.2 K-means聚类算法实现
K-Means算法在R语言中实现的核心函数为kmeans,其基本语法如下:
kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy","MacQueen")
常用参数及其说明,如表所示
参数名称 | 使用说明 |
x | 接收matrix或dataframe。表示进行聚类分析的数据集。无默认。 |
centers | 接收int。表示初始类的个数或者初始类的中心。无默认。 |
iter.max | 接收int。表示最大迭代次数。默认为10。 |
nstart | 接收int。表示选择随机起始中心点的次数。默认为1。 |
algorithm | 接收特定character("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen")。默认为Hartigan-Wong。 |
2.3 K-Means模型构建完成后可以通过属性查看不同的信息,如表所示。
参数名称 | 使用说明 |
cluster | 返回int。表示每个点被分配到的簇。 |
centers | 返回num。表示聚类中心矩阵。 |
totss | 返回int。表示所生成簇的总体距离平方和。 |
withinss | 返回num。表示每个簇内的距离平方和。 |
size | 返回int。表示每个簇内的数量。 |
2.4 对四个重要特征进行聚类分群的结果如表所示。
类别 | 供货总量 | 供应频数 | 信用度 | 匹配率 |
1 | 1.932 | 2.561 | 1.429 | 0.842 |
2 | -0.179 | -0.137 | 0.747 | 0.867 |
3 | -0.221 | -0.356 | -0.717 | -0.691 |
表2.4.1 a原料聚类分群中心数据表
类别 | 供货总量 | 供应频数 | 信用度 | 匹配率 |
1 | -0.258 | -0.435 | -0.775 | -0.695 |
2 | -0.254 | 0.014 | 0.879 | 0.921 |
3 | 2.196 | 2.282 | 1.326 | 0.764 |
表2.4.2 b原料聚类分群中心数据表
类别 | 供货总量 | 供应频数 | 信用度 | 匹配率 |
1 | -0.248 | -0.482 | 0.508 | 0.799 |
2 | -0.286 | -0.386 | -0.863 | -0.94 |
3 | 1.163 | 1.837 | 1.212 | 0.871 |
表2.4.2 c原料聚类分群中心数据表
2.5对聚类分群的结果可视化表示。
雷达图是一种展示数据特征对比的可视化图像,在该题需求分析时,可以很好的展示出聚类的特征。结果展示如下图所示:
图(a)
图(b)
图(c)
4、结果分析及表示
针对雷达图(a)可知,类别1的供应商四个特征供货总量、供应频率、信用度、匹配率都比较饱满,可以把类别1客户当作是重要客户,从聚类结果来看,类别客户数为14个,可以把这14个客户当作重要客户。
针对雷达图(b)可知,类别3的供应商四个特征供货总量、供应频率、信用度、匹配率都比较饱满,可以把类别3客户当作是重要客户,从聚类结果来看,类别客户数为14个,可以把这14个客户当作重要客户。
针对雷达图(c)可知,类别3的供应商四个特征供货总量、供应频率、信用度、匹配率都比较饱满,可以把类别3客户当作是重要客户,从聚类结果来看,类别客户数为23个,可以把这23个客户当作重要客户。
最终,我们可以通过K-means聚类,得到51个重要原料供应商重要客户,及时的解决生产中的问题。
利用R语言编程得到这些客户的信息数据并合并后,就能合理的解决我们的课堂目标结果。如表4.1所示:
供应商ID | 材料分类 | 供货总量 | 供应频数 | 信用度 | 匹配率 | 聚类结果 |
S007 | A | 6948 | 240 | 0.87 | 1.03 | 1 |
S114 | A | 10931 | 231 | 0.85 | 0.75 | 1 |
S123 | A | 6449 | 240 | 0.81 | 1.06 | 1 |
S143 | A | 82787 | 240 | 0.89 | 0.88 | 1 |
S150 | A | 1806 | 240 | 0.79 | 0.33 | 1 |
S229 | A | 354887 | 240 | 0.94 | 0.99 | 1 |
S266 | A | 6519 | 240 | 0.87 | 1.16 | 1 |
S275 | A | 158553 | 240 | 0.95 | 1 | 1 |
S282 | A | 169340 | 240 | 0.99 | 1 | 1 |
S291 | A | 7984 | 222 | 0.86 | 0.59 | 1 |
S307 | A | 78196 | 172 | 0.97 | 0.77 | 1 |
S329 | A | 156518 | 240 | 0.94 | 1 | 1 |
S348 | A | 92421 | 199 | 0.91 | 0.55 | 1 |
S352 | A | 89031 | 240 | 0.91 | 1 | 1 |
S031 | B | 41207 | 240 | 0.92 | 1.02 | 3 |
S040 | B | 31905 | 240 | 0.9 | 0.99 | 3 |
S055 | B | 24041 | 240 | 0.9 | 0.75 | 3 |
S108 | B | 240950 | 240 | 0.94 | 0.89 | 3 |
S131 | B | 137512 | 240 | 0.9 | 0.99 | 3 |
S139 | B | 151862 | 224 | 0.96 | 0.85 | 3 |
S140 | B | 302047 | 220 | 0.88 | 0.63 | 3 |
S308 | B | 136998 | 240 | 0.91 | 0.74 | 3 |
S330 | B | 136652 | 240 | 0.91 | 0.79 | 3 |
S338 | B | 30109 | 204 | 0.94 | 0.79 | 3 |
S340 | B | 171426 | 240 | 0.94 | 1 | 3 |
S346 | B | 23240 | 240 | 0.87 | 0.94 | 3 |
S364 | B | 28763 | 240 | 0.94 | 0.99 | 3 |
S367 | B | 26335 | 240 | 0.9 | 0.95 | 3 |
S003 | C | 13138 | 199 | 0.85 | 0.92 | 3 |
S037 | C | 50686 | 161 | 0.89 | 0.75 | 3 |
S067 | C | 233 | 169 | 0.99 | 1.28 | 3 |
S074 | C | 13051 | 183 | 0.72 | 0.4 | 3 |
S076 | C | 376 | 201 | 0.92 | 1.36 | 3 |
S080 | C | 19237 | 240 | 0.88 | 1.02 | 3 |
S086 | C | 17949 | 209 | 0.84 | 0.6 | 3 |
S129 | C | 1525 | 203 | 0.78 | 0.63 | 3 |
S151 | C | 194498 | 240 | 0.95 | 0.73 | 3 |
S194 | C | 101365 | 240 | 0.94 | 1 | 3 |
S213 | C | 246 | 166 | 0.96 | 1.32 | 3 |
S218 | C | 15483 | 240 | 0.93 | 1.05 | 3 |
S244 | C | 16406 | 240 | 0.87 | 0.97 | 3 |
S247 | C | 56698 | 240 | 0.95 | 1.01 | 3 |
S268 | C | 129786 | 240 | 0.94 | 1 | 3 |
S284 | C | 46597 | 240 | 1 | 1.02 | 3 |
S294 | C | 18842 | 240 | 0.88 | 1.03 | 3 |
S306 | C | 126096 | 240 | 0.95 | 1 | 3 |
S314 | C | 1670 | 235 | 0.77 | 0.54 | 3 |
S356 | C | 130307 | 240 | 0.95 | 0.98 | 3 |
S361 | C | 328080 | 240 | 0.88 | 0.98 | 3 |
S365 | C | 41631 | 240 | 0.95 | 1.02 | 3 |
S374 | C | 49224 | 240 | 1 | 1.01 | 3 |
表4.1 重要客户名单及数据表
三、教学小结及思考
本案例结合生产企业原料供应商客户价值分析的案例,重点介绍了数据分析算法中K-Means聚类算法在客户价值分析中的应用。针对已有的数据,构建了客户价值分析模型关键特诊,使用K-Means算法构建了供应商客户价值分析JFRM特征模型,详细描述了数据分析与挖掘的整个过程。与此同时,也可以让同学思考一下,依托四个基本特征,能否考虑利用决策树等算法来判断客户的重要性。
四、效果分析
1、课堂效果反馈
通过学习完这堂课程,在对应用统计学专业的统计211班47名学生进行了调研,通过学生的反馈数据来看,这节课的教学和案例分析对学生的学习有积极作用,“非常满意“和”满意“之和比例比较高,四个调研问题不满意人数没有,综合来看,教学达到效果,对学生理解课程有积极作用。
2、课后提交实验报告教学反馈
通过学生提交实验报告来看,无论是实验报告内容完整度、数据分析的深度和报告的格式来看,学生们对K-means聚类算法在客户价值中的应用有着良好的掌握程度,达到了学习效果。
五、总结
近年来,统计和数据科学发展迅猛,理工类本科高等学校的统计类课程的教学工作尤其应当注重应用型人才的培养,即教学中重视理论与实际应用的紧密结合。基于R语言的数据挖掘实验课程教学更应该如此。针对教学难点的一体化上机实验教学、典型案例的研讨式互动教学和灵活编程能力的训练, 能够在一定程度上增强学习内容的新颖性,提升学生的学习兴趣和自信心。这些教学实践探索,鼓励并调动大学生自主学习参与竞赛的积极性,给予他们更多创造成功的机会,从而全面提升其学习的自我效能感,进而奠定其未来学习高级统计方法的能力和科研素养。
参考文献
[1]孙佳楠.提升本科生“统计计算”课程学习的自我效能感的教学探索[J].大学数学,2020.04,36卷第2期.
[2]张茜.金融学专业 “ 时间序列分析” 课程教学方式的探讨与实践[J].科教导刊(上旬刊),2018(018), 83-84.
[3]李泓征等.基于R语言的《金融时间序列分析》课程教学改革与实践[J].时代金融,2020.
[4]汤银才.R语言与统计分析[M].北京:高等教育出版社,2008.
...