• 算法岗面试题:模型的bias和variance是什么?用随机森林举例


    校招在即,准备准备一些面试可能会用到的东西吧。希望这次面试不会被挂。

    基本概念

    说到机器学习模型的误差,主要就是bias和variance。

    • Bias:如果一个模型的训练错误大,然后验证错误和训练错误都很大,那么这个模型就是高bias。可能是因为欠拟合,也可能是因为模型是弱分类器。

    • Variance:模型的训练错误小,但是验证错误远大于训练错误,那么这个模型就是高Variance,或者说它是过拟合。


    这个图中,左上角是低偏差低方差的,可以看到所有的预测值,都会落在靶心,完美模型;

    右上角是高偏差,可以看到,虽然整体数据预测的好像都在中心,但是波动很大。

    【高偏差vs高方差】
    在机器学习中,因为偏差和方差不能兼顾,所以我们一般会选择高偏差、低方差的左下角的模型。稳定性是最重要的,宁可所有的样本都80%正确率,也不要部分样本100%、部分50%的正确率。个人感觉,稳定性是学习到东西的体现,高方差模型与随机蒙的有什么区别?

    随机森林为例

    上面的可能有些抽象,这里用RandomForest(RF)来作为例子:
    随机森林是bagging的集成模型,这里:
    (RF(x)=frac{1}{B}sum^B_{i=1}{T_{i,z_i}(x)})

    • RF(x)表示随机森林对样本x的预测值;
    • B表示总共有B棵树;
    • (z_i)表示第i棵树所使用的训练集,是使用bagging的方法,从所有训练集中进行行采样和列采样得到的子数据集。

    这里所有的(z),都是从所有数据集中随机采样的,所以可以理解为都是服从相同分布的。所以不断增加B的数量,增加随机森林中树的数量,是不会减小模型的偏差的。
    【个人感觉,是因为不管训练再多的树,其实就那么多数据,怎么训练都不会减少,这一点比较好理解】

    【RF是如何降低偏差的?】
    直观上,使用多棵树和bagging,是可以增加模型的稳定性的。怎么证明的?


    我们需要计算(Var(T(x)))
    假设不同树的(z_i)之间的相关系数为( ho),然后每棵树的方差都是(sigma^2).

    先复习一下两个随机变量相加的方差如何表示:
    (Var(aX+bY)=a^2 Var(X)+b^2 Var(Y) + 2ab cov(X,Y))

    • Cov(X,Y)表示X和Y的协方差。协方差和相关系数不一样哦,要除以X和Y的标准差:
      ( ho=frac{cov(X,Y)}{sigma_X sigma_Y})

    下面转成B个相关变量的方差计算,是矩阵的形式:

    很好推导的,可以试一试。

    这样可以看出来了,RF的树的数量越多,RF方差的第二项会不断减小,但是第一项不变。也就是说,第一项就是RF模型偏差的下极限了。

    【总结】

    • 增加决策树的数量B,偏差不变;方差减小;
    • 增加决策树深度,偏差减小;( ho)减小,(sigma^2)增加;
    • 增加bagging采样比例,偏差减小;( ho)增加,(sigma^2)增加;

    【bagging vs boost】
    之前也提到过了boost算法:
    一文读懂:GBDT梯度提升
    GBDT中,在某种情况下,是不断训练之前模型的残差,来达到降低bias的效果。虽然也是集成模型,但是可以想到,每一个GBDT中的树,所学习的数据的分布都是不同的,这意味着在GBDT模型的方差会随着决策树的数量增多,不断地增加。

    • bagging的目的:降低方差;
    • boost的目的:降低偏差

    喜欢的话加个微信公众号支持一下吧~目前主要再整理针对机器学习算法岗位的面试可能遇到的知识点。

    公众号回复【下载】有精选的免费机器学习学习资料。 公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

    • 【机器学习的基础数学(PDF)】
    • 【竞赛中的大数据处理流程(PDF)】
    • 【如何做大数据的基础特征工程(PDF)】
    • 【自然语言处理NLP的应用实践大合集(PDF)】
    • 【python入门级教材(400页PDF)】

    公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

    在这里插入图片描述

  • 相关阅读:
    inotify-java linux系统监听文件发生变化,实时通知java程序
    设置模式之单例模式(附上一个Objective-C编写的播放音乐的单例类)
    设计模式之观察者模式(关于OC中的KVOKVCNSNotification)
    设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)
    设计模式之模板方法模式&&迪米特法则(代码Objective-C展示)
    iOS开发:深入理解GCD 第一篇
    设计模式之工厂方法模式(代码用Objective-C展示)
    iOS开发:一个高仿美团的团购ipad客户端的设计和实现(功能:根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除等)
    Xcode一些好用的插件,以及这些插件的管理器
    综合出现NSScanner: nil string argument libc++abi.dylib: terminat错误的解决方案
  • 原文地址:https://www.cnblogs.com/PythonLearner/p/13189079.html
Copyright © 2020-2023  润新知