线性模型

作者: 阿童89 | 来源:发表于2018-10-15 13:00 被阅读23次

    线性回归模型有两种理解角度
    1、多元线性回归
    1)最小二乘法
    2)大似然估计
    2、算法常用的方法
    3、岭回归,lasso回归,弹性网络
    4、python代码

    一、多元线性回归
    1、最小二乘法
    假设线性回归模型具有如下形式:
    f(x)=\sum_{i=0}^{N}\theta _{i}^{T}x_{i}

    所谓最小二乘法是求出一个合适的θ值,使所有观察值的残差平方和达到最小,此时目标函数为
    min\frac{1}{N}\sum_{i=0}^{N}(f(x)-y_{i})^{2}
    \frac{1}{N}\sum_{i=0}^{N}(\theta _{i}^{T}X-y_{i})^{2}
    =\frac{1}{N}\sum_{i=0}^{N}(X{i}^{T}\theta _-y_{i})^{2}
    =\frac{1}{N}||X\theta -y)||^{2}

    问题等价于:
    min\frac{1}{N}||X\theta -y)||^{2}
    Q=\frac{1}{N}||X\theta -y)||^{2}
    =\frac{1}{N}(X\theta -y)^{T}(X\theta -y)
    =\frac{1}{N}(\theta ^{T}X^{T} -y^{T})(X\theta -y)
    =\frac{1}{N}(\theta ^{T}X^{T}X\theta -2\theta ^{T}X^{T}y+y^{T}y)

    对θ求导,并令一阶导数=0:
    \frac{\partial }{\partial \theta }=\frac{2}{N}(X^{T}X\theta-X^{T}y)=0
    求解θ:
    \theta =\left ( X^{T}X \right )^{-1}X^{T}y

    若X^{T}X不可逆或防止过拟合,增加λ扰动
    \theta =\left ( X^{T}X+\lambda I \right )^{-1}X^{T}y

    2、最大化似然估计
    求最大似然函数估计值的一般步骤:
    (1) 写出似然函数
    (2) 对似然函数取对数,并整理
    (3) 求导数
    (4) 解似然方程

    高斯分布的概率密度函数为:
    f(x)=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(x_{i}-\mu )^{2}}{2\sigma ^{2}})
    假设误差是独立同分布的,服从均值为0,方差为某定值的高斯分布(中心极限定理)即:
    \varepsilon _{i}\sim N(0,\sigma ^{2})

    误差的概率密度函数为:
    p(\varepsilon ^{(i)})=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(\varepsilon ^{(i)})^{2}}{2\sigma ^{2}})

    似然函数为(联合密度函数):
    p(y^{(i)}|x^{(i)};\theta )=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}- \theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}})
    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 ^{T}x^{(i)})^{2}}{2\sigma ^{2}})

    两边取对数:
    \iota(\theta )=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}- \theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}})
    =\sum_{i=1}^{m}log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)}- \theta ^{T}x^{(i)})^{2}}{2\sigma ^{2}})

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

    目标函数:
    J(\theta )=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}- \theta ^{T}x^{(i)})^{2}=\frac{1}{2}(X\theta -y)^{T}(X\theta -y)
    求梯度:
    \Delta _{\theta }J(\theta )=\Delta _{\theta }\left (\frac{1}{2}(X\theta -y)^{T}(X\theta -y) \right )=\Delta _{\theta }\left (\frac{1}{2}(X^{T}\theta^{T} -y^{T})(X\theta -y)\right )
    =\Delta _{\theta }\left (\frac{1}{2}(X^{T}\theta^{T}X\theta -X^{T}\theta^{T}y -y^{T}X\theta+y^{\theta }y)\right )
    =\frac{1}{2}\left( 2X^{T}X\theta -X^{T}y -(y^{T}X)^{T} \right )=X^{T}X\theta-X^{T}y

    求驻点,令:
    X^{T}X\theta-X^{T}y=0

    求解θ:
    \theta =\left ( X^{T}X \right )^{-1}X^{T}y

    若X^{T}X不可逆或防止过拟合,增加λ扰动
    \theta =\left ( X^{T}X+\lambda I \right )^{-1}X^{T}y

    2、算法中用梯度下降算法求θ
    a)初始化θ
    b)沿着负梯度方向迭代,更新后的θ使J(θ)更小
    \theta =\theta - \alpha \cdot \frac{\partial J(\theta )}{\partial \theta }
    c)学习率α可设置

    3、岭回归,lasso回归,弹性网络
    1)ridge回归
    增加L1正则项

    2)lasso回归
    增加L2正则项

    3)弹性网络
    同事增加L1+L2正则项


    image.png

    4、python代码

    #alphas是正则项的系数,cv是k折交叉验证
    models = [Pipeline([('linear', LinearRegression(fit_intercept=False))]),
            Pipeline([('linear', RidgeCV(alphas=np.logspace(-3, 2, 10), fit_intercept=False,cv=5))]),
            Pipeline([ ('linear', LassoCV(alphas=np.logspace(-3, 2, 10), fit_intercept=False,cv=5))]),
            Pipeline([('linear', ElasticNetCV(alphas=np.logspace(-3, 2, 10), l1_ratio=[.1, .5, .7, .9, .95, .99, 1],fit_intercept=False,cv=5))])]
    

    相关文章

      网友评论

        本文标题:线性模型

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