知识点
- 特征缩放的概念及使用时机
- 正规化的概念、作用以及如何正规化
- 了解正规方程的概念
- 熟悉Octave语法及常用函数
疑点分析
写编程作业时Octave GUI总是出现各种奇葩总是,所以一直在命令行下完成作业的编写与提交。
特征缩放可以加快梯度下降速度,如图:
梯度下降的方向为偏导数方向,即为该点的切线(面)方向。图1 、图2分别是未经特征缩放处理和经特征缩放处理过的特征图像,由图1可知,未经缩放处理的梯度下降曲曲折折迭代较多次才能从出发点A到目标点B,而图2迭代次数就少的多。该过程可用数学推导,证明特征缩放的确可以加快梯度下降速度。
特征缩放公式:
θ∗=θ−averagemax−min
或
θ∗=θmax
, 其中
θ
为待缩放特征,average为
θ
的平均值,max为最大
θ
,min为最小
θ
。一般将特征缩放到[-1, 1]区间,也可以是[0, 2],也可以是[-3,3]或[-0.2,0.2],但一最好不要太大或太小,如[-1000, 1000]、[-0.001,0.001]都是不合适缩放区间。个人感觉不能缩放区间不能太大或太小的原因应该和计算机缩放时数据损失(如double型转换成float型就会有精度损失)有关。
调试
α
,画出代价函数与梯度下降迭代图可以看出
α
是设置大了还是小了,如图:
图a可看出,代价函数很快就收敛了,证明此时的
α
设置恰到好处
图b中代价函数一直在趋向收敛但是速度很慢,应该是
α
设置太小了。
图c的代价函数趋向发散,很有可能是
α
大太导致的
Octave基本语法看这里,可以输入help fun查看fun函数的作用及用法,常用函数有:sum max min mean var plot等
术语及个人理解
- multivariate linear regression(多元线性回归):有多个特征值的模型
- feature scaling (特征缩放):可以加快梯度下降的速度
- convergence(收敛):一般来说当前迭代所得代价函数值与上一次迭代所得的值在 10−3 之内就说它收敛了。
- normal equation(正规方程): θ=(XTX)−1XTy ,可以一步得到 θ 最优解,数学上可以证明正规方程是正确的。正规方程的优点是不用选择 α 也不用迭代,直接可以获取最优解,缺点是它的时间复杂度为 O3 ,而梯度下降算法的时间复杂度为 kO2 。不适用于特征值较多或训练数据大多的场景,实际上基本没人用。