前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通俗讲解机器学习中的偏差(Bias)和方差(Variance)

通俗讲解机器学习中的偏差(Bias)和方差(Variance)

作者头像
Stanley Sun
发布2023-02-02 15:54:54
4740
发布2023-02-02 15:54:54
举报

    本文通过一个简单的例子,介绍一下机器学习中偏差(Bias)和方差(Variance)的概念。

例子

    某学校组织了一次面向全校学生的体检,体检项目包括学生的身高和体重。小明拿到了一部分同学的体检数据,并绘制了一张图。

    从图上可以看出,体重小的同学一般长得矮一些(图上左侧的点),体重大的同学一般长得高一些(图上中间偏右的点)。不过,班里有几个胖子,他们体重大,但身材并不算高的(如图上右侧的点)。

    小明在想,是否可以找到一个数学公式来描述体重和身高的关系?如果可以的话,那只要知道一个同学的体重,就可以推测出他的身高。小明想通过机器学习的办法获得这个公式。

两种算法

    小明先把同学的数据分成两部分,一部分用来训练算法,另一部分用来测试模型的效果。下图中蓝色的点是训练数据,绿色的点是测试数据。

    他首先用的算法是线性回归。线性回归就是用一条直线去拟合训练数据。

    但他发现,不管怎么调整直线的位置和角度,都不能精确表达训练数据中身高和体重的正确关系,这就是偏差(Bias)。因为,身高和体重本身就不是严格的线性关系,所以通过线性回归生成的直线,求平方差的值是比较大的。

    于是小明使用了另外一种机器学习算法,生成了一条波浪式的曲线,这条曲线具备“弯曲”的特性,似乎拟合性更好。

比较效果

    现在,来比较一下两种算法所生成模型的效果。比较方法是分别计算拟合线和每个实际数据值之间的距离,然后求平方和。之所以求平方是因为预测值和实际值的差可能是负数。

波浪曲线够精确穿过每一个数据点,因此平方和为0。因此,在训练数据上,波浪曲线的效果要好得多。

但是,如果用测试数据集来计算的话,发现线性回归生成的直线,效果更好一些。

    虽然波浪曲线在训练数据上表现非常好,但是在测试数据上表现很差。机器学习里,这种在不同数据上表现出的差异用方差(Variance)来表示。

    波浪曲线的偏差(Bias)很小,因为它具具有“弹性”,能够匹配身高和体重之间的非线性关系。但它的方差(Variance)很大,因为它对不同数据集求平方和,差异特别大。我们很难知道波浪曲线的预测效果怎样,它有时候表现很好,有时候又表现非常糟糕。这样的模型能很好的拟合训练数据,但是预测测试数据效果很差,在机器学习里称之为“过拟合”。

    相反,线性回归生成的直线,其偏差(Bias)很大,因为它不能表达出身高体重之间的非线性关系,但是它的方差(Variance)很小,因为它在不同数据集上求平方和,值都差不多。直线的预测效果还是不错的,不过算不上棒。但,它在不同数据上总是具备这种不错的效果,较为稳定。

    例子中的这两种模型各有优劣势,那我们应该选择哪一个呢?答案是直线模型。训练模型的目的是预测,因此判断模型的好坏,主要看它在测试数据上的预测效果如何。本例中,直线效果的预测效果好,因此是一个更好的模型。

    当然,如果小明能找到一个偏差和方差都很小的模型,那就更完美了。

说明:本文参考了StatQuest的《Machine Learning Fundamentals: Bias and Variance》视频。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例子
  • 两种算法
  • 比较效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档