0 引言
在机器学习、数据挖掘中线性回归、Logistic回归(一种非线性回归)是比较基础而且常用回归与分类算法,比如结合L-BFGS优化算法在工业级的大规模推荐系统中被比较多地应用。
如果只了解这两个算法,那就陷入了只见树木不见森林的圈子。本文企图用一篇博客的篇幅让大家系统了解这一块儿的知识。
1 线性回归
1.1问题
给定训练数据集 T={(xi,yi)∣xi∈Rn,yi∈R,i∈{1,2,..,N}}
注意,xi是有n维特征的数据(xi1,xi2,...,xin),(xi,yi)构成一条数据记录,yi∈R。
要求构建合适的模型,根据给定数据xi该模型能够准确拟合yi。
1.2 数学模型
构建线性回归模型:
h(xi;w)=w0xi0+w1xi1+...+wnxin=j=0∑nwjxij
其中,w=(w0,w1,...,wn),xi0=1,
线性回归的目的就是通过建立模型并通过选择合适的算法来求出合适的参数wi下的h(xi;wi)和实际的yi之间的差值尽量的小,也就是预测的准确率在训练集和测试集足够高。
进而我们可以定义损失函数:
L(w)=N1i=1∑n(h(xi;w)−yi)2=N1(xw−y)T(xw−y)
从运筹优化的角度来看,该模型是无约束非线性优化问题:
wminL(w), x∈Rn+1,y∈R
1.3 求解方法
(1)当矩阵x为满秩矩阵时,可通过:
∂w∂L(w)令∂w∂L(w)w=N1∂w∂(wTxTxw−wTxTy−yTxw−yTy)=N1(xTxw−xTy)=0得到:=(xTx)−1xTy
缺点:
当矩阵x很大时,计算非常耗时且占用资源。
(2)当矩阵x不是满秩矩阵(大部分情况都是这种),可采用梯度下降算法。
初始化向量w,对每个分量wj沿着负梯度方向进行迭代:
wj(t+1)=wj(t)−α∂wj∂L(w)
直到梯度变化很小或者不变化时停止迭代。
梯度下降中涉及到的参数是,步长α,迭代次数t,这些对于计算最终的都会影响,所以需要调参优化。
常用的梯度下降算法有SGD,BGD,mBGD,实际中以mBGD使用最多。
1.4 过拟合处理
抑制过拟合最常用的方法是引入正则化项,也就惩罚项,给损失函数L(w)的参数w赋予一个约束项,使其不能任意的无限大或者无限小,将Lp范数作为正则化项加入到损失函数:
L(w)=N1i=1∑n(h(xi;w)−yi)2+∣∣w∣∣p
关于Lp范数的全面介绍请看本人另一篇博文:损失函数、风险函数及正则化知识系统总结
2 非线性回归
典型的非线性回归有 logistic回归、softmax回归等, logistic回归解决二分类问题,softmax回归是解决多分类问题,我们以logistics回归为例介绍。
2.1 logistic回归
2.1.1数据集
给定训练数据集 T={(xi,yi)∣xi∈Rn,yi∈{0,1},i∈{1,2,..,N}}
注意,xi是有n维特征的向量,(xi,yi)构成一条数据记录,yi∈{0,1}。
2.1.2 数学模型
假设回归模型:
P(Y=1∣x;w)P(Y=0∣x;w)=πw(x)=1−πw(x)
其中,w是待估计参数。
我们可以使用统计学中的极大似然估计法,首先写出似然函数:
L(w)=i∏NP(yi=1∣xi;w)yiP(yi=0∣xi;w)1−yi=i∏Nπw(xi)yi(1−πw(xi))1−yi
似然函数中含有指数,所以最好取对数似然函数:
L(w)=logi∏NP(yi=1∣xi;w)yiP(yi=0∣xi;w)1−yi=logi∏Nπw(xi)yi(1−πw(xi))1−yi=i∑N(yilogπw(xi)+(1−yi)log(1−πw(xi)))=i∑N(yilog1−πw(xi)πw(xi)+log(1−πw(xi)))=i∑N(yi(wxi′)+log(1+ewxi′))
其中,
xi′=(1xi),
用wxi′代换了log1−πw(xi)πw(xi),这是因为logistic回归定义的输入输出关系就是输出Y=1的几率的对数等于x的线性函数,即:
log1−πw(xi)πw(xi)=wxi′,w∈Rn+1,x∈Rn+1
极大似然估计法就是求:
w∗=argwmaxL(w)
从运筹优化的角度来看,该模型是一个无约束非线性优化问题:
wmaxL(w),w∈Rn+1.
2.1.3 求解方法
由数学模型可知,L(w)为无约束、可微函数,我们可以考虑使用梯度下降算法、牛顿法、拟牛顿法等等,在应用这些优化算法之前需要先将问题转化成最小化问题,即:
wmin−L(w),w∈Rn+1.
2.1.4 过拟合处理
过拟合处理方式同2.4节介绍的方法,也是在L(w)基础上加入正则化项,通常是L1,L2正则化项。
3 广义线性回归
广义线性模型 (generalized linear model) 是在普通线性模型的基础上推广而得出的应用范围更广,更具实用性的回归模型。
广义线性模型可以定义为:
Y=f(w0xi0+w1xi1+...+wnxin)
其中,f(.)函数称为link function,意思是通过该函数将Y和w0xi0+w1xi1+...+wnxin联结起来;
显而易见,线性回归模型的link function就是f(x)=x,且Y服从正态分布;
广义线性模型与普通线性模型的区别为:
(1)响应变量Y的分布推广至指数分散族 (exponential dispersion family):比如正态分布、泊松分布、二项分布、负二项分布、伽玛分布、逆高斯分布;
(2)预测量和未知参数的非随机性:仍然假设预测量 具有非随机性、可测且不存在测量误差;未知参数 认为是未知且不具有随机性的常数;
(3)研究对象:广义线性模型的主要研究对象仍然是响应变量的均值 ;
(4)联接方式:广义线性模型里采用的联连函数 (link function) 理论上可以是任意的,而不再局限于f(x)=x当然了联接函数的选取必然地必须适应于具体的研究案例。同时存在着与(1)里提及的分布对应的联接函数,称之为标准联接函数(canonical link or standard link),如正态分布对应于恒等式,泊松分布对应于自然对数函数等。标准联接函数的推导及其应用上的优点涉及到指数分散族的标准化定义,这里不做详述。
指数分布族中的一类分布都可以用下面一个统一的公式描述:
p(y;η)=b(y)eηT(y)−a(η)
其中:
b(y):是底层观测值(underlying measure);
η:分布的自然参数,跟具体分布有关,通常η=wTx;
T(y):充分统计量(sufficient statistic),通常取T(y)=y;
a(η):log partition function,e−a(η)本质上起着规范化常数的作用,保证概率分布∑(y;η)为1。
当T、a、b固定之后实际上就确定了指数分布族中的一种分布模型,就得到了以η为参数的模型。
比如指定:
b(y)=2π1e(−2y2),
η=μ,
T(y)=y,
a(η)=2μ2=2η2,
这样就得到了线性回归模型。
发现一篇博客比较详细地介绍了推导过程,推荐大家直接参考:从广义线性模型(GLM)理解逻辑回归
4 参考资料
[1].统计机器学习,李航;
[2].从线性模型到广义线性模型(1)——模型假设篇,张缔香;