本笔记中的图片均截取自课程PPT

机器学习概论

机器学习系统

通俗定义

任何通过数据训练的学习算法都属于机器学习

  • 线性回归(Linear Regression)
  • K-均值聚类(K-means)
  • 主成分分析(Principal Component Analysis-PCA)
  • 决策树(Decision Trees)和随机森林(Random Forest)
  • 支持向量机(Support Vector Machines)
  • 人工神经网络(Artificial Neural Networks)

学习系统

模型空间(模型层面)+ 数据(数据层面)→ 学习算法(学习层面)→ 学得模型(学习结果)

数据层面

数据类型或特点:

  • 静态 vs. 动态
  • 小数据 vs. 大数据
  • 同质 vs. 异质
  • 单态 vs. 多态
  • 小类数 vs. 大类数
  • 缺失 & 带噪数据
  • 高维数据 & 非数值数据
  • ……

模型层面

形式:线性 / 非线性

体系:浅层 / 深度 / 递归

学习层面

经典 vs. 现代 vs. 混合

优化目标函数,在很大的模型空间找到目标函数(SGD 等学习算法)

经典学习方法:机械学习 / 归纳学习 / 类比学习 / 解释学习 / 决策树&森林 / 贝叶斯分类器 / 聚类

现代学习方法:监督学习 / 弱监督学习 / 无监督学习 / 统计学习 / 集成学习 / 强化学习 / 深度学习

系统建模和模型选择

常规术语及标记

  • 输入:x, xi
  • 权重:W, wij
  • 输出:y, y(x, W)
  • 目标:t, tj
  • 误差:E

数据集与数据集划分

训练集,测试集,验证集(留出法,交叉验证)

建模有关要素

  • 模型 / 映射函数 f ( · ) 刻画(线性分类器?SVM?神经网络?)

  • 确定目标 / 损失函数(平方损失?交叉熵?凸与非凸?)并优化获得模型

  • 评测泛化性能(在未知样本上的预测能力):欠拟合/过拟合

评价指标

混淆矩阵(多分类,TP,FN,FP,TN:二分类),精度,错误率,查准率,查全率,F1度量

ROC 曲线

不平衡数据集

模型选择

正则化方法:约束选择空间

吉洪诺夫正则化

借助某个辅助非负泛函 / 模型实现解的稳定化

在泛函中嵌入了了解或问题的先验信息(如神经网络中权重衰减,在深度网络中用 Dropout)

先验的重要性

泛化(Generalization)= 数据(Data)+ 知识(Knowledge)

统计学基本概念

数据集的统计量

  • 均值,中位数,众数
  • 期望:概率加权和
  • 方差,均方根
  • 协方差(covariance)
  • 协方差矩阵(covariance matrix)

距离度量函数

image-20230305181503739

高斯分布(正态分布)

概率

从统计学角度,机器学习的目的是得到映射 x → y

  • 类的先验概率:p ( y = i )
  • 样本的先验概率:p ( x )
  • 类条件概率(似然): p ( x | y = i )
  • 后验概率:p ( y = i | x )

从概率框架的角度对机器学习方法分类:

  • 生成式模型:估计类条件概率和类先验概率,用贝叶斯定理求后验概率
  • 判别式模型:直接估计后验概率(使用判别函数,不假设概率模型,直接求一个把各类分开的边界)

朴素贝叶斯分类

image-20230301165958734

机器学习技术新进展

新型机器学习技术

  • 终身 / 连续学习(Lifelong / Continual Learning)
  • 迁移学习和域适应(Transfer Learning & Domain Adaption)
  • 深度强化学习(Deep Reinforcement Learning)
  • 对抗学习(Adversarial Learning)
  • 元学习(Meta-Learning)
  • 小样本学习(Few-shot Learning)
  • 自监督学习(Self-supervised Learning)
  • 联邦学习(Federated Learning)
  • ……

新型机器学习发展趋势

  • 模型层面
    • 大模型,大模型+领域知识,大模型+多模态信息/结构信息
    • 小模型,模型蒸馏 / 量化(适配资源受限场景)
    • ……
  • 优化层面
    • 在线 / 增量学习(Online / Incremental Learning)
    • 分布 / 并行学习(Distributed / Parallel Learning)+ 异步优化
    • 加速现有算法(Speedup existing algorithms)
  • 数据层面
    • 大数据,带噪声数据学习,多模态数据学习
    • 小数据,总结或提炼数据,数据蒸馏

概率学习

相关概念

符号和术语

image-20230305160737157 image-20230305160759643

带约束的数学优化问题

image-20230305160821582

不带约束的数学优化问题

image-20230305160846976

凸函数与凹函数

  • 凸函数
image-20230305161027667
  • 凹函数
image-20230305161048350
  • 判断函数的凹凸
image-20230305161110550 image-20230305161131271

随机变量的期望

image-20230305161213061

Jensen’s inequality

image-20230305161411615

高斯分布/正态分布

正态分布是在统计以及许多统计测试中最广泛应用的一类分布

正态分布是统计模式识别、计算机视觉和机器学习中使用最广泛的概率分布

  • 单变量高斯分布(Univariate Gaussian distribution)
image-20230305161617946 image-20230305161720811 image-20230305161755356
  • 多变量高斯分布(Multivariate Gaussian distribution)
image-20230305161821196 image-20230305161921763 image-20230305161958083

高斯混合模型

高斯混合模型(Gaussian Mixture Model, GMM)

image-20230305164455910
  • 概率密度函数
image-20230305164409746 image-20230305164520385
  • 图模型
image-20230305164548996 image-20230305164611515

最大似然估计

最大似然估计(Maximum likelihood estimation,MLE)

image-20230305171426184 image-20230305171506580 image-20230305171531820

期望最大化算法

EM 算法

核心思想

image-20230305172614172 image-20230305172652574

优化分析

image-20230305172807483 image-20230305172834223 image-20230305180850321 image-20230305180940898 image-20230305181009838 image-20230305181044018

算法流程

image-20230305181110353 image-20230305181137967 image-20230305181158298

k-近邻分类器

算法流程

image-20230305192643306

k取值的影响

image-20230305192729403

最近邻分类器

算法流程

image-20230305194006168

泛化错误率

image-20230305194039700 image-20230305194105010

k-近邻回归

算法流程

image-20230305194143255

近邻平滑

image-20230305194221170

讨论

image-20230305194334078 image-20230305194359508 image-20230305194420413

降低计算

image-20230305194455953

无监督学习

聚类算法

相关概念

聚类(簇,类):数据对象的集合,同类相似,不同类不相似

聚类算法(clustering algorithm):根据给定的相似性评价标准,将一个数据集合划分成几个聚类

聚类依据:将样本看作是特征空间中的点,点与点的距离作为相似性评价标准

目的:潜在的自然分组结构/感兴趣的关系

聚类的关键:特征的选取或设计 + 距离度量函数的选择

距离度量

聚类准则

类的定义:距离小于阈值 / 聚类准则函数方法

image-20230301171457528

聚类方法

  • 基于试探的聚类搜索算法

    • 按最近邻规则的简单试探法
  • 系统聚类法

    • 按距离逐步分类(所有样本初始时视作独立的类别,由多到少的收敛过程)
  • 动态聚类法

    • 选取若干样本点作为聚类中心,再按照最小距离准则使样本点向各中心聚集,得到初始聚类

    • 判断初始分类是否合理,若不合理则修改聚类,反复迭代直至合理为止

K-means 算法

K-means 算法是动态聚类法的代表算法

K-means 算法流程:

  1. 选择聚类数量 k
  2. 随机选择 k 个样本点作为初始聚类中心 μ1 μ2 … μk
  3. 对每个样本点,计算其到 k 个聚类中心的距离,并将其分类到距离它最近的聚类中心所属聚类
  4. 对每个聚类,计算属于该聚类的所有样本点的均值,作为新的聚类中心
  5. 如果没有发生样本所属聚类改变(或达到最大迭代次数)则终止,否则返回第 3 步继续执行

针对初始聚类中心的选取,有优化方案 K-means++ 算法

聚类评价

标签未知:紧密度,间隔度,戴维森堡丁指数,邓恩指数

标签已知:聚类准确率,兰德指数,调整兰德指数,互信息,归一化互信息

前沿进展

监督深度学习的成功与现实困境

(监督)深度学习是如何成功的:

  • 预先定义许多视觉的概念及类别进行学习
  • 为每个概念类别收集大量具有差异性的样本
  • 对收集到的数据进行清洗和精细标注
  • 采用多块 GPU 显卡训练几个小时甚至几天

现实场景中存在的困境和问题:

  • 数据体量大
  • 数据标注时间长
  • 数据标注代价高
  • 不能利用未标注的数据
  • 监督信号可能使深度模型变得有偏

自监督学习

什么是自监督学习?(自监督预训练 + 下游任务迁移)

  • 无监督学习的一种形式,数据没有(人类标注的)监督信息
  • 需要定义一个前置(借口)任务让网络学习我们关心的事情
  • 对于大部分前置任务,我们需要保留一部分数据,让网络学会预测
  • 通过前置任务学习到的特征会被用到不同的下游任务(通常包含标注)

自监督学习分类:前置任务学习,对比学习,非对比学习

前置任务学习

生成式方法——图像着色

image-20230301215532176 image-20230301215601541 image-20230301215624475 image-20230301215646345

生成式方法——图像修复

image-20230301215726738 image-20230301215744738 image-20230301230539112

判别式方法——图像拼图

image-20230301230824904 image-20230301230846766 image-20230301230907470

对比学习

image-20230301231029180

MoCo

image-20230301231102221 image-20230301231124723 image-20230301231151658

SimCLR

image-20230301231419746 image-20230301231441420 image-20230301231502418 image-20230301231536641 image-20230301231857690

非对比学习

聚类方法——DeepCluster

image-20230301231650616 image-20230301231709428

聚类方法——SwAV

image-20230301231734407 image-20230301231755524 image-20230301231827445

作业一:K-means

要求:实现 K-means 聚类并使用其进行无监督图像分割

代码展示https://github.com/Ling-Yuchen/ML-hw/blob/main/kmeans.py

实验报告

算法原理

代码说明

在本次实验中使用了两种方法来实现 K-means 聚类算法,一是参考 https://blog.csdn.net/lanshi00/article/details/104109963 调用已有封装好的 cv2.kmeans(),二是参考 https://github.com/Daya-Jin/ML_for_learner/blob/master/cluster/KMeans.ipynb 使用 numpy 等库手动实现算法流程,两者均使用 cv2.imshow() 作为可视化实现方案

  • 方法一

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    compactness, clusters, centers = cv2.kmeans(
    data=data,
    K=k,
    bestLabels=None,
    criteria=(
    cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, # type
    10, # max_iter
    1.0 # epsilon
    ), # define condition of ending
    attempts=10,
    flags=cv2.KMEANS_PP_CENTERS # set initial centers
    )

    关键参数:

    • criteria:规定了迭代的终止条件
    • flags:规定了初始中心的生成方式
    • k:规定了目标类簇的个数
  • 方法二

    每次迭代的核心代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    epoch += 1
    # calculate distance from each sample to each center
    for i in range(k):
    dist[:, i] = np.linalg.norm(data - cent_cur[i], axis=1)

    # each sample belongs to cluster of the nearest center
    clusters = np.argmin(dist, axis=1)

    cent_pre = deepcopy(cent_cur)
    # calculate mean coordinate on each cluster, update center
    for i in range(k):
    cent_cur[i] = np.mean(data[clusters == i], axis=0)
    cent_move = np.linalg.norm(cent_cur - cent_pre)

    核心代码说明:

    • data 表示经过处理的输入图像数据,其形状为 (65536, 1)(经过灰度处理)或 (65536, 3)(未经过灰度处理)(输入的图像被固定 resize 为 256*256,固共有 65536 个样本点)

    • 每次迭代需要递增迭代次数,并计算各聚类中心的改变量,若迭代次数达到最大值或改变量低于设定阈值,则终止迭代

    • 计算样本点到各聚类中心的距离,使用 np.linalg.norm(),默认为二范数,即计算欧拉距离,计算结果保存在一个形状为 (65536, k) 的距离矩阵中

    • 依据距离矩阵对样本点进行分类,使用 np.argmin(),返回一个最小值索引向量,表示本次迭代产生的聚类结果

可视化实验结果分析

  • 高斯模糊对实验结果影响的讨论
    • 在预处理步骤中增加了高斯模糊可以明显减少聚类结果中边界处的噪声点,使得分类更加准确,图像分割结果更加美观
image-20230301084839502 image-20230301084720367
  • 使用灰度图对实验结果影响的讨论
    • 在主体色调相对统一的情况下,在原图上和在灰度图上进行处理最后得到的分割结果基本相同(第一组对比图),使用灰度图可以在保证分割效果的情况下使算法的计算量缩减为 1/3
    • 在色调有明显区分的情况下,使用灰度图会因为损失了一部分信息而得到偏离预期的分割结果(第二组对比图)
image-20230301085825192 image-20230301085946910 image-20230301185012430 image-20230301185127501
  • 更多分割结果展示
image-20230301090716162 image-20230301090905016

支持向量机

感知机:线性超平面

二分类问题可以看作在线性空间上对类别进行划分的任务

w^T^x + b = 0:划分超平面的线性方程,其中 w 为法向量,决定超平面的方向;b 为位移项,决定了超平面与原点之间的距离

强假设:处于“正中间”的超平面具有更好的鲁棒性和泛化能力

线性支持向量机(LSVM)

间隔与支持向量

间隔(margin):每个样本点到超平面的垂直距离

超平面的优化目标:最大化所有训练样本的最小间隔

支持向量(support vector):具有最小间隔的样本点

image-20230303225744792

计算 Margin

image-20230303230248914

分类与评价

分类方式:f(x) > 0 → 正类;f(x) < 0 → 负类

判断预测的对错:对样本点 *xi*,用 yi ∈ {-1, 1} 作为其正负类的标注,则有

  • yi f(xi) > 0 → 预测正确;yi f(xi) < 0 → 预测错误
  • 假设能够将样本点完全分开,并且 |yi| = 1,则有 yi f(xi) = |f(xi)|

SVM 的形式化描述

image-20230303231456468

换个角度看问题以简化目标

image-20230303231756077 image-20230303234051787 image-20230303234116837

拉格朗日乘子法

image-20230303234236689

KKT 条件

image-20230303234341963

SVM 的对偶形式

image-20230303234520031

Soft margin

image-20230304091100595 image-20230304091129110

对犯错误进行惩罚

  • 在原始空间内:
image-20230304091334360

其中,C > 0,是一个正则化参数;ξi 是代价(要最小化代价函数);w^T^w 是正则项,对分类器进行限制,限制模型的复杂度(还是最大化间隔)

  • 在对偶空间内:
image-20230304091925800

对偶形式仅依赖于样本的内积

总结

  • 分类器是一个分离超平面(separating hyperplane)
  • 最重要的训练样本是“支持向量”,它们定义了超平面,其他样本被忽略。二次优化算法可以识别哪些样本是具有非零拉格朗日乘子 αi 的支持向量
  • 对偶问题中,训练样本只以内积的形式出现

非线性支持向量机

image-20230304092349504

基本思想

将样本从原始空间映射到一个更高维的特征空间,使样本在这个特征空间内线性可分(特征空间映射)

可以证明,如果原始空间是有限维,那么一定存在一个高维特征空间使得样本线性可分

通过内积联系线性与非线性

image-20230304092706511

如图,两个二维样本在非线性函数作用下,得到六维特征空间的内积形式

Kernel trick

image-20230304093033299

限制条件

image-20230304093246829

核支持向量机

image-20230304093537351

核函数的种类

image-20230304093612535

非线性核的例子

image-20230304093733774 image-20230304093759599

关于超参数

image-20230304093944568

多类支持向量机

思路:转化为二分类问题

image-20230304094122394 image-20230304094144147

解决方案

支持向量机的实现

SVM Website:http://www.kernel-machines.org/

代表性实现 LIBSVM:有效且出名,实现了 muti-class classification,nu-SVM,one-class SVM 等,且有很多 Java、Python 等接口

支持向量机的启发

image-20230304094726817 image-20230304094746716

前沿进展——持续学习

任务定义

image-20230305150147185

灾难性遗忘

image-20230305151055008

场景设定

image-20230305151157804
  • 任务增量学习

    • 不同时刻到来的数据分属于不同的任务,在一个时间段内我们可以获得当前任务的全部数据,并且假设测试推理阶段,任务的编号是可知的

    • 因为测试阶段任务编号可知,所以训练阶段不同任务的输出相互独立,即最终学到的模型是多头的(multi-head),为每个任务提供单独的输出层

  • 类别增量学习

    • 不同时刻到来的数据属于同一类型任务的不同类别,随着训练的进行逐步增加输出类别,即类别空间是逐渐扩充的
    • 不同于任务增量学习场景,类别增量学习场景在测试阶段不知道任务的编号(训练阶段知道任务编号),比任务增量场景更具挑战性
  • 域增量学习

    • 不同时刻到来的数据集属于不同任务,但任务之间的类别空间是相同的,只是数据的分布(域)发生了变化,前后两个任务的数据不再满足独立同分布假设

持续学习设置

常用数据集

image-20230305153343052

评估指标

image-20230305153315978

持续学习方法分类

image-20230305153209815

大作业(Optional)

image-20230305153519164 image-20230305153546632 image-20230305153607991

神经元和感知机

脑和神经元

MP神经元基本结构

image-20230318203358136

感知机和感知机学习

线性可分性

神经元网络

多层感知机

自动编码器

径向基网络

树学习

概念学习和变型空间

概念学习

给定样例集合,以及每个样例是否属于某个概念,自动地推断出该概念的一般定义

概念学习任务

实例集合:用若干属性表示

目标概念$$c$$:定义在实例集上的布尔函数 $$c:X\rightarrow {0,1}$$

训练样例:正例$$(c(x)=1)$$,反例$$(c(x)=0)$$

假设集$$H$$:每个假设$$h$$表示$$X$$上定义的布尔函数$$h:X\rightarrow {0,1}$$

概念学习任务:寻找一个假设$$h$$,使对于$$X$$中说有$$x$$,$$h(x)=c(x)$$

实例空间和假设数

image-20230318210112281

Find-S:寻找极大特殊假设

对以属性合取式表示的假设空间,输出与正例一致的最特殊的假设

image-20230318210312848

变形空间

假设h与训练样例D集合一致:$$Consistent(h,D)\equiv(\forall<x,c(x)>\in D)\space h(x)=c(x)$$

image-20230331152536464 image-20230331152459947

正例和反例的作用

  • 正例用于S泛化,搜索S集合
  • 反例用于G特化,缩小G集合

候选消除算法

image-20230331151459518 image-20230331151529211 image-20230331151556095 image-20230331151621870 image-20230331151642353

归纳偏置

原假设空间是由合取式(有偏)表示,而真实空间是由析取式表示

归纳偏置

归纳学习必须给定某种形式的预先假定(归纳偏置)

核心:学习器从训练样例中泛化并推断新实例分类过程中所采用的策略

精确定义:

image-20230331152226050

决策树算法

决策树学习

决策树学习特点:

  • 实例由“属性-值”对表示,应用广泛

  • 目标函数具有离散的输出值

  • 健壮性好(允许少量错误和缺值实例)

  • 能够学习析取表达式

决策树学习算法:

  • ID3,Assistant,C4.5
  • 搜索一个完整表示的假设空间,表示为多个 if-then 规则

决策树学习归纳偏置:

  • 优先选择较小的树

决策树表示样例:

image-20230331104838643

问题设置

image-20230331104941643

决策树学习的假设空间搜索

  • 从一个假设空间中搜索一个正确拟合训练样例的假设
  • 搜索的假设空间为可能的决策树集合
  • 使用从简单到复杂的爬山算法遍历假设空间:从空的树开始,逐步考虑更加复杂的假设(引导爬山搜索的评估函数是信息增益度量)

用于学习布尔函数的ID3算法

image-20230331105509995 image-20230331105534888

最佳属性的选择

  • 衡量给定的属性区分训练样例的能力:信息增益(information gain)
  • 信息的度量:熵(entropy),刻画了样例集的纯度
  • 目标属性为布尔值的样例集S的熵:$$Entropy(S)=-p_+ log_2 p_+ -p_- log_2 p_-$$

信息增益

image-20230331110352074

ID3算法特点

  • 假设空间:包含所有的决策树
  • 遍历过程:仅维持单一的当前假设(不同于变形空间候选消除算法)
  • 回溯:不进行回溯(局部最优)
  • 基于统计:对错误样例不敏感;不适用于增量处理

决策树学习中的归纳偏置

image-20230331110825102

奥卡姆剃刀原理

image-20230331110928813

代表性树算法对比

image-20230331111027678

C4.5算法

image-20230331113021181

CART算法

image-20230331113048888 image-20230331113115865

基尼系数

image-20230331112633813

连续值处理

连续的特征离散化

image-20230331112713592

离散值处理

image-20230331112755659

剪枝处理

后剪枝

image-20230331112858597

最小化子树的损失函数

image-20230331112945689

树学习算法优点

image-20230331111339376

树学习算法缺点

image-20230331111320360

决策树的延申

深度学习时代的决策树

image-20230331112339128 image-20230331112433745

作业三:决策树

要求:给定药品数据集构造决策树,并用 Micro-F1 和 Macro-F1 分数进行验证集评估,预测测试集中的药品等级。

数据集说明:

  • csv 数据集中包含有关药品的各种属性,文件中可能包含“脏”数据,药品等级分为5级(1~5)
  • 训练集:6999条数据;验证集:1199条数据;测试集:1798条数据

代码展示https://github.com/Ling-Yuchen/ML-hw/blob/main/decision_tree.py

实验报告

数据的分析与处理

给定数据集的每一个数据项的结构如下:

recordId | drugName | condition | reviewComment | date | usefulCount | sideEffects | rating

其中,rating 是需要进行学习的分类标记,根据常识进行判断,recordId | drugName | date 属于无效字段,reviewComment 包含大量自然语言,难以进行概括性的标准化的归纳处理,故初步将 condition | usefulCount | sideEffects 作为待定的分类主要属性依据

经过尝试,选取 condition | sideEffects 两个属性作为分类依据得到的验证数据效果最好,故在数据处理时,对每一条记录,只保留 condition | sideEffects | rating 三个属性的信息

具体处理流程见代码中的 read_data 方法

决策树的设计原理

  • 基于信息增益选择最优特征

ID3 算法的核心思想是通过计算每个特征的信息增益,选择最优的特征来构建决策树。信息增益是用来衡量一个特征对分类结果的影响程度的指标,其值越大表示该特征对分类的贡献越大。在每个节点上,ID3 算法会计算每个特征的信息增益,并选择信息增益最大的特征作为节点的划分标准。

  • 递归地构建决策树

在选择最优特征后,ID3算法会根据该特征的取值将当前节点分成多个子节点,并递归地对每个子节点进行相同的操作,直到所有叶子节点的类别相同或者无法再分。

  • 处理缺失值和连续值

在处理缺失值时,ID3算法将缺失值看作一种特殊的取值,同时计算信息增益时不考虑缺失值所对应的分支。在处理连续值时,ID3算法需要对连续值进行离散化,将其分成若干个离散的取值,然后再计算信息增益。

(核心代码略)

验证集评估结果

image-20230321152606188

集成学习

集成学习原理

原理

  • 将多个个体学习器通过结合模块相结合,得到一个综合的输出
  • 是一个预测模型的元方法

特点

  • 多个分类器集成在一起,以提高分类准确率
  • 由训练数据构建基分类器,然后根据预测结果进行投票
  • 集成学习本身不是一种分类器,而是分类器结合方法
  • 通常集成分类器性能会好于单个分类器

举例分析

image-20230331190833225

Bias-Variance trade-off

image-20230331191106544

核心问题

  • 序列集成法
    • 利用基学习器之间的依赖关系,依次生成
    • 减小偏差 bias
  • 并行集成法
    • 利用基学习器之间的独立关系,并行生成
    • 减小方差 variance

Q1:如何训练每个学习器

Q2:如何结合每个学习器

结合策略

  • 平均法(回归问题):简单平均 / 加权平均
  • 投票法(分类问题):绝对多数 / 相对多数 / 加权投票
  • 学习法(Stacking)

多样性策略(学习基学习器)

image-20230331191932431

Bagging和随机森林

基本原理

有放回采样方法(统计上的目的是得到统计量分布以及置信区间)

Bagging集成学习框架

image-20230331192215585

Bagging集成学习优点

image-20230331192548627

随机森林算法

image-20230331192659991 image-20230331192726798

Boosting和GBDT、XGboost

基本原理

可以通过提升方法(Boosting)将弱学习器转为强学习器

Boosting集成学习框架

image-20230331192908421

前向分步加法模型

  • 加法模型及其目标函数
image-20230331213338867 image-20230331213356923 image-20230331213449009
  • 前向分布算法

学习目标函数为加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近要优化的总目标函数,就可以简化优化的复杂度

image-20230331213646916

残差

image-20230331213914616

提升树

以决策树为基函数的提升方法成为提升树(Boosting Tree)

image-20230331213817564 image-20230331213947622 image-20230331214019396

梯度提升树 GBDT

image-20230331214109628 image-20230331214144745

GBDT例子

image-20230331214333965 image-20230331214359166
image-20230331214422717 image-20230331214446054
### XGBoost image-20230331214712395

树的复杂度

image-20230331215357782 image-20230331215422130

目标函数

image-20230331215446907

树的打分和分裂

image-20230331215511166

Adaboost

概率近似正确学习理论(PCA)

image-20230331222054923 image-20230331222122135

Adaptive Boost

image-20230331222213356 image-20230331222246368 image-20230331222309457 image-20230331222333840 image-20230331222357634 image-20230331222421007

学习法

Stacking算法

算法原理

image-20230331221106823

算法流程

image-20230331221144470

Stacking

image-20230331221249286 image-20230331221311224

小结

image-20230331221406391

优化和搜索

维度约减

强化学习

演化学习

复习要点

误差反向传播

以输入数据为一个二维坐标、输出数据为一个标签值为例,

记输入为 $(x_1,x_2)$,真实输出为 $y$,正确输出为 $y’$,使用的激活函数为 $\phi(x)$,第 $L$ 层第 $k$ 个神经元的权重为 $w^L_{k1}$,…, $w^L_{kn}$,对应接收的输入为 $a^{L-1}_1$,…, $a^{L-1}_n$,激活前输出为 $z^L_k$,激活后输出为 $a^L_k$

记第 $L$ 层第 $k$ 个神经元的 $delta$ 误差为 $\Delta_k^L$,则有:

  • 若第 $L$ 层为输出层,$D_k^L=\phi’(z_k^L)\times(y’-y)$
  • 若第 $L$ 层为输出层,$D_k^L=\phi’(z_k^L)\times\sum_i(D_i^{L+1}w_{ik}^{L+1})$

从而,$\Delta w_{ki}^L=\alpha\times D_k^L\times a^{L-1}_i$

更新权值:$w_{ki}^L=w_{ki}^L-\Delta w_{ki}^L$

ID3 决策树算法

以实例标签为布尔值为例,

信息熵计算:$Ent(S)=-\sum_i\space p_ilog_2p_i$,其中 $S$ 为样本集合,$p_i$ 为标签 $i$ 出现的概率

信息增益计算:$Gain(S,A)=Ent(S)-\sum_v\frac{|S_v|}{|S|}Ent(S_v)$,其中 $A$ 为作为分割标准的属性,$v$ 为该属性的取值

递归构建决策树:

  • 若当前样本集中所有实例的标签相同,则 root 赋值为改标签,返回
  • 否则,若没有可继续分割样本集的属性,则投票选出样本集中最多的标签,root 赋值为该标签,返回
  • 否则,选取信息增益最大的属性,作为 root 的决策属性,以该属性的值为依据,分割样本集为若干子样本集
  • 若子样本集中有空集,则增加一个叶节点,以样本集中出现最多的标签作为其标签
  • 否则在该分支下依据子样本集和子属性集增加对应的子树

MDP 模型

$V^{\pi}(s)$:从 $s$ 状态出发,采用 $π$ 策略,所获得的期望返回值

$Q^{\pi}(s,a)$:从 $s$ 状态出发, 采用 $a$动作,继而采用 $π$ 策略,所获得的期望返回值

$V^{\pi}(s)=Q^{\pi}(s,\pi(s,a))$

  • 策略评估:计算 $V^{\pi}(s)=E(R(s,\pi(s)))+\gamma\space\sum_{s’}\space\delta(s,\pi(s),s’)V^{\pi}(s’)$,

  • 最优控制:计算 $Q^{\pi}(s,a)=E(R(s,a))+\gamma\space\sum_{s’}\space\delta(s,a,s’)V^{\pi}(s’)$

    • 修改策略:$\pi(s)=argmax_a(Q^{\pi}(s,a))$(贪心策略) 或($\epsilon$-贪心策略)

KNN 算法

k近邻分类:

  • 计算样本 $x$ 和所有训练样本 $x_i$ 之间的距离并排序
  • 选取 k 个最近的训练样本,采用投票法,将近邻样本中数量最多的类标签分配给 $x$

k近邻回归:

  • 计算样本 $x$ 和所有训练样本 $x_i$ 之间的距离并排序
  • 选取 k 个最近的训练样本,以距离值倒数作为权重,将近邻的标签值加权平均,作为 $x$ 的预测标签值

训练阶段时间复杂度为 0,测试阶段时间复杂度:$O(nd+nlogk)$

LDA 算法基本流程

  • 计算每个类的均值向量 $\mu_c$ 和全局样本的均值向量 $\mu$
  • 计算类内散度矩阵 $S_w=\sum_{class\space c}p_c\sum_{j\in c}(x_j-\mu_c)(x_j-\mu_c)^T$
  • 计算类间散度矩阵 $S_b=\sum_{class\space c}(\mu_c-\mu)(\mu_c-\mu)^T$
  • 计算矩阵 $S_w^{-1}S_b$ 并计算其特征值和特征向量
  • 根据需要取若干最大特征值对应的特征向量组成投影矩阵

PCA 算法基本流程

  • 计算样本的均值向量 $\mu$,并将样本去中心化:$x_i=x_i-\mu$
  • 计算样本的协方差矩阵 $C=\sum_ix_ix_i^T=XX^T$
  • 计算协方差矩阵 $C$ 的特征值和特征向量
  • 根据需要取若干最大特征值对应的特征向量组成投影矩阵

牛顿法迭代优化算法流程

根据当前迭代点 $x_k$ 计算雅可比矩阵和海森矩阵:$J_k=J(f(x))|{x=x_k}$,$H_k=H(f(x))|{x=x_k}$

计算 $p_k=-H_k^{-1}J_k^T$,得到新的迭代点 $x_{k+1}=x_k+p_k$,直至 $||J_k||\le\epsilon$ 为止

最小二乘法迭代优化算法流程

目标函数的形式为:$f(x)=\frac{1}{2}\sum_{j=1}^{m}r^2_j(x)=\frac{1}{2}||r(x)||_2^2$

根据当前迭代点 $x_k$,有:$x_{k+1}=-(J^T(x)J(x))^{-1}J^T(x)r(x)|_{x=x_k}$,其中 $J(x)$ 为函数 $r(x)$ 的雅可比矩阵