数学建模暑期集训24:机器学习与Classification Learner工具箱实操

2022-06-14 11:53:04 浏览数 (1)

机器学习是比较宽泛的概念,从国赛历年优秀论文来看,机器学习越来越成为优秀论文不可或缺的因素之一。因此,从本篇开始将进入到机器学习的简单应用。此篇博文将简单记录机器学习的一些基础概念、评判标准和matlab工具箱的使用。由于笔者有一定机器学习基础,因此仅记录比较重要的一些概念,小白阅读可能产生一定难度,更多基础概念可以拉到底部参考资料观看视频了解。

回归问题的评估指标

回归问题是监督学习的内容之一。 评判回归模型的好坏有以下几个指标:

其中,均方根误差RMSE用得最多,可以优先选择使用。

分类问题的评估指标

分类问题是监督学习的另一部分的内容。

首先要理解正类的概念: “在机器学习中,我们通常将更关注的事件定义为正类事件。(生活中我们通常会更关注那些结果不好的情况的出现) ”——周志华《机器学习》 正类,比如医学中,肿瘤阳性就是正类。

分类之后,可以得到混淆矩阵

评判分类模型的好坏有以下几个指标:

  • 分类准确率(Accuracy)
  • 查全率或召回率(Recall,记为 R)
  • 查准率或精确率(Precision,记为 P)

用查坏人的例子可以通俗理解查全率R和查准率P: 查全率 R: 宁可错杀一千个好人,不可漏过一个坏人。(全部识别成坏人时查全率为 1) 查准率 P: 宁可漏过坏人,不可错杀无辜的好人。(让 FP 尽量小一点,没有充足的证据不会轻易判断一个人是坏人)

  • F1分数(F1 Score) F1 分数是查全率和查准率的调和平均数。

化简得到:

  • ROC 曲线和 AUC

将不同的模型的 ROC 曲线绘制在同一张图内,最靠近左上角的那条曲线代表的模型的分类效果最好。

留出法

将样本分成训练集和测试集,通过测试集来反应模型的泛化能力,该方法被称作留出法。 缺陷:训练的样本数量减少。

k 折交叉验证

为了弥补留出法的缺陷,提出k 折交叉验证法。 我们先将数据集 D 随机的划分为 k 个大小相似的互斥子集。每一次用 k-1 个子集的并集作为训练集,剩下的一个子集作为测试集;这样就可以获得 k 组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 次测试的平均结果,通常 k 取 10,此时称为 10 折交叉验证。

图片很容易理解,相当于10份样本轮流做测试集,最后返回的是平均结果。 注意!!该方法仅用来进行筛选模型的好坏,筛选出来的模型不能直接用,要将所有样本全部导入训练再用,否则,浪费了1/k(一份)的样本。

过拟合的原因和解决方法

原因: 1.模型中参数设置的过多导致模型过于复杂 2.训练集的样本量不够 3.输入了某些完全错误的的特征(例如:用人的身高来判别西瓜的好坏)

解决方法: 1.通过前面介绍的交叉验证的方法来选择合适的模型,并对参数进行调节 2.扩大样本数量、训练更多的数据 3.对模型中的参数增加正则化(即增加惩罚项,参数越多惩罚越大)

欠拟合的解决方法

1.增加模型的参数 2.从数据中挖掘更多的特征来增加输入的变量 3.选择更加复杂的模型 4.使用一些集成算法(如装袋法(Bagging),提升法(Boosting))

Classification Learner工具箱实操

Classification Learner工具箱简介

Classification Learner是matlab自带的一个工具箱,里面内置了多种机器学习模型可供调用,无需编程,一键搞定。

导入数据

下面以著名的多分类鸢尾花数据集为例。

在matlab中选择导入数据

144组训练集作为d1:

6组测试集作为d2:

工具箱设置

选择Classification Learner工具箱:

新建会话

选择交叉验证方法,K设置为10折。

选择全部模型,开始训练:

训练结果演示

训练好之后,matlab会自动将准确度最高的模型标注出来:

此外,还有ROC曲线之类的图像可供选择,可以放到论文里。

导出模型

选择效果最好的模型,勾选导出

模型预测

有了模型之后,可以将d2测试集导进去进行预测。

代码语言:javascript复制
 yfit = trainedModel.predictFcn(d2) 

trainedModel是导出模型的默认名字。 运行完之后,预测结果会在命令行进行打印。

注:matlab导出模型后,会自动运用所有的数据(full model),因此不用担心是否因交叉验证而丢失一组数据。

论文应用

在2020国赛C题中,有一篇论文使用了该工具箱,并将结果非常清晰地展现了出来。 排版简洁工整,值得学习:

完整的论文我上传到了我的资源内2020国赛C题优秀论文

参考资料

本博文视频和内容主要参考自数学建模清风第四次直播:利用matlab快速实现机器学习

0 人点赞