一个机器学习问题的重新定义

任何事物都有两面性。

一些机器学习问题也是如此。并非每个回归问题(你认为的)都需要回归。仔细考虑和审视问题的业务不仅可以帮助开发更好的模型,还可以找到有效的解决方案。

重构或重新定义(reframing)是一种改变机器学习问题输出表示的策略。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、回归问题重构

例如,我们可以将回归问题转换为分类问题(反之亦然)。

每个机器学习问题都始于范围界定(scoping)。

范围界定涉及从用户的角度思考问题、确定项目范围以及谁将使用它。这可能涉及提出以下问题:

  • 这是一个监督问题还是非监督问题?
  • 我们服务的最终用户是谁?
  • 最终产品对人类生命/财产是否至关重要?
  • 多少错误是可以接受的?

假设,我们想使用线性回归来预测医院每月的运营时间,以便确定医院的人员配备要求。运营时间变量取决于我们数据集的独立变量,例如每月的 X 光检查次数、每月占用的床位天数和/或每月患者的平均住院时间。

因此,这个看似简单的任务看起来是一个回归任务,因为每月的运营时间是一个连续变量。当我们开始构建回归模型时,我们发现这个任务比听起来要难。同一组特征的运营时间会增加,可能是因为一年中某个时期的急性病,或者由于其他一些不一致。我们预测的运营时间可能会有(比如说)10 小时的偏差。但这不会对人员配备要求产生太大影响。

也许我们可以重新构建我们的机器学习目标,以提高性能。

这里的问题是预测运营时间是概率性的。我们可以将目标构建为分类任务,而不是尝试将此变量预测为回归任务。

将实值因变量分解为大小相等的箱/类别:

然后,我们将对这些类别进行one-hot处理,并创建一个多类分类模型,该模型将对离散概率分布进行建模。

当然,我们需要更细粒度的桶。但这只是为了说明目的

分类方法允许模型捕获不同离散范围内的运行时间概率分布,而不必选择分布的平均值。

这在以下情况下非常有用:

  • 变量不呈现典型的钟形曲线(可能是 tweedie 分布)。
  • 当分布为双峰分布(具有两个峰值的分布)时,或者即使分布为正态但方差较大时。
  • 当分布为正态但方差较大时

2、它为什么有效?

我们正在将模型的目标从学习连续值转变为学习离散概率分布;以损失精度为代价,但反过来,我们获得了完整概率密度函数 (PDF) 的表达能力。

这种分类框架的另一个优点是,我们获得了预测值的后验概率分布,这提供了更细微的信息。

3、权衡与替代方案

另一种方法是多任务学习,它使用多个预测头将两个任务(分类和回归)组合成一个模型,但要注意由于数据集的限制而引入标签偏差的风险。

重新构建回归问题是捕捉不确定性的一种非常好的方法。捕捉不确定性的其他方法是进行分位数回归(quantile regression)。

例如,我们可以估计需要预测的条件第 10、20、30、...、90 个百分位数,而不是仅仅预测平均值。分位数回归是线性回归的扩展。另一方面,重新构建可以与更复杂的机器学习模型一起使用。

3.1 预测精度

如上例所示,我们牺牲了精度来获得离散概率分布函数 (PDF) 的表达能力。如果需要更精确,则需要增加分类模型的箱数。

PDF 的锐度表示回归任务的精度。 PDF 越锐利,表示输出分布的标准差越小,而 PDF 越宽,表示标准差越大,因此方差越大。

对于锐利的密度函数,请坚持使用回归模型。

回归的精度由一组固定输入值的概率密度函数的锐度表示

我们可以通过对右侧图中的特征进行分桶处理来获得左侧的相同图。

另外,不要混淆准确度(accuracy)和精确度(precision)的概念:

准确度是测量值与真实值的接近程度。

精确度是(同一项目的)测量值之间的接近程度。

3.2 重构作为限制预测范围的一种方法

很多时候,预测范围是一个实值变量。 仅使用一个神经元的密集层可能会使预测输出超出可接受/可解释的范围。

重构可以在这里起到救援作用。

为了限制预测范围,将倒数第二层的激活函数设为 S 型函数(通常与分类相关),使其在 [0, 1] 范围内,并让最后一层将这些值缩放到所需范围:

MIN_Y = 3
MAX_Y = 20
input_size = 10
 
inputs = keras.layers.Input(shape=(input_size,))
h1 = keras.layers.Dense(20, 'relu')(inputs)
h2 = keras.layers.Dense(1, 'sigmoid')(h1) # a sigmoid layer
output = keras.layers.Lambda(
	lambda y: (y*(MAX_Y-MIN_Y) + MIN_Y)
    )(h2) # a custom layer for scaling
model = keras.Model(inputs, output)

由于输出是 S 型函数,因此模型实际上永远不会达到范围的最小值或最大值,只是接近它。

3.3 标签偏差

基于神经网络的推荐系统被设计为回归或分类模型,比矩阵分解更具优势,因为它们可以结合矩阵分解中学习到的用户和项目嵌入之外的更多附加特征。

但是,将目标设计为分类问题(观众是否会点击)可能会导致推荐系统优先考虑点击诱饵。

在这种情况下,最好将目标重新定义为回归问题,预测将观看的视频部分,或视频观看时间,甚至预测用户观看至少一半视频片段的可能性。

3.4 多任务学习

我们甚至可以尝试两者,而不是将任务重新设计为回归或分类,这称为多任务学习。

多任务学习是指优化多个损失函数的任何机器学习模型。

神经网络中多任务学习最常见的两个分支是:

  • 硬参数共享——当模型的隐藏层在所有输出任务之间共享时。
  • 软参数共享——当每个标签都有自己的神经网络和自己的参数时,通过某种形式的正则化鼓励不同模型的参数相似。

多任务学习的两种常见实现


原文链接:机器学习问题的重新定义 - BimAnt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-思考完全二叉树

我们知道在完全二叉树中 : (孩子下标-1)/ 2 父节点下标 父节点下标*21 左孩子节点 父节点下标*22 右孩子节点 那我们该怎样理解以便之后不容易忘记呢? 以下是我的思考过程:观察下边的完全二叉树的下标规律…

Docker HTTPS api V2 Manifest V 2, Schema 2 下的免装docker下载镜像的方法

目录 前言 下载镜像代码 使用方法 原代码中无法适配 Schema 2 的原因浅析 如何解决 相对原代码改动的东西 前言 本文提供代码主要是基于 https://github.com/NotGlop/docker-drag 提供的代码修改的。链接中提供的代码应该是是基于HTTPS api V2 Manifest V 2, Schema 1实…

如何使用pycrypt加密工具测试反病毒产品的检测性能

关于pycrypt pycrypt是一款基于Python 3语言开发的加密工具,广大研究人员可以使用该工具来尝试绕过任意类型的反病毒产品,以检测目标反病毒产品的安全性能。 功能介绍 1、目前已知反病毒产品检测率为0/40; 2、支持绕过任意EDR解决方案&#…

Nodejs+Socket.io+Web端完成聊天

前言 源码获取:nodeexpresssocket.ioweb: 聊天demo (gitee.com) 目录结构 后端依赖 启动方式 前端是html正常启动 后端是node app.js 后端app.js核心代码 const express require(express) const app express() var http require(http).Server(app) var io require(so…

AI网络爬虫-自动获取百度实时热搜榜

工作任务和目标&#xff1a;自动获取百度实时热搜榜的标题和热搜指数 标题&#xff1a;<div class"c-single-text-ellipsis"> 东部战区台岛战巡演练模拟动画 <!--48--></div> <div class"hot-index_1Bl1a"> 4946724 </div> …

uniapp+vue3+ts开发小程序或者app架构时候的UI框架选型

使用vue3tsviteuniapp开发小程序或者跨平台app的趋势越来越高&#xff0c;有一个顺手的UI的框架还是非常重要的&#xff0c;官方维护的 uni-ui&#xff0c;支持全端&#xff0c;而且有类型提示&#xff0c;目前已经内置到 GitHub - Sjj1024/uniapp-vue3: 使用uniapp和vue3 ts …

01-05.Vue自定义过滤器

目录 前言过滤器的概念过滤器的基本使用给过滤器添加多个参数 前言 我们接着上一篇文章01-04.Vue的使用示例&#xff1a;列表功能 来讲。 下一篇文章 02-Vue实例的生命周期函数 过滤器的概念 概念&#xff1a;Vue.js 允许我们自定义过滤器&#xff0c;可被用作一些常见的文本…

Photoshop插件(UXP)编写过程中,如何更新sp-checkbox的选中状态

✨问题说明 sp-checkbox是uxpSpectrum UXP Widgets下的一个小组件&#xff0c;内置样式大概是这样&#xff1a; 那么&#xff0c;如果用js动态的改变选中的状态&#xff0c;应该如何做呢&#xff1f; 如果直接是html来写&#xff1a; <sp-checkbox checked>Checked<…

部门来了个测试开发,听说是00后,上来一顿操作给我看蒙了...

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

Java——图书管理系统万字详解(附代码)

框架搭建 book包 将书相关的放到book包中&#xff0c;创建一个Book类用来设置书的属性&#xff0c;包括书名、作者、价格、类型、是否被借出等。 以上属性均被private所修饰 利用编译器生成构造方法&#xff08;不需要构造isBorrowed&#xff0c;因为其初始值为false&#…

代码审计--一道简单的文件包含题目的多种利用方式

NO.1 传统方法 首先来看下代码 <?php error_reporting(0); if(isset($_GET["file"])){include($_GET["file"]); }else{highlight_file(__FILE__);phpinfo(); } ?>看完代码后再来学习学习函数吧&#xff0c;毕竟菜啊&#xff01;&#xff01;&…

【图书推荐】《Vue.js 3.x+Element Plus从入门到精通(视频教学版)》

配套示例源码与PPT课件下载 百度网盘链接: https://pan.baidu.com/s/1nBQLd9UugetofFKE57BE5g?pwdqm9f 自学能力强的&#xff0c;估计不要书就能看代码学会吧。 内容简介 本书通过对Vue.js&#xff08;简称Vue&#xff09;的示例和综合案例的介绍与演练&#xff0c;使读者…

【独家揭秘!玩转ChatGPT?一文带你解锁秘籍!】

&#x1f680;【独家揭秘&#xff01;玩转ChatGPT&#xff1f;一文带你解锁秘籍&#xff01;】&#x1f680; &#x1f449; 【直达ChatGPT体验站】 ChatGPT&#xff0c;全称“Chat Generative Pre-trained Transformer”&#xff0c;是人工智能研究实验室OpenAI于2022年底推出…

夏日炎炎,手机如何避免变成热源?这些降温技巧分享给你

夏日炎炎&#xff0c;手机也容易“中暑”。 高温不仅会让手机性能大打折扣&#xff0c;还可能引发安全隐患。因此&#xff0c;如何让手机在高温下“冷静”下来&#xff0c;成为了许多手机用户关心的问题。 本文将为你提供一些实用的降温技巧&#xff0c;帮助你的手机安全度过…

Python数据可视化(四)

实现图形的动画效果 在 matplotlib 中&#xff0c;不仅可以绘制静态图形&#xff0c;也可以绘制动态图形。对于动态图形来说&#xff0c;我们称 之为动画或许会让读者更容易明白。绘制动画的方法主要有两种&#xff1a;一种是使用模块 animation 绘制动 画&#xff1b;另一种是…

【C++题解】1699 - 输出是2的倍数,但非3的倍数的数

问题&#xff1a;1699 - 输出是2的倍数&#xff0c;但非3的倍数的数 类型&#xff1a;循环 题目描述&#xff1a; 请从键盘读入一个整数 n&#xff0c;输出 1∼n 中所有是 2 的倍数&#xff0c;但非 3 的倍数的数&#xff0c;每行 1个。 比如&#xff0c;读入一个整数10 &…

[Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解

目录 1.按摩师1.题目链接2.算法思路详解3.代码实现 2.打家劫舍 II1.题目链接2.算法思路详解3.代码实现 3.删除并获得点数1.题目链接2.算法思路详解3.代码实现 4.粉刷房子1.题目链接2.算法思路详解3.代码实现 1.按摩师 1.题目链接 按摩师 2.算法思路详解 思路&#xff1a; 确…

2024 ISCC pwn wp

iscc 练武pwn 总结第一周chaosISCC_easyFlagshopping 第二周ISCC_easyISCC_Uheapheap 第三周miaoYour_programeazy_heap 总结 总体感觉iscc考察的题目都挺基础的&#xff0c;在目前这种比赛的大环境下&#xff0c;仍然出这种&#xff0c;比较基础的题目&#xff0c;实在是难得…

原生js实现拖拽改变元素顺序

代码展示如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

NLP(19)--大模型发展(3)

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 大模型训练相关知识&#xff1a; 问题&#xff1a; 数据集过大&#xff0c;快速训练模型过大&#xff0c;gpu跑不完 方案&#xff1a; 数据并行训练&#xff1a; 复制数据&#xff08;batch_size&#xff09;到多个gpu&…