Logistic回归中的Logit函数和sigmoid函数

在线性回归中, y=wTx y = w T x ,是用直线去拟合数据,实现最小二乘意义下的最小预测误差。

在逻辑回归中: logit(p)=log(p1p)=wTx l o g i t ( p ) = l o g ( p 1 − p ) = w T x ,可以看作是用直线去拟合Logit函数,通过极大似然估计出参数,使得在该参数下,能以最大概率生成当前的样本。

这里要说明的是,线性回归解决的是回归问题,而逻辑回归是分类问题,但两者的形式非常的相似,上面两式的右边也是一致的。

Logistic回归通过对数据分类边界的拟合来实现分类。而这条数据分类边界即为直线,这也是它为什么可以被看作是一个广义线性模型的原因

在线性回归中,回归的因变量y是连续的,没有明确的上下限,因此可以用线性模型来拟合。而逻辑回归应用于分类时,因变量,也就是类别y只有0和1,满足二项分布,这是连续的线性模型无法拟合的。因此,需要选择最佳的连接函数,它就是Logit函数。

这里给出Logit函数的图像(来自维基百科):

这里写图片描述

可以看出Logit函数能把自变量从(0,1)连续单调地映射到正负无穷,这里类别y的0和1值分别对应(0,0.5)和(0.5,1)的概率值p。

另外,把 wTx w T x 看作一个整体,反解出p,就会看到我们熟悉的sigmoid函数

p=11+ewTx=sigmoid(wTx) p = 1 1 + e − w T x = s i g m o i d ( w T x )

这里的sigmoid函数有非线性化和限幅的作用,限制在(0,1)之间,才能够用于分类。

总结:

Logistic回归是对特征(feature)做加权相加后,输入给Sigmoid函数,用Sigmoid函数的输出来确定二分类的结果。

其中的logistic就是sigmoid函数,因为它也叫logistic函数。它与logit函数互为反函数。

其中的回归在这里的含义可以理解为最佳拟合,表示要找到最佳拟合参数集用于对特征加权。训练分类器就是用最优化方法去寻找最佳拟合参数。

### Logistic回归Sigmoid函数实现分类问题 Logistic回归是一种广泛使用的统计学方法,适用于二分类问题。其核心思想是通过Sigmoid函数将输入变量映射到概率空间,从而实现对样本的分类[^5]。 #### Sigmoid函数定义 Sigmoid函数是一个平滑的非线性函数,形式如下: \[ \sigma(z) = \frac{1}{1 + e^{-z}} \] 它能够将任何实数范围内的值压缩至 (0, 1),这使得它可以被解释为事件发生的概率[^4]。 以下是基于PythonScikit-Learn库实现Logistic回归的一个完整示例: ```python import numpy as np from sklearn.linear_model import LogisticRegression from matplotlib import pyplot as plt # 数据准备 x_train = np.array([[0], [1], [2], [3], [4], [5]]) # 特征矩阵 y_train = np.array([0, 0, 0, 1, 1, 1]) # 类别标签 # 创建并训练模型 model = LogisticRegression() model.fit(x_train, y_train) # 输出模型参数 print(f"截距(b): {model.intercept_[0]}") # 截距b print(f"权重(w): {model.coef_[0][0]}") # 权重w # 预测新数据点 x_test = np.array([[6]]) prediction = model.predict_proba(x_test) print(f"测试点{x_test.flatten()}的概率分布: {prediction}") # 可视化决策边界 plt.scatter(x_train, y_train, color="blue", label="真实数据") x_values = np.linspace(-1, 7, 100).reshape(-1, 1) y_values = model.predict_proba(x_values)[:, 1] plt.plot(x_values, y_values, color="red", label="预测概率") plt.axhline(y=0.5, linestyle="--", color="green", label="决策边界") plt.xlabel("特征X") plt.ylabel("类别Y") plt.legend() plt.show() ``` 上述代码实现了以下几个功能: 1. 使用`LogisticRegression()`创建了一个逻辑回归模型。 2. 调用了`fit()`方法对模型进行了训练[^2]。 3. 利用`predict_proba()`方法获取了测试点属于某一类别的概率。 4. 绘制了Sigmoid曲线以及决策边界。 #### 自定义实现Logistic回归 如果希望手动实现而不依赖于第三方库,则可以参考以下代码片段: ```python def sigmoid(z): return 1 / (1 + np.exp(-z)) def gradient_ascent(X, Y, learning_rate=0.01, epochs=1000): m, n = X.shape theta = np.zeros(n) for _ in range(epochs): z = np.dot(X, theta) h = sigmoid(z) gradient = np.dot(X.T, (h - Y)) / m theta -= learning_rate * gradient return theta # 示例数据 data_matrix = np.array([ [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5] ]) labels = np.array([0, 0, 0, 1, 1, 1]) theta = gradient_ascent(data_matrix, labels) print(f"自定义实现得到的参数θ: {theta}") ``` 此部分展示了如何通过梯度下降法更新模型参数,并最终获得最优解。 --- ### 总结 无论是借助成熟的机器学习框架还是自行编写算法,Logistic回归都提供了简单而有效的解决方案来处理二元分类任务。以上两种方式均能帮助理解其工作原理及其实际应用价值[^1]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海晨威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值