专栏首页嘘、小点声按部就班的吴恩达机器学习网课用于讨论(9)

按部就班的吴恩达机器学习网课用于讨论(9)

模型选择与交叉验证

需要选择合适的模型,能够正确的训练模型,并更好的拟合数据。如下的例子是房价面积和价格的线性回归模型,

更少的参数拟合效果不够好,更多的参数导致过拟合。

因此,在使用过程中,将数据集划分为:训练集、验证集、测试集。比例为:6:2:2。选择完以后,使用如下的第一个J函数作为训练依据,训练一批模型。

使用第二的J函数,代入验证集,判断要选择的模型,选择J值最小的模型。在得到模型维数d以后,使用该模型,代入测试集到该模型得到J函数值,得出模型模型误差(训练效果)。

诊断偏差和方差

在下图所示的是训练误差Jtrain和验证误差Jcv,当模型的维数d过低,往往没有办法完全表达出数据集的信息,训练和验证集误差都大,为欠拟合状态,模型具有高偏差。

当模型维数过高,训练集过于表示了训练集的数据内容,将训练集的一些误差或者噪声等,也完全的学习到模型中,导致验证集的误差再次变高,为过拟合状态,模型具有高方差。

良好的模型应该是中间的,使得训练集和验证集都能有较低的误差。

正则化与偏差、方差

使用正则化方法可以缓解欠拟合(偏差)、过拟合(方差)的问题。方法和模型选择类似。

1 选择一批lambda值,使用第一个J在训练集上训练所有模型。

2 训练结束后,使用验证集和第三个Jcv,得出一批误差。选择误差Jcv最小的值对应的模型。

3 使用选择的模型,进行测试集验证吧。整个训练过程都是用的带正则化的J吧,原来的Jtrain可能被弃了。

实验认为,lambda的取值较小,导致训练参数theta过大,当数据条目不够而训练参数过多,模型表达的能力“过强”,容易出现过拟合。

随着lambda增大到一定程度,因为J的梯度下降原因,theta的值过小,甚至为0,导致数据难以被模型表达,出现欠拟合。

所以选择合适的lambda呗

学习曲线

针对过拟合状态,当数据量过少的时候,模型只能根据已有的少量训练数据训练,过度表达,导致验证集上的数据分布无法完全和训练模型的数据分布符合。从下图的曲线,说,让更多的数据被训练和验证吧,在更远处的m位置上,训练了更多的数据,使得模型表达更完整,从而验证和测试效果更好。

针对欠拟合状态,往往是模型无法完整表达数据,如下图右边表达式,其模型的能力不够而导致对数据集的误差,无论在训练集还是验证集都大,达到一致。因而,增加训练数据无法解决欠拟合(高偏差)的问题(从曲线也可以看出,再怎么增加数据量,也只能达到相交状态,不能使得误差下降),解决方式如,增加模型的维数d,使得模型表示能力更强。(另外,虽然减少数据量,也可以降低欠拟合,但是那样,使得训练数据减少,那么训练数据会损失真实的数据分布特征,对实际应用也是不利的吧)

小结与下一步

如下六种,是当模型不适当的时候可以使用的方法。更多的训练样例,是解决过拟合。增加多项式特征,即修改模型的维数d,是解决欠拟合。

减少lambda,使得theta增高,增强模型对每条数据中的特征表达强度。增加额外的训练样本特征,传入训练模型。这两种方法解决欠拟合。

增加lambda,对应使得theta降低,theta降低则限制了每条数据的特征表示。更少的特征表示传入训练模型。这两种方法是解决过拟合。

另外的一些说明如下图,总之,合适的模型加上一点正则化调整,这样的模型可能更有效一点吧。

设计一套机器学习系统,首先要做的

如下的设计一套学习系统,用于区分垃圾邮件与非垃圾邮件。系统设计分为了四步:收集数据、邮件路由鉴别模块,邮件文本鉴别模块,误拼写模块。

误差分析

针对特定问题而设计机器学习算法时,首先快速设计一个简单的算法,采用交叉验证方法测试。

之后,绘制学习曲线分析该算法的问题,针对不同的过拟合、欠拟合问题进行优化。

然后,进行误差分析,提取出被错误分类的样本,总结分析该错误产生的原因,调整学习系统。

总之一个特点是,不是仅仅凭直觉调整机器学习系统,而是根据具体的系统结果分析到该结果导致的原因,对症下药。

另外,初始设计一套系统直接以一个复杂的系统开始,是不合适的,不利于分析,而且有些冗余和干扰因素。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ssh交叉编译安装提示代码块临时

    https://blog.csdn.net/ctbinzi/article/details/5929800

    嘘、小点声
  • java学习与应用(3.5)--网络、流、方法引用

    C/S结构,B/S结构。TCP/IP传输控制协议/网络协议(面向连接,三次握手,无差错传输)。UDP用户数据报协议(无连接,发送端不确认接收端是否存在,64kb...

    嘘、小点声
  • tensorflow零起点快速入门(1)

    其中的TF_CPP_MIN_LOG_LEVEL据说是为了忽略警告,但是我这里没有意义(numpy的一些警告)

    嘘、小点声
  • 大白话解释模型产生过拟合的原因!

    今天郭江师兄在实验室讲解了全体机器学习会第一章的知识,大家讨论了一下过拟合的知识,这里我根据自己的理解,整理了一下原因,力求同最通俗的语言来描述,可能不是太严谨...

    AI研习社
  • 欠拟合和过拟合出现原因及解决方案

    机器学习的基本问题是利用模型对数据进行拟合,学习的目的并非是对有限训练集进行正确预测,而是对未曾在训练集合出现的样本能够正确预测。模型对训练集数据的误差称为经验...

    范中豪
  • 学界 | 大白话解释模型产生过拟合的原因

    AI科技评论按:本文原作者忆臻,原载于作者的知乎专栏。 今天郭江师兄在实验室讲解了全体机器学习会第一章的知识,大家讨论了一下过拟合的知识,这里我根据自己的理解,...

    AI科技评论
  • 深度学习中的双下降现象

    深度学习中的双下降现象,可能大家也遇到过,但是没有深究,OpenAI这里给出了他们的解答。

    石晓文
  • 深度学习中的双下降现象

    深度学习中的双下降现象,可能大家也遇到过,但是没有深究,OpenAI这里给出了他们的解答。

    AI算法与图像处理
  • 迈克尔杰克逊的4K高清修复视频技术解码

    近日网上的一个迈克尔杰克逊代表作《Smooth Criminal》MV官方高清修复版,的视频赚足了大家的眼球。这次的高清修复不仅分辨率达到了4K,原本的25帧录...

    代码医生工作室
  • GitHub趋势榜第一:超强PyTorch目标检测库Detectron2,训练更快,支持更多任务

    除此之外,团队把大规模姿态估计算法DensePose,做出了基于Detectron2的新版本。

    量子位

扫码关注云+社区

领取腾讯云代金券