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 常见方案
包映射. 将一个包映射为一个对象.
新的距离计算方式. 两个包的距离可以定义为:
- 最近点对的距离;
- 最远点对的距离;
- 包重心之间的距离.