吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议

简介: 吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议

系列文章:


吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习

吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 4:神经网络基础

吴恩达《Machine Learning》精炼笔记 5:神经网络


今天带来第六周课程的笔记:关于机器学习的建议。内容包含:


  • 应用机器学习的建议
  • 评估假设
  • 模型选择和交叉验证
  • 方差和偏差诊断
  • 正则化与过拟合问题


应用机器学习的建议


当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以做什么?

  • 获得更多的训练样本
  • 尝试减少特征的数量
  • 尝试获得更多的特征
  • 尝试增加多项式特征
  • 尝试减少正则化程度λ
  • 尝试增加正则化程度λ


image.png


评估假设Evaluating a Hypothesis


当学习的算法时候,考虑的是如何选择参数来使得训练误差最小化。在模型建立的过程中很容易遇到过拟合的问题,那么如何评估模型是否过拟合呢?


为了检验算法是否过拟合,将数据集分成训练集和测试集,通常是7:3的比例。关键点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。


image.png

当我们在训练集上得到我们的学习模型之后,就需要使用测试集合来检验该模型,有两种不同的方法:


  1. 线性回归模型:利用测试数据计算代价函数J
  2. 逻辑回归模型:
  • 先利用测试数据计算代价函数Jtest(θ)
  • 在针对每个测试集样本计算误分类的比率,再求平均值


image.png

模型选择和交叉验证


交叉验证


什么是交叉验证?


交叉验证集合指的是:使用60%的数据作为训练集,使用20%的数据作为交叉验证集,使用20%的数据作为测试集


image.png

模型选择


  • 使用训练集训练出10个模型
  • 用10个模型分别对交叉验证集计算得出交(代价函数的值)
  • 选取代价函数值最小的模型
  • 用上面步骤中选出的模型,对测试集计算得出推广误差(代价函数的值)
  • 训练误差表示为:

image.png

交叉验证误差(通过交叉验证数据集得到的)表示为:

image.png

测试误差


image.png


诊断方差和偏差Diagnosing Bias vs. Variance


如果一个算法的运行结果不是很理想,只有两种情况:要么偏差过大,要么方差过大。换句话就是说,要么出现欠拟合,要么出现过拟合。


image.png

通过训练集和交叉验证集的代价函数误差和多项式的次数绘制在同张图中:


image.png

1. 高偏差阶段


交叉验证集和训练集的代价函数误差都是很大,近似相等;


2. 高方差阶段


交叉验证集的误差远大于训练集的误差,训练集的误差很低


正则化和偏差/方差Regularization and Bias_Variance


正则化基础


正则化技术主要是为了解决过拟合的问题。过拟合指的是:对样本数据具有很好的判断能力,但是对新的数据预测能力很差。


image.png


  • 第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集
  • 第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据
  • 中间的模型似乎最合适


栗子


假设我们需要对下图中的多项式进行拟合,需要正则化项


image.png

  • λ很大的时候,出现高偏差,假设hθ(x)是一条直线
  • λ很小约为0的时候,出现高方差


image.png

image.png


如果是多项式拟合,x的次数越高,拟合的效果越好,但是相应的预测能力就可能变差。对于过拟合的处理:


  1. 丢弃一些不能正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法,例如PCA
  2. 正则化。保留所有的特征,但是减少参数的大小(magnitude)


image.png

加入正则化参数


在模型hθ(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4中,主要是高次项产生的过拟合问题:


image.png

加入正则化参数后能够防止过拟合问题,其中λ是正则化参数Regularization Parameter :

image.png

Attention:一般地,不对θ0进行惩罚;加上正则化参数实际上是对参数θ进行惩罚。经过正则化处理后的模型和原模型的对比:


image.png

  • 如果λ过大,所有的参数最小化,模型变成了hθ(x)=θ0,造成了过拟合

参数λ的选择

  1. 使用训练集训练出多个不同程度的正则化模型
  2. 用多个模型分别对交叉验证集计算的出交叉验证误差
  3. 选择得出交叉验证误差最小的模型
  4. 运用步骤3中选出模型对测试集计算得出推广误差


学习曲线 Learning Curves


使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。

学习曲线是将训练集误差和交叉验证集误差作为训练集样本数量mm的函数绘制的图表

image.png

训练样本m和代价函数J的关系


从下图1中看出结果


  • 样本越少,训练集误差很小,交叉验证集误差很大
  • 当样本逐渐增加的时候,二者的差别逐渐减小

说明:在高偏差、欠拟合的情况下,增加样本数量没效果


image.png

在高方差的情况下,增加数量可以提高算法效果


image.png

总结


  1. 获得更多的训练样本——解决高方差
  2. 尝试减少特征的数量——解决高方差
  3. 尝试获得更多的特征——解决高偏差
  4. 尝试增加多项式特征——解决高偏差
  5. 尝试减少正则化程度λ——解决高偏差
  6. 尝试增加正则化程度λ——解决高方差


神经网络的方差和偏差


较小的神经网络,参数少,容易出现高偏差和欠拟合;

较大的神经网络,参数多,容易出现高方差和过拟合


通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好


image.png


查准率和查全率


image.png

查准率precision:实际和预测同时为正例 / 预测值全部为正例


image.png

查全率recall:实际和预测同时为正例 / 实际值全部为正例


image.png


查全率和查准率是一对矛盾的量,一个高的话,另一个必定低,关系图如下:


image.png

查全率和查准率之间的平衡点,一般是使用F1系数表示


image.png

至此,第六周的课程笔记完毕!

相关文章
|
25天前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
38 1
|
22天前
|
机器学习/深度学习 存储 算法
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)(下)
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)
23 0
|
22天前
|
机器学习/深度学习 存储 数据可视化
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)(上)
基于机器学习的地震预测(Earthquake Prediction with Machine Learning)
32 0
|
3月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
3月前
|
机器学习/深度学习 Ubuntu Linux
【机器学习 Azure Machine Learning】使用Aure虚拟机搭建Jupyter notebook环境,为Machine Learning做准备(Ubuntu 18.04,Linux)
【机器学习 Azure Machine Learning】使用Aure虚拟机搭建Jupyter notebook环境,为Machine Learning做准备(Ubuntu 18.04,Linux)
|
3月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
4月前
|
机器学习/深度学习 算法 前端开发
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
|
5月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
4月前
|
机器学习/深度学习 算法 Python
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
强化学习(Reinforcement Learning, RL)** 是一种机器学习技术,其中智能体(Agent)通过与环境(Environment)交互来学习如何执行决策以最大化累积奖励。
|
5月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
44 0