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

2023-10-21 11:16:01 浏览数 (1)

逻辑回归与条件概率

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

代码语言:javascript复制
odds = p/(1 - p)

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

代码语言:javascript复制
logit(p) = ln(p/(1 - p))

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

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

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

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

代码语言:javascript复制
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,假设数据集中每个样本都是相互独立的,公式为:

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

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

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

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

通过下面的代码绘制这个函数的图像,可以看出,当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,假设数据集中每个样本都是相互独立的,公式为:

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

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

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

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

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



.post-copyright {
    box-shadow: 2px 2px 5px;
    line-height: 2;
    position: relative;
    margin: 40px 0 10px;
    padding: 10px 16px;
    border: 1px solid var(--light-grey);
    transition: box-shadow .3s ease-in-out;
    overflow: hidden;
    border-radius: 12px!important;
    background-color: var(--main-bg-color);
}
.post-copyright:before {
    position: absolute;
    right: -26px;
    top: -120px;
    content: 'f25e';
    font-size: 200px;
    font-family: 'FontAwesome';
    opacity: .2;
}
.post-copyright__title {
    font-size: 22px;
}
.post-copyright_type {
    font-size: 18px;
    color:var(--theme-color)
}
.post-copyright .post-copyright-info {
    padding-left: 6px;
    font-size: 15px;
}
.post-copyright-m-info .post-copyright-a, .post-copyright-m-info .post-copyright-c, .post-copyright-m-info .post-copyright-u {
    display: inline-block;
    width: fit-content;
    padding: 2px 5px;
    font-size: 15px;
}
.muted-3-color {
    color: var(--main-color);
}
/*手机优化*/
@media screen and (max-width:800px){.post-copyright-m-info{display:none}}



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

0 人点赞