Logistic回归(二)

简介: Logistic回归,又称对数几率回归,是用于分类问题的监督学习算法。它基于对数几率(log-odds),通过对数转换几率来确保预测值在0到1之间,适合于二分类任务。模型通过Sigmoid函数(S型曲线)将线性预测转化为概率。逻辑回归损失函数常采用交叉熵,衡量模型预测概率分布与真实标签分布的差异。熵和相对熵(KL散度)是评估分布相似性的度量,低熵表示分布更集中,低交叉熵表示模型预测与真实情况更接近。

Logistic回归(一)+https://developer.aliyun.com/article/1544675?spm=a2c6h.13148508.setting.30.2a1e4f0euIPhgb


对数几率模型与Logistic回归


Logistic 回归也被称为“对数几率”回归


几率的概念与概率不同,几率是指:将y记作正例(某事件)发生的概率,而1-y作为负例的概率,那么两者的比值 称之为该事件的几率,在几率的基础之上,我们取对数进行操作,则构成了该事件的对数几率(logit):



大家可以这么理解,几率表示“一件事情成功的几率”, 可以定义为成功的概率/失败的概率,如果明天晴天的概率是60%,则非晴天的概率是40%,则几率就是1.5 。


那么对数几率就是log1.5,从0.1到0.9的几率:



此时的广义线性模型就是 对数几率回归 logistic regression,也被称为逻辑回归。


逻辑回归

 

得到逻辑回归基本模型方程:



此时,y表示在现有样本的条件下,结果正例的概率


np.random.seed(216)
x = np.linspace(-15, 15, 100)
y = 1 / (1 + np.exp(-x))
plt.plot(x, y)
plt.show()


我们称这种有着优美的S型曲线的数学函数为Sigmoid函数,当然,Sigmoid函数是一类函数,但是逻辑回归函数在机器学习中是非常常见普遍的函数。


逻辑回归损失函数

交叉熵


我们又需要引入一个数学概念,熵(entropy)


第一个问题,如何量化信息?

信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进行量化。信息论的基本想法是一个不太可能的事件发生了,要比一个非常可能的事件发生,能提供更多的信息。



我们需要衡量信息的多少,第一步就是如何衡量信息量,信息量实际上是事件不确定度的度量,越不确定的事件,对其的描述就包含越多信息,假设我们听到了两件事,分别如下:


事件A:阿根廷进入了2022世界杯决赛圈。


事件B:中国队进入了2022世界杯决赛圈。


仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关。


我们可以总结一下:


  • 信息量小,概率大的事件发生了
  • 信息量大,概率小的事件发生了


越不可能的事件发生时,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小,一个简单的例子就是,“明天太阳东边升起”,这句话是没有任何信息量的,因为我们都知道太阳总是东升西落。


在信息论中,总结了信息量的计算方法,我们假设X是一个离散型随机变量,概率分布函数:I(x_0) = - \log(p(x_0)):


x = np.linspace(0,1,100)
y = - np.log2(x)
plt.plot(x,y)
plt.show()



  • 横坐标为概率p,纵坐标为信息量 I。概率越小,信息量越大,概率越大,信息量越小。


了解了信息量的计算方法之后,存在一个问题,对于某种事件,我们有很多可能性,每一种可能性都有概率,那么我们就可以计算出某一种可能性的信息量,举个列子,周末你和家人在公园放风筝,当松手的时候,我们假设预测有几种可能:


def entropy(ps):
    def getI(p):
        return -p * np.log2(p)
    ent = 0
    if ps.sum() != 1 :
        print("输入值错误")
        return np.nan
    for p in ps:
        if p == 0 or p == 1:
            ent = 0
        else:
            ent += getI(p)
    return ent


信息量只能处理单个的输出。我们可以使用香农熵(Shannon entropy)来对整个概率分布中的不确定性总量进行量化!用熵来表示所有信息量的期望:



通过这个公式,计算一下放风筝这个事件的熵,我们可以得到熵值是:0.8841。


在分类问题中,我们也可以使用熵来计算样本集的信息熵值


为了后续计算方便,我们也可以定义信息熵的计算公式:


def entropy(ps):
    def getI(p):
        return -p * np.log2(p)
    ent = 0
    if ps.sum() != 1 :
        print("输入值错误")
        return np.nan
    for p in ps:
        if p == 0 or p == 1:
            ent = 0
        else:
            ent += getI(p)
    return ent


## 如果是二分类,那么熵的计算公式可以改一下。
def entropy_bin(p):
    def getI(p):
        return -p * np.log2(p)
    if p == 0 or p == 1:
        ent = 0
    else:
        ent = getI(p) + getI(1-p)
    return ent
 
p = np.linspace(0, 1, 50)
ent_l = [entropy_bin(x) for x in p]
 
plt.plot(p, ent_l)
plt.scatter(0.5,entropy_bin(0.5))
plt.xlabel('P')
plt.ylabel('Entropy')



可以发现当P值为0.5的时候,熵值最大,也就是指,在二分类中,如果0、1类样本各占50%,那么熵值是最大的,也就是标签随机变量的不确定性已经达到峰值!如果Labels全为1,或者全为0,那么系统的熵值是最小的,是0,也就代表标签的取值整体呈现非常确定的状态,系统信息规整。也可以推测出,此时的熵的范围是【0,1】  


相对熵


在机器学习过程中,我们其实可以得到两种数据集的分布,一种是原始特征和真实标签的数据集,一种是原始特征和模型预测值组成的数据集,我们如何比较真实标签和我们预测值的差异呢?这个也是损失函数的核心问题?这个又和现在讲解的熵有什么关系呢?


在这里我们需要引入另一个概念,就是相对熵


相对熵也被称为Kullback-Leibler散度(KL散度)或者信息散度(information divergence)。通常用来衡量两个随机变量分布的差异性。假设对同一个随机变量X,有两个单独的概率分布P(x)和Q(x),当X是离散变量时,我们可以通过如下相对熵计算公式来衡量二者差异:



在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1],直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述,这个信息增量可以理解为两种数据分布的差异,从本质上来说,相对熵刻画的是用概率分布Q来刻画概率分布P的困难程度。和信息熵类似,相对熵越小,表示两种分布越相似。  


目录
打赏
0
2
2
0
50
分享
相关文章
Logistic回归(一)
这篇内容是一个关于逻辑回归的教程概览
逻辑回归那些事—使用牛顿法解决实际问题
逻辑回归是机器学习中的重要章节,本文将带你从公式推导到算法实现详细讲述这部分内容,想学习这个高大上的技能么,快来看吧!!!
5524 0
逻辑回归那些事—使用牛顿法解决实际问题
logistic回归算法及其matlib实现
     一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。如果非要使用回归算法,可以使用logistic回归。      logistic回归本质上是线性回归,只是在特征到结果的映射中多加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)作为假设函数来预测,g(z)可以将连续值映射到0和1上。
1488 0
多元线性回归梯度下降法
梯度下降法是一种通用的优化算法,尤其适用于机器学习中找到最优解。与解析解法不同,它不局限于特定情况,能在数据规模较大时依然有效。该方法通过迭代逐步接近最优解,每次迭代利用损失函数的梯度信息调整参数。学习率是控制参数更新幅度的关键因素,太大会导致发散,太小则收敛慢。全量梯度下降每次使用所有样本更新,收敛稳定但速度慢;随机梯度下降每次仅用一个样本,速度快但可能产生较大波动;小批量梯度下降取两者之间,以一定的样本批量进行更新,兼顾速度和稳定性。
119 1
|
9月前
R方和线性回归拟合优度
R方和线性回归拟合优度
浅谈Logistic回归及过拟合
  判断学习速率是否合适?每步都下降即可。这篇先不整理吧...   这节学习的是逻辑回归(Logistic Regression),也算进入了比较正统的机器学习算法。啥叫正统呢?我概念里面机器学习算法一般是这样一个步骤:   1)对于一个问题,我们用数学语言来描述它,然后建立一个模型,例如回归模型或者分类模型等来描述这个问题;   2)通过最大似然、最大后验概率或者最小化分类误差等等建立模型的代价函数,也就是一个最优化问题。
2436 0
广义线性模型
 指数分布族 前面学习了线性回归和logistic回归。我们知道对于\(P(y|x;\theta)\) 若y属于实数,满足高斯分布,得到基于最小二乘法的线性回归,若y取{0,1},满足伯努利分布,得到Logistic回归。
1289 0
线性模型的最小二乘法拟合(转)
我们知道在二维坐标中,已知两点就可以确定一个线性方程,如果有n个数据点(x1,y1),(x2,y2),...(xn,yn),那么就会有n个线性方程,我们使用最小二乘法从这n个方程中拟合出一个最佳的线性方程,也就是求出方程的参数a,b设某个已知的一元线性方程的表达式为:y=a+bx有一组权重相等的...
924 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等