线性回归
线性回归是在假设特征满足线性关系,根据给定的训练数据训练一个线性模型,并用此模型进行预测。即使用一条函数曲线使其训练数据很好的拟合已知函数,并很好的预测未知数据。回归问题按照输入变量的个数可以分为一元回归和多元回归。
一、 单变量线性回归
线性回归是在假设特征满足线性关系,根据给定的训练数据训练一个线性模型,并用此模型进行预测。即使用一条函数曲线使其训练数据很好的拟合已知函数,并很好的预测未知数据。回归问题按照输入变量的个数可以分为一元回归和多元回归。

对于一元线性回归,函数用可以用一个公式来表示,即假设xx和hθ(x)hθ(x)之间存在这样的关系:
hθ(x)=θ0+θ1xhθ(x)=θ0+θ1x(1)hθ(x)hθ(x)即我们预测的数值,该值与实际数值之间的差异,即为误差:
error=|y−hθ(x)|error=|y−hθ(x)|(2)由于求绝对值过于繁琐,我们将其视为误差平方和,并对齐求均值,即代价(损失)函数:
J(θ0,θ1)=12mm∑i=1(hθ(x(i))−y(i))2=12mm∑i=1(θ0+θ1xi−y(i))2J(θ0,θ1)=12mm∑i=1(hθ(x(i))−y(i))2=12mm∑i=1(θ0+θ1xi−y(i))2(3)我们的目的就是使得预测值尽可能地接近实际值,即误差越小越好。即找到一组(θ0,θ1)(θ0,θ1),使得误差平方和最小。
Hypothesis:hθ(x)=θ0+θ1xhθ(x)=θ0+θ1x
Parameters:θ0,θ1θ0,θ1
Cost Function:J(θ0,θ1)=12m∑mi=1(hθ(x(i))−y(i))2J(θ0,θ1)=12m∑mi=1(hθ(x(i))−y(i))2
Goal:minimizeθ0,θ1J(θ0,θ1)minimizeθ0,θ1J(θ0,θ1)
二、多元线性回归

对于多元线性回归而言:
hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=n∑i=0θixi=θTxhθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=n∑i=0θixi=θTx(4)使用极大似然函数来解释最小二乘:
y(i)=θTX(i)+ε(i)y(i)=θTX(i)+ε(i)(5)根据中心极限定理,误差ε(i)(1≤i≤n)ε(i)(1≤i≤n)是独立同分布的,服从均值为0,方差为特定σ2σ2的高斯分布。
P(ε(i))=1√2πσexp(−(ε(i))22σ2)P(ε(i))=1√2πσexp⎛⎝−(ε(i))22σ2⎞⎠(6)将式(5)(5)带入式(6)(6)中可得:
P(y(i)|x(i);θ)=1√2πσexp(−(y(i)−θTX(i))22σ2)P(y(i)|x(i);θ)=1√2πσexp⎛⎝−(y(i)−θTX(i))22σ2⎞⎠(7)其似然函数:
L(θ)=m∏i=1P(y(i)∣x(i);θ)=m∏i=11√2πσexp(−(y(i)−θTx(i))22σ2)L(θ)=m∏i=1P(y(i)∣x(i);θ)=m∏i=11√2πσexp⎛⎝−(y(i)−θTx(i))22σ2⎞⎠高斯的对数似然与最小二乘
l(θ)=logL(θ)=log(m∏i=11√2πσexp(−(y(i)−θTx(i))22σ2))=m∑i=1log(1√2πσexp(−(y(i)−θTx(i))22σ2))=m⋅log1√2πσ−1σ2⋅12m∑i=1(y(i)−θTX(i))2l(θ)=logL(θ)=log⎛⎝m∏i=11√2πσexp⎛⎝−(y(i)−θTx(i))22σ2⎞⎠⎞⎠=m∑i=1log⎛⎝1√2πσexp⎛⎝−(y(i)−θTx(i))22σ2⎞⎠⎞⎠=m⋅log1√2πσ−1σ2⋅12m∑i=1(y(i)−θTX(i))2其中m⋅log1√2πσm⋅log1√2πσ为常数,则关于θ的代价函数为:
J(θ)=12m∑i=1(hθ(X(i))−y(i))2J(θ)=12m∑i=1(hθ(X(i))−y(i))21 | temp=(X * theta - y)' * (X * theta - y); |
三、梯度下降算法
可以理解为一个人下山的过程,如果想要快速走下山,但是又不知道方向,怎么办呢?显然很容易想到的是一定往下山的方向走。但是选哪个方向呢?这就需要有冒险精神,每次选择最陡峭的方向,即山高度下降最快的地方,这样下山最快。
但是,又有一个问题来了,没有办法每次选择的都是最陡峭的地方。这就需要每次都选定一段距离,每走一段距离之后,就重新确定当前所在位置的高度下降最快的地方。这样,这个人每次下山的方向都可以近似看作是每个距离段内高度下降最快的地方。


将下山的例子中每一段路的距离取名叫学习率(Learning Rate,也称步长,用α表示),把一次下山走一段距离叫做一次迭代。算法详细过程:
- 确定定参数的初始值,计算损失函数的偏导数。
- 将参数代入偏导数计算出梯度。若梯度为 0,结束;否则转到 3。
- 用步长乘以梯度,并对参数进行更新。
重复2-3,对于多元线性回归来说,拟合函数为:
hθ(x)=n∑i=0θixi=θ0+θ1x+⋯+θnxnhθ(x)=n∑i=0θixi=θ0+θ1x+⋯+θnxn损失函数为:
J(θ)=12mn∑i=0(y(i)−hθ(x(i)))2J(θ)=12mn∑i=0(y(i)−hθ(x(i)))2损失函数的偏导数为:
∂J(θ)∂θi=1mm∑j=1(hθ(x(j))−y(j))x(j)i=1mm∑j=1(n∑i=0θix(j)i−y(j))x(j)i,(i=0,1,2,3,…,n)∂J(θ)∂θi=1mm∑j=1(hθ(x(j))−y(j))x(j)i=1mm∑j=1(n∑i=0θix(j)i−y(j))x(j)i,(i=0,1,2,3,…,n)每次更新参数的操作为:
θi=θi−α∂J(θ)θi=θi−α1mm∑j=1(hθ(x(j))−y(j))x(j)iθi=θi−α∂J(θ)θi=θi−α1mm∑j=1(hθ(x(j))−y(j))x(j)i1 | for iter = 1:num_iters |
四、正规方程(最小二乘 )
得到多元线性回归的代价函数,可以通过求导和梯度下降来寻找最优的参数。
一元线性回归是对a、b求偏导,多元线性回归是对θ求偏导,即:
目标函数
J(θ)=12mm∑i=1(hθ(X(i))−y(i))2=12m(Xθ−y)T⋅(Xθ−y)J(θ)=12mm∑i=1(hθ(X(i))−y(i))2=12m(Xθ−y)T⋅(Xθ−y)对θθ求梯度:
∇θJ(θ)=∇θ(12m(Xθ−y)T⋅(Xθ−y))=12m∇θ((θTXT−yT)⋅(Xθ−y))=12m∇θ(θTXTXθ−θTXTy−yTXθ+yTy)=12m(∂(θTXTXθ)∂θ−∂(θTXTy)∂θ−∂(yTXθ)∂θ+∂(yTy)∂θ)∇θJ(θ)=∇θ(12m(Xθ−y)T⋅(Xθ−y))=12m∇θ((θTXT−yT)⋅(Xθ−y))=12m∇θ(θTXTXθ−θTXTy−yTXθ+yTy)=12m(∂(θTXTXθ)∂θ−∂(θTXTy)∂θ−∂(yTXθ)∂θ+∂(yTy)∂θ)矩阵(向量)求导法则

其中第一项:∂∂θθTXTXθ∂∂θθTXTXθ,由矩阵求导法则:
∂θTAθ∂θ=(A+AT)θ(A是不含有X中包含项的矩阵)∂θTAθ∂θ=(A+AT)θ(A是不含有X中包含项的矩阵)将XTXXTX看作AA,可得:
∂θTXTXθ∂θ=(XTX+XTX)θ=2XTXθ∂θTXTXθ∂θ=(XTX+XTX)θ=2XTXθ第二项:∂∂θθTXTy∂∂θθTXTy
矩阵求导法则:
∂XTA∂X=A∂XTA∂X=A
将XTyXTy看作AA,可得:
∂(θTXTy)∂θ=XTy∂(θTXTy)∂θ=XTy第三项:∂∂θyTXθ∂∂θyTXθ
矩阵求导法则:
∂AX∂X=AT∂AX∂X=AT
将yTXyTX看作AA,可得:
∂(yTXθ)∂θ=XTy∂(yTXθ)∂θ=XTy第四项:∂∂θyTy∂∂θyTy
矩阵求导法则:
∂A∂X=0∂A∂X=0
将yTyyTy看作AA,可得:
∂(yTy)∂θ=0∂(yTy)∂θ=0综上所述
∇θJ(θ)=12m(∂(θTXTXθ)∂θ−∂(θTXTy)∂θ−∂(yTXθ)∂θ+∂(yTy)∂θ)=12m(2XTXθ−2XTy)=1m(XTXθ−XTy)∇θJ(θ)=12m(∂(θTXTXθ)∂θ−∂(θTXTy)∂θ−∂(yTXθ)∂θ+∂(yTy)∂θ)=12m(2XTXθ−2XTy)=1m(XTXθ−XTy)当∇θJ(θ)=0∇θJ(θ)=0时
XTXθ=XTyθ=(XTX)−1XTyXTXθ=XTyθ=(XTX)−1XTy如果XTXXTX不可逆,可能有两个原因:
- 列向量线性相关,即训练集中存在冗余特征,此时应该剔除掉多余特征;
- 特征过多,此时应该去掉影响较小的特征,或使用“正则化”;
方法选择
梯度下降法 | 正规方程法 | |
---|---|---|
学习率αα | 需要 | 不需要 |
特征归一化 | 需要 | 不需要 |
计算次数 | 需要迭代很多次 | 不需要迭代 |
特征数量 | 受特征数量影响较小,即使nn很大也可以正常工作 | 如果nn很大计算速度会很慢 |