人工智能学习(五)之机器学习逻辑回归算法

ops/2025/2/4 10:41:38/

深入剖析学习>机器学习逻辑回归算法

一、引言

学习>机器学习领域,逻辑回归是一种极为经典且应用广泛的算法。虽说名字里带有 “回归”,但它主要用于解决分类问题,在医学、金融、互联网等多个领域都发挥着关键作用。例如,在医学上辅助判断疾病风险,金融领域评估信用风险,互联网行业进行用户行为分析等。接下来,就让我们深入探究逻辑回归算法,从原理推导、代码实现到实际应用拓展,全面了解这一强大的工具。

二、原理推导

(一)线性回归回顾

(二)逻辑回归模型构建

(三)极大似然估计

三、优化目标定义

四、迭代优化参数

五、代码实现

下面使用 Python 和 NumPy、scikit - learn库实现一个包含数据预处理、模型训练和评估的逻辑回归模型示例。在这个示例中,我们使用经典的鸢尾花数据集,该数据集包含四个属性列和一个品种类别列,我们的目标是根据四个属性来预测鸢尾花的品种。

# 导入必要的库from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score, classification_report# 1. 加载数据# 使用load_iris函数从scikit - learn的数据集模块中加载鸢尾花数据集iris = load_iris()# 提取特征数据X = iris.data# 提取目标标签y = iris.target# 2. 数据预处理# 通过train_test_split函数将数据集划分为训练集和测试集# test_size=0.2表示20%的数据作为测试集# random_state=42设置随机种子,以确保结果的可重复性X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用StandardScaler对数据进行标准化处理# 它会将数据转换为均值为0,标准差为1的分布# 这对于使用梯度下降法训练的模型(如逻辑回归)非常重要,可以加快模型的收敛速度scaler = StandardScaler()X_train = scaler.fit_transform(X_train)X_test = scaler.transform(X_test)# 3. 模型训练# 创建逻辑回归模型实例# 设置solver='lbfgs'表示使用拟牛顿法中的L - BFGS算法来求解# multi_class='auto'表示让模型自动选择合适的多分类策略# random_state=42设置随机种子,确保模型训练结果的可重复性model = LogisticRegression(solver='lbfgs', multi_class='auto', random_state=42)# 使用训练数据对模型进行训练model.fit(X_train, y_train)# 4. 模型评估# 使用训练好的模型对测试集进行预测y_pred = model.predict(X_test)# 通过accuracy_score函数计算预测准确率accuracy = accuracy_score(y_test, y_pred)print(f"模型准确率: {accuracy}")# 使用classification_report函数生成详细的分类报告# 展示模型在各个类别上的精确率、召回率和F1值等评估指标print("分类报告:\n", classification_report(y_test, y_pred))

通过上述代码及注释,可以清晰地看到实现一个逻辑回归模型从数据处理到模型训练和评估的全过程。

六、多分类拓展

逻辑回归原本是为二分类问题设计的,但在实际应用中,常常会遇到多分类的情况,这时就需要对逻辑回归进行拓展。常见的拓展方法有 One-vs-Rest(OvR)和 Softmax 回归。

(一)One-vs-Rest(OvR)

OvR 方法是把多分类问题转化为多个二分类问题。对于有 个类别的情况,我们需要训练 个逻辑回归模型。每个模型都把其中一个类别当作正类,其他类别当作负类。比如在手写数字识别中,有 0 - 9 共 10 个类别,我们就训练 10 个逻辑回归模型,第一个模型判断是不是数字 0,第二个判断是不是数字 1,以此类推。在预测时,对于一个新样本,每个模型都会输出它属于自己对应类别的概率,最后选择概率最大的那个类别作为预测结果。这种方法简单直观,计算量相对较小,但当类别较多时,可能会出现分类边界不清晰的问题。

(二)Softmax 回归

Softmax 回归是逻辑回归在多分类问题上的直接扩展。它使用 Softmax 函数将线性回归的输出转换为 个类别的概率分布。Softmax 函数定义为 ,其中 是对应于类别 的参数向量。这个函数的作用是把线性回归的输出,通过指数运算和归一化,转化为每个类别对应的概率。Softmax 回归的损失函数同样基于极大似然估计,使用交叉熵损失函数,通过梯度下降等优化算法来求解参数。它在处理多分类问题时,考虑了所有类别之间的关系,分类效果通常比 OvR 更好,但计算量也相对较大。在实际应用中,比如图像分类中的多类别分类任务,Softmax 回归经常被使用。

七、逻辑回归算法的优缺点

(一)优点

简单易理解:逻辑回归的原理和模型结构都相对简单,参数含义明确,容易被初学者掌握。无论是原理推导,还是模型训练与预测过程,都不像一些复杂的深度学习模型那样晦涩难懂。这使得它在很多对模型可解释性要求较高的场景中,如医疗诊断、金融风险评估等,有着广泛的应用。医生可以根据逻辑回归模型的参数,判断各个症状与疾病之间的关联程度;金融分析师也能依据模型结果,清晰地了解不同因素对信用风险的影响。

计算效率高:逻辑回归的计算复杂度较低,训练和预测速度快。在处理大规模数据时,它不需要像深度学习模型那样消耗大量的计算资源和时间。例如在互联网行业处理海量用户行为数据时,逻辑回归可以快速完成模型训练和预测,为业务决策提供及时支持。同时,它对硬件要求不高,普通的计算机设备就能满足运行需求,降低了应用门槛。

可解释性强:模型的参数直接反映了各个自变量对因变量的影响程度,即每个特征对于分类结果的贡献大小一目了然。通过查看参数的正负和大小,我们可以很直观地判断某个特征是增加还是减少了样本属于某一类别的概率。在市场营销中,企业可以利用逻辑回归分析不同营销因素(如广告投放渠道、促销活动等)对客户购买行为的影响,从而有针对性地调整营销策略。

不需要大量数据:相比一些复杂的学习>机器学习算法,逻辑回归在数据量相对较小的情况下也能表现出较好的性能。它对数据的依赖性不像深度学习模型那样强烈,不需要大量的标注数据来进行训练。这在数据获取困难或标注成本较高的领域,如稀有疾病研究、小众市场调研等,具有很大的优势。研究人员可以利用有限的数据建立逻辑回归模型,进行初步的分析和预测。

(二)缺点

对数据分布有要求:逻辑回归假设数据具有线性可分性或近似线性可分性,当数据的分布不符合这一假设时,模型的性能会受到较大影响。例如在一些复杂的分类问题中,数据的特征之间存在高度非线性关系,逻辑回归可能无法准确捕捉到这些关系,导致分类准确率下降。在图像识别中,图像的特征往往非常复杂,逻辑回归很难直接对原始图像数据进行有效的分类。

容易欠拟合:由于模型本身的简单性,逻辑回归在处理复杂数据时容易出现欠拟合现象,即模型不能很好地捕捉数据中的复杂模式和规律。这使得它在面对具有高度复杂性和多样性的数据时,表现不如一些非线性模型,如决策树、支持向量机等。在预测股票价格走势这样复杂多变的任务中,逻辑回归可能无法准确反映股价的波动规律,预测效果较差。

特征处理要求高:逻辑回归对特征的要求较高,需要对特征进行合理的选择和预处理。如果特征选择不当,可能会引入无关特征或冗余特征,影响模型的性能和训练效率。同时,对于特征之间的相关性也比较敏感,如果存在高度相关的特征,可能会导致模型参数估计不准确,出现多重共线性问题。在分析消费者购买行为时,如果选择的特征中包含多个高度相关的经济指标,就可能会干扰模型对消费者行为的准确判断。

多分类拓展存在局限:虽然逻辑回归可以通过 One - vs - Rest(OvR)和 Softmax 回归等方法进行多分类拓展,但在处理类别较多的情况时,OvR 方法可能会导致分类边界不清晰,而 Softmax 回归的计算量又会显著增加,使得模型的训练和预测效率降低。在大规模图像分类任务中,当类别数量众多时,逻辑回归的多分类拓展方法往往难以满足实际需求。

八、总结

逻辑回归作为一种经典的学习>机器学习算法,虽然原理相对简单,但在实际应用中表现出色。通过本文对逻辑回归从原理推导、优化目标定义、迭代优化参数、代码实现到多分类拓展的详细介绍,希望读者能对逻辑回归算法有更深入的理解。在实际应用中,可以根据具体问题对逻辑回归进行适当的调整和优化,比如选择合适的特征、调整学习率和迭代次数等,以获得更好的性能。同时,逻辑回归也是许多更复杂算法的基础,深入理解它有助于学习和掌握其他学习>机器学习方法,如神经网络中的 Softmax 分类层等。在未来的研究和实践中,可以进一步探索逻辑回归在更多领域的应用,以及与其他算法的结合,发挥其更大的价值。


http://www.ppmy.cn/ops/155547.html

相关文章

无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

mklink : 无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1这是因为 在老版本系统中可以是用mklink来创建软连接,但在最…

php接口连接数据库

框架:https://www.thinkphp.cn/doc 创建网站 域名自己写 创建文件夹,“test”拉取框架,地址栏输入 composer create-project topthink/think5.1.* tp5 会自动创建一个tp5文件夹 根目录选择刚刚创建拉框架的文件夹 以test为示例 “D:\test\…

Maven全解析:Maven 进阶

pom.xml 文件: 定义了项目的基本信息,用于描述项目如何构建,声明项目依赖 坐标: 构建的唯一标识含义: groupId:组织标识。一般为:公司网址的反写 项目名artifactId:项目名称。一…

详解Redis之事务

目录 Redis事务 概念 特性 常用命令 MULTI EXEC DISCARD WATCH UNWATCH 使用演示 使用场景 注意事项 Redis事务 概念 Redis事务和MySQL的事务在概念上是类似的,都是把一系列操作绑定成一组,让这一组能够批量执行。但是,Redis事务…

CSS(快速入门)

欢迎大家来到我的博客~欢迎大家对我的博客提出指导,有错误的地方会改进的哦~点击这里了解更多内容 目录 一、什么是CSS?二、基本语法规范三、CSS选择器3.1 标签选择器3.2 id选择器3.3 class选择器3.4 通配符选择器3.5 复合选择器 四、常用CSS样式4.1 color4.2 font…

python 使用Whisper模型进行语音翻译

目录 一、Whisper 是什么? 二、Whisper 的基本命令行用法 三、代码实践 四、是否保留Token标记 五、翻译长度问题 六、性能分析 一、Whisper 是什么? Whisper 是由 OpenAI 开源的一个自动语音识别(Automatic Speech Recognition, ASR)系统。它的主要特点是: 多语言…

用HTML、CSS和JavaScript实现庆祝2025蛇年大吉(附源码)

用HTML、CSS和JavaScript庆祝2025蛇年大吉 在这个数字化时代,网页设计不仅仅是为了展示信息,更是传达情感和文化的一种方式。2025年将是蛇年,许多人希望通过各种方式庆祝这一重要的时刻。在这篇文章中,我们将一起学习如何使用HTM…

Bili23-Downloader 新春版,支持自动高音画质

视频下载器 链接:迅雷云盘 Bili23-Downloader是一款免费开源简洁清爽易用的B视频下载工具,整体基于python开发。其可支持下载UP主上传的单集和多集视频,包括相关封面、弹幕、字幕和音频流等刮削。另支持二维码、账号信息登录。 前阵子同类…