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

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

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

相关文章

【AndroidStudio】新版本Androidstudio logcat过滤设置

新版本的过滤没有以前简洁&#xff0c;但是功能性更全了&#xff1b;老版本的只能过滤一个包名&#xff0c;或一个TAG&#xff0c;或关键字&#xff0c;新版本按需过滤即可&#xff0c;下面说一下过滤的具体使用 1.按包名过滤&#xff1a; //输入package:&#xff08;输入一个…

如何将Linux上的cpolar内网穿透设置成 - > 开机自启动

如何将Linux上的cpolar内网穿透设置成 - > 开机自启动 文章目录 如何将Linux上的cpolar内网穿透设置成 - > 开机自启动前言一、进入命令行模式二、输入token码三、输入内网穿透命令 前言 我们将cpolar安装到了Ubuntu系统上&#xff0c;并通过web-UI界面对cpolar的功能有…

【福建事业单位-推理判断】02图形推理(数量-空间重构)

【福建事业单位-推理判断】02图形推理&#xff08;数量-空间重构&#xff09; 一、数量规律1.1点&#xff08;交点、切点&#xff09;点的细化考法总结 1.2线条&#xff08;线条的数量&#xff09;线的细化考点一笔画&#xff08;重点&#xff09;一笔画的判定 总结 1.3 面面的…

设计方法编写测试用例---思路分析

测一四年我在YX公司带测试团队&#xff0c;一个用例评审的会议上&#xff0c;一不小心超常发挥&#xff0c;结果卡在了一个用例设计方法上&#xff0c;印象非常深刻&#xff0c;当时的业务场景是支付方式的选择和优惠方案。 在后来的工作中&#xff0c;也曾几次遇到需要选择合…

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

0 提纲 4.1 logistic回归 4.2 支持向量机(SVM) 4.3 PCA 1 logistic回归 用超平面分割正负样本, 考虑所有样本导致的损失. 1.1 线性分类器 logistic 回归是使用超平面将空间分开, 一边是正样本, 另一边是负样本. 因此, 它是一个线性分类器. 如图所示, 若干样本由两个特征描…

matplotlib 笔记 plt.grid

用于添加网格线 主要参数 visible 布尔值&#xff0c;True表示画网格 which表示要显示的刻度线类型&#xff0c;可以是 major&#xff08;主刻度&#xff09;或 minor&#xff08;次刻度&#xff09;&#xff0c;或者同时显示&#xff08;both&#xff09;alpha 透明度 …

【Git】Git切换地址

如何切换git代码地址&#xff1f; 1、查看当前远程 url git remote -v执行命令后&#xff0c;可以看见当前有2个URL。 远程 URL 在一般情况下有两个&#xff0c;分别是 fetch 和 push。 fetch URL 是用于从远程仓库获取最新版本的数据。当您运行 git fetch 命令时&#xf…

xxx酒业有限责任公司突发环境事件应急预案WORD

导读&#xff1a;原文《xxx酒业有限责任公司突发环境事件应急预案word》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 目 录 1 总则 1.1 编制目的 1.2 编制…

Spring Boot集成EasyPoi实现导入导出操作

文章目录 Spring Boot集成EasyPoi实现导入导出操作0 简要说明1 环境搭建1.1 项目目录1.2 依赖管理2.3 关于swagger处理2.4 关于切面处理耗时1 自定义注解2 定义切面类3 如何使用 2.5 核心导入操作2.6 核心导出操作 2 最佳实线2.1 导入操作1 实体类说明2 业务层3 效果3 控制层 2…

使用乐观锁解决超卖问题

目录 什么是超卖&#xff1f; 乐观锁和悲观锁的定义 悲观锁&#xff1a; 乐观锁&#xff1a; 乐观锁的实现方式 1.版本号 2.CAS法 什么是超卖&#xff1f; 举个例子&#xff1a;订单系统中&#xff0c;用户在执行下单操作时&#xff0c;可能同一时间有无数个用户同时下单&…

Qt应用开发(基础篇)——框架类 QFrame

一、前言 QFrame继承于QWidget&#xff0c;被QLCDNumber、QToolBox、QLabel、QListView等部件继承&#xff0c;是一个拥有矩形框架的基类。 QFrame可以直接创建成一个没有内容的的矩形框架&#xff0c;框架的样式由边框厚度(lineWidth)、框架形状(QFrame::Shape)和阴影样式(QFr…

linux自定义网络访问规则

1.更改防火墙默认区域为trusted firewall-cmd --set-default-zonetrusted 2.新建一个zone&#xff0c;将想要访问本机80端口的ip&#xff0c;如&#xff1a;192.168.3.99 &#xff0c;添加的这个zone中&#xff0c;同时在这个zone中放行80端口。 firewall-cmd --permanent --ne…