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

目录

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.hqwc.cn/news/690635.html

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

相关文章

【C++】CentOS环境搭建-升级CMAKE

【C】CentOS环境搭建-升级CMAKE CMAKE报错CMake 3.12 or higher is required. You are running version 2.8.12.2升级步骤1.移除当前的cmake2.安装必要的构建工具和库3.下载最新的cmake源码并解压5.编译和安装6.验证安装 CMAKE报错CMake 3.12 or higher is required. You are r…

Softing工业推出的edgeConnector将Allen-Bradley控制器集成到工业边缘应用中

2024年4月17日(哈尔),Softing宣布扩展其基于Docker的edgeConnector产品系列,推出了新软件模块edgeConnector Allen Bradley PLC,可方便用户访问来自ControlLogix和CompactLogix控制器数据。 (edgeConnector…

linux 安装 mangodb 并设置服务开机自启

1、下载 wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz 2、解压 tar -zxvf mosquitto-1.6.8.tar.gz 3、编译安装cd mosquitto-1.6.8 make sudo make install4、在当前目录。进入mosquitto服务文件存放的文件夹 cd service/systemd可以看到3个文件 点击read…

鸿蒙内核源码分析(Shell解析篇) | 应用窥视内核的窗口

系列篇从内核视角用一句话概括shell的底层实现为:两个任务,三个阶段。其本质是独立进程,因而划到进程管理模块。每次创建shell进程都会再创建两个任务。 客户端任务(ShellEntry): 负责接受来自终端(控制台)敲入的一个个字符&…

大数据Scala教程从入门到精通第七篇:Scala在IDEA中编写Hello World

一:Scala在IDEA中编写Hello World 想让我们的idea支持scala的编写,需要安装一个插件。

vs2019 STL库里 判断函数类型的模板 is_function_v 与 is_const_v

(1)源代码如下: 经简单代码测试后,得出 vs2019 的 c 编译器 和 其 STL 库的观点与设计:is_const_v 用来判断类型 T 内是否含有 const 修饰符,含有 const 则返回真。但若 T 是含有 const 的引用类型&#xf…

java小知识:图片添加中文水印,部署到linux环境乱码解决

源码如下: import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Objects;/*** 图片添加文字水印** param so…

批量生成大量附件(如:excel,txt,pdf)压缩包等文件时前端超时,采用mq+redis异步处理和多线程优化提升性能

一.首先分析一下场景:项目中我需要从财务模块去取单证模块的数据来生成一个个excel文件 在单证那个一个提单号就是一个excel文件,我们这边一个财务发票可能会查出几千个提单,也就是会生成几百个excel,然后压缩为一个压缩包&#x…

01.Net基础知识

.Net的用途 Web、移动、云、桌面、游戏开发、物联网 (IDE:集成开发环境) .Net学习资源 Microsoft Learn、GitHub、G码云(Gitee) Visual Studio初步使用 1)可创建的项目种类(主要学习以下四…

特征提取与深度神经网络DNN

OpenCV中的深度神经网络(DNN)模块,现在已经支持图像风格迁移、图像分类、对象检测、语义分割、实例分割、图像变换等。 只支持推理,不支持训练 支持主流的深度学习框架生成模型 推荐使用pytorch/onnx/tensorflow ResNet18的图像…

Java 常见集合类

集合的整体框架 Java 的集合,也可以叫做容器,根据集合的整体框架可以看出,主要是两大集合接口:第一个是 Collection 接口,主要用来存放单一的元素对象;另一个是 Map 接口,主要用于存储键值对。…

续篇——源码部署LAMP环境上线项目——禅道项目

上篇:LNMP环境部署WordPress——使用源码包安装方式部署环境-CSDN博客 目录 一.前提准备 1. 名词区别 2. 下载项目软件包 3. 上传项目源码到虚拟机并解压 二.安装Apache 1. 环境清理 2.关闭Nginx 3. 下载Apache 4. 下载APR组件 4.1 安装apr 4.2 安装apr-util组件 5…