前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >突破 逻辑回归 核心点!!

突破 逻辑回归 核心点!!

作者头像
Python编程爱好者
发布2024-07-12 13:36:34
1010
发布2024-07-12 13:36:34
举报
文章被收录于专栏:Python编程爱好者

Hi,我是Johngo~

昨天,咱们分享了关于SVM的一些核心点,大家感兴趣可以看看昨天的文章。

今天继续会把逻辑回归的核心点和大家进行分享。

很多人都提到了这一句,逻辑回归,虽然名字里有“回归”,但逻辑回归实际上是用于解决二分类(binary classification)问题的分类算法。它通过一个逻辑函数(sigmoid函数)将线性回归的输出值映射到一个(0, 1)之间的概率值,从而实现分类任务。

基础点

  1. 模型形式:

逻辑回归的基本模型形式是:

其中, 是预测结果的概率值, 是特征值, 是需要学习的模型参数。

  1. 逻辑函数(Sigmoid函数):

逻辑回归使用的是Sigmoid函数,它的公式为:

该函数将任意实数值映射到 (0, 1) 之间。

  1. 决策边界:

当 Sigmoid 函数的输出值大于0.5时,预测类别为1,否则预测类别为0。可以通过调整决策边界来改变分类的灵敏度。

这里,咱们从模型训练角度再谈一谈:

  1. 损失函数:

逻辑回归通常使用对数损失(Log Loss)作为损失函数:

其中, 是样本数量, 是模型对第 个样本的预测概率。

  1. 优化算法:

通过梯度下降法(Gradient Descent)来优化模型参数,使损失函数最小化。

核心逻辑

逻辑回归的核心逻辑在于将线性回归的输出映射到一个概率值,从而能够解决二分类问题。这一核心逻辑的实现依赖于逻辑函数(sigmoid函数),并通过最大似然估计(Maximum Likelihood Estimation, MLE)来估计模型参数。

1. 模型假设

假设输入特征向量为 ,模型参数为 。逻辑回归模型的假设是通过一个线性模型加权求和得到的:

然后通过sigmoid函数将线性模型的输出映射到一个 (0, 1) 之间的概率值:

2. 目标函数

为了估计模型参数 ,我们需要定义一个目标函数。逻辑回归使用的是对数似然函数。

对于二分类问题,输出 取值为0或1。样本的预测概率为 ,则其对数似然函数为:

对整个训练集 (其中 是样本数量)取对数似然函数的总和,得到总的对数似然函数:

3. 最大化对数似然函数

为了得到参数 的估计值,我们需要最大化对数似然函数 。通常使用负对数似然函数(即损失函数)来简化计算:

4. 梯度下降法

通过梯度下降法,我们可以迭代地更新参数 以最小化损失函数 。梯度下降的更新规则为:

其中, 是学习率, 是损失函数关于参数 的偏导数。

对于逻辑回归,损失函数的偏导数为:

将其代入更新规则中,得到:

5. 迭代更新

我们反复迭代上述更新步骤,直到损失函数收敛,得到最终的参数 估计值。

6. 分类决策

最终,模型的分类决策是基于预测概率 来做出的。通常,如果预测概率大于0.5,则分类为1,否则分类为0:

通过上述步骤和公式推导,我们可以完整地理解逻辑回归的核心逻辑及其实现过程。

代码描述

逻辑回归的Python实现可以通过scikit-learn库来实现。

下面,使用逻辑回归进行分类的示例,并绘制一个三维图形来说明逻辑回归模型的决策边界。

首先,需要导入相关库,生成一个三维数据集,然后训练逻辑回归模型。最后,我们将绘制决策边界和数据点。

1. 导入库

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

2. 生成数据集

代码语言:javascript
复制
# 生成一个三维的二分类数据集
X, y = make_classification(n_samples=100, n_features=3, n_informative=3, n_redundant=0, n_clusters_per_class=1)

# 将数据分为两类
class_0 = X[y == 0]
class_1 = X[y == 1]

3. 训练逻辑回归模型

代码语言:javascript
复制
# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X, y)

4. 绘制三维图形和决策边界

代码语言:javascript
复制
# 创建三维图形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制数据点
ax.scatter(class_0[:, 0], class_0[:, 1], class_0[:, 2], color='blue', label='Class 0')
ax.scatter(class_1[:, 0], class_1[:, 1], class_1[:, 2], color='red', label='Class 1')

# 创建一个网格来绘制决策边界
xx, yy = np.meshgrid(np.linspace(X[:, 0].min(), X[:, 0].max(), 50),
                     np.linspace(X[:, 1].min(), X[:, 1].max(), 50))
zz = -(model.intercept_ + model.coef_[0][0] * xx + model.coef_[0][1] * yy) / model.coef_[0][2]

# 绘制决策边界
ax.plot_surface(xx, yy, zz, alpha=0.5, rstride=100, cstride=100, color='green')

# 设置图形标签
ax.set_xlabel('Feature 1')
ax.set_ylabel('Feature 2')
ax.set_zlabel('Feature 3')
ax.legend()
plt.show()

大家注意其中最重要的三点即可~

  1. 生成数据集:使用make_classification生成一个包含三维特征的二分类数据集。
  2. 训练模型:使用LogisticRegression训练逻辑回归模型。
  3. 绘制数据点和决策边界
    • 使用mpl_toolkits.mplot3d中的Axes3D创建三维图形。
    • 使用scatter方法绘制数据点,分别用蓝色和红色表示两个类别。
    • 创建一个网格,并根据逻辑回归模型的参数计算决策边界的平面。
    • 使用plot_surface方法绘制决策边界。

三维图形展示了逻辑回归模型在三维特征空间中的分类效果。绿色平面是决策边界,它将特征空间划分为两部分,分别对应于模型预测的两个类别。图中的数据点则表示实际的样本点,模型根据这些点的位置和决策边界来进行分类。通过这种可视化方法,大家可以直观地理解逻辑回归模型在三维空间中的分类原理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Johngo学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础点
  • 核心逻辑
  • 代码描述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档