- 假设函数, 梯度下降
1.1 假设函数
在单变量线性回归中假设函数为:
hθ (x)=θ0+θ1 x
在实际问题中, 会有很多特征。n表示特征的数量, m表示训练样例的数量,x(i) 表示i个训练样例xj(i)表示第i个训练样例的第j个特征。假设函数为:
hθ(x)=θ0+θ1 x1+⋯+ϴn xn
假设函数的向量表示: hθ (x)=ϴT x
1.2 损失函数
1.3 梯度下降
- 特征处理
2.1 特征缩放
如果每个特征的范围相差的很大,梯度下降会很慢。在梯度下降之前应该对数据做特征缩放(Feature Scaling)处理,将所有特征的数量级都在一个差不多的范围之内,以加快梯度下降的速度。
通常需把特征都缩放到[−1,1]邻近的范围。
2.2 均值归一化
还有一个特征处理的方法就是均值归一化(Mean normalization):
- 学习率
3.1 收敛的判断
- 如果梯度算法正常运行的话, 代价函数的图像是逐渐减小,趋于一个值的。
2)设置阈值ε,让迭代自动收敛后停止。
但在实际中准确地选择阈值ε是非常困难,通常使用画图的方法,观察收敛趋势,判断收敛情况。
3.2 实际中学习率调节的建议
如果出现了上面的情况, 这时应该选择更小的α。
注意:1. 对于线性回归问题,只要选择的α足够小, 那么J(ϴ)在每次迭代后都会减小。
2. 但是如果太小,梯度下降会进行的非常缓慢。
在实际中,可以多选取几个学习率进行尝试,选出合适的α。
- 正规方程
4.1 正规方程—一次性求出θ
θ = (XT X)(-1) XT y
在Octave中,可用如下命令计算:pinv((x’*x)*x’*y)
使用正规方程,不需要进行特征缩放处理。
4.2 梯度下降与正规方程的比较
梯度下降(Gradient Descent) 正规方程(Normal Equation)
需要选择学习率α
需要很多次迭代
当有大量特征时, 也能正常工作 不需要选择学习率α
不需要迭代
需要计算(XTX)−1 消耗计算资源,O(n3),n非常大时, 计算非常慢
当n上万的时候选择梯度下降。
4.3 正规方程不可逆的情况
使用正规方程还有一个问题就是XTX可能存在不可逆的情况。当采用octave中pinv命令能得出一个结果,成为假可逆。
在机器学习中出现不可逆的原因:
1)可能是因为有冗余的特征, 删除多余重复的特征即可;
2)使用了太多的特征(特征的数量超过了样本的数量),
对于这种情况可以删掉一些特征或者使用正则化。