Logistic Regression 原理及推导 python实现

Posted Maggie张张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Logistic Regression 原理及推导 python实现相关的知识,希望对你有一定的参考价值。

一、问题引入

首先,Logistic回归是一种广义的线性回归模型,主要用于解决二分类问题。比如,现在我们有N个样本点,每个样本点有两维特征x1和x2,在直角坐标系中画出这N个样本的散点图如下图所示,
1
蓝色和红色分别代表两类样本。现在我们的目标是,根据这N个样本所表现出的特征以及他们各自对应的标签,拟合出一条直线对两类样本进行分类,直线的上侧属于第一类,直线的下侧属于第二类。那么我们如何寻找这条直线呢?我们知道,二维空间的一条直线可以用简单的公式表示
y = b + θ 1 x 1 + θ 2 x 2 = θ T x + b y= b+\\theta_{1}x_{1}+\\theta_{2}x_{2}= \\theta ^{T}x+b y=b+θ1x1+θ2x2=θTx+b
参数 θ T \\theta^{T} θT b b b的选择决定了直线的位置,如果我们选取了一组参数 θ \\theta θ b b b导致直线的位置是这样的
2

那肯定不合理,因为两类样本完全没有被分开,而如果我们得到了这样一条直线
3

两类样本虽然存在一些小错误,但是基本上被分开了,所以决定这条直线位置的参数和 θ \\theta θ b b b就是我们想要的答案。由此,我们可以看到,Logistic Regression问题最终变成了求解参数 θ \\theta θ的问题。
二、原理

总的来说,Logistic回归的过程就是根据样本求解分类直线(或者超平面)的参数的过程,求解的方法是极大似然估计法,但是因为似然方程最后求导无法得到解析解,所以用了梯度下降法去逐步优化得到极值。
为什么要用极大似然估计法来求解参数呢?
首先,假设样本有k维特征, x = { x 1 , x 2 , . . . , x k } x=\\left \\{ x_{1},x_{2},...,x_{k} \\right \\} x={x1,x2,...,xk}, y ∈ { 0 , 1 } y\\in \\left \\{ 0,1 \\right \\} y{0,1},用极大似然估计就是在求解怎样的 θ \\theta θ b b b可以使得出现了某个x时,出现对应的y的概率最大。
然后,假设这个概率服从的是Sigmoid分布(如下图所示)。样本的每一维特征的取值在经过参数 θ \\theta θ线性组合之后取值范围是实数集(-inf, inf),通过Sigmoid变换取值变成了(0,1)。
Sigmoid函数:
g ( z ) = 1 1 + e − z g(z)=\\frac{1}{1+e^{-z}} g(z)=1+ez1
4

三、极大似然估计求解迭代方程

首先,把问题变成一个概率问题:
在某个 x x x θ \\theta θ的取值下, y = 1 y=1 y=1的概率为 h θ ( x ) h_{\\theta }(x) hθ(x) P ( y = 1 ∣ x ; θ ) = h θ ( x ) P(y=1|x;\\theta )=h_{\\theta }(x) P(y=1x;θ)=hθ(x)
在某个 x x x θ \\theta θ的取值下, y = 0 y=0 y=0的概率为 1 − h θ ( x ) 1-h_{\\theta }(x) 1hθ(x) P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y=0|x;\\theta )=1-h_{\\theta }(x) P(y=0x;θ)=1hθ(x)
由于 y y y只有两种取值:0和1,因此综合两种情况,对于每一个样本点来说, P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y|x;\\theta )=(h_{\\theta }(x))^{y}(1-h_{\\theta }(x))^{1-y} P(yx;θ)=(hθ(x))y(1hθ(x))1y
考虑样本集中的所有样本点,由于每个样本之间相互独立,因此它们的联合分布等于各自边际分布之积,
L ( θ ) = ∐ i = 1 m P ( y i ∣ x i ; θ ) = ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i L(\\theta )=\\coprod_{i=1}^{m}P(y_{i}|x_{i};\\theta )=(h_{\\theta }(x_{i}))^{y_{i}}(1-h_{\\theta }(x_{i}))^{1-y_{i}} L(θ)=i=1mP(yixi;θ)=(hθ(xi))yi(1hθ(xi))1yi

这就是我们求解 θ \\theta θ需要的似然函数,我们通过他来求解在 θ \\theta θ为何值时, x x x取某个值出现某个 y y y的概率最大。

L ( θ ) 取 对 数 L(\\theta)取对数 L(θ),因为 l n ( x ) ln(x) ln(x) x x x单调性相同

l ( θ ) = l n L ( θ ) = ∑ i = 1 m ( y i l n h θ ( x i ) + ( 1 − y i ) l n ( 1 − h θ ( x i ) ) ) l(\\theta )=lnL(\\theta )=\\sum_{i=1}^{m}(y_{i}lnh_{\\theta }(x_{i})+(1-y_{i})ln(1-h_{\\theta }(x_{i}))) l(θ)=lnL(θ)=i=1m(yilnhθ(xi)+(1yi)ln(1hθ(xi)))

给出损失函数 J ( θ ) = − 1 m l ( θ ) J(\\theta)=-\\frac{1}{m}l(\\theta) J(θ)=m1l(θ),对 J ( θ ) J(\\theta) J(θ)求偏导,

5

理应令求偏导后的表达式等于零求极值,但是无法解析求解,因此用梯度下降法逐渐迭代,找到局部最优解。

四、梯度下降法求解局部极值

为什么梯度下降法能够做到呢?
6

可以看到 θ \\theta θ的取值和 J ( θ ) J(\\theta) J(θ)存在着一一对应的关系,让 θ \\theta 逻辑回归模型 Logistic Regression 详细推导 (含 Numpy 与PyTorch 实现)

详解线性分类-逻辑回归(Logistic Regression)白板推导系列笔记

Logistic回归原理及公式推导[转]

逻辑回归(Logistic Regression, LR)

转载:Logistic回归原理及公式推导

logistic Regression