【机器学习】软输出和硬输出的基本概念和区别、如何选择软输出还是硬输出、联系函数的作用以及线性判别分析和逻辑回归的基本概念(含python代码)

news2024/9/20 5:44:01

引言

在机器学习中,“软输出”(Soft Output)和"硬输出"(Hard Output)是两种不同的预测输出形式,通常用于分类问题中

文章目录

  • 引言
  • 一、软输出和硬输出
    • 1.1 硬输出(Hard Output)
    • 1.2 软输出(Soft Output)
    • 1.3 对比
    • 1.4 示例代码
    • 1.5 代码解释
  • 二、如何选择软输出还是硬输出
    • 2.1 业务目标和需求
    • 2.2 性能指标
    • 2.3 不确定性管理
    • 2.4 决策复杂度
    • 2.5 技术和资源
    • 2.6 实际操作步骤
    • 2.7 总结
  • 三、联系函数
  • 3.1 定义
  • 3.2 逻辑回归模型形式
    • 3.3 常用的联系函数
    • 3.4 联系函数的作用
  • 四、线性判别分析
    • 4.1 定义
    • 4.2 目的
    • 4.3 如何求得投影矩阵
    • 4.4 线性判别分析的应用
  • 五、逻辑回归
    • 5.1 定义
    • 5.2 模型形式
    • 5.3 损失函数
    • 5.4 优化方法
    • 5.5 应用场景
    • 5.6 注意事项
    • 5.7 示例代码
    • 5.8 代码解释

一、软输出和硬输出

1.1 硬输出(Hard Output)

硬输出通常是指模型给出的最直接的分类决策。在分类问题中,硬输出通常是每个样本被分类到的具体类别标签。硬输出不包含关于预测不确定性的信息

  • 例子:在二分类问题中,硬输出可能是0或1,表示样本被分类为类别0或类别1
  • 使用场景:当需要明确的类别决策时,硬输出非常有用

1.2 软输出(Soft Output)

软输出则提供了关于预测的连续值,这些值可以解释为概率或其他形式的置信度度量。软输出通常表示模型预测每个类别的概率,从而可以了解模型对每个预测的置信程度

  • 例子:在多分类问题中,软输出可能是一个向量,其中的每个元素表示样本属于对应类别的概率
  • 使用场景:当需要知道预测的不确定性或进行概率决策时,软输出非常有用

1.3 对比

下面通过一个简单的例子来对比软输出和硬输出:
假设有一个3分类问题,模型对某个样本的预测结果如下:

  • 硬输出:类别2
  • 软输出:[0.1, 0.2, 0.7],表示样本属于类别0、1、2的概率分别是10%,20%,70%。

在这个例子中,硬输出直接告诉我们模型认为这个样本属于类别2,而软输出则提供了更多细节,告诉我们模型认为这个样本属于类别2的概率最高,但是也有一定的不确定性

1.4 示例代码

以下是一个使用Python和scikit-learn库生成软输出和硬输出的示例

from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
import numpy as np
# 生成模拟数据
X, y = make_classification(n_samples=1000, n_features=20, n_informative=3, n_redundant=10, n_classes=3, random_state=42)
# 训练随机森林分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X, y)
# 硬输出:预测类别
hard_output = clf.predict(X)
# 软输出:预测概率
soft_output = clf.predict_proba(X)
# 打印前5个样本的硬输出和软输出
print("Hard Output (Predicted Classes):", hard_output[:5])
print("Soft Output (Predicted Probabilities):")
print(soft_output[:5])
# 硬输出通常用于直接分类决策
print("First sample classified as:", hard_output[0])
# 软输出可以用于概率决策,例如找到概率最高的类别
print("First sample probabilities:", soft_output[0])
print("Most likely class for first sample:", np.argmax(soft_output[0]))

输出结果:
在这里插入图片描述

1.5 代码解释

在这个代码示例中:

  • 我们使用随机森林分类器来生成硬输出(类别预测)和软输出(类别概率)
  • 硬输出用于直接分类决策
  • 软输出可以用于概率决策或其他需要考虑预测不确定性的场景

二、如何选择软输出还是硬输出

在实际应用中选择输出类型(软输出或硬输出)取决于多个因素,包括业务需求、性能指标、风险承受能力以及后续决策过程。以下是一些指导原则,可以帮助你决定何时使用软输出或硬输出

2.1 业务目标和需求

  • 硬输出适用情况
    • 当业务决策只需要明确的类别标签时,例如垃圾邮件分类、疾病诊断
    • 当错误分类的代价大致相等时,或者错误的分类对系统影响不大时
  • 软输出适用情况
    • 当需要根据预测的概率来做出决策时,例如信用评分、广告点击率预测
    • 当不同错误分类的代价不同,需要根据风险来调整决策时

2.2 性能指标

  • 硬输出
    • 适用于精确度(Accuracy)、召回率(Recall)、F1分数等指标,这些指标基于硬分类结果
  • 软输出
    • 适用于对概率预测质量敏感的指标,如对数损失(Log Loss)、Brier分数(Brier Score)

2.3 不确定性管理

  • 硬输出
    • 当模型预测非常确定,或者业务流程不需要考虑预测的不确定性时
  • 软输出
    • 当需要评估模型预测的不确定性,并根据这种不确定性来调整决策策略时

2.4 决策复杂度

  • 硬输出
    • 对于简单的二元决策,如是否批准贷款、是否发送促销信息
  • 软输出
    • 对于复杂的决策过程,如个性化推荐、定价策略,需要考虑多个因素和概率

2.5 技术和资源

  • 硬输出
    • 当计算资源有限,或者下游系统只能处理硬分类结果时
  • 软输出
    • 当有足够的计算资源来处理概率输出,并且下游系统能够利用这些概率信息时

2.6 实际操作步骤

  1. 理解业务需求:与业务利益相关者沟通,了解他们的具体需求和目标
  2. 评估风险:分析不同错误分类的风险和代价
  3. 测试和验证:使用交叉验证或A/B测试来比较硬输出和软输出的性能
  4. 决策支持:考虑是否需要模型输出提供额外的决策支持,如不确定性度量
  5. 资源考虑:评估计算资源和技术能力是否支持软输出
  6. 迭代和优化:根据实际应用中的反馈和性能,不断调整和优化输出类型

2.7 总结

选择输出类型应该是一个迭代和系统化的过程,需要根据实际应用中的反馈和效果不断调整

三、联系函数

3.1 定义

在机器学习中,联系函数(Link Function)是一个数学函数,它在逻辑回归模型中用于将线性预测转换为概率输出。逻辑回归是一种用于处理二分类问题的概率模型,其中预测结果介于0和1之间,代表样本属于正类的概率

3.2 逻辑回归模型形式

逻辑回归模型的一般形式如下:
P ( Y = 1 ) = 1 1 + e − ( β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β n X n ) P(Y=1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n)}} P(Y=1)=1+e(β0+β1X1+β2X2++βnXn)1
在这个公式中, P ( Y = 1 ) P(Y=1) P(Y=1) 是样本属于正类的概率,而 e − ( β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β n X n ) e^{-(\beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n)} e(β0+β1X1+β2X2++βnXn) 是一个线性组合,它表示预测值。为了将这个线性组合转换为概率,我们使用联系函数。

3.3 常用的联系函数

逻辑回归中,常用的联系函数是sigmoid函数,它定义为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1
其中 z z z 是线性组合的输出。通过应用sigmoid函数,我们可以将线性预测转换为介于0和1之间的概率值,如下所示:
P ( Y = 1 ) = σ ( β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β n X n ) P(Y=1) = \sigma(\beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n) P(Y=1)=σ(β0+β1X1+β2X2++βnXn)

3.4 联系函数的作用

联系函数在逻辑回归中的作用是将线性预测转换为概率,使得模型的输出可以直接用于概率估计。sigmoid函数是逻辑回归中默认的联系函数,但也可以使用其他联系函数,如对数函数或幂函数

四、线性判别分析

在这里插入图片描述

4.1 定义

定义线性判别分析(Linear Discriminant Analysis,LDA)是一种用于监督学习的降维技术,旨在通过投影数据到一个低维空间中,使得不同类别的样本尽可能分开。这种方法假设每个类别都符合一个高斯分布,并且不同类别之间的协方差矩阵不同。

4.2 目的

线性判别分析的目的是找到一个投影矩阵 W W W,使得在新的低维空间中,每个类别的样本尽可能地聚集在一起,同时不同类别之间的样本尽可能地分离

4.3 如何求得投影矩阵

这个投影矩阵 W W W 可以通过最大化类间散度矩阵和最小化类内散度矩阵来估计
类间散度矩阵 S B S_{B} SB 定义为:
S B = ∑ i = 1 C n i N ( μ i − μ 0 ) ( μ i − μ 0 ) T S_{B} = \sum_{i=1}^{C} \frac{n_i}{N} (\mu_i - \mu_0)( \mu_i - \mu_0)^T SB=i=1CNni(μiμ0)(μiμ0)T

  • C C C 是类别的数量
  • n i n_i ni 是第 i i i 个类别的样本数量
  • μ i \mu_i μi 是第 i i i 个类别的均值
  • μ 0 \mu_0 μ0 是所有类别的总均值
  • N N N 是总样本数量

类内散度矩阵 S W S_{W} SW 定义为:
S W = ∑ i = 1 C n i N ( μ i − μ 0 ) ( μ i − μ 0 ) T S_{W} = \sum_{i=1}^{C} \frac{n_i}{N} (\mu_i - \mu_0)(\mu_i - \mu_0)^T SW=i=1CNni(μiμ0)(μiμ0)T

  • μ i \mu_i μi 是第 i i i 个类别的均值
  • μ 0 \mu_0 μ0 是所有类别的总均值

投影矩阵 W W W 可以通过最大化类间散度矩阵 S B S_{B} SB 和最小化类内散度矩阵 S W S_{W} SW 来估计:
W = ( ∑ i = 1 C n i N ( μ i − μ 0 ) ( μ i − μ 0 ) T ) − 1 ( ∑ i = 1 C n i N ( μ i − μ 0 ) ) W = \left( \sum_{i=1}^{C} \frac{n_i}{N} (\mu_i - \mu_0)(\mu_i - \mu_0)^T \right)^{-1} \left( \sum_{i=1}^{C} \frac{n_i}{N} (\mu_i - \mu_0) \right) W=(i=1CNni(μiμ0)(μiμ0)T)1(i=1CNni(μiμ0))
得到投影矩阵 W W W 后,可以将原始数据投影到 W W W 所定义的低维空间中。在新的空间中,不同类别的样本应该尽可能地分开

4.4 线性判别分析的应用

线性判别分析在模式识别和图像处理等领域有广泛的应用,例如在图像分类、人脸识别等领域

五、逻辑回归

在这里插入图片描述

5.1 定义

逻辑回归(Logistic Regression)是一种广泛使用的统计学方法,用于预测一个二分类问题的概率。它在机器学习和统计学中都很常见,特别是在分类问题上。逻辑回归的核心思想是将线性回归模型扩展到二分类问题,并通过一个特定的函数(称为sigmoid函数)将线性回归的输出转换为概率值

5.2 模型形式

逻辑回归模型可以表示为:
P ( Y = 1 ) = 1 1 + e − ( β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β n X n ) P(Y = 1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_nX_n)}} P(Y=1)=1+e(β0+β1X1+β2X2++βnXn)1
其中:

  • P ( Y = 1 ) P(Y = 1) P(Y=1) 是样本属于正类的概率
  • β 0 \beta_0 β0 是截距项,通常称为偏置(bias)
  • β 1 , β 2 , ⋯   , β n \beta_1, \beta_2, \cdots, \beta_n β1,β2,,βn 是模型参数,通常称为权重(weights)
  • X 1 , X 2 , ⋯   , X n X_1, X_2, \cdots, X_n X1,X2,,Xn 是输入特征
    sigmoid函数定义为:
    σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1
    通过将线性回归模型的输出传递给sigmoid函数,我们可以得到一个介于0和1之间的概率值,这个值表示样本属于正类的概率

5.3 损失函数

在逻辑回归中,通常使用交叉熵损失函数来衡量模型预测的概率分布和真实分布之间的差异交叉熵损失函数定义为:
loss = − 1 m ∑ i = 1 m y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) \text{loss} = -\frac{1}{m} \sum_{i=1}^{m} y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) loss=m1i=1myilog(y^i)+(1yi)log(1y^i)
其中:

  • m m m 是样本数量
  • y i y_i yi 是第 i i i 个样本的真实标签(0或1)
  • y ^ i \hat{y}_i y^i 是第 i i i 个样本的预测概率

5.4 优化方法

逻辑回归模型可以通过各种优化算法进行训练,如梯度下降、随机梯度下降、牛顿法等。在实际应用中,通常使用梯度下降的变体,如批量梯度下降、小批量梯度下降或自适应学习率算法

5.5 应用场景

逻辑回归在各种领域都有应用,包括医学、金融、自然语言处理等。它可以用于预测疾病风险、信用评分、垃圾邮件检测等

5.6 注意事项

  • 逻辑回归假设输入特征之间是独立的,这在实际应用中可能并不总是成立
  • 逻辑回归的性能受特征选择和特征缩放的影响很大
  • 逻辑回归模型可能需要大量的数据来训练,特别是在样本数量较少的情况下

5.7 示例代码

以下是一个使用Python和scikit-learn库实现逻辑回归的简单示例:

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成模拟数据
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建逻辑回归模型
clf = LogisticRegression()
# 训练模型
clf.fit(X_train, y_train)
# 预测测试集
y_pred = clf.predict(X_test)
# 计算准确度
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

输出结果:
在这里插入图片描述

5.8 代码解释

  • 首先生成模拟数据
  • 然后将其划分为训练集和测试集
  • 接着,创建一个逻辑回归模型,并使用训练数据对其进行训练
  • 最后,我们使用测试数据来评估模型的性能

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

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

相关文章

深入理解C语言指针原理——深入底层机制

概述 在C语言中,指针是处理内存的核心工具。为了更好地理解指针如何工作,我们需要深入了解指针与底层硬件和操作系统之间的交互方式。本文将探讨指针的底层实现、内存布局、以及它们如何影响程序的行为。 内存模型 虚拟内存 现代操作系统为每个进程提…

Java算法—排序篇之快速排序(Quick sort)

快速排序(Quick sort) 核心思路: 从数列中挑出一个元素,一般都是左边第一个数字,称为 “基准数”;创建两个指针,一个从前往后走,一个从后往前走。先执行后面的指针,找出第一个比基…

io进程----库

目录 一丶定义 二丶分类 1.静态库 2.动态库 三丶静态库制作 四丶动态库制作 总结: 一丶定义 当使用别人的函数时除了包含头文件以外还需要有库 头文件:函数声明、结构体等类型定义、头文件、宏定义、其他头文件等 库:把一些常…

Java 使用QQ邮箱的接收发送功能,入门级教程

进入qq邮箱主页面,点击账号 下滑找到POP3...如果没有开启,需要开启,开启后,点击管理服务 然后点击生成授权码 按照步骤执行完成后,会给你需要的授权码 1.拿到授权码后,导入相关依赖,和yml相关配…

基于STM32开发的智能家居温度控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化温度监测与显示风扇/加热器控制Wi-Fi通信与远程监控应用场景 家庭环境的智能温度管理办公楼的节能温控系统常见问题及解决方案 常见问题解决方案结论 1. 引言 随着人们对生活质量…

OZON电子类目解封,OZON新品飙升榜

Ozon电子类目的解封对于商家来说是一个重要的机会,可以重新进入市场并恢复销售。 Ozon电子类目解封选品:m6z.cn/5H6fQR(复制浏览器打开) Top1 便携式音响 Портативная колонка Bluetooth с караоке м…

多意图指令识别项目调研及整理

多意图算法及专利调研整理 AGIF: An Adaptive Graph-Interactive Framework for Joint Multiple Intent Detection and Slot Filling 短文本多意图解析 https://zhuanlan.zhihu.com/p/405096922 多意图语义解析包括多意图发现MID(Multi-intent discovery&#xf…

搭建go开发环境

下载go软件压缩包 解压压缩包到D:/Program Files 验证是否安装成功 配置系统环境变量Path

甄选范文“论软件质量保证及其应用”,软考高级论文,系统架构设计师论文

论文真题 软件质量保证(Software Quality Assurance, SQA)是指为保证软件系统或软件产品充分满足用户要求的质量而进行的有计划、有组织的活动,这些活动贯穿于软件生产的整个生命周期。质量保证人员负责质量保证的计划、监督、记录、分析及报告工作,辅助软件开发人员得到高…

arthas源码刨析:arthas 命令粗谈 dashboard watch retransform (3)

文章目录 dashboardwatchretransform 前面介绍了 arthas 启动相关的代码并聊了聊怎么到一个 shellserver 的建立。 本篇我们来探讨一下几个使用频次非常高的命令是如何实现的。 在开始之前,我们先概要地了解一下 arthas 命令的几个思路。 自定义命令,普通…

【Hexo】hexo-butterfly主题添加非主站提示

本文首发于 ❄️慕雪的寒舍 说明 因为hexo可以很方便的在多个平台上免费部署,为了让自己的博客能uptime更久一段时间,很多老哥都和我一样,把自己的hexo博客在好多个平台上都部署了一份。 但是我一直想要一个功能,就是在别人访问…

可商用插画

可商用插画 https://www.88sheji.cn/favorites/free-illustration

5G+智慧工业园区解决方案

1. 智慧工业园区架构概览 智慧工业园区采用多层架构设计,包括展示层、应用层、服务层、数据层和安全保障体系。此架构利用云计算、物联网和移动通信技术,实现园区管理的数字化和智能化。 2. 园区大脑功能 园区大脑作为智慧园区的“中枢神经”&#xf…

校园招聘,在线测评包括哪些内容?

一年两次的校园招聘(秋招和春招),面对众多职业测评的时候,很多人都会觉得无从下手,从而在竞争中失利。根据实践中的情况来看,校园招聘时的测试其实不难,求职者提前准备,想通过在线测…

SLAM十四讲ch3课后习题

1.验证旋转矩阵是正交矩阵。 2.验证四元数旋转某个点后,结果是一个虚四元数(实部为零),所以仍然对应到一个三维空间点。 注意:目前市面上所有的博客都说旋转四元数的逆是共轭除以模的平方 ,这么算很正确但…

免费分享:2023甘肃省地质灾害点数据集(附下载方法)

滑坡,在一定自然条件下的斜坡上的十体或岩体在外界的影响和自身的作用下沿着一定的软弱面或带,发生以水平心移为主的变形现象。地面沉降又称为地面下沉或地陷,是在自然或人类工程的影响下,由于地下松散土层固结收缩压密作用&#…

无人机飞手培训考证,超视距大载重吊运组装训练全学就业有保障

关于无人机飞手培训考证,是否必须学习超视距飞行、大载重吊运以及组装训练以确保就业保障,这个问题涉及多个方面,以下是对各点的详细分析: 一、超视距飞行 必要性分析: 超视距飞行是无人机高级应用中的一个重要领域…

大模型备案全网最详细流程解读(附附件+重点解读)

文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报流…

Cesium 全球视角 和 多方案镜头切换

一.切换镜头 镜头切换&#xff0c;在一个Pawn里的多个镜头。可以使用UE中World Settings里的玩家控制器中&#xff0c;默认的控制器行为会对当前开启的Camera组件进行激活处理。 谁激活谁就是主相机。 Cast<UCameraComponent>(m_childComponentMap[it.CameraName])-&g…

VLDB 2024丨与 TiDB 一起探索数据库学术前沿

VLDB 2024 将于2024年8月26日至8月30日在中国广州举行。VLDB 是数据库领域的顶级国际会议&#xff0c;旨在为数据管理、可扩展数据科学、数据库研究者、供应商、从业者、应用开发者和用户提供交流平台。 2024年的VLDB会议涵盖了数据管理、数据库架构、图形数据管理、数据隐私与…