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

机器学习是比较宽泛的概念,从国赛历年优秀论文来看,机器学习越来越成为优秀论文不可或缺的因素之一。因此,从本篇开始将进入到机器学习的简单应用。此篇博文将简单记录机器学习的一些基础概念、评判标准和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测试集导进去进行预测。

 yfit = trainedModel.predictFcn(d2) 

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

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

论文应用

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

在这里插入图片描述
完整的论文我上传到了我的资源内2020国赛C题优秀论文

参考资料

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zstar-_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值