机器学习(四) ----------逻辑回归

目录

1 概述

2 极大似然估计

3 逻辑回归核心思想

3.1 对数似然损失(Log-likelihood Loss)

4 分类问题的评估方法

4.1 混淆矩阵(Confusion Matrix):

4.2 准确率(Accuracy)

4.3 精确率(Precision)和召回率(Recall)

4.3.1 精确率(Precision)

4.3.2召回率(Recall)

4.3.3 精确率和召回率的关系

4.4 ROC曲线(Receiver Operating Characteristic Curve)和AUC(Area Under the Curve)

4.4.1 ROC曲线描述

4.4.2 ROC 曲线图像中,4 个特殊点的含义

4.4.3 AUC(Area Under the Curve)

4.4.4 API

4.5 F1-score

5 逻辑回归API

6 案例



1 概述

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计学习方法,尤其在二元分类问题上表现出色。

逻辑回归通过构建一个逻辑函数(也称为Sigmoid函数),将线性模型的输出转化为一个介于0和1之间的概率值,这个概率值表示了给定样本属于某个类别的可能性。这使得逻辑回归非常适合用于分类预测任务,例如预测用户是否会购买某商品、病人是否患有某种疾病或广告是否会被用户点击等。

逻辑回归的优点之一是其解释性强。通过查看逻辑回归模型的系数,可以了解不同特征对分类结果的影响程度。这使得逻辑回归不仅可以提供分类预测,还可以用于特征选择,帮助识别出对分类结果有显著影响的特征。

此外,逻辑回归还具有计算效率高、易于实现的特点。这使得它适用于大规模数据集和实时预测场景。在经济学、商业、医疗等领域,逻辑回归被广泛应用于预测分析、风险评估和决策支持等方面。

逻辑回归虽然主要用于二元分类问题,但也可以通过一些策略(如一对多、一对一等)扩展到多分类问题中。同时,逻辑回归还可以处理线性和非线性数据,并可以通过特征转换或使用非线性模型来处理非线性关系的数据。

2 极大似然估计

极大似然估计(Maximum Likelihood Estimate,MLE),也称为最大概似估计或最大似然估计,是一种求估计的统计学方法。它的核心思想是在一次抽样中,样本出现的概率是关于某个参数θ的函数。当给定一组观测值x1,x2,...,xn时,极大似然估计法会选择参数θ的一个估计值,使得当θ等于这个估计值时,样本出现的概率达到最大。

极大似然估计的原理建立在极大似然原理之上,即如果某一事件在多次重复试验中出现的概率最大,则可以认为该事件最有可能发生。例如,在两个箱子中抽取黑球的问题中,如果从一个箱子中抽取黑球的概率远大于从另一个箱子中抽取的概率,那么可以认为这个黑球更可能来自第一个箱子。

极大似然估计的具体求解步骤通常包括:

  1. 写出似然函数,即样本观测值的联合概率密度函数或概率质量函数。
  2. 对似然函数取对数,并整理得到对数似然函数。
  3. 对对数似然函数求导数,并令其等于零,解出参数θ的极大似然估计值。

极大似然估计方法具有广泛的应用,尤其在参数估计和统计推断领域。它不仅可以用于离散型随机变量,也可以用于连续型随机变量。同时,极大似然估计方法还具有一些重要的性质,如一致性、渐进正态性、渐进有效性等。

3 逻辑回归核心思想

逻辑回归的核心思想是利用线性回归模型(虽然名为“回归”,但逻辑回归实际上是一种分类算法)的预测结果,通过Sigmoid函数将其转化为概率值,从而进行分类。

3.1 对数似然损失(Log-likelihood Loss)

对数似然损失通过惩罚错误的分类,实现对分类器的准确度的量化。为了计算对数损失,分类器必须提供对输入的每个类别的概率值,而不仅仅是最可能的类别。在二分类问题中,预测值(模型的输出)和实际标签(真实值)都是二元的,通常取值为0或1。对于每个样本,对数似然损失函数会计算预测概率的对数值与实际标签的差值,然后取负值(因为对数函数在0到1之间是负的)。

公式:

Loss\left ( L \right ) = -\sum_{i=1}^{n}\left (y_i ln\left ( p_i \right ) +(1-y_i)ln(1-p_i) \right )

p_i = \frac{1}{1+e^{-(w^T+b)}}

1.p i 表示每个样本被分类正确时的概率
2.y i 表示每个样本的真实类别(0或1)

4 分类问题的评估方法

分类问题的评估方法多种多样,每种方法都有其特定的应用场景和优点。以下是一些常用的评估方法及对应的API(以Python的scikit-learn库为例):

4.1 混淆矩阵(Confusion Matrix)

混淆矩阵(Confusion Matrix)是分类问题中常用的一种评估工具,主要用于衡量分类器(或模型)的分类性能。混淆矩阵以表格的形式记录了分类器对样本的实际分类和预测分类之间的信息,通过它可以清晰地了解分类器在各类别上的表现。

混淆矩阵的每一行代表一个实际类别,每一列代表一个预测类别。对于二分类问题,混淆矩阵通常包含四个元素:

  • 真正例(True Positives, TP):实际为正例,预测也为正例的样本数。
  • 假正例(False Positives, FP):实际为负例,预测为正例的样本数(误报)。
  • 真反例(True Negatives, TN):实际为负例,预测也为负例的样本数。
  • 假反例(False Negatives, FN):实际为正例,预测为负例的样本数(漏报)。

对于多分类问题,混淆矩阵会扩展到更多的行和列,以涵盖所有可能的类别组合。

API:sklearn.metrics.confusion_matrix(y_true, y_pred)

4.2 准确率(Accuracy)

  • 定义:分类正确的样本数占总样本数的比例。
  • API:sklearn.metrics.accuracy_score(y_true, y_pred)

4.3 精确率(Precision)召回率(Recall)

4.3.1 精确率(Precision)

精确率定义为真正例(True Positives, TP)占所有被预测为正例(包括真正例TP和假正例FP)的样本的比例。计算公式为:

[ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} ]

精确率越高,说明分类器预测为正例的样本中真正为正例的比例越高,也就是预测为正例的可靠性越高。

API:sklearn.metrics.precision_score(y_true, y_pred) 

4.3.2召回率(Recall)

召回率定义为真正例(True Positives, TP)占所有真正例(包括真正例TP和假反例FN)的样本的比例。计算公式为:

[ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} ]

召回率越高,说明分类器找出所有真正例的能力越强,也就是对正例的覆盖能力越强。

API: sklearn.metrics.recall_score(y_true, y_pred)

4.3.3 精确率和召回率的关系

精确率和召回率是一对矛盾的指标。提高精确率可能会导致召回率下降,因为分类器可能变得更为谨慎,只将那些非常确信为正例的样本预测为正例;而提高召回率可能会导致精确率下降,因为分类器可能变得更为宽松,将更多的样本预测为正例,其中也包括了更多的误报。

在实际应用中,需要根据具体的需求和场景来平衡这两个指标。例如,在垃圾邮件过滤系统中,可能更关注精确率,以避免误将正常邮件标记为垃圾邮件;而在医疗诊断中,可能更关注召回率,以尽量不遗漏任何可能的病患。

4.4 ROC曲线(Receiver Operating Characteristic Curve)和AUC(Area Under the Curve)

4.4.1 ROC曲线描述

ROC曲线(Receiver Operating Characteristic Curve)又称受试者工作特征曲线,是通过改变二分类器的判定阈值,绘制出不同阈值下真正例率(True Positive Rate, TPR)与假正例率(False Positive Rate, FPR)的关系曲线。其中,TPR是指正确分类为正例的样本占所有正例样本的比例FPR是指错误分类为正例的样本占所有负例样本的比例

ROC曲线的横坐标为FPR,纵坐标为TPR,因此ROC曲线可以用一个二维平面上的点序列来表示,点的个数取决于分类器所取的阈值数目。ROC曲线能够反映分类算法在不同阈值下的性能表现。

4.4.2 ROC 曲线图像中,4 个特殊点的含义

点坐标说明:图像x轴FPR/y轴TPR, 任意一点坐标A(FPR值, TPR值)
        1.点(0, 0) :所有的负样本都预测正确,所有的正样本都预测为错误 。相当于点的(FPR值0, TPR值0)
        2.点(1, 0) :所有的负样本都预测错误,所有的正样本都预测错误。相当于点的(FPR值1, TPR值0)
        3.点(1, 1):所有的负样本都预测错误,表示所有的正样本都预测正确。相当于点的(FPR值1,TPR值1)
        4.点(0, 1):所有的负样本都预测正确,表示所有的正样本都预测正确 。相当于点的(FPR值0,TPR值1)
曲线越靠近 (0,1) 点则模型对正负样本的辨别能力就越强

4.4.3 AUC(Area Under the Curve)

AUC(Area Under the Curve)被定义为ROC曲线下与坐标轴围成的面积,其值范围在0到1之间。AUC越接近1.0,表示分类算法的性能越好;等于0.5时,则性能最低,无应用价值。AUC值常被用作评价模型优劣的一种性能指标,尤其是在ROC曲线不能清晰区分不同分类器性能时,AUC值的大小能更直接地反映模型的性能。

4.4.4 API

API:sklearn.metrics.roc_curve(y_true, y_score) 和 sklearn.metrics.roc_auc_score(y_true, y_score)

注意,在使用这些API时,y_true通常是真实的标签,y_pred是分类器预测的标签(对于精确率、召回率和F1 Score),而y_score是分类器为每个样本分配的概率或置信度分数(对于ROC曲线和AUC)。

4.5 F1-score

F1-score(也称为F1分数或F-measure)是统计学中用来衡量二分类模型精确度的一种指标,它同时考虑了分类模型的精确率(Precision)和召回率(Recall)。F1-score可以看作是精确率和召回率的调和平均数,用于平衡这两个指标,其计算公式为:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

F1-score的最大值为1,表示模型在精确率和召回率上都达到了最优;最小值为0,表示模型性能最差。当精确率和召回率接近时,F1-score会较高,说明模型在正负样本上的表现都相对较好。

F1-score在二进制分类问题中具有广泛的应用场景,例如垃圾邮件过滤、欺诈检测、疾病诊断等。在这些场景下,精确率和召回率的平衡非常重要,因为过高的精确率可能会导致召回率过低,从而漏掉一些重要的正例;而过高的召回率可能会导致精确率过低,从而引入过多的误报。

API:sklearn.metrics.f1_score(y_true, y_score)

此外,sklearn.metrics还提供了许多其他有用的分类评估方法,如classification_report(可以显示每个类别的精确率、召回率、F1 Score和支持数)和matthews_corrcoef(用于计算Matthews相关系数,一种衡量二分类问题的平衡度量)等。你可以根据自己的需求选择适合的评估方法。

5 逻辑回归API

sklearn.linear_model.LogisticRegression()

6 案例

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 1.导入数据
cancer_data = pd.read_csv('data/breast-cancer-wisconsin.csv')# 2.数据基本处理
# 2.1 缺失值处理
cancer_data = cancer_data.replace(to_replace='?',value=np.NAN)
cancer_data = cancer_data.dropna()
# 2.2 数据集划分
x_train,x_test,y_train,y_test = train_test_split(cancer_data.iloc[:,1:-1],cancer_data.iloc[:,-1],train_size=0.8,random_state=22)# 3.特征预处理
transfor = StandardScaler()
x_train = transfor.fit_transform(x_train)
x_test = transfor.transform(x_test)# 4。模型训练
lg = LogisticRegression()
lg.fit(x_train,y_train)# 5.模型评估
print(lg.score(x_test, y_test))# 6.模型预测
print(lg.predict(x_test))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法学习笔记三---栈和队列

目录 前言 一、栈 1.栈的表示和实现 1.栈的顺序存储表示和实现 1.C语言实现 2.C实现 2.栈的链式存储表示和实现 1.C语言实现 2.C实现 2.栈的应用 1.数制转换 二、队列 1.栈队列的表示和实现 1.顺序队列的表示和实现 2.链队列的表示和实现 2.循环队列 前言 这篇文…

P9748 [CSP-J 2023] 小苹果:做题笔记

目录 P9748 [CSP-J 2023] 小苹果 思路 代码 P9748 [CSP-J 2023] 小苹果 P9748 [CSP-J 2023] 小苹果 思路 先写几个看看规律 题意我们能看出来是三个三个一组的,然后每次取走的都是三个里面的第一个。我们应该很容易想到如果一轮的总数是三的倍数的话&#xff0…

94、动态规划-最长公共子序列

递归的基本思路: 比较两个字符串的最后一个字符。如果相同,则这个字符一定属于最长公共子序列,然后在剩余的字符串上递归求解。如果最后一个字符不相同,则分两种情况递归求解: 去掉 text1 的最后一个字符,保…

【论文笔记 | 异步联邦】FedSA

FedSA:一种处理 non-IID 数据 的 过时感知 异步联邦算法 1. 论文信息 FedSA:A staleness-aware asynchronous Federated Learning algorithm with non-IID data,Future Generation Computer Systems,2021.7,ccfc 是…

RHEL之网络接口的绑定

前言 这些步骤最好都在虚拟机中完成 网络接口绑定是将多个网络接口逻辑地连接在一起,目的一是避免网络接口的单点故障,二是提高带宽以提高吞吐率 具体步骤 1.用ip link查看有哪些网络接口 2.添加一个类型bond的连接 nmcli con add type bond con-nam…

【汇编】算术指令

一、加法指令 (一)各加法指令的格式及操作 加法指令可做字或字节运算 (1)加法指令 ADD 格式:ADD DST,SRC执行的操作:(DST) ← (SRC)(DST) (2)带进位加法指令 ADC 格式&#xf…

AIGC岗位需求增长超300%,平均年薪超40万元

AI圈最近又发生了啥? AIGC 应用爆发,相关岗位需求增长超 300%、平均招聘年薪超 40 万元 随着 AI应用的爆发,生成式人工智能(AIGC)的招聘市场十分火爆。数据显示今年一季度,生成式人工智能相关职位需求同比增长超三倍。从全平台增…

功能安全如何在公司顺利开展?-亚远景科技

亚远景功能安全主题线上会议报名开启! 随着汽车技术的不断发展,汽车系统的复杂性和交互性大幅增加,功能安全成为确保驾驶员、乘客及行人安全的关键。 本场功能安全线上会议,亚远景为汽车行业的相关人员准备了以下内容&#xff1a…

Linux|基础IO

Linux|基础IO 回顾c语言的文件操作提炼对文件的理解系统调用初始open函数返回值fd为什么我们向fd一个整数写就写入文件了呢?怎么理解读写操作总结open函数有哪些功能怎么理解往硬件(显示器,键盘)中读写数据如何理解FILE*访问文件 …

【C语言】自定义类型之---结构体超详解(结构体的定义使用、指针结构体,内存对齐,......代码详解)

目录 前言: 一:结构体 1.1:什么是结构体? 1.2:结构体类型的声明 1.3:结构体变量的定义 1.4:结构体的内存对齐 1.5:结构体传参 二:位段 2.1:位段是什…

2024年【金属非金属矿山(露天矿山)安全管理人员】模拟考试题库及金属非金属矿山(露天矿山)安全管理人员作业模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 金属非金属矿山(露天矿山)安全管理人员模拟考试题库参考答案及金属非金属矿山(露天矿山)安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山&a…

Google I/O 2024 干货全解读:Gemini AI 横空出世,智能未来触手可及!

Google I/O 2024 干货全解读:Gemini AI 横空出世,智能未来触手可及! 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》…

面试前端随笔20240510

最近公司招聘前端开发人员有幸参与帮听,总结了三个有关vue的面试问题和答案,现在分享一下。 1.Vue2数据监听无法监听数组为啥?有啥解决方案?vue3中是如何处理这个问题? vue2的官方说明了defineProperty的一些限制&…

Oracle SQL Developer 脚本输出中文显示乱码

问题描述 在测试Oracle Select AI(自然语言查询数据库)时,发现Run Statement中文显示正常: 而Run Script中文显示乱码: 问题解决 进入菜单Tools>Preferences...>Environment, 修改SQL Developer…

JavaScript-JSON对象

JSON格式 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会的一个子集,采用完全独立于编程语言的文本格式来存储和表示…

盘点那些年我们一起玩过的网络安全工具

一、反恶意代码软件 1.Malwarebytes 这是一个检测和删除恶意的软件,包括蠕虫,木马,后门,流氓,拨号器,间谍软件等等。快如闪电的扫描速度,具有隔离功能,并让您方便的恢复。包含额外…

项目中使用Elasticsearch的API相关介绍

项目中使用Elasticsearch的API相关介绍 0、域映射类型 text:会分词,不支持聚合对当前搜索关键词,先自身分词,分成多个词,然后去一个一个的词去利用倒排索引去查询es索引库一般应用在搜索关键字匹配的字段的类型。 商…

Beego 使用教程 6:Web 输入处理

beego 是一个用于Go编程语言的开源、高性能的 web 框架 beego 被用于在Go语言中企业应用程序的快速开发,包括RESTful API、web应用程序和后端服务。它的灵感来源于Tornado, Sinatra 和 Flask beego 官网:http://beego.gocn.vip/ 上面的 bee…

Spring的监听器使用(实用,直接拿去修改可用)

一,前言 这里我们以ApplicationListener为例,简单说明一下监听器如何使用。 本人基本只输出实用,即用的代码,希望能帮助到各位,如果想研究底层逻辑,大家可自行根据代码去类源码查看。 监听器的使用主要分…

上层建筑(理解)

上层建筑(Superstructure)是指建立在一定经济基础上的社会意识形态以及与之相适应的政治法律制度和设施等的总和。它包括阶级关系(基础关系)、维护这种关系的国家机器、社会意识形态以及相应政治法律制度、组织和设施等。 上层建筑与经济基础对立统一。建…