【吴恩达机器学习笔记】第五章:多变量线性回归

多特征下的目标函数

  • 将多个特征表示成向量
    假设训练集中每个样本都有多个特征。
    m:样本的个数
    n:特征的个数
    x ( i ) \vec x^{(i)} :第i个样本的特征,其展开后是一个n+1维的向量,定义 x 0 ( i ) = 1 x_0^{(i)}=1
    [ x 0 ( i ) x 1 ( i ) . . . x n ( i ) ] \begin{bmatrix} x_0^{(i)}\\ x_1^{(i)}\\ ...\\ x_n^{(i)} \end{bmatrix}
    x j ( i ) x_j^{(i)} :第i个样本的第j个特征
  • 多特征下的预测函数
    h θ ( θ 0 , θ 1 , . . . θ n ) = θ 0 x 0 + θ 1 x 1 + . . . + θ n x n h_\theta(\theta_0,\theta_1,...\theta_n)=\theta_0x_0+\theta_1x_1+...+\theta_nx_n
    用向量表示则为:
    h θ ( θ ) = θ T x h_\theta(\vec \theta)=\vec \theta^\mathrm T \cdot \vec x
    代价函数可以写成向量格式如下
    J ( θ ) = 1 2 m i = 1 n ( h θ ( x ( i ) ) y ( i ) ) 2 J(\vec \theta)=\frac{1}{2m}\sum_{i=1}^n(h_\theta(\vec x^{(i)})-y^{(i)})^2

多元梯度下降法

  • 一个变量的的梯度下降
    重复 θ 0 : = θ 0 α 1 m i = 1 n h θ ( ( x ( i ) ) y ( i ) ) \theta_0:=\theta_0-\alpha \frac {1}{m}\sum_{i=1}^nh_\theta((x^{(i)})-y^{(i)})
    θ 1 : = θ 1 α 1 m i = 1 n h θ ( ( x ( i ) ) y ( i ) ) x ( i ) \theta_1:=\theta_1-\alpha \frac {1}{m}\sum_{i=1}^nh_\theta((x^{(i)})-y^{(i)})\cdot x^{(i)}
    直到 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1)收敛
  • 多个变量的梯度下降
    重复 θ j : = θ j α 1 m i = 1 n h θ ( ( x ( i ) ) y ( i ) ) x j ( i )     ( j = 0 , 1 , . . . , n ) \theta_j:=\theta_j-\alpha \frac {1}{m}\sum_{i=1}^nh_\theta((x^{(i)})-y^{(i)})\cdot x_j^{(i)} \ \ \ (j=0,1,...,n)
    其中之前定义过 x 0 ( i ) = 1 x_0^{(i)}=1 ,所以对于 θ 0 \theta_0 的更新就和一个变量的梯度下降相同,最初定义 θ 0 = 1 \theta_0=1 就是为了表达式的统一。

多元梯度下降法中的方法

特征缩放

用来加快梯度下降的速度。

  • 若某个特征的范围过大,则除以它最大值,将变化范围缩小,一般将特征范围缩小到 [-3,3]就可以接受
  • 均值归一化: x i x i s \frac {x_i-\overline x_i}{s} ,其中 x i \overline x_i 为该特征的平均值, s s 可以使用标准差,或者简单的用最大值减去最小值即可。这样处理之后,特征值一般会被放缩到 [-0.5,0.5]之间。

选择学习率

代价函数 J ( θ ) J(\vec \theta) 随迭代次数的变化图的用途

  • 若出现上升趋势,则说明学习率的取值过大
  • 自动收敛测试:可以选择一个合适的阈值( η \eta ),当每次迭代 J ( θ ) J(\vec \theta) 下降小于 η \eta 时,认为已经收敛了

选择学习率
可以选取一系列差一个数量级的值,eg:0.001,0.01,0.1,1等等
或者对其乘以一个常数来产生:0.003,0.03,0.3,3。然后根据 J ( θ ) J(\vec \theta) 随迭代次数变化的图来判断哪个值作为学习率最好。

特征和多项式回归

特征的选取
可利用现有特征来构造新特征,比如房屋预测中,知道房子的临街宽度和房子的纵深,那么就可以构造一个面积来作为新特征。
多项式回归
根据训练集中样本的分布选择一个合适的拟合函数,比如随着房子面积的增加,房价先快速增长,后增长速度变缓。就可以构造一个多项式来进行拟合。其预测函数可以构造成 J ( θ 0 , θ 1 , θ 2 ) = θ 0 + θ 1 s i z e + θ 2 s i z e J(\theta_0,\theta_1,\theta_2)=\theta_0+\theta_1 size +\theta_2 \sqrt{size} ,这样拟合效果可能比线性拟合会更好。

正规方程(区别于迭代法的直接解法)

  • 代价函数 J ( θ ) J(\theta) 为二次函数时
    直接令 θ J ( θ ) = 0 \frac{\partial}{\partial \theta}J(\theta)=0 即可求出使得 J ( θ ) J(\theta) 最小的解。
  • 同理,多变量可以由正规方程直接求解
    θ : = ( x T x ) 1 x T y \vec \theta:=(\vec x^T \vec x)^{-1}x^Ty
    其中 x \vec x 为各个样本的各个特征值组成的矩阵,具体构造方法如下,每行都是由一个样本的所有特征组成
    [ x ( 1 ) T x ( 2 ) T . . . x ( m ) T ] \begin{bmatrix} \vec x^{(1)}\mathrm T \\ \vec x^{(2)}\mathrm T \\ ...\\ \vec x^{(m)}\mathrm T \end{bmatrix}
    y y 为房屋价格组成的一个m维向量。

正规方程在矩阵不可逆的情况下的解决方法

  • 使用了线性相关的特征(删除相关的特征)
  • 样本数目m小于特征个数(可删除一些特征或者使用正则化方法,在之后将会提到)
  • 在Octave中用pinv()来求矩阵的逆,此时矩阵不可逆也不会出错,因为求出的是矩阵的伪逆。

猜你喜欢

转载自blog.csdn.net/weixin_42017042/article/details/86419899