机器学习入门——应用机器学习的建议

10 应用机器学习的建议

机器入门系列文章中,我已经根据课程,介绍了许多算法,比如线性回归、Logistic回归,以及神经网络,等等。而针对具体的问题,我们采取了某种算法,实现后,发现效果不好,需要改进。有些时候需要增加数据量,有些时候则不需要;我们需要评估一个模型的好坏,从而比较选出更优者;或者根据模型出现的问题,提出解决模型训练出现问题的方法。


10.1 评价假设函数

分类、回归或者预测模型,最终会得出一个假设函数,然后根据输入,带入假设函数中,实现相应的功能,那么假设函数的正确与否与功能实现的优劣有直接关系。因此,在经过训练得出假设函数后,需要对其进行评价,看看它有没有欠拟合、过拟合或者其他问题。

如何评价假设函数

方法有很多,首先针对数据特征少的,数据量少的,可以画图,将假设函数和数据一起画出来,从图中直观显示拟合情况。

如下图所示:



由图可见,该假设曲线将所有训练数据都拟合得很好,也就是说训练集中代价很小,但整个趋势看上去不正确,很可能就是过拟合了。当然,画图这个方法是很直观的,但对于多个特征的数据,难以实现。

这时,我们可以采取另外一种方法,也是常用的方法。就是将训练的数据集,进行划分,划分为两部分,一部分是训练集,另外一部分是测试集。划分比例大概为7:3,同时需进行随机选取。

通过划分,我们可以得到两部分的数据,一部分是训练集,另一部分是测试集。对于线性回归,有以下定义:

训练代价:

测试代价:

对于Logistic回归,有以下定义:

训练代价:

测试代价:

对于多分类问题

首先定义误差函数:



代价为:

这个也是我之前有关手写数字识别的文章中计算测试集准确率的方法。
无论是线性回归还是Logistic回归,都是使用训练中使用训练代价函数,学习到的θ参数,代入测试代价函数中计算测试集中的代价大小,如果小,那该算法模型泛化能力强,如果训练集中代价小,而测试集中代价大,则是过拟合;而如果两个数据集中的代价都大,则是欠拟合的。

10.2 模型的选择

在实际建模解决问题时,我们会使用一些方法,比如多项式回归。当然,同一种方法也需要多次尝试,一次多项式拟合可能会欠拟合,四次多项式可能就过拟合了,当然怎么看这些同一类模型欠拟合和过拟合很重要。同时,有时为了避免过拟合,我们会加上一个正则化的参数,但是正则化的程度需要多少呢,这个也是需要考虑的。

如何选取模型

这里针对多项式的拟合问题讲解。对于一个庞大的数据集,假设我们使用一次、二次、三次、四次到十次多项式进行拟合,我们怎么怎么选择使用多少次是最合理的呢?

这时,我们需要将整个数据集分为三个部分,分别是训练集、交叉验证集(验证集)和测试集。

具体选择过程

使用训练集,通过求解训练代价最小化,可以得出θ参数的值;然后代入交叉验证集中,选取交叉验证集中代价最小的,作为模型,最后代入测试集中,得出泛化误差。

10.3 偏差与方差

如果运行的机器学习算法模型不理想,一般就会有两种情况,偏差(bias)大,或者方差(Variance)大,也就是要么欠拟合,要么过拟合。那么怎么判断和区别他们两者呢?

10.3.1 两者的判断

以多项式拟合为例子,通过画出不同多项式的模型关于训练代价和验证代价的曲线,可以直观的看出偏差大还是方差大。如下图所示:



由图可见,当假设函数的次数较小时,训练代价和验证代价同样大,这时就是偏差大的情况,也是欠拟合;而当假设函数的次数较大时,训练代价小,但验证代价远比训练代价大,这时就是方差大的情况,也就是过拟合。

10.3.2 正则化与偏差和方差的关系

当我们选取好了假设函数后,在之前的课程中,为了避免过拟合,我们会引入一个正则化的参数。而正则化参数是怎么定的呢?

假设四次多项式拟合的效果最好,因此我们决定使用四次多项式作为假设函数。

则其假设函数为:

如果我们加入正则化的参数,则其代价函数为:

这时,我们讨论一下λ的取值问题。

当λ的值很大时,为了使代价最小化,则有:,这时就会产生高偏差的情况。

当λ的值很小时,避免过拟合的程度变小,这时候就会产生高方差。

那么怎么选取合适的λ值呢

我们可以先列出一系列λ的值,比如:



将λ值代入训练代价函数中,求出θ参数,由例子中可见,有12组值,然后将这些θ值代入各自的交叉验证集中,计算代价值,然后选取交叉验证代价值最小的一组θ值作为模型的θ参数,最后代入测试集中,求出代价,这个就是用来衡量模型的泛化能力的依据了。

下面我们画出代价关于λ的函数曲线。


10.4 学习曲线

形象一点来说,学习曲线能够反映学习算法的学习情况。通过学习曲线,我们可以直观的判断我们的模型的学习情况,学得不够(欠拟合)还是学得太好(过拟合),从而从不同方面优化算法模型,而不是浪费时间。

一般情况下的学习曲线,如下图所示:



分析:一般而言,当训练集小时,假设函数容易把训练数据大多或者全部拟合,这样训练代价就小,但泛化能力低,所以验证集代价大;相反,当数据集大了,假设函数不能将大多数的数据都完全拟合,这样,训练代价就大,但数据多了,泛化能力有所增强,所以验证代价也小了。

讨论高偏差和高方差的情况

高偏差时,训练集小,训练代价小,但验证代价大;训练集大,训练代价大,验证代价也大,同时,增加训练集的规模,验证代价同样大。

高方差时,训练集小,训练代价小,验证代价大;训练集大,训练代价大,验证代价会减少,同时,增加训练集规模能减少验证代价,增强泛化能力。

这些判断都是基于学习曲线反映出来的结果,因此这种方法也叫学习曲线诊断法。

10.5 总结与扩展

下面总结几种措施的应用场景。如下表所示:


同时,我们把之前在多项式中的结论,拓展到神经网络中。

在神经网络中,如果隐含层较少,或者隐含层神经单元较少,那么模型容易欠拟合,但是优点是计算量小;而隐含层多,并且隐含层神经单元多,那么模型容易过拟合,但是往往效果比少的好,只是运算量大。在神经网络中,如果隐含层多,为了避免过拟合,我们可以加入正则化参数,也可以采取dropout。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分类:分类可以找出这些不同种类客户之间的特征,让用户了解不同行为类别客户的分布特征,从而进行商业决策和业务活动,如:在银行行业,可以通过阿里云机器学习对客户进行分类,以便进行风险评估和防控;在销售领域,可以通过对客户的细分,进行潜客挖掘、客户提升和交叉销售、客户挽留等 聚类:通常”人以群分,物以类聚”,通过对数据对象划分为若干类,同一类的对象具有较高的相似度,不同类的对象相似度较低,以便我们度量对象间的相似性,发现相关性。如在安全领域,通过异常点的检测,可以发现异常的安全行为。通过人与人之间的相似性,实现团伙犯罪的发掘 预测:通过对历史事件的学习来积累经验,得出事物间的相似性和关联性,从而对事物的未来状况做出预测。比如:预测销售收入和利润,预测用户下一个阶段的消费行为等 关联:分析各个物品或者商品之间同时出现的机率,典型的场景如:购物篮分析。比如超市购物时,顾客购买记录常常隐含着很多关联规则,比如购买圆珠笔的顾客中有65%也购买了笔记本,利用这些规则,商场人员可以很好的规划商品摆放问题。在电商网站中,利用关联规则可以发现哪些用户更喜欢哪类的商品,当发现有类似的客户的时候,可以将其它客户购买的商品推荐给相类似的客户,以提高网站的收入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值