一、绪论
1.1 什么是机器学习?
研究从数据中学习出其潜在规律的算法的一门学科
范围:人工智能 >机器学习>深度学习(指神经网络的那一类学习算法)
1.2. 为什么要学习机器学习?
- 从事ML理论的研究
- 从事ML系统的开发
- 将ML中的算法迁移应用到自己的研究领域
- 从事AI应用方向的研究:e.g., NLP, Computer vision, recommended algorithm etc
1.3. 怎么学习机器学习
- 理论研究: 南瓜书+周志华《机器学习理论导引》
- ML系统的开发:http://ucbrise.github.io/cs294-ai-sys-sp22、http://openmlsys.github.io
- ML应用:基础数据(张宇考研数学->高数、线代、陈希孺《概率论与数理统计》) + 高阶数据 (南瓜书);学习程度:能看懂每一步推导+会调scikit-learn library即可
2 基本术语
- 算法:从数据中学得"模型“的具体方法,比如:线性回归,决策树etc。算法产生的结果就是模型,通常是具体的函数或者可抽象的看作为函数。(无需严格区分这两个概念)
- 示例 instance/ 样本 sample:关于一个事件或对象,用向量描述,e.g., x = (色泽 = 青绿;根蒂 = 蜷缩;敲声 = 清脆)
- 属性attribute/特征feature: 反应事件或对象在某方面的表现或性质的item, e.g., 色泽
- 属性值 attribute value: 属性上的取值, e.g., 青绿
- 特征向量: 因为空间中的每一个点对应坐标向量,因此一个示例也叫“特征向量”(feature vector)
note:向量中的元素用分号‘;’分隔时表示此向量为列向量, 用逗号‘,’隔开时表示行向量 - 标记:机器学习的本质是在学习样本在某个方面的表现是否存在潜在规律,称该方面的信息为“标记",比如一个西瓜样本: X= (色泽 = 青绿;根蒂 = 蜷缩;敲声 = 清脆),y= 好瓜
note: 标记通常也看作是样本的一部分,因此一个完整的样本通常表示为(X,y) - 属性空间 attribution space/ 样本空间 sample space/ 输入空间: 属性长成的空间,e.g., 色泽,根蒂,敲声组成的三维空间
- 标记空间/输出空间:标记所在的空间
- 数据集 data set:所有记录的合集 (比如一批西瓜的数据),通常用集合表示,一般一份数据集中的每个样本中含有相同个数的特征,其中x(i,j)表示样本xi在第j个属性上的取值
- 特征工程:将属性值数值化;增加一些特征etc
- 标记取值为离散型的时候,此类任务认为为”分类“ classification,当分类的类别只有两个时,为”二分类“,类别>=2个,为”多分类“。标记取值为连续型的时候,此类任务认为为”回归“ regression
- ML分类:模型训练有用到标记信息,称为"监督学习"supervised learning; 没有用到,称为“无监督学习” unsupervised learning
- 用量训练模型的数据叫“训练数据”,每个样本称为“训练样本”,训练一样笨组成的集合称为“训练集”。
- hypothesis:用模型找到的关于数据的某种潜在规律
- ground-truth: 潜在的规律自身
- 测试;测试样本
- 泛化generalization:习得模型适用于新样本的能力
- 分布:就是概率论中概率分布
3. 假设空间
- 归纳induction:特殊-》一般的泛化,从样例学习
- 演绎deduction:从一般-》特殊的泛化,从基础原理推导
- 假设空间:所有假设组成的空间
- 版本空间 version space:能够拟合训练集的模型构成的集合
note:版本空间是假设空间的子集
4. 归纳偏好
不同的ML算法有不同的偏好
- 奥卡姆剃刀原理:“若有多个假设与观察一致,选最简单的那个” 但是"简单"很难判断
- 最常用的方法是基于模型在测试集上的表现来评判模型之间的优劣
5. 数据决定模型效果的上限,而算法是让模型无限逼近上线
数据量越大,模型效果越好;对特征数值化越合理,特征收集越全越细致,模型效果越好
数据质量的重要性>算法
二、模型评估与选择
1. 经验误差与过拟合
- 错误率 error code:E=a/m, m为样本个数,a为错误样本个数
- 精度accuracy:1- error rate
- 误差 error:学习器的实际预测输出与样本的真实输出的差值
- 训练误差training error/经验误差empirical error:学习器在训练集上的误差
- 泛化误差generalization error:在新样本上的误差
- 过拟合overfitting:将训练样本自身的有一些特点都当做潜在具有的一般特性导致泛化性能下降。是ML面临的关键障碍
- 欠拟合underfitting:由于学习能力低下导致,相对好解决,比如增加训练轮数等
2. 评估方法
2.1 留出法 hold-out
- 将数据集D划分为两个互斥的集合,一个是训练集S,另一个是测试集T
- 训练和测试集的划分要尽可能保持数据分布的一致,避免因数据划分过程引入额外的偏差而对最终结果产生影响
- 保留类别比例的采样方式成为“分层采样” stratified sampling。e.g., there are 350 positive, 350 negative in D, so it would be better that 150 positive and 150 negative in T
- 一般要采用若干次随机划分、重复实验后取平均值组委留出法的评估结果
- 常见做法是将2/3 ~ 4/5 的样本用于训练
- 一般而言,测试集至少包含30个样例
2.2 交叉验证 cross-validation
- 将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性。每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集 -》最终返回的是k个测试结果的均值。所以通常把交叉验证法称为“k折交叉验证" k-fold cross validation, k常见取值为10
- k折交叉验法也经常要通过随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值,例如”10次10折交叉验证“
- 留一法Leave-One-Out: D中包含m个样本,k=m。绝对大数情况下,留一法的评估结果往往被认为较为准确,但是在数据集比较大的时候,训练m个模型的cost很高
2.3 自助法 bootstrapping
- 给定包含m个样本的数据集D,对它进行采样产生数据集D':每次随机从D中挑选一个样本,将其copy放入D',然后在将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能给被采到;这个过程重复m次,我们就得到了包含m个样本的数据集D'
- 样本在m次采样中始终不被采集到的概率,取极限后约为0.368
- 将D'用作训练集,D\D'用作测试集 (“\”表示集合减法),这样实际评估的模型与期望评估的模型都使用了m个训练样本,仍有数据总量约1/3的、没在训练集中出现的样本用于测试。这个测试结果称为"包外估计” out-of-bag estimate
- 在数据集较小、难以有效划分训练/测试集时很有用。在初始数据足够,前两个方式更常用
2.4 调参parameter tuning与最终模型
把学得模型在实际使用中遇到的数据称为测试数据,为了区分,模型评估与选择中用于评估测试的数据集称为“验证集”validation set。e.g., 在研究对比不同算法的泛化性能时,用测试集上的判别效果来估计模型在实际使用时 泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能进行模型选择和调参
3. 性能度量 performance measure
3.1 性能度量指标一: 错误率(分类错误的样本数占样本总数的比例)与精度(分类正确的样本数占样本总数的比例)
3.2 查准率precision、查全率recall与F1
- Precision:被学习器预测为正例的样例中有多大比例为真正例
- recall: 所有真正例true positive中有多大比例被学习器预测为正例
- Break-Event Point: precision = recall
- F1 度量:基于precision和recall的调和平均
- Fβ是加权平均,其中β>0度量了recall对precision的相对重要性:β>1时recall有更大影响,β<1时precision有更大影响了,β=1时退化为标准的F1。
3.3 ROC与AUC
- 根据概率预测结果,将测试样本排序,"最可能“是正例排最前面,"最不可能“是正例排最后面,更重视precision,截断点cut point 靠前;更重视recall,截断点靠后
- ROC曲线:y-axis: True positive rate, x-axis: false positive rate
- 若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可认为后者性能更优。若两个学习器的ROC曲线出现交叉,则是比较AUC
- AUC是对ROC曲线下各部分的面积求和得到的
学习资料:
西瓜书:周志华老师的《机器学习》
南瓜书:《机器学习公式详解》第2版