勘探开发人工智能技术:机器学习(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 Y∈−1,+1n或者 Y ∈ 0 , 1 n \mathbf{Y}∈{0,1}^n Y∈0,1n.
  • 多分类问题: Y ∈ 1 , 2 , ... , k n \mathbf{Y}∈{1,2,...,k}^n Y∈1,2,...,kn, 其中 k k k 为类别数.
  • 多标签学习问题: Y ∈ 0 , 1 n × l \mathbf{Y}∈{0,1}^{n×l} Y∈0,1n×l, 其中 l l l为标签数. 这时 Y \mathbf{Y} Y 是一个布尔矩阵. 假设第 3 个标签表示猫, 则它为 1 的时候, 说明图片里有猫, 否则没有. 当 l < 100 l<100 l<100 时, 称为多标签学习问题; 但 l ≥ 100 l≥100 l≥100 时 (这个尺度我也不好把握), 可以称为极限多标签学习问题.
  • 标签分布学习问题: 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} X∈Rn×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} W∈Rm×l, 使得
X W ≈ Y . \mathbf{X}\mathbf{W} \approx \mathbf{Y}. XW≈Y.

这种方案中, W \mathbf{W} W的第 i i i 列对应于第 i i i 个标签, 无法利用标签相关性.

4.3 主要应对的问题

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

5 多示例学习

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

5.1 基本概念

多示例学习按照"包-样本 "的方式组织数据, 并在包的级别上给标签 .

与多标签学习类似, 多示例学习从数据的角度进行概念的扩展 .

一个数据集由若干包 (bag) 组成, 每个包有若干示例 (即样本、对象, sample). 如果某个包中含有至少一个正样本, 则它为正包 , 否则为负包 .

说明:

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

5.2 常见方案

包映射. 将一个包映射为一个对象.

新的距离计算方式. 两个包的距离可以定义为:

  • 最近点对的距离;
  • 最远点对的距离;
  • 包重心之间的距离.
相关推荐
浊酒南街17 分钟前
决策树(理论知识1)
算法·决策树·机器学习
B站计算机毕业设计超人25 分钟前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条29 分钟前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客33 分钟前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon36 分钟前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归
游客52039 分钟前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
古希腊掌管学习的神40 分钟前
[机器学习]sklearn入门指南(2)
人工智能·机器学习·sklearn
凡人的AI工具箱1 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
IT猿手1 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法
咸鱼桨2 小时前
《庐山派从入门到...》PWM板载蜂鸣器
人工智能·windows·python·k230·庐山派