一、误差
1.误差的来源
Error 的主要有两个来源,分别是 bias 和 variance 。
2.误差的判断
如果模型没有很好的训练训练集,就是偏差过大,也就是欠拟合。
如果模型很好的训练训练集,即再训练集上得到很小的错误,但在测试集上得到大的错误,这意味着模型可能是方差比较大,就是过拟合。
对于欠拟合和过拟合,是用不同的方式来处理的。
(1)偏差大-欠拟合:重新设计模型
(2)方差大-过拟合:添加更多的数据或对数据集进行调整
3.模型的选择
这件事最好不要做:
用训练集训练不同的模型,然后在测试集上比较错误,模型3的错误比较小,就认为模型3好。但实际上这只是你手上的测试集,真正完整的测试集并没有。比如在已有的测试集上错误是0.5,但有条件收集到更多的测试集后通常得到的错误都是大于0.5的。
4.交叉验证
交叉验证:就是将训练集再分为两部分,一部分作为训练集,一部分作为验证集。用训练集训练模型,然后再验证集上比较,确实出最好的模型之后(比如模型3),再用全部的训练集训练模型3,然后再用public的测试集进行测试,此时一般得到的错误都是大一些的。
5.N-折交叉验证
防止上述将训练集拆分的效果比较差。
二、梯度下降法
1.调整学习速率
调整的方法:
(1)自适应学习率
举一个简单的思想:随着次数的增加,通过一些因子来减少学习率。
学习率不能是一个值通用所有特征,不同的参数需要不同的学习率。
(2)Adagrad 算法:
每个参数的学习率都把它除上之前微分的均方根。
2.随机梯度下降法
随机选取一个例子就更新一步。
常规梯度下降法走一步要处理到所有二十个例子,但随机算法此时已经走了二十步(每处理一个例子就更新)。
3.特征缩放
如何做缩放?
Z-score标准化。
4.梯度下降的理论基础
主要是泰勒展开。
5.梯度下降的限制
容易陷入局部极值。
可能卡在不是极值,但微分值是0的地方。
可能实际中只是当微分值小于某一个数值就停下来了,但这里只是比较平缓,并不是极值点。