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

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

作者: 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