西瓜书+南瓜书 第三章 线性回归笔记与理解

注:结合南瓜书及其作者的讲解视频,本人对第三章的知识点有了更深刻的理解。在此首先附上南瓜书作者的讲解视频链接:【吃瓜教程】《机器学习公式详解》(南瓜书)与西瓜书公式推导直播合集_哔哩哔哩_bilibili

一、一元线性回归

         线性回归试图学得f(x_{i})=w x_{i}+b,使得f(x_{i})\simeq y_{i}. 如何确定 w 和 呢?关键在于如何衡量(x) 与 y 之间的差别。均方误差是回归任务中最常用的性能度量,我们可以让均方误差最小化,即

(w^{\ast },b^{\ast })=\arg \underset{(w,b)}{min}\sum_{i=1}^{m}(y_{i}-f(x_{i}))^{2}

                 =\arg \underset{(w,b)}{min}\sum_{i=1}^{m}(y_{i}-w x_{i}-b)^{2}

求解 w 和 b 使损失函数 E_{(w,b)}=\sum_{i=1}^{m}(y^{_{i}}-wx^{_{i}}-b)^{2} 最小化的过程,称为线性回归模型的最小二乘“参数估计”。

二、极大似然估计

        下面从极大似然估计的角度推导出损失函数E_{(w,b)} :

对于线性回归来说也可以假设其为以下模型:

y=wx+b+\epsilon

其中 \epsilon 为随机误差,通常假设其服从正态分布 \epsilon \sim N(0,\sigma ^{2}),所以 \epsilon 的概率密度函数为

p(\epsilon )=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{\epsilon ^{2}}{2\sigma ^{2}})

将 \epsilon 用 y - (wx+b) 等价替换,

p(\epsilon )=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y-(wx+b)) ^{2}}{2\sigma ^{2}})

用极大似然估计来估计 w 和 b 的值

\begin{aligned} L(w, b)=& \prod_{i=1}^{m} p\left(y_{i}\right)=\prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-\left(w x_{i}+b\right)\right)^{2}}{2 \sigma^{2}}\right) \\ \ln L(w, b) &=\sum_{i=1}^{m} \ln \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-w x_{i}-b\right)^{2}}{2 \sigma^{2}}\right) \\ &=\sum_{i=1}^{m} \ln \frac{1}{\sqrt{2 \pi} \sigma}+\sum_{i=1}^{m} \ln \exp \left(-\frac{\left(y_{i}-w x_{i}-b\right)^{2}}{2 \sigma^{2}}\right) \end{aligned}

=m \ln \frac{1}{\sqrt{2 \pi} \sigma}-\frac{1}{2 \sigma^{2}} \sum_{i=1}^{m}\left(y_{i}-w x_{i}-b\right)^{2}

最大化 ln L(w,b) 等价于最小化 

\sum_{i=1}^{m}(y^{_{i}}-wx^{_{i}}-b)^{2}         

也即等价于最小二乘估计。      

三、求解 w 和 b

        注意:最优化中的凸函数与高数中我们理解的凹函数是一致的,机器学习中的凸函数对应的就是最优化中的凸函数。

        如果损失函数 E_{(w,b)} 是凸函数,则我们可以通过求偏导的形式求得让 E_{(w,b)} 最小的 w 和 b 值。那么如何证明 E_{(w,b)} 是凸函数呢?在这里放上一张南瓜书作者对于凸函数的定义的图片。

西瓜书+南瓜书 第三章 线性回归笔记与理解_第1张图片

 即去证明 E_{(w,b)} 的Hessian矩阵是半正定的

半正定矩阵的判定定理之一:实对称矩阵的所有顺序主子式均为非负,则该矩阵为半正定矩阵。

\frac{\partial E_{(w,b)}}{\partial w}=2\left ( w\sum_{i=1}^{m}x_{i}^{2}-\sum_{i=1}^{m}(y_{i}-b) x_{i}\right )

\frac{\partial E_{(w,b)}}{\partial b}=2\left ( mb-\sum_{i=1}^{m}(y_{i}-wx_{i}) \right )

\frac{\partial E_{(w,b)}}{\partial w\partial b}=2 \sum_{i=1}^{m}x_{i}

\frac{\partial E_{(w,b)}}{\partial b\partial w}=2 \sum_{i=1}^{m}x_{i}

\frac{\partial E_{(w,b)}}{\partial b^{2}}=2 m

\bigtriangledown ^{2}E_{(w,b)}=\begin{bmatrix} 2\sum_{i=1}^{m}x_{i}^{2}& 2\sum_{i=1}^{m}x_{i} \\ 2\sum_{i=1}^{m}x_{i} & 2m \end{bmatrix}

        经推导  与 \left |\bigtriangledown ^{2}E_{(w,b)} \right | 都非负,所以 E_{(w,b)} 的Hessian矩阵是半正定的,即E_{(w,b)} 是关于w 和 b 的凸函数。具体推导过程可见视频链接。

        分别对 w 和 b 求偏导,并令其等于0,可以得到西瓜书中的公式3.7、3.8。

w=\frac{\sum_{i=1}^{m} y_{i}\left(x_{i}-\bar{x}\right)}{\sum_{i=1}^{m} x_{i}^{2}-\frac{1}{m}\left(\sum_{i=1}^{m} x_{i}\right)^{2}}

b=\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}-w x_{i}\right)

四、一元线性回归矩阵向量表示       

        开头讲到,线性回归是求解

(w^{\ast },b^{\ast })=\arg \underset{(w,b)}{min}\sum_{i=1}^{m}(y_{i}-f(x_{i}))^{2}

=\arg \underset{(w,b)}{min}\sum_{i=1}^{m}(y_{i}-w x_{i}-b)^{2}

        在实际应用中,不会按照第三节所讲的那样去求 w 和 b ,matlab 和 python 中都能很方便地进行矩阵运算,因此通常将上式改写为矩阵相乘的形式。

        假设有 i 个数据,横坐标 x 和纵坐标 y 已知,要求解的拟合直线方程为:

f(x_{i}) = wx_{i} + b

       用向量形式表示为:

                            \begin{bmatrix} f(x_{1})\\ f(x_{2}) \\ f(x_{3}) \\ \vdots \\ f(x_{i}) \end{bmatrix} =\begin{bmatrix} x_{1}\\ x_{2} \\ x_{3} \\ \vdots \\ x_{i} \end{bmatrix} * w + \begin{bmatrix} b\\ b \\ b \\ \vdots \\ b \end{bmatrix} = \begin{bmatrix} 1 & x_{1} \\ 1 & x_{2}\\ 1 &x_{3} \\ \vdots & \vdots \\ 1 & x_{i} \end{bmatrix} * \begin{bmatrix} b\\ w \end{bmatrix}                   , 令

X = \begin{bmatrix} 1 & x_{1} \\ 1 & x_{2}\\ 1 &x_{3} \\ \vdots & \vdots \\ 1 & x_{i} \end{bmatrix} W = \begin{bmatrix} b\\ w \end{bmatrix} y = \begin{bmatrix} y_{1}\\ y_{2} \\ y_{3} \\ \vdots \\ y_{i} \end{bmatrix}

(w^{*},b^{*})=\arg \underset{(w,b)}{min}(y_{i}-w x_{i}-b)^{T}(y_{i}-w x_{i}-b)

=\arg \underset{(w,b)}{min}(Y-XW)^{T}(Y-XW)

        为了让 (y-XW)^{T}(y-XW) 最小,已知其为凸函数,对 W 求偏导。      

\frac{\partial (Y-XW)^{T}(Y-XW)}{\partial W} = 2\frac{\partial (Y-XW)^{T}}{\partial W}(Y-XW)

= -2\frac{\partial W^{T}X^{T}}{\partial W}(Y-XW) = -2X^{T}Y + 2X^{T}XW = 0

        当 X^{T}X 为可逆矩阵时,解得:W = (X^{T}X)^{-1}X^{T}Y

  注意:对于实矩阵求偏导有以下公式I_{N*N} 表示N阶单位矩阵 ):

\frac{\partial U^{T}V }{\partial x} = \frac{\partial U^{T} }{\partial x}V + \frac{\partial V^{T} }{\partial x}U

\frac{\partial x^{T} }{\partial x} = I_{N*N}

五、 LOWESS局部加权回归

        线性回归思想已经应用在了很多方法和领域里,我目前所接触到的有LOWESS(局部加权回归)、WLS最小二乘法、softmatting(软抠图)等等,下面列举一个在matlab环境下,使用LOWESS对图像直方图进行平滑的例子。

        LOWESS与普通线性回归不同的地方在于,LOWESS相比普通线性回归还多了一个权重矩阵,该权重为除主对角线以外全为0的矩阵,形如:

\begin{bmatrix} \omega 1 & 0\\ 0 & \omega 2 \end{bmatrix}

        在实验中发现,该权重能够将原本普通线性回归的直线拟合变为曲线,因为对于每个数据点,都要重新计算一个新的权重矩阵,从而每个数据点对应的 w 和 b 都不相同。

 (w^{\ast },b^{\ast })=\arg \underset{(w,b)}{min}\sum_{i=1}^{m}\alpha _{i}(y_{i}-f(x_{i}))^{2}

                          =\arg \underset{(w,b)}{min}(Y-XW)^{T}\alpha (Y-XW)

        对 W 求偏导并令式子为0可得:

W=\left(X^{T} \alpha X\right)^{-1} X^{T} \alpha Y

        下面附上matlab代码:

[filename, pathname] = uigetfile('*','选择origin图片');
filepath = fullfile(pathname, filename);
origin = imread(filepath);    %读取图像
[m,n,channel] = size(origin);
hist = imhist(origin);        %统计直方图

k = 2;
count = (1:256)';
x = [ ones(length(hist), 1) count ];  %X向量 256 * 2
y = hist;                              %Y向量 256 * 1
[row,~] = size(x);          
[y_out,b,w] = lowess(x,y,k);      %调用函数输出
figure,plot(1:256,hist,'g',1:256,y_out,'r');

function [out,b,w] = lowess(x,y,k)
    [row,~] = size(x);
    out = zeros(1,row);
    weights = zeros(row,row);
    for i = 1:row
        for j = 1:row
            diff = x(i,:) - x(j,:);
            weights(j,j) = exp(diff * diff'/(-2 * (k.^2)));  %对每个点计算权重
        end
        XTwX = x' * weights * x;
        if det(XTwX) == 0
            disp('This matrix is singular, cannot do inverse');
        end
        theta = XTwX^-1 * (x' * weights * y);
        b(i) = theta(1);
        w(i) = theta(2);
        out(i) = x(i,:) * theta;
    end
end

输出展示:

西瓜书+南瓜书 第三章 线性回归笔记与理解_第2张图片

当不使用权重时,普通线性回归拟合变为直线。 

六、多元线性回归

        与前面一元线性回归推导过程类似,不再具体推导。

        此时要拟合的曲线可能受多个因素影响。

f\left(\boldsymbol{x}_{i}\right)=w_{1} x_{i 1}+w_{2} x_{i 2}+\ldots+w_{d} x_{i d}+b

        前面提到的 X 就变为西瓜书中所示:

\mathbf{X}=\left(\begin{array}{ccccc} x_{11} & x_{12} & \ldots & x_{1 d} & 1 \\ x_{21} & x_{22} & \ldots & x_{2 d} & 1 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m 1} & x_{m 2} & \ldots & x_{m d} & 1 \end{array}\right)=\left(\begin{array}{cc} \boldsymbol{x}_{1}^{\mathrm{T}} & 1 \\ \boldsymbol{x}_{2}^{\mathrm{T}} & 1 \\ \vdots & \vdots \\ \boldsymbol{x}_{m}^{\mathrm{T}} & 1 \end{array}\right)

        求解W仍然是:

W = (X^{T}X)^{-1}XY

你可能感兴趣的:(机器学习)