线性回归

线性回归

给定有由 d d 个属性的描述的示例 x=(x1;x2;...;xd) ,其中 xi x i x x 在第 i 个属性上的取值,线性模型是图学一个通过属性的线性组合来进行预测的函数,即: f(x)=w1x1+w2x2+...+wdxd+b f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b ,向量的表示: f(x)=wTx+b f ( x ) = w T x + b ,其中 w=(w1;w2;...;wd) w = ( w 1 ; w 2 ; . . . ; w d ) w w b学到之后,模型就得以确定。

1. 线性回归算法

给定数据集 D={(x1,y1),(x2,y2),...,(xm,ym)} D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } ,其中 xi=(xi1;xi2;...xid),yiR x i = ( x i 1 ; x i 2 ; . . . x i d ) , y i ∈ R 线性回归是图学习一个线性的模型来尽可能准确的预测实际值 y y
为了使得f(xi)尽可能的接近 yi y i ,则需要求解出合理的 wb w 和 b ,为了便于计算实际值与预测值之间的偏差,利用均方误差定义一个偏差,目的是使得偏差最小。设 L=mi=0[f(xi)yi]2 L = ∑ i = 0 m [ f ( x i ) − y i ] 2 ,当 L L 取得最小的时候,所对应的w,b即为当前线性回归的参数。即 w,b=argw,bminmi=0[f(xi)yi]2 ( w ∗ , b ∗ ) = a r g w , b m i n ∑ i = 0 m [ f ( x i ) − y i ] 2

    均方误差对应最常用的欧式距离,具有很好的物理意义,基于均方误差最小化来进行模型求解的方法称为“最小二乘法”
    实质:找到一条直线来拟合所有的样本点,使得样本点与预测点之间的欧式距离的和最小。

由上分析可知
w,b=argw,bminmi=0[f(xi)yi]2 ( w ∗ , b ∗ ) = a r g w , b m i n ∑ i = 0 m [ f ( x i ) − y i ] 2

=argw,bminmi=0[yiwxib]2 = a r g w , b m i n ∑ i = 0 m [ y i − w x i − b ] 2

求解 w,b w , b 使得 L L 最小化的过程称为线性回归的最小二乘“参数估计”。可以通过将L分别对 wb w 和 b 求导,得到:

Lw=2(wmi=1x2imi=1(yib)xi) ∂ L ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i )

Lb=2(mbmi=1(yiwxi)) ∂ L ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) )

令导数等于0,即可求得 w,b w , b 的解析解

w=mi=1yi(xix¯)mi=1x2i1m(mi=1xi)2 w = ∑ i = 1 m y i ( x i − x ¯ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2

b=1mmi=1(yiwxi) b = 1 m ∑ i = 1 m ( y i − w x i )

其中: x¯=1mmi=1xi x ¯ = 1 m ∑ i = 1 m x i x x 的均值。

为了便于描述,将上述用向量的形式表示,且由于b是偏置量,可有 w w 表示,则令

w^=(w;b)

X=x11x21:xm1x12x22:xm2x1dx2d:xmd11:1=xT1 xT2 : xTm11:1 X = [ x 11 x 12 … x 1 d 1 x 21 x 22 x 2 d 1 : : : : x m 1 x m 2 … x m d 1 ] = [ x 1 T 1   x 2 T 1   : :   x m T 1 ] 其中 xi=xi1 xi2 : xid x i = [ x i 1   x i 2   :   x i d ]

ŵ=w1w2:wdb w ^ = [ w 1 w 2 : w d b ] ,其中b是标量

y=[y1,y2,...,ym]T y = [ y 1 , y 2 , . . . , y m ] T

L=(yxŵ)T(yxŵ) L = ( y − x w ^ ) T ( y − x w ^ ) ,对 ŵ w ^ 求导可得: Lŵ=2XT(Xŵy) ∂ L ∂ w ^ = 2 X T ( X w ^ − y )

  • XTX X T X 满秩时,则 ŵ=(XTX)1XTy w ^ ∗ = ( X T X ) − 1 X T y ,则 f(x)=x̂Ti(XTX)1XTy f ( x ) = x ^ i T ( X T X ) − 1 X T y
  • 一般情况 XTX X T X 是不满秩的,则可能会求解出多个 ŵ w ^ ,为了选择一个合适的解,将由算法的归纳偏好决定,常见的做法是引入正则化项。

    当特征数目超过样本数目的时候,则可能出现不满秩的情况。
    

最小二乘法的实现代码(python):

import numpy as np
import matplotlib.pyplot as plt  

def loadData(filepath):
    data0 = []
    data1 = []
    data = []
    label = []
    f = open(filepath)
    for line in f:
        line = line[:-1]    
        line = line.split("\t")
        #print line[0]
        data0.append(float(line[0]))
        data1.append(float(line[1]))
        label.append(float(line[2][:-1]))
    data.append(data0)
    data.append(data1)  
    return data,label


def draw(x,y,w):
    xmat = np.mat(x).T
    ymat = np.mat(y).T
    xx = xmat.copy()
    xx.sort(0)
    yy = xx*w
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(xmat[:,1].flatten().A[0],ymat[:,0].flatten().A[0])
    ax.plot(xx[:,1],yy)
    plt.show()


def Regression(x,y):
    x = np.mat(x).T
    y = np.mat(y).T
    if np.linalg.det( x.T * x ) == 0:
        print "cannot do inverse"
        return
    w = (x.T * x).I * x.T * y
    return w

filepath = "ex0.txt"
x,y = loadData(filepath)
w = Regression(x,y)   # w[0,0] == b;w[1,0] == w
draw(x,y,w)

结果如下所示:
这里写图片描述

对于一个给定的数据集,在此数据集上建立线性模型,为了更好的判断线性模型的好坏程度,引入一个对模型好坏的评价指标——相关系数。我们可以通过计算预测值与实际值的相关系数,来判断模型的好坏程度。在python中可以直接使用 corrcoef(y_estimate,y_true) 函数来计算预测值与真实值的相关性。

2、局部加权线性回归

线性回归可能会出现的一个问题就是欠拟合的现象,因为它求的是具有最小均方误差的无偏估计,为了减少欠拟合所造成的预测误差,可以通过引入一些误差降低预测的均方误差,局部加权线性回归就是这样的方法(LWLR)。该算法求解出的 ŵ w ^ 的形式如下所示:

ŵ=(XTWX)1XTWy w ^ = ( X T W X ) − 1 X T W y , 其中 W W 是一个矩阵,表示每个数据点赋予的权重。

给待预测点附近的每一个点都赋予一定的权重,然后在这个子集上基于最小均方差来进行普通的回归。

局部加权线性回归也存在着问题,增加了计算量,因为对每个点的预测都需要用到整个数据集。

3、岭回归

为了解决 XTX 不可逆时,最小二乘法失效的问题,引入岭回归。

岭回归就是在矩阵 XTX X T X 加上一个 λI λ I ( I I 是单位矩阵),从而使矩阵非奇异,进而能够对其求逆,λ为定义的一个值。则回归系数计算公式变为:

ŵ=(XTX+λI)1XTy w ^ = ( X T X + λ I ) − 1 X T y

通过一如 λ λ 来限制了所有的 w w 的和,通过引入该惩罚项,能够减少不中要的参数,这个技术在统计学上也叫做衰减。

λ 的求解:通过使得预测误差最小化来取得 λ λ 的值, λ λ 为一个超参数,通过比较不同的 λ λ 时,测试集上的表现来判断 λ λ 的值。

注:为了使用岭回归和缩减技术,需要对特征作标准化处理,具体做法:所有特征减去各自的均值,并除以方差。

4、前行逐步回归

前行逐步回归属于一种贪心算法,,每一步都尽可能的减小误差,通过每个特征来更新 w w ,通过比较偏差判断更新情况。

总结

  1. 线性回归:最小二乘法,只适用于XTX可逆的情况,使用场合有限;

    • 局部加权线性回归:解决了足校二乘法中的欠拟合的问题,但是计算量大,每次都需要计算所有样本点;
    • 岭回归:解决了 XTX X T X 不可逆的情况的求解;
    • 前向逐步回归:计算简单,通过初始化权值,然后逐步改变权值,达到最优。
    • 参考文献

      1. 机器学习-西瓜书
      2. 机器学习实战
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值