机器学习-线性回归 原理详解

一、什么是线性回归

       回归算法是一种有监督算法。

       回归算法可以看作是用来建立“解释”变量(自变量X)和因变量(Y)之间的关系。从机器学习的角度讲,就是构建一个算法模型来做属性(X)与标签(Y)之间的映射关系,在算法的学习过程中,试图寻找一个函数h:R^{d}\rightarrow R使得参数的拟合性最好。

       回归算法中算法的最终结果是一个连续的数据值,输入值(属性值)是一个d维度的属性/数值向量。

       线性回归认为数据中的特征属性X和目标属性Y之间满足线性关系。而她所构建的模型也试图寻找到一条直线或一个平面使所有样本(训练数据)都能比较均匀地分布在其两侧,也就是使数据距离该直线或平面最小。

      

       图1是一个二维的线性回归,即只有一个特征属性值和一个目标属性值,图2是一个三维的线性回归,即有两个特征属性值和一个目标属性值。

二、算法原理

       不管是一维还是多维的线性回归其公式的形式都是:

       \large h_{\theta }={\theta }_{0}+{\theta }_{1}x_{1}+{\theta }_{2}x_{2}+...+{\theta }_{n}x_{n}

            \large ={\theta }_{0}1+{\theta }_{1}x_{1}+{\theta }_{2}x_{2}+...+{\theta }_{n}x_{n}

            \large ={\theta }_{0}x_{0}+{\theta }_{1}x_{1}+{\theta }_{2}x_{2}+...+{\theta }_{n}x_{n}

扫描二维码关注公众号,回复: 11510869 查看本文章

            \large =\sum_{i=0}^{n}{\theta }_{i}x_{i} ={\theta }^{T}x

      线性回归损失函数:

      \large J(\theta )=\frac{1}{2}(\varepsilon ^{(i)})^2=\frac{1}{2}(h_\theta (x^{(i)})-y^{(i)})^2

      \large \varepsilon ^{(i)}是独立同分布的,根据中心极限定律,\large \varepsilon ^{(i)}即样本的预测值和真实值的误差服从(近似服从)均值为0方差为某定值\large \sigma ^{2}的高斯分布。

      求其似然函数

      \large L(\theta )=\prod_{i=0}^m(p(\varepsilon ^{(i)}))=\prod_{i=0}^m(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(\varepsilon ^{(i)})^2}{2\sigma ^2}))

     根据损失函数的误差公式

     \large \varepsilon ^{i}=h_{\theta }(x)-y^{i}

    将其带入似然函数得:

     \large \large L(\theta )=\prod_{i=0}^m(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(h_{\theta }(x^{i})-y^{i})^2}{2\sigma ^2}))\\ =\prod_{i=0}^m(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(\theta ^{T}x^{i}-y^{i})^2}{2\sigma ^2}))\\=\prod_{i=0}^m(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(y^{i}-\theta ^{T}x^{i})^2}{2\sigma ^{2}}))

     我们所要求的是在给定样本X时找到一组\large \theta解向量,使得真实值和预测值之间的误差最小。

     使用最小二乘法求解\large \theta值。

     \large L(\theta )=\prod_{i=0}^m(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(y^{i}-\theta ^{T}x^{i})^2}{2\sigma ^{2}}))\\=\prod_{i=0}^m(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(Y-\theta ^{T}X)^2}{2\sigma ^{2}}))

    连乘的方式求解\large \theta比较困难,所以通过对数转换,进而求导(因为将似然函数对数化之后不改变原函数的单调性,所以对数化后求得\large \theta最优解就是原函数的\large \theta最优解)。

    \large L(\theta )=ln^{\prod(\frac{1}{\sqrt{2\pi }\sigma }e(-\frac{(Y-\theta ^{T}X)^2}{2\sigma ^{2}}))}

               \large =ln^{\frac{1}{\sqrt{2\pi }\sigma }}+\frac{(Y-\theta ^{T}X)^{2}}{2\sigma ^{2}}

     接下来求导

     \large l(\theta )=\triangledown _{\theta }(L(\theta ))

    另\large \theta =\theta ^{T}又因为\large \sigma ^{2}作为一个定值常量不影响求导,所以可以忽略,之后得到:

            \large =\triangledown _{\theta }\left [ \frac{1}{2}(X\theta -Y)^{T}( X\theta-Y) \right ]此处交换\large \theta X\large Y是为了以后求导方便,且不影响最终结果

           \large =\triangledown _{\theta }\left [ \frac{1}{2}(\theta^{T} X^{T}X\theta -Y^{T}X\theta-\theta^{T}X^{T}Y+Y^{T}Y) \right ]

           \large =\frac{1}{2}(2 X^{T}X\theta-2Y^{T}X)

           \large = X^{T}X\theta-Y^{T}X

     令\large l(\theta )=0\large X^{T}X\theta -Y^{T}X=0

     进而\large \theta =(X^{T}X)^{-1}(Y^{T}X)

     该\large \theta即为参数得到解析解。

     因为最小二乘法要求矩阵\large X^{T}X必须可逆,所以为防止不可逆,可增加额外数据影响,使得矩阵最终可逆。

     \large \theta =(X^{T}X+\lambda E)^{-1}(X^{T}Y)

三、总结

     线性回归理解比较简单,但是以最小二乘法求解\large \theta的最优解,对于计算机而言是比较困难的,因而会有其他的方式,比如梯度下降法来求解。

猜你喜欢

转载自blog.csdn.net/yangjiajia123456/article/details/90246157