才发现这篇文档在草稿箱里呆了一个多星期了,上周因为公司的一个事情,第二周的Coursera课程没有完成~~|||
引言
引言被笔者吃了。
多元特征(Multiple Feature)
内容 | 含义 |
---|---|
m | 训练样本个数 |
n | 特征个数,比如有 θ1,θ2,θ3,θ4那么n=4 |
x(i) | 第i个训练样本的所有输入特征,可以认为是一组特征向量 |
x(i)j | 第i个训练样本第j个特征的值,即特征向量第j个值 |
多元假设函数表达式如下
hθ(x)=θ0+θ1x1+θ2x2+θ3x3+....+θnxn
使用矩阵来表示这个表达式可以表示为:
hθ(x)=[θ0θ1θ2...θn][x0x1x2...xn]=θTx
我们规定
x(i)0=1(i∈1,......m)
,因此上式等式可以成立。
多元特征的梯度下降
上上一篇讲梯度下降的博文,推导了
θ0,θ1
的计算方法,这里就不再赘述,不懂的朋友看文章,这里直接给出
θj
的计算方法:
repeat util convergence: {
θj:=θj−α1m∑m1((hθ(x(i))−y(i))x(i)j)j:=0,..,n
}
因为
x(i)0=1(i∈1,......m)
,所以这个算法和旧算法一致,
梯度下降方法:特征缩放
特征缩放原理
如果两个特征变量,在不同维度之间的取值范围相差较大的化,会使我们在使用梯度下降算法的时候,因维度差异造成代价函数收敛发生震荡,而导致收敛速度较慢。如下图所示,
为了解决这个问题,我们引入特征缩放,将特征值通过某些算法,将特征值锁到一个相似的取值范围内,以加快收敛速度,这个取值范围比如
−1≤x(i)≤1 或 −0.5≤x(i)≤0.5
都是可以的,那么最后收敛过程可能如上图右所示。
特征缩放算法
有两种技术可以帮助我们解决该问题:均值归一化和特征缩放。
特征缩放:直接将输入值除以输入变量范围的最大值(如最大值-最小值),来将输入取值范围缩小到1。
均值归一:将输入值减去取值平均值,然后除以输入变量范围差值,或者是除以输入变量标准差。公式如下,
xi:=xi−μisi
其中,
μi
指输入变量x的平均值,
si
是指输入变量范围差值
梯度下降之α(Learning Rate)
上上篇博文中提到过有关Learning Rate需要注意的地方,这里再提出来一次
如果learning rate 太小了,梯度下降就会很慢;
如果learning rate太大,那么梯度下降可能掠过最小值,就可能出现无法收敛,甚至出现发散的现象。
关于Learning Rate的选择的正确做法:
实时观察代价函数变化,如果代价函数变小了,则learning rate取得合适,如果代价函数变大了,则应该减小learning rate的值。
我们通常可以通过代价函数的变化函数图观察我们的Learning Rate是否选择合适,例如,正常的轮廓图如下,
代价函数随着迭代次数累计,结果慢慢减小,后续逐渐趋于平稳,直至不再变化,则说明已经收敛完成。
但如果轮廓图表现如下,则说明我们的Learning Rate选择并不合适,需要减小Learning Rate的值。
特征值与多项式回归
我们可以通过一些小技巧,来改进我们假设函数和特征的形式,将多种特征合并成一个,比如,我们假设合并特征 x1,x2 为一个新特征 x3 。
一般来说,样本的假设函数通常都不是一个单变量线性(直线)函数,大多数的假设函数实际是一条曲线,我们可通过假设样本数据的二次,三次或者是平方根函数(或任何其他形式)来改变我们假设函数的行为或者曲线。
比如,
常规线性假设函是:
hθ(x)=θ0+θ1x1
,
二次假设函数我们可以设计成:
hθ(x)=θ0+θ1x1+θ2x21
,
或者是
hθ(x)=θ0+θ1x1+θ2x21+θ3x31
,
在三次假设函数这个案例中,我们可以创建两个新特征,
x2,x3
,其中,
x2=x21,x3=x31,
,那假设函数又转换为线性回归:
hθ(x)=θ0+θ1x1+θ2x2+θ3x3
,
或者我们在设特征幂次的时候,可<1,即开根,也是可以的,
比如
hθ(x)=θ0+θ1x1+θ2x121
需要提醒的是,如果使用这种方式选择特征,特征缩放算法尤为重要。