继续是机器学习课程的笔记,本节课的内容主要是一些机器学习应用的建议,包括对假设的评估,如何处理过拟合和欠拟合等。
觉得下一步做什么
到目前为止,我们已经学习了线性回归,逻辑回归以及神经网络,梯度下降等算法,我们已经可以对给定一个训练集使用上述一种算法来训练,得到模型,然后进行预测,但是接着问题就来了,如果得到的预测结果误差很大,那么应该如何减少误差,提高准确率呢?
这里还是使用房价问题作为例子,当使用一个线性回归模型来预测房价,但是发现训练好的模型来预测未知数据的时候,发现有较大误差,那么接下来可以采取的办法有以下几种:
- 获得更多的实例——通常是有效的,但是代价比较大,有时候有些数据是不容易采集的,所以可以先考虑后面几种方法
- 减少特征的数量
- 增加更多的特征
- 增加二项式特征,如 x21,x22,x1x2 等
- 减小归一化因子 λ
- 增大归一化因子 λ
虽然有这么多方法,但是我们不应该随机选择上面的某种方法来改进我们的算法,而是运用一些机器学习诊断法来帮助我们知道上面哪些方法对我们的算法是有效的。
误差分析
这里主要介绍如何检验算法是否过拟合了。
首先是将数据分成训练集和测试集,通常用70%的数据作为训练集,剩余的30%的数据做为测试集。注意,训练集和测试集均要包括有各种类型的数据,而且通常要对数据进行打乱顺序,然后随机生成训练集和测试集。
在通过训练集学习到模型的参数后,就需要使用测试集来使用该模型进行预测并计算误差。这里分为线性回归和逻辑回归两种情况:
- 对于线性回归模型,利用测试集数据计算代价函数 Jtest(θ)=12mtest∑mtesti=1(hθ(x(i)test)−y(i)test)2
- 对于逻辑回归模型,同样可以用测试集数据集来计算代价函数:
Jtest(θ)=−1mtest∑i=1mt