美文网首页
【原创】线性回归基本概念梳理

【原创】线性回归基本概念梳理

作者: Gaafung峰 | 来源:发表于2020-05-15 15:29 被阅读0次

线性回归

基本公式入门

假设函数、误差符合高斯分布、似然函数、目标函数

使用场景:

1、存在已知的数据及结果,根据已知的数据和结果,预测对应新的数据可能发生的结果。

2、例子:

数据有: 工资x_1、年龄x_2(样本)

目标是:预测银行会贷款多少钱y(样本结果)

考虑参数:工资和年龄都会影响最终银行贷款的结果,各自有多大影响(参数)

已有的数据样本如图:


image.png

数据化:我们俩个特征(工资x_1、年龄x_2) ,y是银行最终借给我们多少钱

公式化:则存在以下公式

  • 假设函数:h_\theta(x) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} = \theta^Tx,来拟合工资、年龄的关系,获得预测值h_\theta(x)
  • 真实值为:y^{i} = h_\theta(x) + \epsilon^{(i)}(预测+误差)
  • 该公式是线性关系,目的是找到最合适的线,来拟合我们数据点,实现假设函数构成,当有新的x_1、x_2进入时,可实现预测y
    image.png
    作用:

1、找到最合适的线,拟合我们数据点

2、根据已有样本X[x1, x2, x3],及结果Y,形成拟合平面,即假设函数

h_\theta(x) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2}+ ……

整合后的矩阵形式为

h_\theta(x) = \sum_{i=0}^{n}\theta_ix_i = \theta^Tx

或者

h_\theta(X)=X\theta

[X为m×1的向量,为n×1的向量]

实际存在误差:

1、每个样本的真实值 = 预测值 + 误差

y^{i} = \theta^Tx^{(i)} + \epsilon^{(i)} (1)

2、误差是符合高斯分布

p(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\epsilon^{i})^2}{2\sigma^2}) (2)

3、两个公式代入,可通过 样本X、真实值Y,求误差概率

p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{i}-\theta^Tx^{(i)})^2}{2\sigma^2})

4、获得误差概率的公式目的是:推测相对准确的误差值

引入似然函数:

1、似然函数:概率用于一些已知参数,预测接下来观测所得到结果。

L(\theta|x) = P(X = x|\theta)

(给定输出x时,关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率)

也就是用样本去估计参数值,利用已知样本结果,推算有可能(最大概率)导致这样结果的参数值

例如:询问赌场10个人,9个人说赢钱,1个人说输钱,推测大概90%赢钱,参数θ为0.9

(关注的量不是事件发生概率,而是已知发生了某些事件,希望指知道参数为多少)

2、极大似然估计:模型已定、参数未知、通常若干次试验,观其结果,利用实验结果得到某个参数值能使样本出现的概率为最大

3、线性回归的误差概率似然函数,求它的最大值:

L(\theta) = \prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta) = \prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{i}-\theta^Tx^{(i)})^2}{2\sigma^2})

4、从累乘变为累加,使用到对数似然

logL(\theta) = log\prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta) = \sum_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{i}-\theta^Tx^{(i)})^2}{2\sigma^2})

化简

logL(\theta) = mlog\frac{1}{\sqrt{2\pi}\sigma} - \frac{1}{\sigma^2}·\frac{1}{2}·\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2

5、引入目标函数(损失函数),求\log L(θ)最大,则是求右侧式子最小:

目标函数 = \frac{1}{2}\sum(预测值 - 真实值)^2

J(\theta) = \frac{1}{2}·\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2 = \frac{1}{2}·\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 = \frac{1}{2}(X\theta-y)^T(X\theta-y)

梯度下降

image.png

为了使J(\theta)最小,直接求导不可取,实际矩阵逆可能不存在,只能求偏导

1、直接令J(\theta)的导数为0,则此时的J(\theta)最小

\nabla J(\theta) = \nabla_\theta(\frac{1}{2}(X\theta-y)^T(X\theta-y)) = \nabla_\theta(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y))

= \nabla_\theta(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty))

= \frac{1}{2}(2X^TX\theta - X^Ty -(y^TX)^T)

= X^TX\theta - X^Ty

\nabla J(\theta) = 0\theta = \frac{X^Ty}{X^TX} 或者 \theta = {X^Ty}({X^TX})^{-1},

所以前提是:{X^TX} 的逆矩阵是可求的,实际可能不存在

2、引入梯度概念:

损失函数:J(\theta_0,\theta_1,...,\theta_n) = \frac{1}{2m}\sum_{j=0}^m(h_\theta(x_0^{(j)},x_1^{(j)},...,x_n^{(j)})-y^{(j)})

梯度向量:此方向上涨或下降最快的地方(看图)

所以需要求偏导:\frac{\delta}{\delta\theta_i}J(\theta_0,\theta_1,\theta_2,...,\theta_n) = \frac{1}{m}\sum_{j=1}^{m}(h_\theta(x^{(j)}) -y^j)x_i^j,这就是当前==目标函数(损失函数)的梯度==

学习率(步长):每次往该梯度下降的长度

下降距离 = 学习率·梯度 = \alpha·\frac{\delta}{\delta\theta_i}J(\theta_0,\theta_1,\theta_2,...,\theta_n)

  • 取小,迭代次数多,取大,错过最优解
  • 选择方法
    • 1、取大,后面迭代变小
    • 2、取小,看是否收敛,不再收敛再次更小
    • 3、一般0.01开始

更新参数\theta,每走一步都更新一次

\theta_i = \theta_i - \alpha·\frac{\delta}{\delta\theta_i}J(\theta_0,\theta_1,\theta_2,...,\theta_n)

更新参数\theta 的三种方法:

  • 1、批量梯度下降:容易得到最优解,但是每次考虑所有样本,速度慢
    • \theta_i = \theta_i - \alpha·\frac{\delta}{\delta\theta_i}J(\theta) = \theta_i - \frac{1}{m}\sum_{j=1}^{m}(h_\theta(x^{(j)}) -y^j)x_i^j
    • \theta_i = \theta_i - \alpha·\frac{\delta}{\delta\theta_i}J(\theta) = \theta_i - \alpha\sum_{j=1}^{m}(h_\theta(x^{(j)}) -y^j)x_i^j
  • 2、随机梯度下降:每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向
    • \theta_i = \theta_i - \alpha·\frac{\delta}{\delta\theta_i}J(\theta) = \theta_i - (h_\theta(x^{(j)}) -y^j)x_i^j
  • 3、小批量梯度下降法:每次更新选择一小部分数据来算,实用
    • \theta_i = \theta_i - \alpha·\frac{\delta}{\delta\theta_i}J(\theta) = \theta_i - \frac{1}{10}\sum_{k=j}^{j+9}(h_\theta(x^{(k)}) -y^k)x_i^k
    • \theta_i = \theta_i - \alpha·\frac{\delta}{\delta\theta_i}J(\theta) = \theta_i - \alpha\sum_{j=t}^{t+x-1}(h_\theta(x^{(j)}) -y^j)x_i^{(j)}

什么时候不更新:有三种策略

  • 1、梯度下降的值小于一定阈值

    • 确定是否所有的\theta_i,梯度下降的距离都小于\epsilon,如果小于\epsilon则算法终止
  • 2、指定迭代次数

  • 3、两次迭代的损失函数J(\theta) 相差值最小

相关文章

网友评论

      本文标题:【原创】线性回归基本概念梳理

      本文链接:https://www.haomeiwen.com/subject/vmvcohtx.html