机器学习应用建议
一、假设我们需要用一个线性回归模型来预测房价,当我们运用训练好了的模型来预测未知数据的
时候发现有较大的误差,我们下一步可以做什么?
1. 获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可考
虑先采用下面的几种方法。
2. 尝试减少特征的数量
3. 尝试获得更多的特征
4. 尝试增加二项式特征
5. 尝试减少归一化程度λ
6. 尝试增加归一化程度λ
时候发现有较大的误差,我们下一步可以做什么?
1. 获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可考
虑先采用下面的几种方法。
2. 尝试减少特征的数量
3. 尝试获得更多的特征
4. 尝试增加二项式特征
5. 尝试减少归一化程度λ
6. 尝试增加归一化程度λ
我们不应该随机选择上面的某种方法来改进我们的算法,而是运用一些机器学习诊断法来帮助,我们知道上面哪些方法对我们的算法是有效的。
二、过拟合检验
为了检验算法是否过拟合,我们将数据分成训练集和测试集,通常用 70%的数据作为训练集,用剩下 30%的数据作为测试集。很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。
测试集评估
在通过训练集让我们的模型学习得出其参数后,对测试集运用该模型,我们有两种方式计算误差:
1. 对于线性回归模型,我们利用测试集数据计算代价函数 J
三、模型的选择(交叉验证集)
假设我们要在 10 个不同次数的二项式模型之间进行选择:
显然越高次数的二项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型。我们需要使用交叉验证集来帮助选择模型。 即:
使用 60%的数据作为训练集
使用 20%的数据作为交叉验证集
使用 20%的数据作为测试集
模型选择的方法为:
1. 使用训练集训练出 10 个模型
2. 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
3. 选取代价函数值最小的模型
4. 用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)