Linear Regression学习笔记

来源:互联网 发布:知乎 碧桂园森林城市 编辑:程序博客网 时间:2024/05/02 01:53

回归主要分为线性回归和逻辑回归。线性回归主要解决连续值预测问题,逻辑回归主要解决分类问题。但逻辑回归输出的是属于某一类的概率,因此常被用来进行排序。

1. 线性回归的原理

假定输入χ和输出y之间有线性相关关系,线性回归就是学习一个映射

f:χy

然后对于给定的样本x,预测其输出:
y^=f(x)

现假定x=(x0,x1xn),则预测值为:

hθ(x)=i=0nθixi=θTx

在特征x中加上一维x0=1表示截距,即:
f(x)=θ0+θ1x1+θ2x2++θnxn

2. 损失函数

为了找到最好的权重参数θ,令Xy的映射函数记为

f(x)=hθ(x)

其中
θ=(θ0,θ1θn)

为了评价模型拟合的效果,对于一个特定的数据集(X,y)定义一个损失函数来计算预测值与真实值之间的误差:
Jθ(X)=J(θ0,θ1θn)(X)=12mi=1m(hθ(x(i))y(i))2

即总体误差是所有样本点误差平方和的均值,其中(x(i),y(i))表示的是第i个样本点。现在给定数据集(X,y),要求解的目标为使得Jθ(X)最小的θ,即:
θ=argminθ{12mi=1m(hθ(x(i))y(i))2}

3. 梯度下降

假设有一堆样本点(x1,y1)(x2,y2)(xn,yn),定义函数hθ(x)来模拟y。假设最后的拟合函数为f(X)=hθ(X)。则损失函数为:

J(θ)=12mi=1m(hθ(x(i))y(i))2

  • 首先随机初始化θ,例如令θ⃗ =0⃗ 
  • 不断变化θ⃗ 的值来改变J(θ)的值,使其越来越小。改变的规则为:

    θi:=θiαJ(θ)θi

    J(θ)θi=j=1m(hθ(x(j))y(j))x(j)i

    因此对于所有的m个样本点求和,有:
    θi:=θiαj=1m[(hθ(x(j))y(j))x(j)i]

    其中x(j)y(j)表示第j个样本点,x(j)是一个向量,x(j)i表示第j个样本点x(j)的第i个分量,是一个标量。

  • 不断重复上述过程,直到最后收敛(例如最后发现损失函数Jθ(X)基本不再变化)。

整个过程当中,θ,hθ(x),Jθ(X)都会不断变化,但是hθ(x)会越来越接近y,因此Jθ(x)会变得越来越小,最后接近0。

4. 利用最小二乘拟合的方法来计算θ

X=(x(1))T(x(2))T(x(n))T

Xθ=(x(1))Tθ(x(2))Tθ(x(n))Tθ=hθ(x(1))Thθ(x(2))Thθ(x(n))T

y=y(1)y(2)y(n)

Xθy=hθ(x(1))Ty(1)hθ(x(2))Ty(2)hθ(x(n))Ty(n)

为了计算函数Jθ(x)在指定的计算步骤内达到的最小值,每次我们都沿当前点下降最快的方向移动。最快的方向即梯度方向:
(Jθ(x(i))θ0,Jθ(x(i))θ1Jθ(x(i))θn)

假设z是一个向量,z=z1z2zn。则:zTz=ni=0z2i


(Xθy)T(Xθy)=12i=1m(hθ(x(i))y(i))2


J(θ)=12(Xθy)T(Xθy)

要求梯度,令
θJ(θ)=0⃗ 

θJ(θ)=θ12(xθy)T(xθy)=xTxθxTy=0⃗ 

求得
θ⃗ =(xTx)1xTy

最终θ⃗ 是一个m×1的向量。这样对于简单的线性回归问题,就不需要用前面的迭代方法啦。

如果xTx是不可逆的,说明x当中有特征冗余,需要去掉某些特征。