笔者之前写过篇有关学习曲线和过拟合的,里面表述不是非常清晰。最近刚刚刷完吴恩达老师2017的机器学习课程,又看到吴恩达老师的深度学习中1.5节。 所以,就来了兴致,准备把高偏差和高方差梳理下记录下来。

一、高偏差和高方差是什么

这里直接用吴恩达老师的机器学习课程的图来做解释
非常直观

高偏差(High bias)


对于高偏差的模型增加训练数据并不会改善模型的效果

高方差(High vars)


对于高方差的模型增加训练数据会在一定程度上改善模型的效果

二、改善策略

我们将在下面的数据集上演示

x = np.array(list(range(2000)) + list(range(50)) + list(range(20)) + list(range(10))) + 1
y = 2 * np.log(x * x) + np.random.rand(len(x)) * 3 + np.cos(x)
plt.scatter(x, y, s=5, alpha=0.6)
plt.show()

模型简单训练和绘制学习曲线如下

def sklearn_plot_learning_curves(model_in, x_in, y_in, ax=None):x_train, x_test, y_train, y_test = train_test_split(x_in, y_in, test_size=0.25)y_train = y_train.reshape((-1, 1))y_test = y_test.reshape((-1, 1))train_errors, test_errors = [], []for m in tqdm(range(1, len(x_train), 20)):model_t = model_in.fit(x_train, y_train)y_train_pre = model_t.predict(x_train[:m])y_test_pre = model_t.predict(x_test)train_errors.append(mean_squared_error(y_train[:m], y_train_pre))test_errors.append(mean_squared_error(y_test, y_test_pre))print('y_test_pre.shape:', y_test_pre.shape)ax.plot(train_errors, 'r-+', lw=2, label='train', alpha=0.6)ax.plot(test_errors, 'b-', lw=2, label='test', alpha=0.6)ax.legend(loc='upper right')ax.set_title(f"total sample: {x_in.shape[0]}")return model_tdef sklearn_simple_train(model_in, x, y, add_log=False):"""单一特征训练"""fig, axes = plt.subplots(1, 2, figsize=(16, 6))if add_log:reg_ = sklearn_plot_learning_curves(model_in, np.c_[x, np.log1p(x)], y, ax=axes[0])else:reg_ = sklearn_plot_learning_curves(model_in, x, y, ax=axes[0])x_p = np.linspace(0, x.shape[0], 100)if add_log:y_p = reg_.predict(np.c_[x_p.reshape((-1, 1)), np.log1p(x_p.reshape((-1, 1)))])else:y_p = reg_.predict(x_p.reshape((-1, 1)))axes[1].scatter(x, y, s=5, alpha=0.6)axes[1].scatter(x_p, y_p, s=5, alpha=0.6)axes[1].set_title(f'add_log: {add_log}')plt.show()

改善高偏差(High bias)

lr = LinearRegression()
sklearn_simple_train(lr, x, y)

对于单一维度简单模型拟合,出现高偏差,增加数据并不会改善模型

  • 增加训练特征
  • 增加多项式特征
    • 增加了特征,显然从原先的cost大于8, 到现在的1.3左右,从拟合线上看,也是显著好转。

  • 减少正则
  • 在不增加数据和特征的情况下,还可以采用复杂的模型
    • 如 xgb的树回归
xgb_lr = XGBRegressor()
sklearn_simple_train(xgb_lr, x, y)

改善高方差(High vars)

  • 增加更多的训练样本

    • 从我们采用xgb树回归的时候,我们发现存在较大的方差,所以,我们可以考虑增加数据量
    • 增加训练数据果然达到了我们所需要的效果
  • 减少训练特征
  • 增加正则

机器学习_高偏差(High bias)与高方差(High vars)相关推荐

  1. 机器学习系列(三)——误差(error),偏差(bias),方差(variance)

    训练机器学习模型时,我们希望得到一个泛化性能优异的模型.在上一篇博客回归模型中,当我们采用多项式回归,并不断增加多项式的次数时,模型越来越复杂,但是在测试集上的误差并没有逐步降低. 这表明一个复杂的模 ...

  2. 深入理解机器学习——偏差(Bias)与方差(Variance)

    分类目录:<深入理解机器学习>总目录 偏差(Bias)与方差(Variance)是解释学习算法泛化性能的一种重要工具.偏差方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不 ...

  3. 偏差(bias)和方差(variance)及其与K折交叉验证的关系

    先上图: 泛化误差可表示为偏差.方差和噪声之和 偏差(bias):学习算法的期望预测与真实结果(train set)的偏离程度(平均预测值与真实值之差),刻画算法本身的拟合能力: 方差(varianc ...

  4. 深度学习:偏差(bias)和方差(Variance)

    文章目录 一.期望.概率论方差.均方差 二.为什么会有偏差和方差 三.偏差.方差.噪声是什么? 1. 简述偏差.方差.噪声 2. 数学公式定义偏差.方差.噪声 四.泛化误差.偏差和方差的关系? 五.用 ...

  5. 理解偏差(Bias)和方差(Variance)

    1. 定义和公式[1] 符号 测试样本 训练集 在数据集中的标记(人工标记) 的真实标记(上帝视角,我们凡人没办法完美知晓) 训练集上学得模型在上的预测输出 学习算法的期望预测 这里解释一下和的区别, ...

  6. 偏差(bias)和方差(variance)

    偏差:偏差指的是由模型训练得到的结果与真实值之间的差. 解释:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力.如果偏差太大,我们就要缩小它,也就是缩小与真实值之间的差 ...

  7. 偏差(Bias)与方差(Variance)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/wuzqChom/article/det ...

  8. 斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)...

    绘制学习曲线非常有用,比如你想检查你的学习算法,运行是否正常.或者你希望改进算法的表现或效果.那么学习曲线就是一种很好的工具.学习曲线可以判断某一个学习算法,是偏差.方差问题,或是二者皆有. 为了绘制 ...

  9. 机器学习(吴恩达)笔记——高偏差高方差

    转载自https://blog.csdn.net/The_lastest/article/details/78357727?locationNum=9&fps=1 学习曲线(learning ...

  10. 深度学习中交叉熵_深度计算机视觉,用于检测高熵合金中的钽和铌碎片

    深度学习中交叉熵 计算机视觉 (Computer Vision) Deep Computer Vision is capable of doing object detection and image ...

最新文章

  1. 线性代数:第五章 相似矩阵及二次型(1)向量的内积 方阵的特征值与特征向量 相似矩阵
  2. html5 打印api,HTML5的API(一)
  3. 探讨程序员如何学习你不熟悉的技术,以及用什么样的方法去学习.
  4. python人人语音爬虫(登陆尚未完成,需要使用先登录在查cookie中的t)
  5. linux下设置物联网卡apn,负控终端物联网卡APN参数修改步骤
  6. 设计模式(十)——代理模式
  7. vue-touch不能上下滑动的问题【解决】
  8. 推荐两个BAT编辑器
  9. C语言日志库zlog基本使用
  10. 机器非正常关机 出现ora-01033 oracle,oracle ORA-01033问题的解决办法
  11. Chrome浏览器(油猴子)插件安装使用教程
  12. vue项目结构文件介绍及项目运行流程
  13. 【OpenGL】笔记六、GLM配置
  14. java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this
  15. cshop是什么开发语言_ecshop后台如何设置多语言选择
  16. linux如何查看本地yum源地址,CentOS配置本地yum源
  17. 马化腾演讲、张勇内部讲话暴露两大巨头云上端倪
  18. 2019年第十届蓝桥杯真题python解答(更新中)
  19. php 读取文件并显示出来,读取文本文件并显示在网页_PHP教程
  20. 世界上最好的编程语言(没有绝对)

热门文章

  1. Photoshop CS6版本安装及破解教程
  2. Conda 的 yml 文件 Conda/PIP 国内镜像源的添加
  3. 华为 ensp 下载安装
  4. SHT20读取温湿度,基于cubemx
  5. 使用ADB安装Apk到手机
  6. 数据分析常用的100个指标和术语
  7. java计算机毕业设计校园环境保护监督系统源代码+系统+数据库+lw文档
  8. centOS安装yasm
  9. 【原创】2021-2000上市公司重污染企业数据、上市公司重污染行业数据(常用变量均包括,可直接用)
  10. 个人信息安全规范----8、组织的个人信息安全管理要求