机器学习=====>线性回归

本文围绕线性回归展开,介绍了基于均方误差最小化的最小二乘法进行参数估计,给出ω和b的闭式解。还提及更一般情形下的似然函数与对数似然,以及引入正则化项处理矩阵不满秩问题。阐述了对数线性回归、广义线性模型,介绍了梯度下降法的三种类型,并以波士顿房价预测为例简单实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性回归


最近很久没出来活动了,好多学习资源被我浪费了,经过了半年的错过。现在感觉到自己不济,抓紧时间吧。

回归正题,线性回归试图学得f(xi)=ωxi+bf(x_{i})=\omega x_{i}+bf(xi)=ωxi+b,使得f(xi)≃yif(x_{i})\simeq y_{i}f(xi)yi
西瓜书讲到均方误差 MSE 是回归任务中最常用的性能度量,试图让 MSE 最小化。
(ω∗,b∗)=arg min(w,b)∑i=1m(f(xi)−yi)2=arg min(w,b)∑i=1m(f(xi)−ωxi−b)2(\omega^*,b^*)=\underset{(w,b)}{arg\ min}\sum_{i=1}^{m}(f(x_{i})-y_{i})^2 \\=\underset{(w,b)}{arg\ min}\sum_{i=1}^{m}(f(x_{i})-\omega x_{i}-b)^2(ω,b)=(w,b)arg mini=1m(f(xi)yi)2=(w,b)arg mini=1m(f(xi)ωxib)2

基于均方误差最小化来进行模型求解的方法称之为“最小二乘法”。
求解 ω\omegaωbbb 使E(w,b)=∑i=1m(yi−ωxi−b)2E_{(w,b)}=\sum_{i=1}^{m}(y_{i}-\omega x_{i}-b)^2E(w,b)=i=1m(yiωxib)2最小化的过程,称之为线性回归模型的最小二乘“参数估计”。
E(w,b)E_{(w,b)}E(w,b)分别对 ω\omegaωbbb 求导,得到:

∂E(ω,b)∂ω=2(ω∑i=1mxi2−∑i=1m(yi−b)xi)−−−−−(1.1)\frac{\partial E(\omega,b)}{\partial \omega} =2(\omega\sum_{i=1}^{m}x_{i}^2-\sum_{i=1}^{m}(y_{i}-b)x_{i})-----(1.1)ωE(ω,b)=2(ωi=1mxi2i=1m(yib)xi)(1.1)

∂E(ω,b)∂b=2(mb−∑i=1m(yi−ωxi))−−−−(1.2)\frac{\partial E(\omega,b)}{\partial b} =2(mb-\sum_{i=1}^{m}(y_{i}-\omega x_{i})) ----(1.2)bE(ω,b)=2(mbi=1m(yiωxi))(1.2)

令式(1.1)和(1.2)为0可得到 ω\omegaωbbb 最优解的闭式解

ω=∑i=1myi(xi−xˉ)∑i=1mxi2−1m(∑i=1mxi)2\omega=\frac{\sum_{i=1}^{m}y_{i}(x_{i}-\bar{x})}{\sum_{i=1}^{m}x_{i}^2-\frac{1}{m}(\sum_{i=1}^{m}x_{i})^2}ω=i=1mxi2m1(i=1mxi)2i=1myi(xixˉ)

b=1m∑−i=1m(yi−ωxi)b=\frac{1}{m}\sum-{i=1}^{m}(y_{i}-\omega x_{i})b=m1i=1m(yiωxi)

在这里,可以先求出 bbb ,然后带入(1.1)式中,求出 ω\omegaω ,其中 xˉ=1m∑i=1mxi\bar{x}=\frac{1}{m}\sum_{i=1}^{m}x_{i}xˉ=m1i=1mxixix_{i}xi 的均值。

更一般的情形给定数据 DDD ,样本由 ddd 个属性描述,此时试图学得

f(xi)=ωTxi+bf(x_{i})=\omega^{T}x_{i}+bf(xi)=ωTxi+b使得f(xi)≃yif(x_{i})\simeq y_{i}f(xi)yi
一般地,
b∼P(bi)=12πσe(−((bi)2)2σ)b\sim P\left(b^i\right)=\frac{1}{\sqrt{2\pi}\sigma}e^{(-\frac{((b^{i})^2)}{2\sigma})}bP(bi)=2πσ1e(2σ((bi)2))
写出似然函数
L(ω)⇒P(f(xi)∣xi:ω)=12πσe(−((yi−ωxi)2)2σ)L(\omega)\Rightarrow P(f(x_{i})\mid x_{i}:\omega )=\frac{1}{\sqrt{2\pi}\sigma}e^{(-\frac{((y^{i}-\omega x^{i})^2)}{2\sigma})}L(ω)P(f(xi)xi:ω)=2πσ1e(2σ((yiωxi)2))

取对数,写出对数似然

ln⁡L(θ)=ln⁡∏i=1m12πσe(−((yi−ωxi)2)2σ)=mln⁡12πσ−12σ2∑i=1m(yi−ωxi)2\ln L(\theta)\\=\ln \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}e^{(-\frac{((y^{i}-\omega x^{i})^2)}{2\sigma})} \\ =m\ln\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}\sum_{i=1}^{m}(y^{i}-\omega x^{i})^2lnL(θ)=lni=1m2πσ1e(2σ((yiωxi)2))=mln2πσ12σ21i=1m(yiωxi)2

观察上式,为使得误差最小(尽可能的小),只需要似然公式的后半部分尽可能的小即可。

U(ω)=12∑i=1m(yi−ωxi)2=12∑i=1m(u(ω(xi))−yi)2=12(xω−y)T(xω−y)U(\omega)\\=\frac{1}{2}\sum_{i=1}^{m}(y^{i}-\omega x^{i})^2\\=\frac{1}{2}\sum_{i=1}^{m}(u(\omega(x^{i}))-y^{i})^2\\=\frac{1}{2}(x\omega-y)^T(x\omega-y)U(ω)=21i=1m(yiωxi)2=21i=1m(u(ω(xi))yi)2=21(xωy)T(xωy)
此处,是把数据集 DDD 表示成矩阵形式。

U(ω)U(\omega)U(ω)ω\omegaω 求导可得:
∂U(ω)∂ω=XTXω−XTy\frac{\partial U(\omega) }{\partial \omega}=X^TX\omega-X^TyωU(ω)=XTXωXTy
其中,主要是将 12(xω−y)T(xω−y)\frac{1}{2}(x\omega-y)^T(x\omega-y)21(xωy)T(xωy) 先转置运算,乘积打开,再求导。
∂U(ω)∂ω=0\frac{\partial U(\omega) }{\partial \omega}=0ωU(ω)=0 可得:ω=(XTX)−1XTy\omega=(X^TX)^{-1}X^Tyω=(XTX)1XTy
以为喜大普奔了,现实中往往是残酷的(XTXX^TXXTX往往不是满秩矩阵)

length=20,width=20
救命的西瓜书来了,,常用的做法是引入正则化项,前提是列多于行(也就是所谓的变量很多,样例少)。
对数线性回归lny=ωTx+blny=\omega^Tx+blny=ωTx+b 。这个式子只是隐式函数而已,火眼金睛还是线性回归,但其实质上是在求取输入空间到输出空间的非线性函数映射。
不懂?画一个 y=eωTx+by=e^{\omega^Tx+b}y=eωTx+by′=ωTx+by'=\omega^Tx+by=ωTx+b 。比对点与点的联系。
不过,实际中样例数真的有这么穷到比变量少的?(保留)
广义线性模型y=g−1(ωTx+b)y=g^{-1}(\omega^Tx+b)y=g1(ωTx+b)
其中 g−1g^{-1}g1 称之为“联系函数”,对数线性回归是广义线性模型在 g(⋅)=ln(⋅)g(\cdot)=ln(\cdot)g()=ln() 时的特例。
对于常用的评估项 R2=1−∑(yi^−yi)2∑(yi−yˉ)2R^2 = 1-\frac{\sum (\hat{y_{i}}-y_{i})^2}{\sum (y_{i}-\bar{y})^2}R2=1(yiyˉ)2(yi^yi)2 ,这个当然是越接近于1越好啊。

机器学习的套路来了?
对于得到 y=ωTx+by=\omega^Tx+by=ωTx+b 这样一个目标函数,直接求解,未必一定可解啊(表示不想死在计算上)。交给机器一大把数据,来,线性回归,解一下,必须的线性回归,别的我都不要,如何迭代自己产生能量。这里主要是讲第二种求解方法:梯度下降

梯度下降:对自变量不停地更新,也就是 y=ωTx+by=\omega^Tx+by=ωTx+b 中对 ω\omegaωbbb 求偏导,使得目标函数不断趋近于最小值的一个过程。

批量梯度下降: 把所有样本都扔进去,容易得到最优解,但是速度上就很慢了。
随机梯度下降: 每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向。
小批量梯度下降: 每次更新,选择一小部分数据来算,实用性较强。

自己来一波儿?(这不是在为难我吗?┭┮﹏┭┮)

记得没错的话,可以使用sklearn里自带的数据集---------波士顿房价预测

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.metrics import mean_squared_error

使用 LinearRegression() 得到的线性回归的预测系数:

 [[-0.10355227  0.16306988  0.00343696  0.09555156 -0.23497297  0.25485994
   0.01771771 -0.37762936  0.3073077  -0.22716396 -0.21499725  0.07761778
  -0.43457091]]

采用 SGDRegressor() 求得的线性回归的预测系数:

 [-6.82294546e-02  9.46123678e-02 -4.82762279e-02  1.11277826e-01
 -1.06705658e-01  3.15981788e-01  2.15120318e-04 -2.32268920e-01
  9.51851934e-02 -4.53409990e-02 -1.97275683e-01  7.73113250e-02
 -3.89289986e-01]

最后给出线性回归和梯度下降法的 MSE

线性方程的 MSE: 16.81885806991436
梯度下降法下均方误差为: 15.562294247971021

仅仅是用了sklearn库里的小沙粒来学习,空了继续更新自己的学习路。
欢迎评论区留言 敲我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值