线性回归
问题提出
假设给出样本的形式为 X=(x1,x2,⋯,xd) ,每个样本对应一个决策值 Y=y 。那么可以定义一个实例 (X,Y)=(x1,x2,⋯,xd,y) ,现在有数据集 D={(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))} ,如果有一个新样本 X′ ,如何确定其对应的 Y′ 。
这只是一类问题的数学抽象表达,比如对于房子,我们可以有很多属性( X )去描述它,而且它也有自己的价格(Y),我们已知很多房子的情况( D )。现在新建了一个房子X′,让你对其进行估价 Y′ 。
在这类问题中,我们假设:(hypothese) Y 是X的一个线性函数 h (当然你也可以假设是其他函数)。那我们就是去寻找一个合适的函数去逼近真实情况。
Y=h(X)
考虑
X 中有多种属性,根据假设的线性函数,上式可以写成:
h(x)=w1x1+w2x2+⋯+wdxd+b
转换为矩阵形式:
h(x)=WTx+b
假如将
b 也看成是
W 中的一个参数,其对应的
x=1 ,那么上述公式可以再次写成:
h(x)=w1x1+w2x2+⋯+wdxd+b=w0⋅1+w1x1+w2x2+⋯+wdxd=WTx
其中,
W=(w0,w1,⋯,wd),x=(x1,x2,⋯,xd) 。
那么现在已经给出了假设的函数,如何去评价这个函数是不是好呢?一个比较的好办法就是去观察它对数据集的预测效果如何,也就是去衡量函数(模型)的输出值 y^ 和真实值 y 之间的差别,定义这种差别为损失ℓ(y^,y)。损失的定义可以有很多种,在本问题中,我们定义为均方差( 为什么? 线性回归:最小二乘法),即:
ℓ(y^,y)=(y^−y)2=(WTx−y)2
那么在给定的数据集
D 上可以定义
损失函数(loss function)或者说
代价函数(cost function)——
J 。
JJ=12∑i=1mℓ(y^(i),y(i))=12∑i=1m(WTx(i)−y(i))2=(WTx(i)−y(i))T(WTx(i)−y(i))
回到损失函数的定义,评价模型输出和真实值的差异。那么我们只需要最小化损失函数,则可以认为得到了模型的输出值最接近真实值了,此时对应的参数
W 就是我们所求的参数了。
W∗=argminwJ
这是一个无约束的优化问题了!!!最常用的就是梯度下降算法了。
LMS算法 [0,1]
针对无约束最优化问题,常用的方法就是梯度下降法,变量更新方法为:
w:=w+α∂J∂w,α<0
其中,
α 为学习速率。该公式指明变量的更新方向一直沿着梯度下降的方向进行,也就是一直朝着极小值搜索的。先考虑一个样本的情况。
∂J∂wj=∂∂wj12(h(x)−y)2=(h(x)−y)∂∂wj(h(x)−y)=(h(x)−y)∂∂wj(∑i=1mwixi)=(h(x)−y)xj
针对一个样本,我们通过求损失函数的梯度给出了参数更新的方法,也就是
LMS更新规则。
wj:=wj+α(h(x(i))−y(i))x(i)j
那么现在有多个样本,就存在两种不同的更新方法 [2] 。
批梯度下降法(batch gradient descent)
每更新一次参数会遍历所有的样本。
repeatuntilconvergence{wj:=wj+α∑i=1m(h(x(i))−y(i))x(i)j(foreveryj)}
随机度下降法(stochastic gradient descent)
每更新一次参数只会遍历一个样本。
repeatuntilconvergence{fori=1tom{wj:=wj+α(h(x(i))−y(i))x(i)j(foreveryj)}}
LMS算法流程 [3]
1. 初始化工作,为各个参数设置随机初始值;
2. 对训练数据
D 输入模型
h(x) ,得到模型输出
y^ 。 计算代价函数
J ,梯度
∂J∂w ;
3. 对代价函数
J 的值进行判断:如果小于给定值,就输出正确参数
W ,并结束算法;否则,继续进行;
4. 按照选定的更新方式更新参数
W ;
5. 跳转到步骤(2).
至此,一般的线性回归问题都可以解决。但是,有时候真实值Y很多时候并不是 X 的现行函数。那么就需要将之前的线性模型进行推广——广义线性模型。
分类
当通过线性模型得出的样本值y′需要经过一个函数(联系函数)转换之后才能得到样本的描述
y^ ,那么这种经过联系函数的线性模型就是广义线性模型。一个经典的推广就是逻辑回归,虽然其名称为回归,但实际上是一种分类方法。
逻辑回归(Logistic Regression)
sigmoid函数:
y=11+e−z
令
z=WTx , 则有:
y^=h(x)=11+e−WTx
因逻辑回归是一种二分类算法,可以使用概率了描述其过程,那么就有:
P(y=1|x)P(y=0|x)=h(x)=1−h(x)
将上述两式结合起来有:
P(y|x)=h(x)y(1−h(x))1−y
那么可以根据数据集写出似然函数:
L(w)=∏i=1mP(y(i)|x(i))
利用极大似然估计法:
ℓ(w)=logL(w)=log∏i=1mP(y(i)|x(i))=log∏i=1mh(x(i))y(i)(1−h(x(i)))1−y(i)=∑i=1m{y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))}
考虑单个训练样本,对其求导有:
∂h(x)∂wj∂ℓ(w)∂wj=(11+e−WTx)′=−−xj⋅e−WTx(1+e−WTx)2=xj(11+e−WTx)(e−WTx1+e−WTx)=xjh(x)(1−h(x))=∂∂wj{y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))}=y(i)∂∂wjlogh(x(i))+(1−y(i))∂∂wjlog(1−h(x(i)))={y(i)1h(x(i))−(1−y(i))11−h(x(i))}∂h(x(i))∂wj=x(i)jh(x(i))(1−h(x(i))){y(i)h(x(i))−(1−y(i))1−h(x(i))}=(y(i)−h(x(i)))x(i)j
那么参数更新公式有:
wj:=wj+α(h(x(i))−y(i))x(i)j
注意到逻辑回归和普通线性回归有一样的参数更新公式!
PLA
感知学习算法(Perceptron Learning Algorithm)
g(z)={1,z≥00,z<0
hθ(x)=g(θTx)
那么依据之前的推导可以得知参数的更新公式为:
θj:=θj+(y(i)−hθ(x(i)))x(i)j
softmax regression
softmax 回归是一个多分类器,对应的分布为多项式分布。
广义线性模型
从linear regression 中的假设误差是高斯分布而根据最大似然估计推导出应使用最小二乘法拟合,进而得出了参数迭代公式;在logistic regression 中假设分类目标服从0-1分布而根据最大似然估计推导出了参数迭代公式。而高斯分布和0-1分布都是属于指数分布族(exponential family distribution)的。
P(y:η)=b(y)⋅exp(ηTT(y)−a(η))
其中
η 为
自然参数(natural parameter)或者
标准参数(canonical parameter);
T(y) 称为
充分统计量,;
a(η) 成为
对数分量函数。
对于伯努利分布(0-1分布):
P(y;ϕ)=ϕy(1−ϕ)1−y=elnϕy(1−ϕ)1−y=ey⋅lnϕ+(1−y)⋅ln(1−ϕ)=ey(lnϕ−ln(1−ϕ))+ln(1−ϕ)=exp(yln(ϕ1−ϕ)+ln(1−ϕ))
对比指数分布公式,则有:
T(y)=y,η=ln(ϕ1−ϕ),b(y)=1,a(η)=−ln(1−ϕ) 特别是ϕ=11+e−η,这是不是logisticregression中的假设函数h(η)?!
对于高斯分布 [4] :
P(y;μ,σ)=12π−−√σe−(y−μ)22σ2=12π−−√σe−y2+2μy−μ22σ2=12π−−√σexp(−y22σ2)exp(μσ2y−μ22σ2)
对比指数分布公式,则有
b(y)=12π√σexp(−y22σ2),η=μσ2,T(y)=y,a(η)=μ22σ2
指数分布族有很多分布,对于给定的 a,b,T ,就能根据不同的自然参数 η 生成一组同一类别的分布。常见的指数分布族有:伯努利分布、高斯分布、泊松分布、多项式分布、beta分布等。这些分布都可以推广出不同的广义线性回归。
那么由指数分布推广出来的广义线性模型遵循三个假设:
1. y|x;w∼ExponentionalFamily(η) ;
2. 给定 x ,目标是预测E[T(y)],一般令 T(y)=y ,而我们通常假设 y=h(x) ,那么也就有了 h(x)=E[y|x] ;
3. 自然参数 η 和输入 x 有线性关系,即η=WTx。
References:
[[0]斯坦福机器学习课程-线性回归]
[1]记一下机器学习笔记 最小均方(LMS)算法
[2]Machine Learning实验 梯度下降算法
[3]Machine Learning—LMS 算法
[4]广义线性模型