多特征下的目标函数
- 将多个特征表示成向量
假设训练集中每个样本都有多个特征。
m:样本的个数
n:特征的个数
x
(i):第i个样本的特征,其展开后是一个n+1维的向量,定义
x0(i)=1
⎣⎢⎢⎢⎡x0(i)x1(i)...xn(i)⎦⎥⎥⎥⎤
xj(i):第i个样本的第j个特征
- 多特征下的预测函数
hθ(θ0,θ1,...θn)=θ0x0+θ1x1+...+θnxn
用向量表示则为:
hθ(θ
)=θ
T⋅x
代价函数可以写成向量格式如下
J(θ
)=2m1i=1∑n(hθ(x
(i))−y(i))2
多元梯度下降法
- 一个变量的的梯度下降
重复
θ0:=θ0−αm1i=1∑nhθ((x(i))−y(i))
θ1:=θ1−αm1i=1∑nhθ((x(i))−y(i))⋅x(i)
直到
J(θ0,θ1)收敛
- 多个变量的梯度下降
重复
θj:=θj−αm1i=1∑nhθ((x(i))−y(i))⋅xj(i) (j=0,1,...,n)
其中之前定义过
x0(i)=1,所以对于
θ0的更新就和一个变量的梯度下降相同,最初定义
θ0=1就是为了表达式的统一。
多元梯度下降法中的方法
特征缩放
用来加快梯度下降的速度。
- 若某个特征的范围过大,则除以它最大值,将变化范围缩小,一般将特征范围缩小到 [-3,3]就可以接受
- 均值归一化:
sxi−xi,其中
xi为该特征的平均值,
s可以使用标准差,或者简单的用最大值减去最小值即可。这样处理之后,特征值一般会被放缩到 [-0.5,0.5]之间。
选择学习率
代价函数
J(θ
)随迭代次数的变化图的用途
- 若出现上升趋势,则说明学习率的取值过大
- 自动收敛测试:可以选择一个合适的阈值(
η),当每次迭代
J(θ
)下降小于
η时,认为已经收敛了
选择学习率
可以选取一系列差一个数量级的值,eg:0.001,0.01,0.1,1等等
或者对其乘以一个常数来产生:0.003,0.03,0.3,3。然后根据
J(θ
)随迭代次数变化的图来判断哪个值作为学习率最好。
特征和多项式回归
特征的选取
可利用现有特征来构造新特征,比如房屋预测中,知道房子的临街宽度和房子的纵深,那么就可以构造一个面积来作为新特征。
多项式回归
根据训练集中样本的分布选择一个合适的拟合函数,比如随着房子面积的增加,房价先快速增长,后增长速度变缓。就可以构造一个多项式来进行拟合。其预测函数可以构造成
J(θ0,θ1,θ2)=θ0+θ1size+θ2size
,这样拟合效果可能比线性拟合会更好。
正规方程(区别于迭代法的直接解法)
- 代价函数
J(θ)为二次函数时
直接令
∂θ∂J(θ)=0即可求出使得
J(θ)最小的解。
- 同理,多变量可以由正规方程直接求解
θ
:=(x
Tx
)−1xTy
其中
x
为各个样本的各个特征值组成的矩阵,具体构造方法如下,每行都是由一个样本的所有特征组成
⎣⎢⎢⎡x
(1)Tx
(2)T...x
(m)T⎦⎥⎥⎤
y为房屋价格组成的一个m维向量。
正规方程在矩阵不可逆的情况下的解决方法
- 使用了线性相关的特征(删除相关的特征)
- 样本数目m小于特征个数(可删除一些特征或者使用正则化方法,在之后将会提到)
- 在Octave中用pinv()来求矩阵的逆,此时矩阵不可逆也不会出错,因为求出的是矩阵的伪逆。