LR算法(基础及核心概念)

前言

首先需要清楚的是,LR(Logistic Regression)虽然是回归模型,但却是经典的分类方法。 为什么分类不用SVM呢?我们对比一下SVM,在二分类问题中,如果你问SVM,它只会回答你该样本是正类还是负类;而你如果问LR,它则会回答你该样本是正类的概率是多少~

  • 文章主要内容如下:

    • LR的理论基础

    • LR的参数求解过程

    • 正则化

LR的理论基础

Logistic

如指数分布、高斯分布等分布一样,logistic是一种变量的分布,它也有自己的概率分布函数和概率密度函数,其中概率分布函数如下:

F(x)=P(Xx)=11+e(xμ)/γ

对概率分布函数求导,记得到对应的概率密度函数:

f(x)=e(xμ)/γγ(1+e(xμ)/γ)2

其中,

μ 就是分布对应的均值,

γ 是对应的形状参数。

对应示例图如下:
《LR算法(基础及核心概念)》

Regression

为什么我们说LR(Logistic Regression)是个分类模型而不是回归模型呢?对于二项LR模型,设因变量的Y为0或者1,得到如下条件概率分布:

P(Y=1|X)=ewx1+ewx


P(Y=0|X)=11+ewx

  • 一个事件的机率(odds),定义为该事件发生与不发生的概率比值,若事件发生概率为p:

    odds=p1p

  • 那么该事件的对数机率(log odds或者logit)如下:

    logit(p)=logp1p

那么,对于上述二项LR逻,Y=1的对数机率就是:

logP(Y=1|x)1P(Y=1|x)=logP(Y=1|x)P(Y=0|x)=w.x

也就是说,输出Y=1的对数机率是由输入x的线性函数表示的模型,这就是逻辑回归模型。易知,当 w.x的值越大,P(Y=1|x) 越接近1;w.x越小(f负无穷大),P(Y=1|x) 越接近0。

其实,LR就是一个线性分类的模型。与线性回归不同的是:LR将线性方程输出的很大范围的数压缩到了[0,1]区间上;更优雅地说:LR就是一个被logistic方程归一化后的线性回归

LR的参数求解过程

极大似然估计

接下来便是参数估计过程,统计学中,常根据最大化似然函数的值来估计总体参数。其实,在机器学习领域,我们听到的更多是损失函数的概念,常通过构建损失函数,然后最小化损失函数求得目标参数。在这里,最大化对数似然函数与最小化对数似然损失函数其实是等价的,下面我们可以看到。

  • 假设我们有n个独立的训练样本 {(x1,y1),(x2,y2),(x3,y3),...,(xn,yn)},y=0,1 ,那么每一个观察到的样本 (xi,yi) 出现的概率是:

    P(yi,xi)=P(yi=1|xi)yi(1P(yi=1|xi))1yi
    显然, yi 为1时,保留前半部分; yi 为0时,保留后半部分。

  • 构建似然函数:

    L(θ)=P(yi=1|xi)yi(1P(yi=1|xi))1yi

  • OK,对似然函数取对数,得到对数似然函数:
    LL(θ)=log(L(θ))=log(P(yi=1|xi)yi(1P(yi=1|xi))1yi)

    =ni=1yilogP(yi=1|xi)+(1yi)log(1P(yi=1|xi))

    =ni=1yilogP(yi=1|xi)1P(yi=1|xi)+ni=1log(1P(yi=1|xi))

    =ni=1yi(w.x)+ni=1logP(yi=0|xi)

    =ni=1yi(w.x)ni=1log(1+ew.x)

    =ni=1yi(θT.xi)ni=1log(1+eθT.xi)

  • LL(θ) θ 求偏导,得:
    LL(θ)θ=ni=1yixini=1eθT.xi1+eθT.xi.xi

    =ni=1(yiP(yi=1|xi))xi
    该式是无法解析求解,故下面会用到一个常见的优化算法–梯度下降(Gradient Descent).

梯度下降

Gradient Descent 又叫 Steepest Descent,是利用函数一阶的梯度信息找到函数局部最优解的一种方法,机器学习中最简单最常用的一种优化方法。

它的思想很简单:要找最小值,我只需要每一步都往下走(也就是每一步都可以让代价函数更小一点),然后不断地迭代,最终达到最小值的地方。

这里,附上一个网站,可以直观地看出各种优化算法地迭代路径,附上几张效果图如下:

Long Valley:

《LR算法(基础及核心概念)》

Saddle Point:

《LR算法(基础及核心概念)》

Beale’s Function:
《LR算法(基础及核心概念)》

但同时我们也希望能更快地到达最小值,这时我们便需要每一步都是坡度下降最快的地方,而这个坡度下降最快的方向,就是梯度的负方向了,所以参数迭代更新公式如下:

θnew=θoldαLL(θ)θ=θoldαi=1n(yiP(yi=1|xi))xi

  • 其中,参数α叫学习率,这个参数设置很关键。如果设置的太大。缺点:那么很容易就在最优值附加徘徊;优点:能很快的从远离最优值的地方回到最优值附近。如果设置的太小。缺点:那么就跟蜗牛似的,迭代速度太慢了。所以通常的技巧是开始迭代时,学习率大,慢慢的接近最优值的时候,学习率变小就可以了。

  • 第二点是,梯度下降算法在每次迭代更新参数时都需要遍历整个数据集,计算复杂度太高。改进的方法是一次仅随机采用一个样本数据的回归误差来更新回归系数。这个方法叫随机梯度下降算法。

综合以上两点,给出改进的随机梯度下降算法的伪代码:

-------------------------------------------------
1.初始化回归系数
2.重复下面步骤直到收敛{
       对随机遍历的数据集中的每个样本
              随着迭代的逐渐进行,减小$\alpha$的值
              计算该样本的梯度
              使用$\alpha$ x 梯度来更新回归系数
    }
3.返回回归系数值
-------------------------------------------------

正则化

当模型参数很多,而我们可用的数据非常少时,极易出现过拟合的问题。在机器学习领域,通常可以对损失函数引入正则项,其目的是使得参数空间受到一定的限制。

正则化是奥卡姆剃刀(Occam’s Razor)原理的一个体现:在所有可能选择(能很好地解释已知数据)的模型中,更倾向于选择尽量简单的模型。

正则项(范数)的概念已经在博文中说过一次了,这里不再赘述。只八股一下两个正则项的特点吧:

  • L1范数:也称叫“稀疏规则算子”(Lasso Regularization)。为什么能稀疏呢?关键原因在于它能实现特征的自动选择。一般来说,训练集中的某些特征和输出 yi 之间并没有多大关系。在训练时引入这些特征,当然能获得更小的训练误差,但其泛化能力比较差,即造成过拟合!L1范数的引入就是为了实现特征自动选择,它会将没有信息的特征对应的权重置为0

  • L2范数:在回归里面中又称岭回归”(Ridge Regression),也有的叫法为“权值衰减”(Weight Decay)。同样是为了解决过拟合问题,但与 L1 范数不同的是L2是使得特征对应的权重尽量的小,接近于0(但不会等于0)。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。为什么呢?这里给出一个说法:参数越小,表示模型不会过分地学习训练集的某个特征,也即更不容易造成过拟合。

附上一张图片,在二维特征空间中,分别加L1和L2范数的情况:
《LR算法(基础及核心概念)》

两者的区别可以从图中看出来,L1正则化(左图)更容易与突出的角相切,可以想象在高纬特征空间中,会有许多向外突出的角;L1倾向于使某些特征对应的参数变为0,因此能产生稀疏解。而 L2 使 w 接近0

点赞