写点什么

白话机器学习(4):模型的裁判 - 交叉验证 Cross-Validation

用户头像
杜吉普
关注
发布于: 2 小时前
白话机器学习(4):模型的裁判-交叉验证Cross-Validation

​本文适合人群:对机器学习 Machine Learning 与数据感兴趣的学习者

文章同步公众号:持续学习的杜吉普


温馨提示:阅读本文之前,需对以下内容进行了解并掌握

白话ML:什么是机器学习模型?ML Model

白话ML(2):产品经理都在用的线性回归模型


本文白话什么:

Cross-Validation 的意义


本文提纲:

  • 什么是 CV 交叉验证

  • CV 的具体步骤

  • N-fold CV 是什么?


注:全文无编程,只含有少量计算,文章内容全部尽量通俗易懂化,请尽情享用。


什么是 CV 交叉验证 


在学习新模型之前,必须要在强调一个基础知识,那就是交叉验证。这东西是干啥的?用来更科学公平评价模型表现的。

 

小朋友就要问了,不是将数据分成两份,training set 和 test set,然后在 training set 上训练模型,在 test set 评价模型不就行了?为什么还要搞的那么复杂?

 

原因是单纯的 split data into training set and test set 有失公允,对于模型的评价并不客观。为了证明我的观点,我将用案例的方式带领大家一探究竟。

 

首先来看我们的数据,这是一个 5 变量数据,我们的目标是通过前四列变量:一些医学指标(蓝色的)来预测最后一个变量即是否患有心脏病(绿色)。



这里我们就遇到一个问题?如何选择哪一个模型是我们应该去使用的模型?答案非常简单,那就是找一个最好的模型。那么怎么来评价模型的“好”,那么就需要用到我们 CV(Cross Validation)

 

回到我们的案例中,我们都知道,训练模型的基本步骤:训练模型-评价模型。而训练模型和评价模型不可能在同一个数据集里,那么就相当于一个运动员又当球员又当裁判。所以我们引入了最简单的方法,也就是我们之前说的分 training set 和 test set 的方法。以下图为例,我们使用数据集的 75%作为 training set(下图蓝色部分),25%作为 test set(下图黄色部分)的方式来训练并评价模型。



最终可以通过每个模型在 test set 里 RMSE(linear regression model 一文中的知识点)的评分高低来选择最终我们使用与这个场景下的模型。

 

但是问题来了!我们如何决定用哪 25%做 test set 哪 75%做 training set?是第一个方格部分?第二个方格部分?第三个方格部分?还是第四个方格部分?用单独的哪一个部分做 test set 似乎都有失公允,因为这样的选择存在随机性。为了解决这个问题,我们不如每个方格都做一次 test set,然后取平均就好了。这就是 CV。

 

举一个例子,总共有四个裁判,最后一个裁判是一个颜值粉,而我恰巧颜值特别高,那么如果仅用最后一个裁判参与判决,那我自然就会得到一个不错的成绩,这对于其他选手是不公平的。所以为了解决这个问题,那我们就让这四个裁判轮流进行评分,最后取平均值的方式来进行评判。

 


CV 的过程


1.     第一个格子做 test set,剩余的做 training set。用 training set 训练模型,然后在 test set 上进行评价,得到评价结果。

2.     第二个格子做 test set,剩余的做 training set。用 training set 训练模型,然后在 test set 上进行评价,得到评价结果。

3.     第三个格子做 test set,剩余的做 training set。用 training set 训练模型,然后在 test set 上进行评价,得到评价结果。

4.     第四个格子做 test set,剩余的做 training set。用 training set 训练模型,然后在 test set 上进行评价,得到评价结果。


最终通过计算求得平均的评价结果。对于 RMSE 来说,最终的 CV RMSE 的计算方式如下



你不需要知道具体的计算过程,因为计算机会帮你做好这一切,你只需要 CV 的核心概念,通过“雨露均沾”的方式让评价结果更加客观。

 

在这个案例中,我们得到 SVM 模型的 CV 评价结果最好,那么我们最终会选择 SVM 模型作为我们最终使用的模型。



什么是 N-fold Cross-Validation


我们上边这个案例就是一个 4fold CV,原因很简单,就是把原始数据分成四份,然后进行 CV。如果是 10-fold CV 那就是下面这种情况,将数据分成 10 分,每一份作为 test set 然后剩下的作为 training set,以此往复训练十次,评价十次,最后求模型综合评价。10-fold 也是较为常用的模型评价方式。



本文参考信息来源:

SateQuest

---------------------


白话 ML 就到这里,下期预告:Ridge Regression,更高端的 regression


PS:有任何疑问欢迎留言,本文完全个人浅薄理解,如有不足欢迎评论区指正。

我是杜吉普,致力于 数据+数据技术+商业场景=商业价值

欢迎关注公众号持续学习的杜吉普,让我们共同持续成长。

发布于: 2 小时前阅读数: 3
用户头像

杜吉普

关注

数据智能场景落地与持续价值探索 2021.04.06 加入

知名技术咨询公司Data&AI业务线分析师、Kaggle Top5%、exIBM

评论

发布
暂无评论
白话机器学习(4):模型的裁判-交叉验证Cross-Validation