本文最后更新于:2025年6月7日 晚上

对数几率(Logit)是统计学和机器学习中的重要概念,主要用于描述事件发生概率与不发生概率的比率关系,本文记录相关信息。

简介

几率,更准确的说,成功的几率,被定义为成功的概率/失败的概率。

对数几率(Logit)是统计学和机器学习中的重要概念,主要用于描述事件发生概率与不发生概率的比率关系,在分类任务(尤其是二分类)中应用广泛。

定义

对数几率的定义为事件发生概率 $p$ 与不发生概率 $1−p$ 的比率的自然对数:
$$
\mathrm{logit}(p)=\ln{(\frac{p}{1-p})}
$$
其中:

  • $𝑝$:事件发生的概率($0<𝑝<1$);
  • $\frac{𝑝}{1−𝑝}$:称为“几率”(Odds),表示事件发生的相对可能性。

示例‌:

若某事件发生概率 $𝑝=0.8$,则:

  • 几率 =0.8/0.2=4(发生概率是不发生概率的4倍);
  • 对数几率 = ln⁡(4) ≈1.386

和逻辑回归的关系

观察上表中的第一和第三列,如果反过来,考虑一个函数将 log odds作为自变量,概率作为应变量,这个函数就是逻辑函数(Logisitc Function),逻辑回归的来源,这也是逻辑回归的另一个名字–对数几率回归(Log Odds Regression)的原因。

我们都知道线性回归的形式: $𝑦=𝑤𝑥+𝑏$ ,以 𝑤,𝑏 拟合 𝑦 ;

逻辑回归-对数几率回归其实对应:
$$
\ln\frac{y}{1-y}=wx+b
$$
线性拟合 $\ln\frac{y}{1-y}$.

对上式进行处理可以得到:
$$
y=\frac1{1+e^{-(wx+b)}}
$$

Pytorch 逻辑回归

  • 生成数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import torch
import matplotlib.pyplot as plt

# 生成数据
torch.manual_seed(10)
mean_val = 1.5
num_sample = 100
n_data = torch.ones(num_sample,2)
x0 = torch.normal(mean_val*n_data,1)
y0 = torch.ones(num_sample)
x1 = torch.normal(-mean_val*n_data,1)
y1 = torch.zeros(num_sample)
train_x = torch.cat((x0,x1),0)
train_y = torch.cat((y0,y1),0)

plt.scatter(x0[:,0],x0[:,1])
plt.scatter(x1[:,0],x1[:,1])
plt.show()
  • 逻辑回归
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import torch.nn as nn
class LR(nn.Module):
def __init__(self):
super(LR,self).__init__()
self.features = nn.Linear(2,1)
self.sigmoid = nn.Sigmoid()

def forward(self,x):
x = self.features(x)
x = self.sigmoid(x)
return(x)

lr_net = LR()
loss_fn = nn.BCELoss() # Binary Cross Entropy
lr = 0.01 # learning rate
optimizer = torch.optim.SGD(lr_net.parameters(), lr=lr, momentum=0.8)

for iteration in range(1000):
y_pred = lr_net(train_x)

loss = loss_fn(y_pred.squeeze(), train_y)

loss.backward()

optimizer.step()

if iteration%5 == 0:
mask = y_pred.ge(0.5).float().squeeze()
correct = (mask == train_y).sum()
acc = correct.item() / train_y.size(0)
print(iteration,acc)
if acc>0.985:

break

参考资料



文章链接:
https://www.zywvvd.com/notes/study/machine-learning/odds/odds/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

对数几率 odds
https://www.zywvvd.com/notes/study/machine-learning/odds/odds/
作者
Yiwei Zhang
发布于
2025年6月6日
许可协议