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

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

该文已经收录到专题机器学习进阶之路当中,欢迎大家关注。

1. 概念

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

2. 特点

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

3. 原理与推导

D = \left\{ {\left( {{x_i},{y_i}} \right)} \right\}_{i = 1}^m
x_i=\left( {{x_{i1}},{x_{i2}}, \ldots ,{x_{id}}} \right)
{y_i} \in R
m
d

1. 给定数据集,其中,(线性回归的输出空间是整个实数空间)。是样本数,是属性维度。

线性回归试图学得:

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

                                                 (1),使得。

b = {w_0} \cdot x{}_0
{x_0} = 1
w
w = \left( {{w_0},{w_1}, \ldots ,{w_d}} \right)
x
x_i=\left( {{1},{x_{i1}}, \ldots ,{x_{id}}} \right)
f\left( {{x_i}} \right) = {w^T}{x_i}

为便于讨论,使,其中。此时,就成为了,就成为了,期望学得的函数为。

\varepsilon

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

{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)

w
w_i
y_i

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

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)

w
x
y

3. 将(4)连乘得到在已知参数和数据的情况下,预测值为的条件概率,这个条件概率在数值上等于,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} \ell\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)

得到目标函数:

J(w) = \frac{1}{2}\sum\limits_{i = 1}^m {{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}} \ = \frac { 1 } { 2 } \left\| \left[ \begin{array} { c } { y _ { 1 } - w ^ { T } x _ { 1 } } \ { y _ { 2 } - w ^ { T } x _ { 2 } } \ { \cdots } \ { y _ { m } - w ^ { T } x _ { m } } \end{array} \right] \right\| ^ { 2 }= \frac { 1 } { 2 } \left\| \left[ \begin{array} { l } { y _ { 1 } } \ { y _ { 2 } } \ { \cdots } \ { y _ { m } } \end{array} \right] - w ^ { T } \left[ \begin{array} { c } { x _ { 1 } } \ { x _ { 2 } } \ { \cdots } \ { 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)

                                              (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
\lambda

情况二:不可逆,可能有多个解。选择哪一个解作为输出,将有学习算法的偏好决定,常见的做法是增加扰动。

{w^*} = {\left( {{X^T}X + \lambda I} \right)^{ - 1}}{X^T}y

                                                   (13)

4. 算法描述

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

X = \left[ \begin{array} { c } { x _ { 1 } ^ { T } } \ { x _ { 2 } ^ { T } } \ { \cdots } \ { x _ { m } ^ { T } } \end{array} \right] \quad y = \left[ \begin{array} { c } { y _ { 1 } } \ { y _ { 2 } } \ { \dots } \ { y _ { m } } \end{array} \right]
{X^ + }

2. 计算伪逆(pseudo-inverse)。

{w^*} = {X^ + }y
\mathop y\limits^ \wedge = {w^T}X

3. 返回,学得的线性回归模型为。

5. 广义线性回归

y

当不再只是线性回归中用到的正态分布,而是扩大为指数族中的任一分布。这样得到的模型称为“广义线性模型”(generalized linear model):

y = {g^{ - 1}}\left( {{w^T}x + b} \right)
g\left( \cdot \right)

其中函数称为“联系函数”(link function)。

参考文献:

1. 《机器学习基石课程》lecture_9_Linear_Regression——林轩田

2. 《机器学习》第三章线性回归——周志华

点这里可以跳转到人工智能网站

发表评论