算法1"/>
改进算法1
当训练好一个模型之后预测新的数据,当发现预测情况不是很好的时候,怎么改进?
1.得到更多的训练数据。但有的时候获取更多的数据并不是很有帮助
2.尝试选用更少的特征
3.尝试增加更多的特征
4.增加多项式特征,就是已有特征之间的组合:等
5.增加正则化参数,减小正则化参数
怎么样能选择最适合改进的方法呢?或者说排除上面的一些方法
评估该算法的性能(机器学习诊断法),从而能知道影响性能的关键和改进的方面:
训练误差最小化不一定得到了最好的性能,因为会过拟合。
那就要评价假设:使用验证集来度量误差,具体的如果对于回归问题,是误差;对于分类问题,是分类误差
欠拟合---偏差,过拟合---方差;如果算法的表现没有预期的那么好,那么如何确定是哪方面的问题?
如果是高偏差的问题,那么训练集误差和验证集误差都比较大;如果是高方差,那么训练集误差小,验证集误差大。
1.得到更多的训练数据(但有的时候获取更多的数据并不是很有帮助):解决高方差问题
2.尝试选用更少的特征:解决高方差问题
3.尝试增加更多的特征:解决高偏差问题
4.增加多项式特征,就是已有特征之间的组合:等:解决高偏差问题
5.增加正则化参数,解决高方差问题
6.减小正则化参数:解决高偏差问题
加入正则化,选区合适的参数的时候,选取验证集最好效果的参数。如果不同的正则参数训练出来的模型,对验证集,训练集进行预测,得到的误差图像,这个时候,如果正则化参数太大就会是高偏差即欠拟合问题,则会表现训练集误差和验证集误差都大;如果正则化参数太小就是高方差即过拟合问题,则表现训练集误差小,验证集误差大。因此通过增大正则参数来解决高方差,减小正则参数来解决高偏差。
利用学习曲线来确定是高偏差问题还是高方差问题。
学习曲线是,在假设下面,使用训练数据集中的m个样本进行训练,得到模型,然后得到训练误差和验证误差(注意这里是对m个样本,具体的训练集上之前训练的m个样本,验证集上新的m个样本)。随着m的增大而训练模型,得到误差;这样就画出来下面的学习曲线。我们可以知道当数据越多的时候,我们所关心的验证误差将会越来越小,当到达一定的数据量的时候就会保持平衡,意味着数据增加不会起帮助(下面的高偏差问题)
那么对于高偏差和高方差的曲线各是什么呢?下面给出:
高偏差状况是可以判断增加数据没有意义了
可以看到在整个训练集训练完了,这两条误差曲线还有很大的一个gap,看着曲线的趋势,增加数据可以降低验证误差(这是我们的目的),所以可以判断增加数据对于改善模型是有效的。
那么总结上面改进算法的方法都是解决什么问题的:
1.得到更多的训练数据(但有的时候获取更多的数据并不是很有帮助):解决高方差问题
2.尝试选用更少的特征:解决高方差问题
3.尝试增加更多的特征:解决高偏差问题
4.增加多项式特征,就是已有特征之间的组合:等:解决高偏差问题
5.增加正则化参数,解决高方差问题
6.减小正则化参数:解决高偏差问题
更多推荐
改进算法1
发布评论