首页 > 其他分享 >机器学习实践——逻辑回归

机器学习实践——逻辑回归

时间:2024-05-27 22:48:52浏览次数:20  
标签:逻辑 机器 函数 回归 分类 实践 beta 参数

1.逻辑回归模型介绍

  Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。

  逻辑回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

1.1逻辑分布

逻辑分布通常是指在统计学和概率论中使用的一种概率分布。逻辑分布也被称为逻辑正态分布或逻辑分布函数,通常用于描述二元变量的分布,即取值为0或1的变量。

逻辑分布的概率密度函数如下所示:

\[ f(x) = \frac{e^{-\frac{x-\mu}{s}}}{s(1+e^{-\frac{x-\mu}{s}})^2} \]

其中,\( \mu \) 是分布的均值,\( s \) 是分布的尺度参数。

逻辑分布常用于描述二项分布的连续近似,特别是在逻辑回归等统计建模方法中经常使用。在机器学习和统计建模中,逻辑分布通常用于建模二分类问题中的概率分布,例如在逻辑回归模型中用于描述分类变量的概率分布。

1.2逻辑回归

逻辑回归是一种用于建模分类问题的统计技术,它通常用于预测二元变量的结果,例如“是”或“否”,“成功”或“失败”等。尽管名字中带有“回归”,但逻辑回归实际上是一种分类方法,而不是回归方法。

逻辑回归的基本原理是通过将线性回归模型的输出通过一个逻辑函数(也称为Sigmoid函数)进行转换,将连续的预测值映射到0和1之间,从而得到分类的概率。逻辑函数的数学形式如下:

\[ P(Y=1|X) = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_pX_p)}} \]

其中,\( P(Y=1|X) \) 表示在给定输入变量 \( X \) 的条件下,观测到分类变量 \( Y \) 取值为1的概率。 \( \beta_0, \beta_1, \beta_2, ..., \beta_p \) 是模型的参数,而 \( X_1, X_2, ..., X_p \) 则是输入的特征变量。

逻辑回归常用于以下领域:
1. 二分类问题:如预测一个学生是否能被大学录取,或者一位患者是否患有某种疾病。
2. 风险预测:例如金融领域中的信用风险评估。
3. 自然语言处理:在文本分类中经常使用逻辑回归。

逻辑回归是一种简单而有效的分类方法,常用于建模线性关系的概率。

1.3代价函数

在逻辑回归中,我们通常使用极大似然估计来估计模型的参数。逻辑回归是一种用于建模二分类问题的统计方法,它的输出是一个介于0和1之间的概率值,表示某个样本属于某一类的概率。

假设我们有一个二分类问题,对于每个样本 \(i\),我们有自变量 \(X_i\) 和因变量 \(Y_i\)。在逻辑回归中,我们假设因变量 \(Y_i\) 服从伯努利分布,即

\[P(Y_i = 1 | X_i) = p(X_i; \beta)\]
\[P(Y_i = 0 | X_i) = 1 - p(X_i; \beta)\]

其中 \(p(X_i; \beta)\) 是关于自变量 \(X_i\) 和模型参数 \(\beta\) 的概率函数。在逻辑回归中,通常使用逻辑函数(sigmoid函数)来建模 \(p(X_i; \beta)\),其形式为:

\[p(X_i; \beta) = \frac{1}{1 + e^{-X_i\beta}}\]

现在假设我们有 \(n\) 个独立同分布的样本,我们可以将样本的似然函数写为:

\[L(\beta) = \prod_{i=1}^{n} [p(X_i; \beta)]^{Y_i} [1 - p(X_i; \beta)]^{1 - Y_i}\]

对数似然函数为:

\[l(\beta) = \sum_{i=1}^{n} \left[ Y_i \log(p(X_i; \beta)) + (1 - Y_i) \log(1 - p(X_i; \beta)) \right]\]

我们的目标是找到能最大化对数似然函数 \(l(\beta)\) 的参数 \(\beta\)。通常,我们使用优化算法(如梯度下降法或牛顿法)来求解对数似然函数的最大值,从而得到逻辑回归模型的参数估计值。

通过极大似然估计,我们可以得到逻辑回归模型的参数估计,使得观测数据的出现概率最大化,从而能够用于预测和分类任务。

1.4求解

在逻辑回归中,我们可以使用梯度下降法来最大化对数似然函数,从而求解模型的参数。梯度下降法是一种迭代优化算法,通过不断更新参数的方式,使得目标函数(在这里是对数似然函数)逐渐达到最大值。

假设我们的对数似然函数为 \(l(\beta)\),我们的目标是找到能最大化 \(l(\beta)\) 的参数 \(\beta\)。梯度下降法的思想是通过不断沿着梯度的反方向更新参数,直到达到最大值。

梯度下降法的迭代更新规则如下:

\[ \beta := \beta + \alpha \nabla l(\beta) \]

其中 \(\alpha\) 是学习率,\(\nabla l(\beta)\) 是对数似然函数 \(l(\beta)\) 关于参数 \(\beta\) 的梯度。

对于逻辑回归的对数似然函数,梯度可以通过对其进行求导得到。假设我们有 \(n\) 个独立同分布的样本,对数似然函数为:

\[l(\beta) = \sum_{i=1}^{n} \left[ Y_i \log(p(X_i; \beta)) + (1 - Y_i) \log(1 - p(X_i; \beta)) \right]\]

其中 \(p(X_i; \beta) = \frac{1}{1 + e^{-X_i\beta}}\) 是逻辑函数,\(X_i\) 是第 \(i\) 个样本的自变量,\(Y_i\) 是第 \(i\) 个样本的因变量。

对 \(l(\beta)\) 求关于 \(\beta\) 的梯度,可以得到:

\[\nabla l(\beta) = \sum_{i=1}^{n} \left[ (Y_i - p(X_i; \beta))X_i \right]\]

根据这个梯度,我们可以使用梯度下降法来更新参数 \(\beta\),直到达到最大化对数似然函数的目标。

1.5代码实现

import numpy as np

定义逻辑函数

def sigmoid(z):
return 1 / (1 + np.exp(-z))

定义对数似然函数的梯度

def gradient(X, y, beta):
n = X.shape[0]
return np.dot(X.T, (y - sigmoid(np.dot(X, beta)))) / n

使用梯度下降法更新参数

def gradient_descent(X, y, beta, learning_rate, iterations):
for _ in range(iterations):
grad = gradient(X, y, beta)
beta += learning_rate * grad
return beta

生成一些示例数据

np.random.seed(0)
X = np.random.randn(100, 2)
X = np.column_stack((np.ones(100), X)) # 添加截距项
true_beta = np.array([1, 2, 3])
y = np.random.binomial(1, sigmoid(np.dot(X, true_beta)))

初始化参数

initial_beta = np.zeros(X.shape[1])

使用梯度下降法拟合参数

learned_beta = gradient_descent(X, y, initial_beta, 0.1, 1000)
print("True beta:", true_beta)
print("Learned beta:", learned_beta)

2.与其他模型的对比

2.1 与线性回归

逻辑回归是在线性回归的基础上加了一个 Sigmoid 函数(非线形)映射,使得逻辑回归称为了一个优秀的分类算法。本质上来说,两者都属于广义线性模型,但他们两个要解决的问题不一样,逻辑回归解决的是分类问题,输出的是离散值,线性回归解决的是回归问题,输出的连续值。

我们需要明确 Sigmoid 函数到底起了什么作用:

  • 线性回归是在实数域范围内进行预测,而分类范围则需要在 [0,1],逻辑回归减少了预测范围;
  • 线性回归在实数域上敏感度一致,而逻辑回归在 0 附近敏感,在远离 0 点位置不敏感,这个的好处就是模型更加关注分类边界,可以增加模型的鲁棒性。

2.2 与 SVM

相同点:

  • 都是分类算法,本质上都是在找最佳分类超平面;
  • 都是监督学习算法;
  • 都是判别式模型,判别模型不关心数据是怎么生成的,它只关心数据之间的差别,然后用差别来简单对给定的一个数据进行分类;
  • 都可以增加不同的正则项。

不同点:

  • LR 是一个统计的方法,SVM 是一个几何的方法;
  • SVM 的处理方法是只考虑 Support Vectors,也就是和分类最相关的少数点去学习分类器。而逻辑回归通过非线性映射减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重;
  • 损失函数不同:LR 的损失函数是交叉熵,SVM 的损失函数是 HingeLoss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。对 HingeLoss 来说,其零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这是支持向量机最大的优势所在,对训练样本数目的依赖大减少,而且提高了训练效率;
  • LR 是参数模型,SVM 是非参数模型,参数模型的前提是假设数据服从某一分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。所以 LR 受数据分布影响,尤其是样本不均衡时影响很大,需要先做平衡,而 SVM 不直接依赖于分布;
  • LR 可以产生概率,SVM 不能;
  • LR 不依赖样本之间的距离,SVM 是基于距离的;
  • LR 相对来说模型更简单好理解,特别是大规模线性分类时并行计算比较方便。而 SVM 的理解和优化相对来说复杂一些,SVM 转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。

3.总结

逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。

标签:逻辑,机器,函数,回归,分类,实践,beta,参数
From: https://www.cnblogs.com/Linglo/p/18216722

相关文章

  • 一篇文章带你实践掌握社会网络分析——随机网络、度保持随机化、BA模型
    实践内容:生成和下载的网络相同平均度和网络规模的随机网络对比分析随机网络和下载的网络相关的特征和指标采用度保持的网络随机化算法生成和下载的网络度序列相同的网络利用BA模型生成与下载的网络模型相同的网络,其初始和每个时间t新加入节点的连边自己定义对比分析生成的......
  • 基于 Pre-commit 的 Python项目代码风格统一实践
    背景信息统一代码风格首先需要定义参照的规范,每个团队可能会有自己的规范,我们选择的规范是yapf+mypy+isort,如果保证所有的研发人员都遵循相关规范呢?鼓励IDE中对应的插件的安装,通过直接对应的插件,在编写代码阶段就能实时发现不符合规范的情况,修改成本最低;通过Pre-c......
  • Vue3实战笔记(47)— 一探emit奥秘——组件间通信的艺术与实践
    文章目录前言一、Vue2中的emti二、Vue3的emit总结前言Vue封装了自定义组件之后,如果子组件想要向父组件传递数据该怎么办?Vue.js中的emit方法就是主要用于组件间的通信,特别是父组件与子组件之间的通信机制。它是Vue组件内部触发自定义事件并向父级组件传递数......
  • 利用显著地面特征进行配送机器人定位的鲁棒方法
    论文:Salience-guidedGroundFactorforRobustLocalizationofDeliveryRobotsinComplexUrbanEnvironments作者:JooyongPark,JungwooLee,EuncheolChoi,YounggunCho收录:ICRA2024利用显著地面特征进行配送机器人定位的鲁棒方法在本文中,我们提出了一种新颖的定位系统,它......
  • RAG-GPT实践过程中遇到的挑战
    引言大型语言模型(LLM)的新进展,包括ChatGPT,为AI应用提供了新的能力,使其能够构建新的人机交互解决方案、完成复杂任务、总结文档、回答文献中的问题并生成新内容。然而,LLM在获取最新知识或企业内部知识库中的领域特定知识时仍存在局限性。解决此问题的两个选项是:微调LLM(继......
  • 满帮集团 Eureka 和 ZooKeeper 的上云实践
    作者:胡安祥满帮集团,作为“互联网+物流”的平台型企业,一端承接托运人运货需求,另一端对接货车司机,提升货运物流效率。2021年美股上市,成为数字货运平台上市第一股。根据公司年报,2021年,超过350万货车司机在平台上完成超1.283亿个订单,实现总交易价值GTV2623亿元,占中国数字货......
  • TypeScript中的`let`、`const`、`var`区别:变量声明的规范与实践
    TypeScript中的let、const、var区别:变量声明的规范与实践引言在TypeScript中,变量声明是代码编写的基础部分。let、const、var是三种用于变量声明的关键字,它们各自有不同的作用域规则和可变性特点。基础知识作用域:变量可以在整个文件(全局作用域)或某个特定代码块(局部作用......
  • 逻辑分析仪的应用
    逻辑分析仪的应用内容建立测试工程;新建逻辑分析文件;添加需要观测的信号;配置采样参数;保存逻辑分析仪文件;重新编译和配置。 SignalTapLogicAnalyzer是内嵌于QuartusPrime开发环境中的逻辑分析仪。可以将SignalTapLogicAnalyzer同设计电路一起配置到FPGA器件中。S......
  • 【二维路径规划】基于快速RRT-star实现二维空间移动机器人运动规划附matlab复现
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 论云计算与边缘计算融合的系统架构设计与应用实践
    论云计算与边缘计算融合的系统架构设计与应用实践论文标题:论云计算与边缘计算融合的系统架构设计与应用实践摘要:简述云计算与边缘计算融合的背景、重要性及研究目的。阐明论文结构,简要概述主要研究内容与贡献。引言:技术背景:介绍云计算的发展历程、优势及局限性;边缘计算......