机器学习 - 线性回归、最小二乘解
(线性回归是较为基础的模型,但当中充分体现了机器学习的一个重要思想:最小化损失函数)
-
内容
寻找一个函数模型用以拟合数据的分布,使得将样本的各特征的值代入函数计算出的结果,与样本的标签尽量接近。而这种拟合的程度需要一个度量,即:损失函数,又称代价函数。
在回归中常用平方误差函数(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(θ)=2m1∑i=1m[h(xi)−yi]2
其中 h θ ( x ) h_θ(x) hθ(x) 为回归模型, θ θ θ 为函数 h h h 中的系数; x i ∈ X x_i∈X xi∈X, 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(θ) 值最小的参数 θ θ θ;那么 θ θ θ 要如何求呢?就是使用优化算法,在这里选取梯度下降。
-
梯度下降
-
梯度下降(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(θ)=2m1∑i=1m[θ1x11+θ2x12−yi]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(θ) Δ=α∂θj∂J(θ), α α α 为学习速率,
如果 α α α 过小则训练速度较慢,向解前进的过程中走的步子太小,产生梯度消失现象,而且随着更新迭代次数的增加,越接近函数的底部,由导数计算的梯度收敛趋于平缓,训练效率减慢,也会产生梯度消失的现象。;如果太大则可能在解的两侧跳跃,直至发散,产生梯度爆炸现象。
更新参数:
θ 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ ) θ^1:=θ^1-α\frac{\partial}{\partialθ^1}J(θ) θ1:=θ1−α∂θ1∂J(θ)
θ 2 : = θ 2 − α ∂ ∂ θ 2 J ( θ ) θ^2:=θ^2-α\frac{\partial}{\partialθ^2}J(θ) θ2:=θ2−α∂θ2∂J(θ)
此方法可以得到 θ θ θ 的全局最优解,但每次都使用全部数据,训练的速度较慢。
-
随机梯度下降
以上的梯度下降每次都是用全部数据,而随机梯度下降使用部分数据。
在计算梯度时可以从数据集中抽取一小部分数据做小批量梯度下降 MBGD(Mini-batch Gradient Descent)或每次只使用一个数据 SGD(Stochastic Gradient Descent)。
MBGD 与 SGD 训练速度较快,不过伴随的一个问题是噪音较 GD 多,使得并不是每次迭代都向着整体最优的方向进行。
-
最优解?
批量梯度下降:最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。
随机梯度下降:最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。
-
-
多项式回归
多项式回归是回归模型的一种,具有很多形式:
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
……
首先要分析数据分布,并熟悉不同函数的特性,选取不同的特征形式,从而采用合适的模型拟合数据。
-
最小二乘解
-
缘由
设 A m ∗ n X = b A_{m*n}X=b Am∗nX=b,
① m<n,未知数个数 > 方程数个数:
· 解 X 不唯一,存在一个解的矢量空间;② m=n,未知数个数 = 方程数个数
· 若 A 可逆,就有唯一解, X = A − 1 b X=A^{-1}b X=A−1b;③ m>n,未知数个数 < 方程数个数
· 一般情况下无解,除非 b 属于 A 的列向量组成的子空间。
考虑 m>=n 且 r(A)=n 的情况(样本数 >= 参数个数),此时方程称为超定方程(方程数 > 未知数个数)。
如果解不存在,那么找一个最近似的解仍是有意义的。
求 ∣ ∣ A X − b ∣ ∣ ||AX-b|| ∣∣AX−b∣∣ 最小的解,即 A X ≈ b AX\approx b AX≈b, ∣ ∣ ⋅ ∣ ∣ ||·|| ∣∣⋅∣∣为范数。 -
正规方程
i.
∣ ∣ A X − b ∣ ∣ , A = [ a 1 , a 2 , … , a 3 ] ||AX-b||,A=[a_1,a_2,…,a_3] ∣∣AX−b∣∣,A=[a1,a2,…,a3]
可认为 A X AX AX 遍历了 A 的整个列空间,即由 A 的列生成的 R m R^m Rm的子空间。而我们需要找到在子空间中最接近 b 的情况。ii.
几何上, ∣ ∣ A X − b ∣ ∣ ||AX-b|| ∣∣AX−b∣∣ 最小,即使得 AX 尽量接近 b (如图),也就是让向量 A X − b AX-b AX−b 垂直 A 的列空间,也就是让 A X − b AX-b AX−b 垂直 A 的每一列。(当 A X − b AX-b AX−b 垂直于 A X AX AX 时 ∣ ∣ A X − b ∣ ∣ ||AX-b|| ∣∣AX−b∣∣ 最小)
则有 a i T ( A X − b ) a_i^T(AX-b) aiT(AX−b),即:
[ 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]⋅(AX−b)=AT(AX−b)=0
解得
X = ( A T A ) − 1 A T b X=(A^TA)^{-1}A^Tb X=(ATA)−1ATb
-
更多推荐



所有评论(0)