【学习笔记】Day 20

一、进度概述

1、机器学习常识12-18,以及相关代码复现

二、详情

12、SVM(support vector machines,支持向量机)

实际上,支持向量机 是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 "最好地" 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。
关于例子与基本方案的说明,这篇文章所提及的例题有助于理解:机器学习常识 12: SVM_svm数据线性分类图-CSDN博客
需要注意的是,对于上一个链接中的基本方案,表明了 SVM 的核心思想就是最大间隔化。
关于核函数,其使用动机可能如下:

映射可以看作是一种拉伸,把低维数据拉伸到了高维。虽然现在我们到了高维空间号称线性可分,但是有几个困难:

  • 不知道什么样的映射函数是完美的。
  • 难以在各种映射函数中找到一个合适的。
  • 高维空间计算量比较大。这样就会产生维灾难,计算内积是不现实的。

幸运的是,在计算中发现,我们需要的只是两个向量在新的映射空间中的内积结果,而映射函数到底是怎么样的其实并不需要知道。于是这样就引入了核函数的概念。
核函数事先在低维上计算,而将实质上的分类效果表现在了高维上,也就是

  • 包含映射,内积,相似度的逻辑。
  • 消除掉把低维向量往高维映射的过程。
  • 避免了直接在高维空间内的复杂计算。

即核函数除了能够完成特征映射,而且还能把特征映射之后的内积结果直接返回。即把高维空间得内积运算转化为低维空间的核函数计算。

核函数相当于一种映射,可以将原本不可线性分割的数据转化到另一个维度,实现线性分割(如典型的圆分布)。上文链接中提到的那个不忍直视的例子,虽然很不忍直视,但确实挺生动形象的。
对于软间隔,可以理解为针对极端数据的一种处理方法,如下文中那个跑到红点中去的蓝点,具体介绍如下:SVM学习笔记(二)------软间隔(soft-margin)_soft-margin linear svm-CSDN博客

关于代码实现,参考了以下文章中鸢尾花的实战:

机器学习之支持向量机(SVM)-CSDN博客

13、PCA(principal component analysis, 主成分分析)

这个在线性回归分析中有讲过,现回去复习复习,同时也给出几个讲的挺好的文章链接。

降维算法之PCA:从原理到应用,8000多字,助你彻底理解!_pca降维-CSDN博客

PCA(主成分分析方法)-CSDN博客

其实 PCA 的数学基础十分厚实,但是在数据处理中一般只是用于预处理。

从数学角度来讲这是因为(1)主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。(2)方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

对于机器学习的角度,则是 PCA 是一个无监督模型,不一定适用于有监督数据。

这里关于特征选择和特征提取的例子中就能感受到一定程度上的缺陷。

特征选择 是指从已有的特征里面选择出一个子集. 例如: 身高、体重、性别、年龄、体温、血相等等, 如果要一个人是否患流感,身高、体重等不但没有作用, 反而还会让分类器效果变差. 回头想想 NN, 在计算距离时考虑一些不相关的特征, 会使得相似的样本变得不相似.

特征提取 则是指从已有特征中生成新的特征. 例如: 人们常说自己有多重, 然后表达想减肥的意愿. 但这种想法是错误的, 应该从身高和体重计算 BMI, 以此确定自己是否偏胖. 这里 "从计算 BMI", 就是一个特征提取的过程.

总的来说, 特征选择相对简单, 而特征提取有很大的相像空间. 后面将会介绍的神经网络, 其最本质的任务就是特征提取.

14、半监督学习

基本概念

(1)监督学习: 训练数据都有标签, 相应的任务为分类、回归等.

(2)无监督学习: 训练数据都没有标签, 相应的任务为聚类、特征提取 (如 PCA) 等.

(3)半监督学习: 部分训练数据没有标签, 相应任务与监督学习一致.

从三者的关系可以看出, 半监督学习是从监督学习与无监督学习自然推导出来的.

对于学习场景的理解,除了文中举得十分形象的例子外,以下链接中的讲解也十分不错。

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

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

关于学习场景的理论讲解:机器学习:监督学习、无监督学习、半监督学习、强化学习-CSDN博客

关于常见半监督学习模型的讲解:一文看遍半监督学习模型(Semi-Supervised Learning)_effective self-training for parsing-CSDN博客

15、主动学习

主动学习的提出,其关键是如何更低成本的获得更多高质量的标签。

机器学习主要研究计算机如何利用经验数据提高自身性能。在监督学习中,数据的质量和数量直接决定模型的性能高低,监督学习不仅要求数据全部是标记好的,并且需要大量的数据,然而人工标注大量数据需要耗费巨大的时间和精力,一个更合理的方案是挑选一部分数据进行标注,这就要提到机器学习中的主动学习。

实际上,不同数据样本对于学习模型的贡献度不一样,过多的低质量数据反而会降低模型的鲁棒性,如果我们能够选取一部分最有价值的数据进行标注,就有可能仅基于少量数据就能获得同样高效的模型。实现这一目标的关键在于,如何选择出最有价值的数据样本并去获取它们的标记信息。

主动学习地目的是通过标记少量的数据训练处表现较好的模型。其核心任务是制定选择样本的标准,从而选择尽可能少的样本进行标注来选出一个好的学习模型。

关于主动学习更细节上的讲解,可以参考这几篇文章:

超详细的主动学习Active Learning介绍【理论+代码】-CSDN博客

主动学习(Active Learning)概述及最新研究

从主动学习的提出我们可以发现,其核心问题在于 "哪些样本的标签更有价值?"

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

16、代价敏感学习

引入代价敏感学习,其意义在于使得模型与现实更加相符合。

代价是基础数据, 与应用有紧密联系.

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

对于代价敏感学习,需要注意的两点是:

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

同时也补充关于代价敏感错误率的相关知识:误分类代价与类不均衡数据-CSDN博客

这个例子在线性回归分析中着重讲过好几次,其实第一二类错误有着其在具体问题下的现实意义,在考虑实际中的预测时是需要考虑到这点的。

17、多标签学习

多标签在我们的生活中是十分常见的,最典型的包括影视作品的分类(比如科幻、动作等)。多标签学习所主要应对的问题有以下三种:

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

对于多标签学习理论上的学习,可以参考这三篇文章:

多标签学习之白话版_跨标签学习-CSDN博客

多标签学习之数学语言版_arg min∥y xw∥2 + λ∥w∥1, 1维向量-CSDN博客

论文笔记:多标签学习综述(A review on multi-label learning algorithms) - PilgrimHui - 博客园 (cnblogs.com)

对于常见的多标签学习模型,可以参考以下文章:

多标记学习(大大杂烩,有点乱)_多标签学习-CSDN博客

18、多示例学习

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

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

感性上理解有点像逆向的聚类算法,不知道对不对。

对于这个正包的理解,这篇文章给的两个例子还比较形象:多示例学习(Multiple Instance Learning)-CSDN博客

常见方案如下:

  • 包映射. 将一个包映射为一个对象.
  • 新的距离计算方式. 两个包的距离可以定义为:
    • 最近点对的距离;
    • 最远点对的距离;
    • 包重心之间的距离.

最后,这里再给出进一步了解多示例学习的一些参考:多示例学习 (multi-instance learning, MIL) 学习路线 (归类、重点文章列举、持续更新)_mil领域 llm-CSDN博客


后记

在完成今天的学习任务后,有一个挺大的感触是,机器学习其实是比较依赖统计学的。对于很多学习,从数学原理上的分析,个人认为这其实与线性回归分析中讲过的挺多概念重合了。统计学更着重于如何从数学上去实现,而机器学习则是着重于如何把这个人工的任务交给机器,从而更高效的获得更准确的信息。

还需要注意的一点是,实际上对每个概念的理解还是很有限的,很多东西由于能力的不足,还停留在表面(甚至连深一点的问题都提不出来,这是比较致命的),在后续需要补足相关训练来加深理解。

相关推荐
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__4 小时前
Web APIs学习 (操作DOM BOM)
学习
冷眼看人间恩怨4 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
数据的世界016 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐6 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO9 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A9 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒9 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash310 小时前
提升专业素养的实用指南
学习·职场和发展
Hejjon10 小时前
SpringBoot 整合 SQLite 数据库
笔记