(线性回归是较为基础的模型,但当中充分体现了机器学习的一个重要思想:最小化损失函数)

  • 内容

    寻找一个函数模型用以拟合数据的分布,使得将样本的各特征的值代入函数计算出的结果,与样本的标签尽量接近。而这种拟合的程度需要一个度量,即:损失函数,又称代价函数。


    在回归中常用平方误差函数(square error function):

    损失函数定义为: J ( θ ) = 1 2 m ∑ i = 1 m [ h ( x i ) − y i ] 2 J(θ)=\frac{1}{2m}\sum_{i=1}^m[h(x_i)-y_i]^2 J(θ)=2m1i=1m[h(xi)yi]2

    其中 h θ ( x ) h_θ(x) hθ(x) 为回归模型, θ θ θ 为函数 h h h 中的系数; x i ∈ X x_i∈X xiX X X X 为训练数据集; y i y_i yi x i x_i xi 对应标签。


    h ( x i ) − y i h(x_i)-y_i h(xi)yi 计算了模型对每一个样本的预测值与真实标签的差。

    当预测值越接近真实标签时, J ( θ ) J(θ) J(θ) 的值越小,则模型的预测效果越好。所以在学习回归模型中,实际上求的是能使 J ( θ ) J(θ) J(θ) 函数值最小的 h θ ( x ) h_θ(x) hθ(x),也就是求函数中的 θ θ θ,即:

    m i n i m i z e ( θ ) J ( θ ) minimize_{(θ)} J(θ) minimize(θ)J(θ)


    综上,如果要得到回归模型:
    (1) 首先根据数据分布选取合适的模型结构;
    (2) 而后计算能使 J ( θ ) J(θ) J(θ) 值最小的参数 θ θ θ

    那么 θ θ θ 要如何求呢?就是使用优化算法,在这里选取梯度下降。

  • 梯度下降

    1. 梯度下降(Gradient Descent)

      首先 J ( θ ) J(θ) J(θ) θ θ θ求导算出梯度,而后使用梯度对 θ θ θ 进行更新。

      假设 h θ ( x i ) = θ 1 x i 1 + θ 2 x i 2 h_θ(x_i)=θ^1x_i^1+θ^2x_i^2 hθ(xi)=θ1xi1+θ2xi2

      J ( θ ) = 1 2 m ∑ i = 1 m [ θ 1 x 1 1 + θ 2 x 1 2 − y i ] 2 J(θ)=\frac{1}{2m}\sum_{i=1}^m[θ^1x_1^1+θ^2x_1^2-y_i]^2 J(θ)=2m1i=1m[θ1x11+θ2x12yi]2

      其中 x i k x_i^k xik i i i 为数据集中第 i i i 个样本, k k k 为一个样本中第 k k k 个特征。


      使用所有训练数据计算梯度:

      Δ = α ∂ ∂ θ j J ( θ ) Δ=α\frac{\partial}{\partialθ^j}J(θ) Δ=αθjJ(θ) α α α 为学习速率,

      如果 α α α 过小则训练速度较慢,向解前进的过程中走的步子太小,产生梯度消失现象,而且随着更新迭代次数的增加,越接近函数的底部,由导数计算的梯度收敛趋于平缓,训练效率减慢,也会产生梯度消失的现象。;如果太大则可能在解的两侧跳跃,直至发散,产生梯度爆炸现象。


      更新参数:

      θ 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ ) θ^1:=θ^1-α\frac{\partial}{\partialθ^1}J(θ) θ1:=θ1αθ1J(θ)

      θ 2 : = θ 2 − α ∂ ∂ θ 2 J ( θ ) θ^2:=θ^2-α\frac{\partial}{\partialθ^2}J(θ) θ2:=θ2αθ2J(θ)

      此方法可以得到 θ θ θ全局最优解,但每次都使用全部数据,训练的速度较慢。

    2. 随机梯度下降

      以上的梯度下降每次都是用全部数据,而随机梯度下降使用部分数据。

      在计算梯度时可以从数据集中抽取一小部分数据做小批量梯度下降 MBGD(Mini-batch Gradient Descent)或每次只使用一个数据 SGD(Stochastic Gradient Descent)。

      MBGD 与 SGD 训练速度较快,不过伴随的一个问题是噪音较 GD 多,使得并不是每次迭代都向着整体最优的方向进行。

    3. 最优解?

      批量梯度下降:最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。

      随机梯度下降:最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。

  • 多项式回归

    多项式回归是回归模型的一种,具有很多形式:

    h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 ( x 2 ) 2 h_θ(x)=θ_0+θ_1x_1+θ_2(x_2)^2 hθ(x)=θ0+θ1x1+θ2(x2)2

    h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 ( x 2 ) 2 + θ 3 ( x 3 ) 3 h_θ(x)=θ_0+θ_1x_1+θ_2(x_2)^2+θ_3(x_3)^3 hθ(x)=θ0+θ1x1+θ2(x2)2+θ3(x3)3

    h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_θ(x)=θ_0+θ_1x_1+θ_2\sqrt{x_2} hθ(x)=θ0+θ1x1+θ2x2

    ……

    首先要分析数据分布,并熟悉不同函数的特性,选取不同的特征形式,从而采用合适的模型拟合数据。

  • 最小二乘解

    1. 缘由

      A m ∗ n X = b A_{m*n}X=b AmnX=b

      ① m<n,未知数个数 > 方程数个数:
      · 解 X 不唯一,存在一个解的矢量空间;

      ② m=n,未知数个数 = 方程数个数
      · 若 A 可逆,就有唯一解, X = A − 1 b X=A^{-1}b X=A1b

      ③ m>n,未知数个数 < 方程数个数
      · 一般情况下无解,除非 b 属于 A 的列向量组成的子空间。


      考虑 m>=n 且 r(A)=n 的情况(样本数 >= 参数个数),此时方程称为超定方程(方程数 > 未知数个数)。

      如果解不存在,那么找一个最近似的解仍是有意义的。
      ∣ ∣ A X − b ∣ ∣ ||AX-b|| AXb 最小的解,即 A X ≈ b AX\approx b AXb ∣ ∣ ⋅ ∣ ∣ ||·|| 为范数。

    2. 正规方程
      i.
      ∣ ∣ A X − b ∣ ∣ , A = [ a 1 , a 2 , … , a 3 ] ||AX-b||,A=[a_1,a_2,…,a_3] AXbA=[a1,a2,,a3]
      可认为 A X AX AX 遍历了 A 的整个列空间,即由 A 的列生成的 R m R^m Rm的子空间。而我们需要找到在子空间中最接近 b 的情况。

      ii.
      几何上, ∣ ∣ A X − b ∣ ∣ ||AX-b|| AXb 最小,即使得 AX 尽量接近 b (如图),也就是让向量 A X − b AX-b AXb 垂直 A 的列空间,也就是让 A X − b AX-b AXb 垂直 A 的每一列。(当 A X − b AX-b AXb 垂直于 A X AX AX ∣ ∣ A X − b ∣ ∣ ||AX-b|| AXb 最小)

      在这里插入图片描述

      则有 a i T ( A X − b ) a_i^T(AX-b) aiT(AXb),即:

      [ a 1 T , a 2 T , … , a n T ] ⋅ ( A X − b ) = A T ( A X − b ) = 0 [a_1^T,a_2^T,…,a_n^T]·(AX-b)=A^T(AX-b)=0 [a1T,a2T,,anT](AXb)=AT(AXb)=0

      解得

      X = ( A T A ) − 1 A T b X=(A^TA)^{-1}A^Tb X=(ATA)1ATb

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐