勘探开发人工智能技术:机器学习(4)

news2024/11/27 8:42:55

0 提纲

5.1 半监督学习
5.2 主动学习
5.3 代价敏感学习
5.4 多标签学习
5.5 多示例学习

1 半监督学习

用无标签的数据提升学习器的效果.

1.1 基本概念

半监督学习强调的是一种学习场景, 在该场景下, 无标签数据可以协助带标签数据提升预测质量.
监督学习: 训练数据都有标签, 相应的任务为分类、回归等.
无监督学习: 训练数据都没有标签, 相应的任务为聚类、特征提取 (如 PCA) 等.
半监督学习: 部分训练数据没有标签, 相应任务与监督学习一致.
从三者的关系可以看出, 半监督学习是从监督学习与无监督学习自然推导出来的.

1.2 学习场景

半监督学习的一大意义在于, 它导出了学习场景这个概念.

  • 上午来了 100 个就诊者, 主治医生啥也没说, 实习生自悟, 把他们分成几个簇, 并且无法解释每簇的语义 (是否患病之类), 这是无监督学习场景中的聚类问题.
  • 上午来了 100 个就诊者, 主治医生对每个人判断, 哪些患流感 (正例), 哪些没有 (负例). 实习生学习到流感的诊断方法. 下午来了新的就诊者, 实习生对他们进行诊断. 这是监督学习场景中的二分类问题.
  • 上午来了 100 个就诊者, 主治医生对其中的 40 个人判断, 哪些患流感 (正例), 哪些没有 (负例). 实习生对剩下的 60 人进行诊断. 这是封闭世界半监督学习场景中的二分类问题.
  • 上午来了 100 个就诊者, 主治医生对其中的 40 个人判断, 哪些患流感 (正例), 哪些没有 (负例). 下午来了新的就诊者, 实习生对他们进行诊断. 这是开放世界半监督学习场景中的二分类问题.

1.3 无标签数据协助提升学习器质量的讨论

图 1中, + 表示正例, - 表示负例. 问: A, B 分别为正例还是负例?
直观来看, 应将 A 预测为负例, B 预测为正例. 如果你有机器学习的基础, 还可以用 kNN, SVM 之类进行强行解释, 不过这些不重要.
在这里插入图片描述
图 2 在图 1 的基础上增加了很多实例, 但我们不知道它们为正还是负. 现在重新判断A, B 分别为正例还是负例?
在这里插入图片描述
直观来看, A 与正例通过很多未标记数据 “连接” 起来, 而 B 与负例也通过很多未标记数据 “连接” 起来. 因此, 这个图中, 我们愿意相信 A 为正例, B 为负例.
为什么未标记数据让我们改变了主意? 因为他们带来了 数据分布 的巨大改变.

2 主动学习

人机交互获得专家的指导.

2.1 基本概念

主动学习是人机交互支撑的学习场景.
动机. 要想获得良好的学习效果, 通常需要大量的带标签数据. 在有些领域, 标签易于获取; 但在另外的领域, 打标签是专家的事情, 耗时耗力. 能不能使用更少的标签, 训练良好的学习器呢?
基本要求. 交互式的学习场景. 即: 人类专家根据机器的指定, 对相应数据打标签.
归属. 可以看作半监督学习的一种, 因为训练数据的一部分提供了标签.

2.2 主动学习的几种具体场景

冷启动封闭世界主动学习. 有 500 个样本, 先都没有给标签. 现在专家答应给其中 100 个打标签, 但其它 400 个需要机器预测.
冷启动开放世界主动学习. 有 500 个样本, 先都没有给标签. 现在专家答应给其中 100 个打标签. 机器需要对另外的一些样本 (未知样本) 进行预测.
一般情况下的封闭世界主动学习. 有 500 个样本, 其中 20 个标签已知. 现在专家答应给 80 个打标签, 但其它 400 个需要机器预测.
一般情况下的开放世界主动学习. 自己补上.

2.3 主动学习的核心问题

哪些样本的标签更有价值?
代表性强的样本. 把数据进行聚类, 聚类中心的样本具有良好的代表性. 其它样本很可能与它有相同的标签. 用这种思想可以设计出"基于聚类的主动学习方法".
不确定性强的样本. 有些样本有墙头草的潜质, 难于界定正负. 如果知道它们的标签, 就可以使用 SVM 进行分类, 相应地, 这次样本可能成为支撑向量 (support vector).

3 代价敏感学习

我们还是来谈钱吧.

3.1 常见的几类代价

代价敏感学习是将代价作为输入与优化目标时的机器学习.
代价是基础数据, 与应用有紧密联系.

  • 测试代价. 很多数据不是免费的, 如体检时, 测血常规花 20 元, 心电图花15 元, B 超花200 元. 这些代价被称为测试代价 (test cost).
  • 标记代价. 在主动学习场景下, 请专家给数据打标签需要付钱, 如每个标签花费 100 元. 这被称为标记代价 (label cost).
  • 误分类代价. 将患有流感的病人叫回家, 医院要赔偿 10,000 元, 即 c(FN)=10,000; 将没有流感的就诊者留着住院治疗, 医院要赔偿 500 元, 即 (FP)=500. 相应地, 可以给出一个误分类代价矩阵.
  • 延迟代价. 不清楚就诊者是否患病, 让其留院观察, 就诊者的误工开销为 200 元.

3.2 典型的代价敏感学习问题

代价是一类数据, 而且与其它数据处于不同维度, 本质上与机器学习: 数据的类型应该放在一起讨论. 可以把它当成一副狗皮膏药, 与不同的机器学习问题结合, 形成相应的代价敏感学习问题.
代价敏感分类问题

  • 输入: 数据, 标签, 误分类代价矩阵;
  • 输出: 分类器;
  • 优化目标: 平均误分类代价.

对于二分类问题, 当c(FN)=c(FP)>0 时, 代价敏感二分类问题退化为最大化准确率的二分类问题 (即不考虑代价).

代价敏感冷启动封闭世界主动学习问题
输入: 数据, 标记代价, 误分类代价矩阵;
输出: 查询的标签, 分类器, 以及相应的预测值;
优化目标: 总代价;
假设总共有 800 个样本, 如果全让专家 (主治医生) 来打标签, 就要花 800×100=80,000 元. 正确的做法是让专家给某些重要样本打标签, 建立一个好的分类器, 冒着一定的误分类的风险, 对其它样本打标签.

测试代价敏感的特征选择问题
输入: 数据, 标签, 各特征的测试代价;
输出: 特征子集;
优化目标: 最小化特征子集的测试代价之和.
约束条件: 特征子集与特征全集有相同的信息.
单位需要到组织 200 名 45 - 55 周岁的职工到医院进行体检, 确定检测的项目 (体检套餐) 就是一个测试代价敏感的特征选择问题.

3.3 解决数据不平衡问题是伪代价敏感学习

首先要明确两点:

  • 代价作为基础数据, 都应该事先给出, 要么专家给出, 要么制度给出. 它们必须是输入, 而绝不会是输出 (被机器学习出来). 这是常识;
  • 代价敏感学习的优化目标必须由代价定义, 而不应该是准确率之类.

一种常见的、错误的代价敏感学习概念如下: 由于数据中正负样本不平衡 (如1:99), 导致学习器偏向负样本. 为此, 将正例数量扩充至99 倍, 这样比例就变成 1:1, 可以愉快地进行学习了.

考虑两种情况:

  • 正例表示有病 (如前段时间的新冠), 负例表示没病, 正例数远远少于负例数. 增加正例的比例, 分类器就会把更多的测试样本判断为正. 这样看起来好像是有道理的: 将大量负例隔离, 只为防止正例被漏掉在外传播;
  • 正例数远远大于负例数. 这时候平衡正负例数量没有任何意义, 让所有人在家休息吃药不好吗?
    即使是第一种情况, 强行将比例变成1:1 也是不对的. 如果将c(FN):c(FP)=50, 即将正样本漏掉的代价很大, 这样才有利于把影响巨大的正样本找出来.

数据不平衡在现实很常见.
在极限多标签学习中, 正标签所占比例可以小到 0.1% 以下, 这时可以采用如下几种方式:

  • 使用F1等评价指标;
  • 使用基于序的评价指标.

反正不可以在没有代价数据的时候谈论代价敏感学习, 更不可以从数据中“学习”出各种代价设置. 再强调一遍: 作为“设置”, 它只可以是输入, 不可以是输出!

4 多标签学习

既感冒又肠炎, 真是一个悲伤的故事.

4.1 基本概念

多标签学习从标签个数上来扩展数据模型, 进一步还有标签分布学习.
将训练数据的标签表示为 Y \mathbf{Y} Y.

  • 二分类问题: Y ∈ − 1 , + 1 n \mathbf{Y}∈{−1,+1}^n Y1,+1n或者 Y ∈ 0 , 1 n \mathbf{Y}∈{0,1}^n Y0,1n.
  • 多分类问题: Y ∈ 1 , 2 , … , k n \mathbf{Y}∈{1,2,…,k}^n Y1,2,,kn, 其中 k k k 为类别数.
  • 多标签学习问题: Y ∈ 0 , 1 n × l \mathbf{Y}∈{0,1}^{n×l} Y0,1n×l, 其中 l l l为标签数. 这时 Y \mathbf{Y} Y 是一个布尔矩阵. 假设第 3 个标签表示猫, 则它为 1 的时候, 说明图片里有猫, 否则没有. 当 l < 100 l<100 l<100 时, 称为多标签学习问题; 但 l ≥ 100 l≥100 l100 时 (这个尺度我也不好把握), 可以称为极限多标签学习问题.
  • 标签分布学习问题: Y ∈ [ 0 , 1 ] n × l \mathbf{Y}∈[0,1]^{n×l} Y[0,1]n×l. 这时 Y \mathbf{Y} Y 是一个小数矩阵 (每个数表示概率, 或者模糊数学中的隶属度).

这几个概念都是从标签的角度来定义的.

4.2 线性方案

数据矩阵 X ∈ R n × m \mathbf{X} \in \mathbb{R}^{n \times m} XRn×m,标签矩阵 Y ∈ { 0 , 1 } n × l \mathbf{Y} \in \{0, 1\}^{n \times l} Y{0,1}n×l, 则可以学习权重矩阵 W ∈ R m × l \mathbf{W} \in \mathbb{R}^{m \times l} WRm×l, 使得
X W ≈ Y . \mathbf{X}\mathbf{W} \approx \mathbf{Y}. XWY.
这种方案中, W \mathbf{W} W的第 i i i 列对应于第 i i i 个标签, 无法利用标签相关性.

4.3 主要应对的问题

标签相关性. 例如, 从训练数据看, 有猫和狗的时候, 多半也有老鼠. 根据这种规律就可以把一些图片中不明显的老鼠找出来. 如何有效利用标签相关性, 是多标签学习的核心问题.
标签稀疏性. 共有 100 种可能的动物, 但每张图片里一般只出现 1–5 种, 或者某些动物仅在少于 10 张图片里出现. 在极限多标签中, 标签稀疏性可能低于1%.
数据稀疏性. 数据的多个属性值为空, 或者无效. 在极限多标签中很严重.

5 多示例学习

我知道某堆蘑菇里有些有毒, 但不清楚是哪几个.

5.1 基本概念

多示例学习按照“包-样本”的方式组织数据, 并在包的级别上给标签.
与多标签学习类似, 多示例学习从数据的角度进行概念的扩展.
一个数据集由若干包 (bag) 组成, 每个包有若干示例 (即样本、对象, sample). 如果某个包中含有至少一个正样本, 则它为正包, 否则为负包.
说明:

  • 由于标签打给包的, 最终可能也不知道具体的样本是正是负.
  • 在进行预测的时候, 也仅给包打标签.
  • 如果每个包仅有一个示例, 则退化为经典的机器学习.

5.2 常见方案

包映射. 将一个包映射为一个对象.
新的距离计算方式. 两个包的距离可以定义为:

  • 最近点对的距离;
  • 最远点对的距离;
  • 包重心之间的距离.

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

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

相关文章

15 款最佳建筑渲染软件,适用于 Windows、macOS,免费和付费版本

3D 建模和渲染在建筑行业的各种项目的推广和营销中发挥着非常重要的作用。建筑公司使用 3D 建模和渲染、3D 建筑动画和演练来展示他们的设计。房地产效果图帮助代理商让客户清楚地了解建筑设计、纹理、灯光效果和环境情况。这是非常有价值的&#xff0c;并且在销售设计时提供了…

【Java可执行程序命令】学习路线攻略,史诗级别全汇总 ~

Java可执行程序命令学习路线攻略 &#x1f4d7;文章指路Java可执行命令1、编译工具 javac2、程序启动工具 java3、API文档生成 javadoc4、反编译工具 javap5、打包部署工具 jar6、调试工具 jdb7、C头文件创建 javah8、JWS应用程序启动 javaws9、安装包创建 javapackager10、JAR…

Pytorch基于VGG cosine similarity实现简单的以图搜图(图像检索)

代码如下&#xff1a; from PIL import Image from torchvision import transforms import os import torch import torchvision import torch.nn.functional as Fclass VGGSim(torch.nn.Module):def __init__(self):super(VGGSim, self).__init__()blocks []blocks.append(t…

怎样做接口测试:从入门到精通的指南

怎样做接口测试&#xff1a;从入门到精通的指南 为什么接口测试如此重要&#xff1f; 接口测试在软件开发过程中扮演着关键的角色。它确保不同系统、组件或服务之间的无缝集成和通信。 接口测试的基本概念 接口测试是一种验证软件系统组件之间相互连接的过程。它主要关注数据…

盘点HTTP爬虫ip使用中的误区

嗨&#xff01;网络冒险家们&#xff0c;你们是否曾经尝试使用HTTP爬虫ip&#xff0c;并遇到了一些问题&#xff1f;别担心&#xff01;今天&#xff0c;我将与你们分享使用HTTP爬虫ip过程中的一些常见误区&#xff0c;帮助你们更好地理解和应用爬虫ip。让我们一起来揭开这些误…

正确的 Java 异常处理

我们来谈谈痛点吧。由于我的职责&#xff0c;我必须使用许多不同的服务&#xff08;进行编辑、进行代码审查......&#xff09;&#xff1b;不同的团队通常会编写所有这些服务&#xff0c;每当涉及到处理错误并从服务转发错误时&#xff0c;有时我的眼睛就会开始流泪。让我尝试…

elasticsearch-head可视化安装

一、前言 elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件&#xff0c;包括数据可视化、执行增删改查操作等。 elasticsearch是通过API方式进行管理的&#xff0c;因此也可以使用postman等工具操作elasticsearch。 二、安装 lasticsearch-head插件是使用Jav…

供应链云仓系统的源码解析

1. 什么是供应链云仓系统 供应链云仓系统是一种基于云计算和大数据技术的物流管理系统&#xff0c;旨在提高供应链的效率和运作能力。该系统通过集成各环节的物流信息&#xff0c;实现实时数据共享和流程连接&#xff0c;从而优化物流运营、提升客户满意度。 2. 源码解析&#…

机器学习深度学习——常见循环神经网络结构(RNN、LSTM、GRU)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——RNN的从零开始实现与简洁实现 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章…

SD-MTSP:杨氏双缝实验优化算法YDSE求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、杨氏双缝实验优化算法YDSE 杨氏双缝实验优化算法&#xff08;Young’s double-slit experiment optimizer&#xff0c;YDSE&#xff09;由Mohamed Abdel-Basset等人于2023年提出。 参考文献&#xff1a; [1]Mohamed Abdel-Basset, Doaa El-Shahat, Mohammed Jameel, Moha…

阿里云轻量应用服务器_2核2G3M_108元/年_性能测评

阿里云轻量应用服务器2核2G3M带宽108元一年&#xff0c;系统盘为50GB高效云盘&#xff1b;轻量服务器2核4G4M带宽&#xff0c;60GB高效云盘297.98元12个月。目前轻量应用服务器只有2核2G和2核4G有活动&#xff0c;阿里云百科分享阿里云轻量应用服务器入口&#xff1a; 目录 阿…

【Mybatis】调试查看执行的 SQL 语句

1. 问题场景&#xff1a; 记录日常开发过程中 Mybatis 调试 SQL 语句&#xff0c;想要查看Mybatis 中执行的 SQL语句&#xff0c;导致定位问题困难 2. 解决方式 双击shift找到mybatis源码中的 MappedStatement的getBoundSql()方法 public BoundSql getBoundSql(Object para…

贝锐蒲公英:快速搭建连锁门店监控体系,赋能企业高效管理

随着国民生活水平的提高和零售场景的变革&#xff0c;消费者对于餐饮类目的消费支出不断增加&#xff0c;线下社区生鲜商超作为下沉市场最主要的消费场景之一&#xff0c;蕴藏着巨大价值机会。 对于线下连锁生鲜超市而言&#xff0c;连锁门店多、员工多&#xff0c;门店管理时会…

大学生课设实训|基于springboot的在线拍卖系统

目录 项目描述 主要技术栈 功能效果 数据库设计 开发顺序 业务功能 大家好&#xff01;我是龍弟-idea&#xff01;需要源码资料信息可私聊我【HWL__666666】&#xff01; 项目描述 本系统是一个网上商品竞拍系统&#xff0c;为拍卖者和竞买者提供一个在线交流平台。本项…

【一口气 Ping 1000 个 IP 地址,会发生什么事情?】

ping命令是我们检查网络中最常用的命令&#xff0c;作为网络人员&#xff0c;基本上每天都会用到&#xff0c;可以很好地帮助我们分析和判定网络故障&#xff0c;对吧&#xff1f; 一般来说&#xff0c;网工们用 ping查看网络情况&#xff0c;主要是检查两个指标&#xff1a; …

css3 实现文字横幅无缝滚动

css3 实现文字横幅无缝滚动 使用 css3 关键帧 keyframes 和 animation 属性实现文字横幅无缝滚动。 <template><div class"skiHallBanner"><div class"skiHallBanner-text"><span>{{ text }}</span></div></div>…

嵌入式开发:高薪与广阔前景

嵌入式开发是高薪且前景广阔的领域。随着物联网和智能化的快速发展&#xff0c;嵌入式开发人才需求不断增加&#xff0c;市场供应相对不足&#xff0c;导致竞争激烈&#xff0c;推动了薪资水平的提升。 嵌入式开发的复杂性和技术要求使得企业为了吸引优秀人才&#xff0c;普遍…

并发——ThreadPoolExecutor 使用示例

文章目录 1 示例代码:RunnableThreadPoolExecutor2 线程池原理分析3 几个常见的对比3.1 Runnable vs Callable3.2 execute() vs submit()3.3 shutdown()VSshutdownNow()3.2 isTerminated() VS isShutdown() 4 加餐:CallableThreadPoolExecutor示例代码 我们上面讲解了 Executor…

数据结构——时间复杂度和空间复杂度

1.算法效率 2.时间复杂度 3.空间复杂度 4. 常见时间复杂度以及复杂度oj练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢&#xff1f;比如对于以下斐波那契数的计算 long long Fib(int N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2); }我们看到…

如何提高商城系统的稳定性?

电商行业的飞速发展&#xff0c;越来越多的企业开始关注电商建设。其中&#xff0c;商城系统的稳定性是企业最为关心的问题之一。 商城系统的稳定性不仅影响用户体验&#xff0c;还关系到企业的声誉和利益。因此&#xff0c;如何提高商城系统的稳定性是每一个电商企业必须要面对…