注意点:
- 一般来讲,更多的迭代次数会使损失下降的更多。
- 随机梯度下降更快,但是我们相应的为了获得相应的结果需要迭代的次数也需要更多,所以还是用batch的比较合适!!!
-
注意要对数据进行打乱(shuffer)。
逻辑回归LR的特征为什么要先离散化
对于年龄等特征首先应该离散化的原因:
1.简化模型。计算简单。(原先是连续值,比如年龄,现在转换成1,2,3,4,5的离散值,计算简单,容易扩展)
2.这样还能增强模型的泛化能力。不易受噪声的影响。(300岁的人,鲁邦,为模型引入了非线性,提升模型表达能力)
标准化归一化:
归一化
1.对不同特征维度进行伸缩变换 。
2.改变原始数据的分布。使各个特征维度对目标函数的影响权重是一致的(即使得那些扁平分布的数据伸缩变换成类圆形) 。使不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
3.对目标函数的影响体现在数值上。
4.把有量纲表达式(J或者m/s)变为无量纲表达式 。
好处:
1.提升模型的收敛速度。比如计算梯度下降的时候,从走之字形变成直接下楼梯。
2.提升精度。涉一些距离计算的算法时效果显著。
缺点:
1.最大值与最小值非常容易受异常点影响
2.鲁棒性较差,只适合传统精确小数据场景。
标准化(Z-score)
对不同特征维度的伸缩变换的目的是使得不同度量之间的特征具有可比性。同时不改变原始数据的分布。 z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。
1.不改变原始数据的分布。保持各个特征维度对目标函数的影响权重 。
2.对目标函数的影响体现在几何分布上
3.在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
梯度下降三种停止方式:
注意要首先对数据进行标准化处理。
- 根据迭代次数停止。STOP_ITER
- 根据损失目标函数的变化求解,损失函数的变化小了则停止。STOP_COST
- 根据梯度的值停止。STOP_GRAD(梯度值的二范数小于阈值)
三种梯度下降方法:
批量梯度下降法。
更新每一个参数时都采用所有的样本进行更新。
优缺点:容易得到最优解,但是由于每次考虑所有样本,速度很慢。
随机梯度下降:
随机梯度下降是通过每个样本来迭代更新一次。
优缺点:迭代速度快,但不一定每次迭代都朝着收敛的方向。
tip:
1.需要很小的学习率来改善。(也就是增大轮数)。
2.迭代次数较多时,大体朝着最优值方向移动。
小批量梯度下降法(Mini-batch descent):
每次更新选择一小部分数据来算。
优缺点:算法的训练过程比较快,而且也要保证最终参数训练的准确率
牛顿法和拟牛顿法:
https://www.cnblogs.com/ljy2013/p/5129294.html
牛顿法和拟牛顿法是求解无约束最优化问题的常用方法,有收敛速度快优点(用的是二阶泰勒展开式,二阶收敛),牛顿法是迭代算法,每一步都要求解目标函数的海森矩阵的逆,而拟牛顿法通过正定矩阵近似海森矩阵(BFGS)或海森矩阵的逆(DFP)来简化这一过程。
牛顿法:在现有极小值估计点附近对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值(极小值点的一阶倒数应为0)。
阻尼牛顿法:为了保证函数值稳定的下降,每次迭代做一维搜索,寻找最优的步长因子。
拟牛顿法:由于海赛矩阵的计算复杂度很高,拟牛顿法的基本思想就是不用二阶偏导数而构造出海森矩阵(BFGS)或海森矩阵的逆(DFP)的正定对称阵。
DFP:对海森矩阵的逆做近似。
BFGS:与DFP相比性能更好。近似海森矩阵,然后用谢尔曼-莫里森公式得到近似矩阵的逆的递推公式。
L-BFGS:当矩阵很大时,计算机内存难以存的下,所以存在一种优化方案内存受限的BFGS。不再存储完整的D,而是存储计算过程中的向量序列s,y,计算D时用s、y来代替,且s、y只存最新的m个。