Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

Logistic Regression 原理及推导 python实现

$
0
0
Logistic Regression 原理及推导 python实现

4天前来源:CSDN博客

一、问题引入

首先,Logistic回归是一种广义的线性回归模型,主要用于解决二分类问题。比如,现在我们有N个样本点,每个样本点有两维特征x1和x2,在直角坐标系中画出这N个样本的散点图如下图所示,
php?url=0Fftm4NLsv" alt="Logistic Regression 原理及推导 python实现" />
蓝色和红色分别代表两类样本。现在我们的目标是,根据这N个样本所表现出的特征以及他们各自对应的标签,拟合出一条直线对两类样本进行分类,直线的上侧属于第一类,直线的下侧属于第二类。那么我们如何寻找这条直线呢?我们知道,一条直线可以用简单的公式表示

y=θ0+θ1x1+θ2x2+...=θTx

参数θT的选择决定了直线的位置,如果我们选取了一组参数θ
导致直线的位置是这样的
Logistic Regression 原理及推导 python实现
那肯定不合理,因为两类样本完全没有被分开,而如果我们得到了这样一条直线
Logistic Regression 原理及推导 python实现
两类样本虽然存在一些小错误,但是基本上被分开了。由此,我们可以看到,Logistic Regression问题最终变成了求解最优参数θ的问题。

二、原理

样本的每一维特征的取值在经过参数θ线性组合之后取值范围是实数集(-inf, inf),而要想对实数进行二分类就要通过一个函数将实数投影到某个有限区间上,在有限区间内找到一个阈值,大于这个阈值分为第一类,小于等于这个阈值分为第二类。LR找到的这个投影函数就是sigmoid函数

g(z)=11+ez


Logistic Regression 原理及推导 python实现

值域为(0,1),当x=0时,函数值为0.5。在实际分类中,由于假设样本均匀分布,所以阈值通常选取为0.5。

现在我们有N个样本x1x2x3...,每个样本有一个类别标签y(y=0 or y=1)与之对应,我们知道它们的对应关系可以由参数θ来估计,因此用极大似然估计法来求解我们我们的目标θ。首先,把问题变成一个概率问题:
在某个x和θ的取值下,y=1的概率为hθ(x),

P(y=1|x;θ)=hθ(x)


在某个x和θ的取值下,y=0的概率为1hθ(x),

P(y=0|x;θ)=1hθ(x)


由于y只有两种取值:0和1,因此综合两种情况,对于每一个样本点来说,

P(y|x;θ)=(hθ(x))y(1hθ(x))1y


考虑样本集中的所有样本点,由于每个样本之间相互独立,因此它们的联合分布等于各自边际分布之积,
L(θ)=i=1mP(yi|xi;θ)=(hθ(xi))yi(1hθ(x

Viewing all articles
Browse latest Browse all 9596

Trending Articles