本笔记中的图片均截取自课程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, x
i - 权重:W, w
ij - 输出:y, y(x, W)
- 目标:t, t
j - 误差:E
数据集与数据集划分
训练集,测试集,验证集(留出法,交叉验证)
建模有关要素
模型 / 映射函数 f ( · ) 刻画(线性分类器?SVM?神经网络?)
确定目标 / 损失函数(平方损失?交叉熵?凸与非凸?)并优化获得模型
评测泛化性能(在未知样本上的预测能力):欠拟合/过拟合
评价指标
混淆矩阵(多分类,TP,FN,FP,TN:二分类),精度,错误率,查准率,查全率,F1度量
ROC 曲线
不平衡数据集
模型选择
正则化方法:约束选择空间
吉洪诺夫正则化
借助某个辅助非负泛函 / 模型实现解的稳定化
在泛函中嵌入了了解或问题的先验信息(如神经网络中权重衰减,在深度网络中用 Dropout)
先验的重要性
泛化(Generalization)= 数据(Data)+ 知识(Knowledge)
统计学基本概念
数据集的统计量
- 均值,中位数,众数
- 期望:概率加权和
- 方差,均方根
- 协方差(covariance)
- 协方差矩阵(covariance matrix)
距离度量函数

高斯分布(正态分布)
概率
从统计学角度,机器学习的目的是得到映射 x → y
- 类的先验概率:p ( y = i )
- 样本的先验概率:p ( x )
- 类条件概率(似然): p ( x | y = i )
- 后验概率:p ( y = i | x )
从概率框架的角度对机器学习方法分类:
- 生成式模型:估计类条件概率和类先验概率,用贝叶斯定理求后验概率
- 判别式模型:直接估计后验概率(使用判别函数,不假设概率模型,直接求一个把各类分开的边界)
朴素贝叶斯分类

机器学习技术新进展
新型机器学习技术
- 终身 / 连续学习(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)
- 数据层面
- 大数据,带噪声数据学习,多模态数据学习
- 小数据,总结或提炼数据,数据蒸馏
概率学习
相关概念
符号和术语


带约束的数学优化问题

不带约束的数学优化问题

凸函数与凹函数
- 凸函数

- 凹函数

- 判断函数的凹凸


随机变量的期望

Jensen’s inequality

高斯分布/正态分布
正态分布是在统计以及许多统计测试中最广泛应用的一类分布
正态分布是统计模式识别、计算机视觉和机器学习中使用最广泛的概率分布
- 单变量高斯分布(Univariate Gaussian distribution)



- 多变量高斯分布(Multivariate Gaussian distribution)



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

- 概率密度函数


- 图模型


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



期望最大化算法
EM 算法
核心思想


优化分析






算法流程



k-近邻分类器
算法流程

k取值的影响

最近邻分类器
算法流程

泛化错误率


k-近邻回归
算法流程

近邻平滑

讨论



降低计算

无监督学习
聚类算法
相关概念
聚类(簇,类):数据对象的集合,同类相似,不同类不相似
聚类算法(clustering algorithm):根据给定的相似性评价标准,将一个数据集合划分成几个聚类
聚类依据:将样本看作是特征空间中的点,点与点的距离作为相似性评价标准
目的:潜在的自然分组结构/感兴趣的关系
聚类的关键:特征的选取或设计 + 距离度量函数的选择
距离度量
聚类准则
类的定义:距离小于阈值 / 聚类准则函数方法

聚类方法
基于试探的聚类搜索算法
- 按最近邻规则的简单试探法
系统聚类法
- 按距离逐步分类(所有样本初始时视作独立的类别,由多到少的收敛过程)
动态聚类法
选取若干样本点作为聚类中心,再按照最小距离准则使样本点向各中心聚集,得到初始聚类
判断初始分类是否合理,若不合理则修改聚类,反复迭代直至合理为止
K-means 算法
K-means 算法是动态聚类法的代表算法
K-means 算法流程:
- 选择聚类数量 k
- 随机选择 k 个样本点作为初始聚类中心 μ
1μ2… μk - 对每个样本点,计算其到 k 个聚类中心的距离,并将其分类到距离它最近的聚类中心所属聚类
- 对每个聚类,计算属于该聚类的所有样本点的均值,作为新的聚类中心
- 如果没有发生样本所属聚类改变(或达到最大迭代次数)则终止,否则返回第 3 步继续执行
针对初始聚类中心的选取,有优化方案 K-means++ 算法
聚类评价
标签未知:紧密度,间隔度,戴维森堡丁指数,邓恩指数
标签已知:聚类准确率,兰德指数,调整兰德指数,互信息,归一化互信息
前沿进展
监督深度学习的成功与现实困境
(监督)深度学习是如何成功的:
- 预先定义许多视觉的概念及类别进行学习
- 为每个概念类别收集大量具有差异性的样本
- 对收集到的数据进行清洗和精细标注
- 采用多块 GPU 显卡训练几个小时甚至几天
现实场景中存在的困境和问题:
- 数据体量大
- 数据标注时间长
- 数据标注代价高
- 不能利用未标注的数据
- 监督信号可能使深度模型变得有偏
自监督学习
什么是自监督学习?(自监督预训练 + 下游任务迁移)
- 无监督学习的一种形式,数据没有(人类标注的)监督信息
- 需要定义一个前置(借口)任务让网络学习我们关心的事情
- 对于大部分前置任务,我们需要保留一部分数据,让网络学会预测
- 通过前置任务学习到的特征会被用到不同的下游任务(通常包含标注)
自监督学习分类:前置任务学习,对比学习,非对比学习
前置任务学习
生成式方法——图像着色




生成式方法——图像修复



判别式方法——图像拼图



对比学习

MoCo



SimCLR





非对比学习
聚类方法——DeepCluster


聚类方法——SwAV



作业一: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
12compactness, 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
13epoch += 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()
,返回一个最小值索引向量,表示本次迭代产生的聚类结果
可视化实验结果分析
- 高斯模糊对实验结果影响的讨论
- 在预处理步骤中增加了高斯模糊可以明显减少聚类结果中边界处的噪声点,使得分类更加准确,图像分割结果更加美观


- 使用灰度图对实验结果影响的讨论
- 在主体色调相对统一的情况下,在原图上和在灰度图上进行处理最后得到的分割结果基本相同(第一组对比图),使用灰度图可以在保证分割效果的情况下使算法的计算量缩减为 1/3
- 在色调有明显区分的情况下,使用灰度图会因为损失了一部分信息而得到偏离预期的分割结果(第二组对比图)




- 更多分割结果展示


支持向量机
感知机:线性超平面
二分类问题可以看作在线性空间上对类别进行划分的任务
w^T^x + b = 0:划分超平面的线性方程,其中 w 为法向量,决定超平面的方向;b 为位移项,决定了超平面与原点之间的距离
强假设:处于“正中间”的超平面具有更好的鲁棒性和泛化能力
线性支持向量机(LSVM)
间隔与支持向量
间隔(margin):每个样本点到超平面的垂直距离
超平面的优化目标:最大化所有训练样本的最小间隔
支持向量(support vector):具有最小间隔的样本点

计算 Margin

分类与评价
分类方式:f(x) > 0 → 正类;f(x) < 0 → 负类
判断预测的对错:对样本点 *xi*,用 yi ∈ {-1, 1} 作为其正负类的标注,则有
- y
if(xi) > 0 → 预测正确;yif(xi) < 0 → 预测错误 - 假设能够将样本点完全分开,并且 |y
i| = 1,则有 yif(xi) = |f(xi)|
SVM 的形式化描述

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



拉格朗日乘子法

KKT 条件

SVM 的对偶形式

Soft margin


对犯错误进行惩罚
- 在原始空间内:

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

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

基本思想
将样本从原始空间映射到一个更高维的特征空间,使样本在这个特征空间内线性可分(特征空间映射)
可以证明,如果原始空间是有限维,那么一定存在一个高维特征空间使得样本线性可分
通过内积联系线性与非线性

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

限制条件

核支持向量机

核函数的种类

非线性核的例子


关于超参数

多类支持向量机
思路:转化为二分类问题


解决方案
- Crammer-Singer 方法:http://jmlr.org/papers/v2/crammer01a.html
- DAGSVM:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/dagsvm.pdf
- ECOC:https://arxiv.org/pdf/cs/9501101.pdf
支持向量机的实现
SVM Website:http://www.kernel-machines.org/
代表性实现 LIBSVM:有效且出名,实现了 muti-class classification,nu-SVM,one-class SVM 等,且有很多 Java、Python 等接口
支持向量机的启发


前沿进展——持续学习
任务定义

灾难性遗忘

场景设定

任务增量学习
不同时刻到来的数据分属于不同的任务,在一个时间段内我们可以获得当前任务的全部数据,并且假设测试推理阶段,任务的编号是可知的
因为测试阶段任务编号可知,所以训练阶段不同任务的输出相互独立,即最终学到的模型是多头的(multi-head),为每个任务提供单独的输出层
类别增量学习
- 不同时刻到来的数据属于同一类型任务的不同类别,随着训练的进行逐步增加输出类别,即类别空间是逐渐扩充的
- 不同于任务增量学习场景,类别增量学习场景在测试阶段不知道任务的编号(训练阶段知道任务编号),比任务增量场景更具挑战性
域增量学习
- 不同时刻到来的数据集属于不同任务,但任务之间的类别空间是相同的,只是数据的分布(域)发生了变化,前后两个任务的数据不再满足独立同分布假设
持续学习设置
常用数据集

评估指标

持续学习方法分类

大作业(Optional)



神经元和感知机
脑和神经元
MP神经元基本结构

感知机和感知机学习
线性可分性
神经元网络
多层感知机
自动编码器
径向基网络
树学习
概念学习和变型空间
概念学习
给定样例集合,以及每个样例是否属于某个概念,自动地推断出该概念的一般定义
概念学习任务
实例集合:用若干属性表示
目标概念$$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)$$
实例空间和假设数

Find-S:寻找极大特殊假设
对以属性合取式表示的假设空间,输出与正例一致的最特殊的假设

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


正例和反例的作用
- 正例用于S泛化,搜索S集合
- 反例用于G特化,缩小G集合
候选消除算法





归纳偏置
原假设空间是由合取式(有偏)表示,而真实空间是由析取式表示
归纳偏置
归纳学习必须给定某种形式的预先假定(归纳偏置)
核心:学习器从训练样例中泛化并推断新实例分类过程中所采用的策略
精确定义:

决策树算法
决策树学习
决策树学习特点:
实例由“属性-值”对表示,应用广泛
目标函数具有离散的输出值
健壮性好(允许少量错误和缺值实例)
能够学习析取表达式
决策树学习算法:
- ID3,Assistant,C4.5
- 搜索一个完整表示的假设空间,表示为多个 if-then 规则
决策树学习归纳偏置:
- 优先选择较小的树
决策树表示样例:

问题设置

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


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

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

奥卡姆剃刀原理

代表性树算法对比

C4.5算法

CART算法


基尼系数

连续值处理
连续的特征离散化

离散值处理

剪枝处理
后剪枝

最小化子树的损失函数

树学习算法优点

树学习算法缺点

决策树的延申
深度学习时代的决策树


作业三:决策树
要求:给定药品数据集构造决策树,并用 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算法需要对连续值进行离散化,将其分成若干个离散的取值,然后再计算信息增益。
(核心代码略)
验证集评估结果

集成学习
集成学习原理
原理
- 将多个个体学习器通过结合模块相结合,得到一个综合的输出
- 是一个预测模型的元方法
特点
- 多个分类器集成在一起,以提高分类准确率
- 由训练数据构建基分类器,然后根据预测结果进行投票
- 集成学习本身不是一种分类器,而是分类器结合方法
- 通常集成分类器性能会好于单个分类器
举例分析

Bias-Variance trade-off

核心问题
- 序列集成法
- 利用基学习器之间的依赖关系,依次生成
- 减小偏差 bias
- 并行集成法
- 利用基学习器之间的独立关系,并行生成
- 减小方差 variance
Q1:如何训练每个学习器
Q2:如何结合每个学习器
结合策略
- 平均法(回归问题):简单平均 / 加权平均
- 投票法(分类问题):绝对多数 / 相对多数 / 加权投票
- 学习法(Stacking)
多样性策略(学习基学习器)

Bagging和随机森林
基本原理
有放回采样方法(统计上的目的是得到统计量分布以及置信区间)
Bagging集成学习框架

Bagging集成学习优点

随机森林算法


Boosting和GBDT、XGboost
基本原理
可以通过提升方法(Boosting)将弱学习器转为强学习器
Boosting集成学习框架

前向分步加法模型
- 加法模型及其目标函数



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

残差

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



梯度提升树 GBDT


GBDT例子





树的复杂度


目标函数

树的打分和分裂

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


Adaptive Boost






学习法
Stacking算法
算法原理

算法流程

Stacking


小结

优化和搜索
略
维度约减
略
强化学习
略
演化学习
略
复习要点
误差反向传播
以输入数据为一个二维坐标、输出数据为一个标签值为例,
记输入为 $(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)$ 的雅可比矩阵