机器学习模型从理论到实战|【003-逻辑回归】分类模型的起点

举报
远方2.0 发表于 2024/11/27 10:27:03 2024/11/27
【摘要】 机器学习模型从理论到实战|【003-逻辑回归】分类模型的起点 前言逻辑回归是机器学习中最经典的分类算法之一,尽管名字中有“回归”,但它主要用于分类问题。本文将详细介绍逻辑回归的理论基础、数学推导、扩展到多分类任务的思路,并通过一个案例学习如何使用逻辑回归模型进行实际预测。 一、什么是逻辑回归及其基本原理逻辑回归是一种用于分类问题的模型,它基于线性回归,通过将线性回归的输出映射到一个概率值范围...

image.png
机器学习模型从理论到实战|【003-逻辑回归】分类模型的起点

前言

逻辑回归是机器学习中最经典的分类算法之一,尽管名字中有“回归”,但它主要用于分类问题。本文将详细介绍逻辑回归的理论基础、数学推导、扩展到多分类任务的思路,并通过一个案例学习如何使用逻辑回归模型进行实际预测。

一、什么是逻辑回归及其基本原理

逻辑回归是一种用于分类问题的模型,它基于线性回归,通过将线性回归的输出映射到一个概率值范围(0到1),从而实现分类。

1.1 逻辑回归的主要目标是:

  • 输入特征变量 𝑋
  • 输出预测目标 𝑦,表示属于某一类别的概率(例如 𝑦=1表示“正类”,y=0 表示“负类”)。

二、数学推导

2.1.线性模型的改进

线性回归模型:
image.png

其中,w是权重,B是偏置。
为了将线性模型输出的值 z 映射到 [0, 1] 的范围,逻辑回归引入了 Sigmoid 函数

2.1 Sigmoid 函数

Sigmoid 函数是一个 S 型曲线,可以将任意实数映射到 [0, 1]:
image.png

其输出 σ(z) 可解释为属于正类的概率:

  • 当 σ(z)→1,样本更可能属于正类。
  • 当σ(z)→0,样本更可能属于负类

2.3 预测与分类规则

预测目标类别:
image.png

2.4 损失函数

逻辑回归通过最大化对数似然估计(MLE)找到最优参数。最终得到的损失函数(Cost Function)为交叉熵损失:
image.png

3. 多分类任务的扩展:Softmax 回归

3.1 多分类问题

当目标变量 y 有多个类别(如 y∈{0,1,2}),逻辑回归需要扩展到多分类任务。

3.2 Softmax 函数

Softmax 函数是逻辑回归的扩展,用于将多个输出值映射为概率分布:
image.png

其中:

  • z j是第j 类的得分。
  • K 是类别的总数。

4. 实战案例:预测是否购买某商品

4.1 案例背景
目标:根据用户的年龄和收入水平,预测用户是否会购买某商品。

4.2 数据集
示例数据集包含以下特征:

  • Age: 用户年龄。
  • Income: 用户收入。
  • Purchased: 是否购买(0=否,1=是)。

4.3 使用 Python 实现逻辑回归

  1. 导入必要的库
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
  1. 创建数据集
# 示例数据
data = {
    'Age': [22, 25, 47, 52, 46, 56, 48, 55, 60, 62],
    'Income': [30000, 40000, 50000, 60000, 70000, 80000, 85000, 90000, 100000, 110000],
    'Purchased': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
}
df = pd.DataFrame(data)
# 特征与目标变量
X = df[['Age', 'Income']]
y = df['Purchased']
  1. 数据集划分
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  1. 训练逻辑回归模型
# 创建逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测测试集
y_pred = model.predict(X_test)
  1. 模型评估
# 模型准确率
print("Accuracy:", accuracy_score(y_test, y_pred))

# 混淆矩阵
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))

# 分类报告
print("Classification Report:\n", classification_report(y_test, y_pred))

5. 小结与展望

5.1 本节回顾

  • 逻辑回归通过 Sigmoid 函数完成分类任务。
  • 交叉熵损失是逻辑回归的优化目标。
  • 扩展到多分类任务可以使用 Softmax 回归。

5.2 下一步学习:

  • 学习基于距离的分类模型:K 最近邻(KNN)。
  • 深入理解分类模型在小样本数据中的表现。

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。