机器学习——线性回归原理推导与算法描述

目录

一、概念

二、原理与推导

三、算法描述


 

一、概念

线性回归(Linear Regression)是一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。

二、特点

  1. 优点:结果具有很好的可解释性(w直观表达了各属性在预测中的重要性),计算熵不复杂。
  2. 缺点:对非线性数据拟合不好
  3. 使用数据类型:数值型和标称型数据

二、原理与推导

1. 给定数据集D = \left\{ {\left( {{x_i},{y_i}} \right)} \right\}_{i = 1}^m,其中x=\left( {{x_{i1}},{x_{i2}}, \ldots ,{x_{id}}} \right){y_i} \in R(线性回归的输出空间是整个实数空间)。m是样本数,d是属性维度。

线性回归试图学得:

f\left( {{x_i}} \right) = {w^T}{x_i} + b             (1),使得f\left( {{x_i}} \right) \simeq {y_i}

为便于讨论,使b = {w_0} \cdot x{}_0,其中{x_0} = 1。此时,w就成为了w = \left( {{w_0},{w_1}, \ldots ,{w_d}} \right)x就成为了x=\left( {{1},{x_{i1}}, \ldots ,{x_{id}}} \right),期望学得的函数为f\left( {{x_i}} \right) = {w^T}{x_i}

2. 预测值和真实值之间都肯定存在差异\varepsilon,对于每个样本:

{y_i} = {w^T}{x_i} + {\varepsilon _i}                  (2)

假设误差{\varepsilon _i}是独立同分布的,并且服从高斯分布。即:

p\left( {{\varepsilon _i}} \right) = \frac{1}{{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{{{\varepsilon _i}^2}}{{2{\sigma ^2}}}} \right)            (3)

将(2)代入(3)中,得到在已知参数w和数据x_i的情况下,预测值为y_i的条件概率:

p\left( {{y_i}\left| {{x_i};w} \right.} \right) = \frac{1}{{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)           (4)

3. 将(4)连乘得到在已知参数w和数据x的情况下,预测值为y的条件概率,这个条件概率在数值上等于,likelihood(w|x,y),也就是在已知现有数据的条件下,w是真正参数的概率,即似然函数(5):

L\left( w \right) {\rm{ = }}\prod\limits_{i = 1}^m {p\left( {{y_i}\left| {{x_i};w} \right.} \right)} = \prod\limits_{i = 1}^m {\frac{1}{{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)          (5)

为什么要引入似然函数?为了根据样本估计参数值。

由于乘法难解,通过对数可以将乘法转换为加法,简化计算(为什么要对似然函数进行log变换?)。

对数似然函数:\begin{array}{l} L\left( w \right) = \log \prod\limits_{i = 1}^m {\frac{1}{{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)\\ = \sum\limits_{i = 1}^m {\log \frac{1}{{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)\\ = \sum\limits_{i = 1}^m {\log \frac{1}{{\sqrt {2\pi } \sigma }}} + \sum\limits_{i = 1}^m {log\left( {\exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)} \right)} \\ = m\log \frac{1}{{\sqrt {2\pi } \sigma }} - \sum\limits_{i = 1}^m {\frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \\ = m\log \frac{1}{{\sqrt {2\pi } \sigma }} - \frac{1}{{{\sigma ^2}}}\frac{1}{2}\sum\limits_{i = 1}^m {{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}} \end{array}          (6)

得到目标函数:\begin{array}{l} J\left( w \right) = \frac{1}{2}\sum\limits_{i = 1}^m {{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}} \\ = \frac{1}{2}{\left\| {\begin{array}{*{20}{c}} {{y_1} - {w^T}{x_1}}\\ {{y_2} - {w^T}{x_2}}\\ \ldots \\ {{y_m} - {w^T}{x_m}} \end{array}} \right\|^2} = \frac{1}{2}{\left\| {\left[ {\begin{array}{*{20}{c}} {{y_1}}\\ {{y_2}}\\ \ldots \\ {{y_m}} \end{array}} \right] - {w^T}\left[ {\begin{array}{*{20}{c}} {{x_1}}\\ {{x_2}}\\ \ldots \\ {{x_m}} \end{array}} \right]} \right\|^2}\\ = \frac{1}{2}{\left\| {y - {w^T}X} \right\|^2} = \frac{1}{2}{\left( {y - {w^T}x} \right)^T}\left( {y - {w^T}x} \right) \end{array}          (7)

似然函数表示样本成为真实的概率,似然函数越大越好,也就是目标函数J\left( w \right)越小越好(为什么要让目标函数越小越好?)。

4. 目标函数是凸函数,只要找到一阶导数为0的位置,就找到了最优解。

因此求偏导:\begin{array}{l} \frac{{\partial J\left( w \right)}}{{\partial w}} = \frac{1}{2}\frac{\partial }{{\partial w}}\left( {{{\left( {y - {w^T}x} \right)}^T}\left( {y - {w^T}x} \right)} \right)\\ = \frac{1}{2}\frac{\partial }{{\partial w}}\left( {{{\left( {y - Xw} \right)}^T}\left( {y - Xw} \right)} \right)\\ = \frac{1}{2}\frac{\partial }{{\partial w}}\left( {{w^T}{X^T}Xw - 2{w^T}Xy + {y^T}y} \right)\\ {\rm{ = }}\frac{1}{2}\left( {{X^T}Xw{\rm{ + }}{X^T}Xw{\rm{ - }}2Xy} \right)\\ {\rm{ = }}{X^T}Xw{\rm{ - }}Xy \end{array}          (8)

5. 令偏导等于0:\frac{{\partial J\left( w \right)}}{{\partial w}} = {\rm{0}}          (9)

得:{X^T}Xw = Xy         (10)

情况一:{X^T}X可逆,唯一解。令公式(10)为零可得最优解为:

               w^* = {\left( {{X^T}X} \right)^{ - 1}}X^Ty         (11)

               学得的线性回归模型为:

                \mathop y\limits^ \wedge = {w^T}X = {X^T}w = {X^T}{\left( {{X^T}X} \right)^{ - 1}}{X^T}y      (12)

情况二:{X^T}X不可逆,可能有多个解。选择哪一个解作为输出,将有学习算法的偏好决定,常见的做法是引入正则化。

三、算法描述

1. 从数据集D出发,构建输入矩阵X和输出向量y。

X = \left[ {\begin{array}{*{20}{c}} {x_1^T}\\ {x_2^T}\\ \ldots \\ {x_m^T} \end{array}} \right]     y = \left[ {\begin{array}{*{20}{c}} {y_1}\\ {y_2}\\ \ldots \\ {y_m} \end{array}} \right]

2. 计算伪逆(pseudo-inverse){X^ + }

3. 返回{w^*} = {X^ + }y,学得的线性回归模型为\mathop y\limits^ \wedge = {w^T}X

猜你喜欢

转载自blog.csdn.net/pxhdky/article/details/82388964