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的困难程度。和信息熵类似,相对熵越小,表示两种分布越相似。  


相关文章
|
5天前
|
机器学习/深度学习 数据可视化 Python
Logistic回归(一)
这篇内容是一个关于逻辑回归的教程概览
|
14天前
|
机器学习/深度学习 资源调度 并行计算
线性回归
【6月更文挑战第7天】线性回归是建立自变量与因变量之间线性关系的模型,常用于预测数值。它假设观测噪声符合正态分布。模型表示为$y=w^Tx+b$,其中$w$是权重,$b$是偏置。损失函数常用平方误差,通过梯度下降法优化。小批量随机梯度下降是常用的更新参数方法。正则化,如L2正则化(权重衰减),用于防止过拟合。丢弃法用于多层感知机,减少模型复杂度。训练时注意数值稳定性,如梯度爆炸和消失,可通过权重初始化、归一化等方法改善。
24 1
|
1月前
使用R语言进行多项式回归、非线性回归模型曲线拟合
使用R语言进行多项式回归、非线性回归模型曲线拟合
|
1月前
|
机器学习/深度学习 存储 算法
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例(二)
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例二)
|
1月前
|
机器学习/深度学习 并行计算 算法
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例(一)
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例(一)
|
1月前
R语言多项式线性模型:最大似然估计二次曲线
R语言多项式线性模型:最大似然估计二次曲线
|
1月前
|
C++
拟合R语言中的多项式回归
拟合R语言中的多项式回归
|
机器学习/深度学习 算法
逻辑回归和线性回归有何不同?
逻辑回归和线性回归有何不同?
|
机器学习/深度学习 Web App开发 算法
四、多元线性回归
四、多元线性回归
四、多元线性回归
R 多元线性回归
R 多元线性回归
148 0
R 多元线性回归