机器学习——线性回归(Linear Regression)

本文通过实例解析线性回归原理,介绍如何利用工资和年龄预测银行贷款额度。深入探讨线性回归算法,包括似然函数、目标函数及其求解方法——梯度下降。并讨论了批量梯度下降、随机梯度下降及小批量梯度下降的优缺点。
1、从一个例子来了解线性回归

数据:工资和年龄
目标:预测银行贷款额度
考虑:工资和年龄对银行贷款额度的影响程度

工资年龄贷款额度
40002520000
80003070000
50002835000
75003350000
120004085000

自变量(特征):工资(X1)、年龄(X2)
因变量:贷款额度(y)
假设θ1\theta_1θ1是工资参数,θ2\theta_2θ2是年龄参数,
则该例子中回归方程为:hθ(x)=θ0+θ1x1+θ2x2h_\theta(x) =\theta_0 + \theta_1x_1 +\theta_2x_2hθ(x)=θ0+θ1x1+θ2x2

2、线性回归算法详解(Linear Regression)

对于每个样本,输出值是各特征的线性组合:
hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxnh_\theta(x) =\theta_0 + \theta_1x_1 +\theta_2x_2+\cdots+\theta_nx_nhθ(x)=θ0+θ1x1+θ2x2++θnxn
hθ(x)=∑i=1nθixi=θTxh_\theta(x) = \displaystyle\sum_{i=1}^n\theta_ix_i=\theta^Txhθ(x)=i=1nθixi=θTx (其中θ0\theta_0θ0是偏置项)

假设样本数量为m,每个样本包含n个特征,则输入数据为一个m*n的矩阵。
θ\thetaθ:表示各个特征的权重
x(i)x^{(i)}x(i):表示第iii行所有的xxx
hθ(x(i))h_\theta(x^{(i)})hθ(x(i)):表示第iii行所有的xxx乘以θ\thetaθ后的取值
y(i)y^{(i)}y(i):表示第iii行对应的真实的yyy

误差

真实值与预测值之间的误差用ε\varepsilonε表示,对于每个样本,有
y(i)=θTx(i)+ε(i)y^{(i)} = \theta^Tx^{(i)} + \varepsilon^{(i)}y(i)=θTx(i)+ε(i)
误差ε(i)\varepsilon^{(i)}ε(i)服从均值为0方差为σ2\sigma^2σ2的高斯分布

似然函数

高斯分布函数密度曲线可以表示为:
f(x)=12πσe−(x−μ)22σ2f(x) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}f(x)=2πσ1e2σ2(xμ)2 (μ\muμ:均值 σ\sigmaσ:标准差)
则有误差服从高斯分布:
p(ε(i))=12πσe−(ε(i))22σ2p(\varepsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\varepsilon^{(i)})^2}{2\sigma^2}}p(ε(i))=2πσ1e2σ2(ε(i))2
将误差公式代入,则有
p(y(i)∣x(i);θ)=12πσe−(y(i)−θTx(i))22σ2p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}p(y(i)x(i);θ)=2πσ1e2σ2(y(i)θTx(i))2
似然函数:L(θ)=∏i=1mp(y(i)∣x(i);θ)=∏i=1m12πσe−(y(i)−θTx(i))22σ2L(\theta)=\displaystyle\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)=\displaystyle\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}L(θ)=i=1mp(y(i)x(i);θ)=i=1m2πσ1e2σ2(y(i)θTx(i))2
似然函数解释:什么样的参数组合θT\theta^TθT能够使得数据的预测值恰好是真实值的概率最大

似然函数公式化简

由于似然函数包含累乘算术,将累乘变成累加有利于计算
根据log(A∗B)=logA+logBlog(A*B)=logA+logBlog(AB)=logA+logB 则有
对数似然函数:
logL(θ)=log∏i=1mp(y(i)∣x(i);θ)=log∏i=1m12πσe−(y(i)−θTx(i))22σ2logL(\theta)=log\displaystyle\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)=log\displaystyle\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}logL(θ)=logi=1mp(y(i)x(i);θ)=logi=1m2πσ1e2σ2(y(i)θTx(i))2
展开化简:
∑i=1mlog(12πσe−(y(i)−θTx(i))22σ2)\displaystyle\sum_{i=1}^mlog(\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}})i=1mlog(2πσ1e2σ2(y(i)θTx(i))2)
=mlog12πσ−1σ2.12∑i=1m(y(i)−θTx(i))2)=mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}.\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)=mlog2πσ1σ21.21i=1m(y(i)θTx(i))2)
目标:让似然函数(对数似然函数)值越大越好,因此目标函数J(θ)J(\theta)J(θ)的值要越小越好

目标函数

J(θ)=12∑i=1m(y(i)−θTx(i))2)J(\theta)=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)J(θ)=21i=1m(y(i)θTx(i))2)
J(θ)=12∑i=1m(y(i)−θTx(i))2)J(\theta)=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)J(θ)=21i=1m(y(i)θTx(i))2)
=12∑i=1m(y(i)−hθ(x(i)))2=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-h_\theta(x^{(i)}))^2=21i=1m(y(i)hθ(x(i)))2
=12(Xθ−y)T(Xθ−y)=\frac{1}{2}(X\theta-y)^T(X\theta-y)=21(Xθy)T(Xθy)

J(θ)J(\theta)J(θ)求偏导,令偏导为0,得θ=(XTX)−1XTy\theta=(X^TX)^{-1}X^Tyθ=(XTX)1XTy

评估方法

最常用的评估项R2R^2R2:
R2=1−∑i=1m(yi^−yi)2∑i=1m(yi−yˉ)2R^2=1-\frac{\displaystyle\sum_{i=1}^m(\hat{y_i}-y_i)^2}{\displaystyle\sum_{i=1}^m(y_i-\bar{y})^2}R2=1i=1m(yiyˉ)2i=1m(yi^yi)2
残差平方和:∑i=1m(yi^−yi)2\displaystyle\sum_{i=1}^m(\hat{y_i}-y_i)^2i=1m(yi^yi)2
方差:∑i=1m(yi−yˉ)2\displaystyle\sum_{i=1}^m(y_i-\bar{y})^2i=1m(yiyˉ)2
R2R^2R2越接近1,我们认为模型拟合效果越好

3、梯度下降

当引入了目标函数J(θ)J(\theta)J(θ)之后,如何进行求解,不是每次都可以直接求解的(线性回归可直接求目标函数的偏导为0是特例)
梯度下降是一种寻找目标函数最小化的方法。
目标函数为:
J(θ)=12∑i=1m(y(i)−θTx(i))2)J(\theta)=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)J(θ)=21i=1m(y(i)θTx(i))2)
θi=θi−α∂∂θiJ(θ)\theta_i = \theta_i - \alpha\frac{\partial}{ \partial\theta_i}J(\theta)θi=θiαθiJ(θ)
α\alphaα:学习率,会对结果产生很大影响,一般设置较小

图片来源于:https://www.jianshu.com/p/93d9fea7f4c2

从数学的角度看,梯度的方向是函数增长最快的方向,梯度的反方向就是函数减小最快的方向。
越接近最优解的时候,步长越小。因为这个向量等于 αi\alpha_iαi与偏导数 的乘积,虽然αi\alpha_iαi始终是一个定值,但是越接近最值的时候,这个坡度就会越缓,从而导数的值就越小,也就是乘积变小了,这就是看到步长变小的缘故。

  • 批量梯度下降

    每次都考虑所有的样本,容易得到最优解,但是速度慢

  • 随机梯度下降

    每次随机找一个样本,迭代速度快,但不一定每次都朝着收敛的方向

  • 小批量梯度下降

    每次更新选择一小部分数据来计算,较为实用!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值