基于逻辑回归的分类概率建模

基于逻辑回归的分类概率建模

逻辑回归与条件概率

要解释作为概率模型的逻辑回归原理,首先要介绍让步比(odds)。即某一特定事件发生的概率,让步比可以定义为

odds = p/(1 - p)

p代表正事件发生的概率,指的是要预测的事件。例如,病人有某种疾病的可能性,可以认为正事件的分类标签为y=1、可以进一步定义logit函数,也就是让步比的对数形式

logit(p) = ln(p/(1 - p))

可以用它来表示特征值和对数概率之间的线性关系:

logit(p(y=1|x)) = w_0x_o + w_1x_1 + ... + w_mx_m = \sum_{i=0} ^{m}w_ix_i = w^Tx

这里的p(y=1|x)是给定特征值x,样本分类标签为1的概率。预测某个样本属于某个特定类的概率。则是logit函数的逆函数,也被称为逻辑sigmoid函数

\Phi (z) = \frac{1}{1 + e^{-z}}

其中z为净输入,是权重和样本特征的线性组合。

接下来我们用-7到7之间的一些简单的值来绘出sigmoid函数来观察具体情况

import numpy as np
import matplotlib.pyplot as plt

# sigmoid函数
def sigmoid(z):
    return 1.0/(1.0+np.exp(-z))

# 生成从-7到7,步距为0.1的向量
z = np.arange(-7, 7, 0.1)
# sigmoid函数计算
phi_z = sigmoid(z)
plt.plot(z, phi_z)
plt.axvline(0.0, color='k')
plt.ylim(-0.1, 1.1)
plt.xlabel('z')
plt.ylabel('$\phi (z)

执行这段代码,可以看到如下图所示的曲线,可知当z趋向无穷大时,sigmoid函数值趋向于1,类似的,z趋向无穷小时,sigmoid函数趋向于0。



为了更直观地理解逻辑回归模型,我们把他与Adaline联系起来。在Adaline中,我们的激活函数为恒等函数,在逻辑回归中,我们将sigmoid函数作为激活函数。sigmoid函数的输出则被解释为样本的分类标签属于1的概率。



预测概率可以通过阈值函数简单的转化为二元输出

y=1, if sigmoid(z)>=0.5
y=0, else

等同于下面的结果

y=1, if z>=0
y=0, else

学习逻辑代价函数的权重

学习了如何使用逻辑回归模型来预测概率和分类标签,现在来探究一下如何拟合模型的参数。

在建立逻辑回归模型时,我们首先定义最大似然函数L,假设数据集中每个样本都是相互独立的,公式为:

L(w) = p(y|x;w) = \prod _i^{n}P(y^{(i)}|x^{(i)};w) = \prod _i^{n}(\phi(z^{(i)}))^{y^{(i)}}(1-\phi(z^{(i)}))^{1-y^{(i)}}

在实践中中,很容易最大化该方程的自然对数,故定义对数似然函数:

l(w) = log(L(w)) = \Sigma_{i=1}^{n} [y^{(i)}log(\phi(z^{(i)})) + (1-y^{(i)})log(1-\phi(z^{(i)}))]

使用梯度上升等算法优化这个对数似然函数。另一个选择是改写对数似然函数作为代价函数J,用梯度下降函数最小化代价函数。L函数越趋近于1,则越拟合,所以对数似然函数越趋近于0(为负),则越拟合,因此J函数越趋近于0(为正),越小越拟合。

J(w) = \Sigma_{i=1}^{n}[-y^{(i)}log(\phi(z^{(i)}))-(1-y^{(i)})log(1-\phi(z^{(i)}))]

为了更好的理解这个代价函数,我们计算一个训练样本的代价:

J(\phi(z),y;w) = -ylog(\phi(z))-(1-y)log(1-\phi(z))

如果y=1,则第二项为0,如果y=0,则第一项为0,因此代价函数可以写作:

J(\phi(z),y;w) =\left\{ \begin{matrix} -log(\phi(z))& \quad \quad if\quad y = 1\\ -log(1-\phi(z)) & \quad \quad if\quad y = 0 \end{matrix} \right.

通过下面的代码绘制这个函数的图像,可以看出,当y=1时,如果正确预测样本,则代价函数趋于0。y=0时,如果正确预测样本,则代价趋于0。反之,如果预测错误,代价就会趋于无限大。

关键就在于用越来越大的代价惩罚错误的预测。

)
# yticks函数设置刻度
plt.yticks([0.0, 0.5, 1.0])
ax = plt.gca()
ax.yaxis.grid(True)
plt.tight_layout()
plt.show()

执行这段代码,可以看到如下图所示的曲线,可知当z趋向无穷大时,sigmoid函数值趋向于1,类似的,z趋向无穷小时,sigmoid函数趋向于0。

为了更直观地理解逻辑回归模型,我们把他与Adaline联系起来。在Adaline中,我们的激活函数为恒等函数,在逻辑回归中,我们将sigmoid函数作为激活函数。sigmoid函数的输出则被解释为样本的分类标签属于1的概率。

预测概率可以通过阈值函数简单的转化为二元输出


等同于下面的结果


学习逻辑代价函数的权重

学习了如何使用逻辑回归模型来预测概率和分类标签,现在来探究一下如何拟合模型的参数。

在建立逻辑回归模型时,我们首先定义最大似然函数L,假设数据集中每个样本都是相互独立的,公式为:

L(w) = p(y|x;w) = \prod _i^{n}P(y^{(i)}|x^{(i)};w) = \prod _i^{n}(\phi(z^{(i)}))^{y^{(i)}}(1-\phi(z^{(i)}))^{1-y^{(i)}}

在实践中中,很容易最大化该方程的自然对数,故定义对数似然函数:

l(w) = log(L(w)) = \Sigma_{i=1}^{n} [y^{(i)}log(\phi(z^{(i)})) + (1-y^{(i)})log(1-\phi(z^{(i)}))]

使用梯度上升等算法优化这个对数似然函数。另一个选择是改写对数似然函数作为代价函数J,用梯度下降函数最小化代价函数。L函数越趋近于1,则越拟合,所以对数似然函数越趋近于0(为负),则越拟合,因此J函数越趋近于0(为正),越小越拟合。

J(w) = \Sigma_{i=1}^{n}[-y^{(i)}log(\phi(z^{(i)}))-(1-y^{(i)})log(1-\phi(z^{(i)}))]

为了更好的理解这个代价函数,我们计算一个训练样本的代价:

J(\phi(z),y;w) = -ylog(\phi(z))-(1-y)log(1-\phi(z))

如果y=1,则第二项为0,如果y=0,则第一项为0,因此代价函数可以写作:

J(\phi(z),y;w) =\left\{ \begin{matrix} -log(\phi(z))& \quad \quad if\quad y = 1\\ -log(1-\phi(z)) & \quad \quad if\quad y = 0 \end{matrix} \right.

通过下面的代码绘制这个函数的图像,可以看出,当y=1时,如果正确预测样本,则代价函数趋于0。y=0时,如果正确预测样本,则代价趋于0。反之,如果预测错误,代价就会趋于无限大。

关键就在于用越来越大的代价惩罚错误的预测。

------本页内容已结束,喜欢请分享------

文章作者
能不能吃完饭再说
隐私政策
PrivacyPolicy
用户协议
UseGenerator
许可协议
NC-SA 4.0


© 版权声明
THE END
喜欢就支持一下吧
点赞20赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片