最小二乘法求解的两种表示方法

来源:互联网 发布:网盘搬家软件 编辑:程序博客网 时间:2024/05/01 03:51

问题表述:

有训练数据集T={(x1,y1),(x2,y2),,(xN,yN)},其中,样本个数为N,每个样本有m个属性,xiR,yiR, 预测未知样本集的输出。
很明显这是一个回归问题,我们想要求出一个回归函数 hw(x)(在线性回归下可以表示成hw(x)=mi=0wixi=xTw) ,使其在未知样本集得到期望的输出,一个很好的思路即是希望在已知的训练数据集上得到的输出hw(x(i))与真实值y(i)足够小。于是我们可以定义一个损失函数

J(w)=12i=1N(hw(x(i))y(i))2
则我们的目的是使得损失函数最小。

1.通用的表示方式

我们使用梯度下降法来求解损失函数最小。即通过每次更新w,w更新的方向是损失函数对w的负梯度方向,每次更新之后损失函数都会变得更小,直到不能减小为止。包括两个步骤:1、初始化w;2、对w更新

  • inital w
  • repeat :
    • wj=wjαJ(w)wj

其中,α为步长,控制每次更新的幅度,而J(w)wj的计算如下:

J(w)wj=wj(12i=1N(hw(x(i))y(i))2)=122i=1N(hw(x(i))y(i))x(i)j=i=1N(hw(x(i))y(i))x(i)j

2.向量表示法

之所以介绍向量表示法,一是因为使用向量可以大大简化公式,虽然开始时不易理解,一旦理解了再看类似的公式也会一目了然;二是因为编程需要,使用上一种方法求解w时,难免会用到循环,在一个程序中循环的嵌套往往意味着计算效率的降低,而使用Python的一个科学计算库Numpy,可以使用其中的函数将其全部变成矩阵\向量运算,提高了计算效率。其中用向量表示X,y 为 :

X=(x(1))T(x(2))T(x(N))Ty=y(1)y(2)y(N)Xwy=(x(1))Twy(1)(x(2))Twy(2)(x(N))Twy(N)

则损失函数的向量表示:

J(w)=12i=1N(hw(x(i))y(i))2=12i=1N((x(i))Twy(i))2=12(Xwy)T(Xwy)

w的求导:
w(J(w))=w12(Xwy)T(Xwy)=12w(wTXTXwwTXTyyTXw+yTy)=12wtr(wTXTXwwTXTyyTXw+yTy)=12(2XTXw2XTy)=XTXwXTy

其中,等式第二步到第四步的推导用到了以下知识:

  • trABC=trBCA=trCAB
  • trA=trAT
  • AtrAB=BT
  • AtrABATC=CAB+CTABT
  • ATf(A)=(Af(A))T
  • wtr(wTXTXw)=(wTtr(wTXTXw))T=(wTXTX+wTXTX)T=XTXw
  • wtr(wTXTy)=wtr(yTXw)=XTy
0 0
原创粉丝点击