【机器学习基础】机器学习入门核心算法:逻辑回归(Logistic Regression)
机器学习入门核心算法:逻辑回归(Logistic Regression)
- 一、算法逻辑
- 1.1 基本概念
- 1.2 Sigmoid函数
- 1.3 决策边界
- 二、算法原理与数学推导
- 2.1 概率建模
- 2.2 损失函数推导
- 2.3 梯度下降优化
- 2.4 正则化处理
- 三、模型评估
- 3.1 常用评估指标
- 3.2 ROC曲线与AUC
- 四、应用案例
- 4.1 金融风控:贷款违约预测
- 4.2 医疗诊断:乳腺癌检测
- 五、经典面试题解析
- 问题1:为什么逻辑回归用交叉熵损失而不用MSE?
- 问题2:逻辑回归如何处理多分类?
- 六、最佳实践
- 6.1 特征工程技巧
- 6.2 超参数调优
- 七、总结与展望
一、算法逻辑
1.1 基本概念
逻辑回归(Logistic Regression)是一种广义线性模型,主要用于解决二分类问题(也可扩展至多分类)。其核心思想是通过将线性回归的预测值映射到[0,1]区间,得到样本属于某个类别的概率。
与线性回归的本质区别:
- 线性回归:
y = w T x + b y = w^Tx + b y=wTx+b
(直接预测连续值) - 逻辑回归:
p = σ ( w T x + b ) p = \sigma(w^Tx + b) p=σ(wTx+b)
(预测概率值)
1.2 Sigmoid函数
使用Sigmoid函数实现概率映射:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
特性分析:
- 值域: ( 0 , 1 ) (0,1) (0,1),符合概率定义
- 导数易计算:
σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1-\sigma(z)) σ′(z)=σ(z)(1−σ(z)) - 输出对称性:
1 − σ ( z ) = σ ( − z ) 1 - \sigma(z) = \sigma(-z) 1−σ(z)=σ(−z)
1.3 决策边界
假设取阈值为0.5时的决策规则:
y ^ = { 1 if σ ( w T x ) ≥ 0.5 0 otherwise \hat{y} = \begin{cases} 1 & \text{if } \sigma(w^Tx) \geq 0.5 \\ 0 & \text{otherwise} \end{cases} y^={10if σ(wTx)≥0.5otherwise
对应的线性决策边界:
w T x = 0 w^Tx = 0 wTx=0
二、算法原理与数学推导
2.1 概率建模
正类概率:
P ( y = 1 ∣ x ) = 1 1 + e − ( w T x + b ) P(y=1|x) = \frac{1}{1 + e^{-(w^Tx + b)}} P(y=1∣x)=1+e−(wTx+b)1
负类概率:
P ( y = 0 ∣ x ) = 1 − P ( y = 1 ∣ x ) = e − ( w T x + b ) 1 + e − ( w T x + b ) P(y=0|x) = 1 - P(y=1|x) = \frac{e^{-(w^Tx + b)}}{1 + e^{-(w^Tx + b)}} P(y=0∣x)=1−P(y=1∣x)=1+e−(wTx+b)e−(wTx+b)
2.2 损失函数推导
极大似然估计:
L ( w ) = ∏ i = 1 n P ( y i ∣ x i ; w ) = ∏ i = 1 n y ^ i y i ( 1 − y ^ i ) 1 − y i L(w) = \prod_{i=1}^n P(y_i|x_i;w) = \prod_{i=1}^n \hat{y}_i^{y_i}(1-\hat{y}_i)^{1-y_i} L(w)=i=1∏nP(yi∣xi;w)=i=1∏ny^iyi(1−y^i)1−yi
对数似然函数:
ℓ ( w ) = ∑ i = 1 n [ y i ln y ^ i + ( 1 − y i ) ln ( 1 − y ^ i ) ] \ell(w) = \sum_{i=1}^n \left[ y_i \ln \hat{y}_i + (1-y_i)\ln(1-\hat{y}_i) \right] ℓ(w)=i=1∑n[yilny^i+(1−yi)ln(1−y^i)]
交叉熵损失函数:
J ( w ) = − 1 n ∑ i = 1 n [ y i ln σ ( w T x i ) + ( 1 − y i ) ln ( 1 − σ ( w T x i ) ) ] J(w) = -\frac{1}{n}\sum_{i=1}^n \left[ y_i \ln \sigma(w^Tx_i) + (1-y_i)\ln(1-\sigma(w^Tx_i)) \right] J(w)=−n1i=1∑n[yilnσ(wTxi)+(1−yi)ln(1−σ(wTxi))]
2.3 梯度下降优化
梯度计算:
∂ J ∂ w j = 1 n ∑ i = 1 n ( σ ( w T x i ) − y i ) x i j \frac{\partial J}{\partial w_j} = \frac{1}{n}\sum_{i=1}^n (\sigma(w^Tx_i) - y_i)x_{ij} ∂wj∂J=n1i=1∑n(σ(wTxi)−yi)xij
参数更新公式:
w j : = w j − α ∂ J ∂ w j w_j := w_j - \alpha \frac{\partial J}{\partial w_j} wj:=wj−α∂wj∂J
2.4 正则化处理
正则化类型:
类型 | 公式 | 特点 |
---|---|---|
L1 | J ( w ) + = λ ∣ w ∣ 1 J(w) += \lambda |w|_1 J(w)+=λ∣w∣1 | 产生稀疏解 |
L2 | J ( w ) + = λ 2 ∣ w ∣ 2 2 J(w) += \frac{\lambda}{2}|w|_2^2 J(w)+=2λ∣w∣22 | 平滑权重衰减 |
三、模型评估
3.1 常用评估指标
指标 | 公式 | 说明 |
---|---|---|
准确率 | T P + T N T P + T N + F P + F N \frac{TP+TN}{TP+TN+FP+FN} TP+TN+FP+FNTP+TN | 总体预测正确率 |
精确率 | T P T P + F P \frac{TP}{TP+FP} TP+FPTP | 预测为正类的准确率 |
召回率 | T P T P + F N \frac{TP}{TP+FN} TP+FNTP | 正类样本的覆盖率 |
F1 Score | 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall} 2⋅Precision+RecallPrecision⋅Recall | 精确率与召回率调和平均 |
3.2 ROC曲线与AUC
ROC曲线绘制步骤:
- 调整分类阈值,计算不同阈值下的TPR和FPR:
T P R = T P T P + F N , F P R = F P F P + T N TPR = \frac{TP}{TP+FN}, \quad FPR = \frac{FP}{FP+TN} TPR=TP+FNTP,FPR=FP+TNFP - 以FPR为横轴,TPR为纵轴绘制曲线
AUC值意义:
- AUC=0.5:随机猜测
- AUC=1.0:完美分类器
四、应用案例
4.1 金融风控:贷款违约预测
数据处理流程:
# Python代码示例
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler# 特征标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 模型训练
model = LogisticRegression(penalty='l1', solver='liblinear')
model.fit(X_train, y_train)
模型输出结果:
- AUC: 0.85
- KS值: 0.42
4.2 医疗诊断:乳腺癌检测
特征重要性分析:
特征 | 权重 | 显著性(p值) |
---|---|---|
细胞核半径 | 2.34 | <0.001 |
纹理均匀度 | -1.56 | 0.023 |
边缘平滑度 | 0.89 | 0.142 |
五、经典面试题解析
问题1:为什么逻辑回归用交叉熵损失而不用MSE?
深度解析:
-
损失函数曲面特性:
- MSE损失在逻辑回归中非凸,存在多个局部最小值
- 交叉熵损失是凸函数,保证全局最优解
-
梯度更新效率:
∂ J M S E ∂ w = ( y ^ − y ) y ^ ( 1 − y ^ ) x \frac{\partial J_{MSE}}{\partial w} = (\hat{y} - y)\hat{y}(1-\hat{y})x ∂w∂JMSE=(y^−y)y^(1−y^)x- 当预测值接近0或1时,梯度趋于0,导致更新缓慢
- 交叉熵梯度直接为 ( y ^ − y ) x (\hat{y} - y)x (y^−y)x,更新速度稳定
问题2:逻辑回归如何处理多分类?
两种实现方式对比:
方法 | 公式 | 优缺点 |
---|---|---|
One-vs-Rest (OvR) | 训练K个二分类器 | 简单但可能类别不平衡 |
Softmax回归 | P ( y = k ) = e w k T x ∑ e w j T x P(y=k) = \frac{e^{w_k^Tx}}{\sum e^{w_j^Tx}} P(y=k)=∑ewjTxewkTx | 直接建模多分类 |
六、最佳实践
6.1 特征工程技巧
- 分箱处理:
将连续变量离散化,增强模型鲁棒性pd.cut(df['age'], bins=5, labels=False)
- 交互特征:
通过特征组合捕捉非线性关系
x 3 = x 1 × x 2 x_3 = x_1 \times x_2 x3=x1×x2
6.2 超参数调优
网格搜索示例:
from sklearn.model_selection import GridSearchCVparams = {'C': [0.1, 1, 10], 'penalty': ['l1', 'l2']
}
grid = GridSearchCV(LogisticRegression(), params, cv=5)
grid.fit(X, y)
七、总结与展望
核心优势:
- 输出概率解释性强
- 训练效率高(时间复杂度O(n))
- 可通过正则化防止过拟合
未来方向:
- 与深度学习结合(如神经网络最后一层使用逻辑回归)
- 在线学习场景下的增量更新
相关文章:

【机器学习基础】机器学习入门核心算法:逻辑回归(Logistic Regression)
机器学习入门核心算法:逻辑回归(Logistic Regression) 一、算法逻辑1.1 基本概念1.2 Sigmoid函数1.3 决策边界 二、算法原理与数学推导2.1 概率建模2.2 损失函数推导2.3 梯度下降优化2.4 正则化处理 三、模型评估3.1 常用评估指标3.2 ROC曲线…...
深入理解设计模式之命令模式
下面是一篇关于设计模式之命令模式(Command Pattern)的详细博客,并附有 Java 实现代码示例。 深入理解设计模式之:命令模式(Command Pattern) 一、什么是命令模式? 命令模式(Comma…...

智能仓储落地:机器人如何通过自动化减少仓库操作失误?
仓库作业的速度和准确性至关重要,尤其是在当前对无差错、高效作业的要求达到前所未有的环境下。每一个错误,无论是物品放错位置还是库存差异,都会在供应链中产生连锁反应,造成延误、增加成本,并最终影响客户满意度。 …...
Android 架构演进之路:从 MVC 到 MVI,拥抱单向数据流的革命
在移动应用开发的世界里,架构模式的演进从未停歇。从早期的 MVC 到后来的 MVP、MVVM,每一次变革都在尝试解决前一代架构的痛点。而今天,我们将探讨一种全新的架构模式 ——MVI(Model-View-Intent),它借鉴了…...

[低代码表单生成器设计基础]ElementUI中Layout布局属性Form表单属性详解
Layout 布局 ElementUI 的 Layout 布局系统基于 24 栏栅格设计,提供了灵活的响应式布局能力,适用于各种页面结构的构建。(CSDN) 📐 基础布局结构 ElementUI 的布局由 <el-row>(行)和 <el-col>࿰…...
数据结构7——二叉树
一、二叉树的定义与性质 1.定义 首先是树形结构,每个节点最多有2棵树,二叉树的子树有左右之分,不能颠倒。 2.性质 (1)二叉树的第i层,最多有2的(i-1)次幂。 (2)深度为k࿰…...

从“被动养老”到“主动健康管理”:平台如何重构代际关系?
在老龄化与数字化交织的背景下,代际关系的重构已成为破解养老难题的关键。 传统家庭养老模式中,代际互动多表现为单向的“赡养-被赡养”关系。 而智慧养老平台的介入,通过技术赋能、资源整合与情感连接,正在推动代际关系向“协作…...
Java 中的 synchronized 和 Lock:如何保证线程安全
Java 中的 synchronized 和 Lock:如何保证线程安全 引言 在 Java 多线程编程中,线程安全是一个核心问题。当多个线程同时访问共享资源时,可能会导致数据不一致或其他不可预期的结果。synchronized关键字和Lock接口是 Java 中实现线程同步的…...

贪心算法应用:最大匹配问题详解
Java中的贪心算法应用:最大匹配问题详解 贪心算法是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的算法策略。在Java中,贪心算法可以应用于多种问题,其中最大匹配问题是一个经典的应用场景。下面我将从基础概念到具体实现,全面详细地讲解贪…...

爬虫IP代理效率优化:策略解析与实战案例
目录 一、代理池效率瓶颈的根源分析 二、六大核心优化策略 策略1:智能IP轮换矩阵 策略2:连接复用优化 策略3:动态指纹伪装 策略4:智能重试机制 三、典型场景实战案例 案例1:电商价格监控系统 案例2:…...

豆瓣电视剧数据工程实践:从爬虫到智能存储的技术演进(含完整代码)
通过网盘分享的文件:资料 链接: https://pan.baidu.com/s/1siOrGmM4n-m3jv95OCea9g?pwd4jir 提取码: 4jir 1. 引言 1.1 选题背景 在影视内容消费升级背景下,豆瓣电视剧榜单作为国内最具影响力的影视评价体系,其数据价值体现在:…...
【HW系列】—C2远控服务器(webshell链接工具, metasploit、cobaltstrike)的漏洞特征流量特征
文章目录 蚁剑、冰蝎、哥斯拉一、蚁剑(AntSword)流量特征二、冰蝎(Behinder)流量特征三、哥斯拉(Godzilla)流量特征 metasploit、cobaltstrike一、Metasploit流量特征二、CobaltStrike流量特征三、检测与防…...
5.28 孔老师 nlp讲座
本次讲座主要介绍了语言模型的起源、预训练模型以及大语言模型(需要闫老师后讲)等内容。首先,语言模型的起源可以追溯到语音识别中的统计语言模型,通过估计声学参数串产生文字串的概率来找到最大概率的文字串。然后,介…...

基于微信小程序的漫展系统的设计与实现
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言࿰…...
打卡day39
一、 图像数据的介绍 1.1 灰度图像 # 先继续之前的代码 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision import datasets, transforms…...

基于Web的分布式图集管理系统架构设计与实践
引言:为什么需要分布式图集管理? 在现代Web图形应用中,纹理图集(Texture Atlas)技术是优化渲染性能的关键手段。传统的图集制作流程通常需要美术人员使用专业工具(如TexturePacker)离线制作&am…...

mysql执行sql语句报错事务锁住
报错情况 1205 - Lock wait timeout exceeded; try restarting transaction先找出长时间运行的事务 SELECT * FROM information_schema.INNODB_TRX ORDER BY trx_started ASC;终止长时间运行的事务 KILL [PROCESS_ID];...

Java消息队列应用:Kafka、RabbitMQ选择与优化
Java消息队列应用:Kafka、RabbitMQ选择与优化 在Java应用领域,消息队列是实现异步通信、应用解耦、流量削峰等重要功能的关键组件。Kafka和RabbitMQ作为两种主流的消息队列技术,各有特点和适用场景。本文将深入探讨Kafka和RabbitMQ在Java中的…...

零基础设计模式——结构型模式 - 组合模式
第三部分:结构型模式 - 组合模式 (Composite Pattern) 在学习了桥接模式如何分离抽象和实现以应对多维度变化后,我们来探讨组合模式。组合模式允许你将对象组合成树形结构来表现“整体-部分”的层次结构。组合模式使得用户对单个对象和组合对象的使用具…...
额度年审领域知识讲解
金融领域的“额度年审”是一个非常重要的常规性工作。它指的是金融机构(主要是银行)对其授予客户的各种信用额度或授信额度,在授信有效期内(通常是一年)进行周期性的重新评估、审查和确认的过程。 核心目的࿱…...

腾讯云国际站可靠性测试
在数字化转型加速的今天,企业对于云服务的依赖已从“可选”变为“必需”。无论是跨境电商的实时交易,还是跨国企业的数据协同,云服务的可靠性直接决定了业务连续性。作为中国领先的云服务提供商,腾讯云国际站(Tencent …...

自定义异常小练习
在开始之前,让我们高喊我们的口号: 键盘敲烂,年薪百万! 目录 键盘敲烂,年薪百万! 异常综合练习: 自定义异常 异常综合练习: 自定义异常: 定义异常类写继承关系空参构造带参构造 自定…...

SpringBoot整合MinIO实现文件上传
使用Spring Boot与JSP和MinIO(一个开源对象存储系统,兼容Amazon S3)进行集成,您可以创建一个Web应用来上传、存储和管理文件。以下是如何将Spring Boot、JSP和MinIO集成的基本步骤: 这个是minio正确启动界面 这个是min…...

基于面向对象设计的C++日期推算引擎:精准高效的时间运算实现与运算重载工程化实践
前引: 在软件开发中,时间与日期的处理是基础但极具挑战性的任务。传统的手工日期运算逻辑往往面临闰年规则、月份天数动态变化、时区转换等复杂场景的容错难题,且代码冗余度高、可维护性差。本文将深入探讨如何利用C的面向对象特性与成员函数…...

如何把 Microsoft Word 中所有的汉字字体替换为宋体?
Ctrl H ,然后,点击更多,勾选使用通配符,查找内容中填入 [一-龥]{1,}, 这是 Word 通配符匹配汉字的经典写法(匹配 Unicode 范围内的 CJK 汉字)。 然后, “替换为”留空,点…...
02. [Python+Golang+PHP]三数之和,多种语言实现最优解demo
一、问题描述:三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中…...
MongoDB选择理由
1.简介 MongoDB是一个基于分布式文件存储的数据库由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。Mongo最大的特点是…...

倚光科技在二元衍射面加工技术上的革新:引领光学元件制造新方向
倚光科技二元衍射面加工技术(呈现出细腻的光碟反射纹路) 在光学元件制造领域,二元衍射面的加工技术一直是行业发展的关键驱动力之一。其精准的光相位调制能力,在诸多前沿光学应用中扮演着不可或缺的角色。然而,长期以来…...

驱动开发(2)|鲁班猫rk3568简单GPIO波形操控
上篇文章写了如何下载内核源码、编译源码的详细步骤,以及一个简单的官方demo编译,今天分享一下如何根据板子的引脚写自己控制GPIO进行高低电平反转。 想要控制GPIO之前要学会看自己的引脚分布图,我用的是鲁班猫RK3568,引脚分布图如…...

《软件工程》第 3 章 -需求工程概论
在软件工程的开发流程中,需求工程是奠定项目成功基础的关键环节。它专注于获取、分析、定义和管理软件需求,确保开发出的软件能真正满足用户需求。接下来,我们将按照目录内容,结合 Java 代码和实际案例,深入讲解需求工…...