机器学习

一、绪 论

启发式小故事:
  • AlphaGo
    理论 算法 数据 建模 对策
    学习16万局业余棋手比赛
  • AlphaGo Zero
    3天后: 100:0 超越AlphaGo Lee
    21天后:达到AlphaGo Master
    40天后:超过所有之前的版本

Thoughts about AlphaGo Zero:
无师自通:没有任何人类的经验
自问:人类的经验是有害的?
人类因循着先人的足迹,却可能错过了更优化的路径。
但人类的经验并非一无是处:谁愿意让一个零经验的机器人做手术?
最终的目标 vs 人类的伦理

预备知识:线性代数,概率与统计,随机过程,算法设计与分析

定义:
机器学习是从人工智能中产生的一个重要分支。
与人类相似的方式:利用经验(统计学习)从数据中提取信息(推断)。

机器学习—为输入与输出的关系建立模型
image

问题分类:

  1. 分类问题:又分为二分类,多分类
    2 回归问题:在连续的输入与输出变量之间建立映射关系

机器学习的基本模式
image

  1. Supervised Learning 监督学习:训练集全有标记
  2. Semi-supervised Learning 半监督学习:训练集中的部分示例没有被标记
  3. Unsupervised Learning 无监督学习:训练集不含任何标记
  4. Reinforcement Learning 强化学习:在与环境的交互中学习,而不是向“导师”学习
    image
    Alpha Go is supervised learning + reinforcement learning.

基本术语

模型(model): 假设 (结构+参数)
学习(learning):缩小模型与真相的差距
推断(inference): 把模型用在新数据上做预测

数据集; 训练集, 测试集

假设空间
假设空间是指机器学习算法所有可能的假设组成的集合。

image
假设空间的大小:\(n1 * n2 * n3 + 1\)

学习过程:在所有假设(hypothesis)组成的空间中进行搜索的过程
目标: 找到与训练集“匹配”(fit)的假设
(即能将训练集中的样例判断正确的假设)

版本空间 (version space): 与训练集一致的假设集合
image

归纳偏好 (inductive bias)
归纳偏好:机器学习算法在学习过程中对某种类型假设的偏好,任何一个有效的机器学习算法必有其偏好。
image

一般原则:奥卡姆剃刀(Ocam’s razor),即如果多个理论都能解释同一个现象,那么我们应该选择最简单的那个。即一般情况下选A。

但是
学习算法的归纳偏好是否与问题本身匹配,还是需要看数据本身的特征。
image

大多数时候直接决定了算法能否取得好的性能!

NFL定理:一个算法 A若在某些问题上比另一个算法B 好,必存在另一些问题, B比 A好。

总误差与学习算法无关!所有算法一样好!

NFL定理的重要前提:所有“问题”出现的机会相同、或所有问题同等重要(即f的分布)
实际情形并非如此:我们通常只关注自己正在试图解决的问题
所以还是要看数据,再选用不同的算法。

二、模型评估与选择

泛化误差 vs. 经验误差
什么模型好?譬如在新样本上预测错误率低、精度高。。。
泛化误差:在“未来”样本上的误差(严格说是在整体样本上的误差)
训练误差:在训练集上的误差

泛化误差越小越好!
训练误差是否越小越好?

NO! 因为会出现“过拟合” (overfitting)

过拟合 (overfitting) vs. 欠拟合 (underfitting)
image

模型选择 (model selection)

三个关键问题:
如何获得测试结果? 评估方法
如何评估性能优劣? 性能度量
如何判断实质差别? 比较检验

评估方法

关键:怎么获得“测试集” (test set) ?
测试集应该与训练集“互斥”
常见方法:
留出法 (hold-out)
交叉验证法 (cross validation)

留出法
image

注意:

  • 保持数据分布一致性 (例如: 分层采样)
  • 多次重复划分 (例如: 100次随机划分)
  • 测试集不能太大、不能太小 (例如:小型数据集1/5~1/3)

k-折交叉验证法
若 k = m,则得到“留一法” (leave-one-out, LOO)

10-折交叉验证法示意图如下:
image

算法步骤:

  1. 将数据集随机分成10个大小相等的子集(称为“折”)。
  2. 将其中一个折作为验证集,其余9个折作为训练集。
  3. 使用训练集训练模型,并在验证集上评估模型性能。
  4. 重复步骤2和3,每次使用不同的折作为验证集。
  5. 计算10次评估结果的平均值,作为模型的最终性能指标。

“调参”与最终模型
算法的参数:一般由人工设定,亦称“超参数”
模型的参数:一般由学习确定

调参过程相似于 先产生若干模型,然后基于某种评估
方法进行选择

注意区别:训练集 vs. 验证集 (validation set) vs. 测试集:
算法参数选定后,要用“训练集+验证集”重新训练最终模型,然后用测试集验证最终模型

tips:参数调得好不好对性能往往对最终性能有关键影响

性能度量

性能度量(performance measure) 是衡量模型泛化能力的评价标准,反映了任务需求
使用不同的性能度量往往会导致不同的评判结果

tips:什么样的模型是“好”的,不仅取决于算法和数据,还取决于任务需求

回归(regression) 任务常用均方误差:
image

错误率 vs. 精度
image
真正例率(TPR)、假正例率(FPR)

  • 假正例率 (FPR),即模型错误地将负样本预测为正样本的概率。:预测错误实际正确的/实际是错误的

  • 真正例率 (TPR)/召回率,即模型正确地将正样本预测为正样本的概率:预测正确实际也正确/实际是正确的

查准率(P) vs. 查全率(R)
image
查准率(P):在所有的数据中,算法判断的有多准:预测正确实际也正确/所有预测是正确的

查全率(R):算法是不是将所有的正例都查询到了:预测正确实际也正确/实际是正确的
image

PR图, BEP
根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本作为正例进行预测
image

F1
比 BEP 更常用的 F1 度量
image
若对查准率/查全率有不同偏好:
image

宏xx vs. 微xx
若能得到多个混淆矩阵:
(例如多次训练/测试的结果,多分类的两两混淆矩阵)

宏(macro-) 查准率、查全率、F1
微(micro-) 查准率、查全率、F1
image

假正例率 (FPR),真正例率 (TPR),ROC, AUC
image

  • 真正例率 (TPR)/召回率,即模型正确地将正样本预测为正样本的概率:预测正确实际也正确/实际是正确的

  • 假正例率 (FPR),即模型错误地将负样本预测为正样本的概率。:预测错误实际正确的/实际是错误的

ROC (Receiver Operating Characteristic) Curve:ROC 曲线是一个图形化的工具,它展示了模型在不同分类阈值下的性能。
横坐标: 假正例率 (FPR),纵坐标: 真正例率 (TPR)。

AUC: Area Under the ROC Curv:AUC 是 ROC 曲线下的面积。AUC 的值介于 0 和 1 之间,它可以用来衡量模型的整体性能。

  • ROC 曲线和 AUC(Area Under the Curve)作为指标,不受正负类比例的影响。无论数据集的正负样本比例如何,ROC 曲线的形状和 AUC 值不会因为类别的不平衡而受到显著影响。
  • 这使得 ROC 曲线特别适用于类别不平衡的问题(即正类样本数量远少于负类样本的情况),因为它不会因为负类样本的数量多而使评价结果产生偏差。

非均等代价
犯不同的错误往往会造成不同的损失
此时需考虑“非均等代价”(unequal cost)
image

代价敏感 (cost-sensitive) 错误率:
image

比较检验

在某种度量下取得评估结果后,是否可以直接比较以评判优劣?
NO !
因为:

  • 测试性能不等于泛化性能
  • 测试性能随着测试集的变化而变化
  • 很多机器学习算法本身有一定的随机性

机器学习 = “概率近似正确”

常用方法
统计假设检验 (hypothesis test) 为学习器性能比较提供了重要依据
(统计显著性)
两学习器比较

  • 交叉验证 t 检验 (基于成对 t 检验)
    k 折交叉验证; 5x2交叉验证

  • McNemar 检验 (基于列联表,卡方检验)

posted @ 2024-10-09 10:43  kingwzun  阅读(8)  评论(0编辑  收藏  举报