机器学习导论期末冲刺

复习思路:PPT为主,辅助以互联网资料和刷题。
题型:选择题+简答题5-7道

最后的押题

概论

1956 夏天,达特茅斯会议,奠定了新的科学-- 人工智能
六位核心成员:
约翰·麦卡锡(John McCarthy)

马文·闵斯基(Marvin Minsky,人工智能与认知学专家)
知识表示和推理,本体和知识图谱方面的研究。

克劳德·香农(Claude Shannon,信息论的创始人)

艾伦·纽厄尔(Allen Newell,计算机科学家)

赫伯特·西蒙(Herbert Simon,诺贝尔经济学奖得主)

奥利弗·塞弗里奇(Oliver Selfridge)

深度学习三驾马车
Yann LeCun
Geoffrey Hinton
Yoshua Bengio

机器学习的一个经典定义:利用经验改善系统自身的性能。

机器学习理论模型:
PAC学习理论 (Probably Approximately Correct learning model),属于计算学习理论,关注的是算法在有限的样本情况下,以高概率学习到一个近似正确的模型的能力。
可学习性(Learnability):一个概念(或函数类)是PAC可学习的,如果存在一个学习算法,能在给定的错误容忍度(ε)和置信水平(δ)条件下,使用多项式数量级的训练样本来学习到一个假设h,使得h在未见样本上的错误率不超过ε,且这一过程成功的概率至少为1-δ。
样本复杂度(Sample Complexity):这是达到上述学习目标所需要的最少样本数量。PAC学习理论告诉我们,样本复杂度依赖于错误容忍度ε、置信水平δ、数据的分布以及假设空间的复杂度。
泛化能力(Generalization):PAC理论关注学习算法从训练数据到未见数据的泛化能力,即学习到的模型不仅要在已知的训练数据上表现好,还要能很好地预测新的、未见过的数据。

奥卡姆剃刀鼓励我们在面对多个能够解释同一现象的理论或假设时,优先考虑那个需要最少假设的理论

NFL定理对于所有可能的目标函数,如果将所有可能的输入输出关系平等考虑,那么没有任何一个搜索或学习算法能够比随机搜索表现得更好。如果有一个算法在某些特定类型的问题上表现出色,必然存在另一类问题,它在这个问题上的表现就不会那么好,以至于平均来看,所有算法的表现是等价的。
这个定理假设了所有可能的问题出现的机会是相等的,在实践中,确实存在一些算法比其他算法表现得更好。

生成式模型(Generative Model):

  1. 目标:生成式模型试图学习数据的联合概率分布 (P(X, Y)),即给定类别 (Y) 的条件下,观测数据 (X) 出现的概率。换句话说,它不仅学习数据属于某个类别的概率,还学习数据是如何生成的。
  2. 方法:这类模型通常会先估计 (P(Y))(类别先验概率)和 (P(X|Y))(给定类别下特征的条件概率),然后通过贝叶斯规则推导出条件概率 (P(Y|X)) 进行预测。例子包括朴素贝叶斯分类器、隐马尔科夫模型(HMM)和生成对抗网络(GANs)。
  3. 优点:能够提供关于数据的更多信息,比如生成新样本、进行数据缺失值填充等。对于小数据集或稀有事件,生成式模型可能更有优势。
  4. 缺点:模型复杂度高,需要较多的训练数据来准确估计联合分布,且训练过程可能较慢。

判别式模型(Discriminative Model):

  1. 目标:直接建模条件概率分布 (P(Y|X)),即给定特征 (X) 的条件下,预测其属于类别 (Y) 的概率。它关注的是如何直接找到类别之间的边界,而不是数据的生成过程。
  2. 方法:这类模型直接学习一个决策边界或分类函数,如逻辑回归、支持向量机(SVM)、BP神经网络、决策树等,它们试图最小化预测错误率或其他损失函数。
  3. 优点:在许多情况下,尤其是在特征与类别之间关系较为直接时,判别式模型往往能提供更优的分类性能。它们通常更容易训练,并且在有限的训练数据上也能表现良好。
  4. 缺点:不提供关于数据生成过程的信息,也不便于处理数据缺失或异常值的情况。对于需要了解数据生成机制的应用场景,判别式模型可能不够灵活。

模型评估与选择

统计学习方法三要素
模型
策略:确定损失函数。进而确定风险函数,分为经验风险与期望风险。结构风险。
算法

评估方法

留出法(hold-out):注意分层采样
交叉验证法(cross validation)
自助法(bootstrap):\(e^{-1}≈0.368\)的样本不出现,作为测试集

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

性能度量
回归(regression)任务常⽤均⽅误差
错误率&精度
分类结果混淆矩阵image
查准率P(precision):你以为是,真的是吗?
查全率R(recall):真是的里面,对了多少?
P-R曲线、平衡点
\(F1\)度量:P和R的调和平均
\(F_{\beta}\)度量:P和R的加权调和平均\(\frac1{F_\beta}=\frac1{1+\beta^2}\cdot\left(\frac1P+\frac{\beta^2}R\right)\)
多次训练测试得到多个混淆矩阵,区分宏指标和微指标。
ROC(Receiver Operating Characteristic,受试者工作特征):纵轴为TPR真正例率(真是的里面,真正例?),横轴为FPR假正例率(真不是的里面,假正例?)。曲线下的面积AUC,考虑的是样本预测的排序质量。
越大越好。
非均等代价:犯不同的错误往往会造成不同的损失

比较检验

两学习器比较:
交叉验证t检验(基于成对t检验)
k折交叉验证: 5x2交叉验证
McNemar 检验(基于列联表,卡方检验)

多学习器比较
Friedman检验(基于序值,F检验; 判断“是否都相同”)
Nemenyi后续检验(基于序值,进一步判断两两差别)

模型评估与选择
偏差-方差分解
偏差-方差窘境

线性模型

线性可分性

感知机:二分类线性分类模型

线性模型:试图学得一个通过属性的线性组合来进行预测的函数

线性回归:最小二乘,有闭式解

\[w=\frac{\sum_{i=1}^{m}y_{i}(x_{i}-\overline{x})}{\sum_{i=1}^{m}x_{i}^{2}-\frac{1}{m}\Big(\sum_{i=1}^{m}x_{i}\Big)^{2}}\quad b=\frac{1}{m}\sum_{i=1}^{m}(y_{i}-wx_{i}) \]

多元线性回归
\({\hat{\boldsymbol{w}}}=({\boldsymbol{w}};b)\)
\(\mathbf{X}=\begin{pmatrix}x_{11}&x_{12}&\cdots&x_{1d}&1\\x_{21}&x_{22}&\cdots&x_{2d}&1\\\vdots&\vdots&\ddots&\vdots&\vdots\\x_{m1}&x_{m2}&\cdots&x_{md}&1\end{pmatrix}=\begin{pmatrix}\boldsymbol{x}_1^\mathrm{T}&1\\\boldsymbol{x}_2^\mathrm{T}&1\\\vdots&\vdots\\\boldsymbol{x}_m^\mathrm{T}&1\end{pmatrix}\)

\(\hat{\boldsymbol{w}}\mathbf{X}=\mathbf{y}\)

\(\frac{\partial E_{{\hat{\boldsymbol{w}}}}}{\partial\hat{\boldsymbol{w}}}=0\)

得到\(2\mathbf{X}^{\mathrm{T}}(\mathbf{X}\hat{\boldsymbol{w}}-\boldsymbol{y}) = \mathbf{0}\)

\(\mathbf{X} ^\mathrm{T} \mathbf{X}\)满秩或正定,则\(\hat{w} ^* = ( \mathbf{X} ^\mathrm{T} \mathbf{X} ) ^{- 1}\mathbf{X} ^\mathrm{T} \mathbf{y}\)

\(\mathbf{X} ^\mathrm{T} \mathbf{X}\)不满秩或非正定,则可以解出多个\(w\)

二分类

利用广义线性回归模型

\(ln\frac{y}{1-y}=\mathbf{w^T x}+b\)

\(y\)估计𝒑(𝒚=𝟏∣𝒙)

\(p_{1}(\hat{\boldsymbol{x}}_{i};\boldsymbol{\beta})=p(y=1\mid\hat{\boldsymbol{x}};\boldsymbol{\beta})=\frac{e^{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}+b}}{1+e^{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}+b}}\)

\[p_0(\hat{\boldsymbol{x}}_i;\boldsymbol{\beta})=p(y=0\mid\hat{\boldsymbol{x}};\boldsymbol{\beta})=1-p_1(\hat{\boldsymbol{x}}_i;\boldsymbol{\beta})=\frac1{1+e^{\boldsymbol{w}^\mathrm{T}\boldsymbol{x}+b}} \]

只需最大化似然函数$$\ell(\boldsymbol{w},b)=\sum_{i=1}^m\ln p(y_i\mid\boldsymbol{x}_i;\boldsymbol{w},b)$$

其中$$p(y_i\mid\boldsymbol{x}_i;\boldsymbol{w}_i,b)=y_ip_1(\hat{\boldsymbol{x}}_i;\boldsymbol{\beta})+(1-y_i)p_0(\hat{\boldsymbol{x}}_i;\boldsymbol{\beta})$$

LDA(线性判别分析)

一种“监督降维”技术

同类样例的投影点尽可能接近\(\to w^\mathrm{T}\Sigma_0w+w^\mathrm{T}\Sigma_1w\)尽可能小
异类样例的投影点尽可能远离\(\to\|w^\mathrm{T}\boldsymbol{\mu}_0-w^\mathrm{T}\boldsymbol{\mu}_1\|_2^2\) 尽可能大

只需最大化

\[J=\frac{\left\|\boldsymbol{w}^{\mathrm{T}}\boldsymbol{\mu}_{0}-\boldsymbol{w}^{\mathrm{T}}\boldsymbol{\mu}_{1}\right\|_{2}^{2}}{\boldsymbol{w}^{\mathrm{T}}\boldsymbol{\Sigma}_{0}\boldsymbol{w}+\boldsymbol{w}^{\mathrm{T}}\boldsymbol{\Sigma}_{1}\boldsymbol{w}}=\frac{\boldsymbol{w}^{\mathrm{T}}(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1})(\boldsymbol{\mu}_{0}-\boldsymbol{\mu}_{1})^{\mathrm{T}}\boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}}(\boldsymbol{\Sigma}_{0}+\boldsymbol{\Sigma}_{1})\boldsymbol{w}} \]

决策树

寻找最优划分属性的过程。

三种停止条件:
(1) 当前结点包含的样本全属于同一类别,无需划分;
(2) 当前属性集为空, 或是所有样本在所有属性上取值相同,无法划分;
(3) 当前结点包含的样本集合为空,不能划分.

信息熵与信息增益

\(\mathrm{Ent}(D)=-\sum_{k=1}^{|y|}p_klog_2p_k\)

信息增益=划分前的信息熵-划分后的信息熵

选信息增益最大的属性即可

其他改进

增益率:信息增益对可取值数目较多的属性有所偏好,故修正公式为
\(\begin{aligned}&\mathrm{Gain_ratio}(D,a)=\frac{\mathrm{Gain}(D,a)}{\mathrm{IV}(a)}\\&\text{其中}\quad\mathrm{IV}(a)=-\sum_{v=1}^V\frac{|D^v|}{|D|}\mathrm{log}_2\frac{|D^v|}{|D|}\end{aligned}\)

简单说就是,属性可能取值越多,属性集的熵越大,增益率越小。

增益率启发式:再从中选取增益率最高的(防止对取值较少属性偏好)

基尼指数:\(\mathrm{Gini}(D)=\sum_{k=1}^{|y|}\sum_{{k^{\prime}\neq k}}p_{k}p_{{k^{\prime}}}=1-\sum_{k=1}^{|y|}p_k^2.\)
反映了从𝐷中随机抽取两个样例,其类别标记不一致的概率
基尼指数可以做信息熵的平替。

剪枝

预剪枝 (pre-pruning) : 提前终止某些分支的生长【生成树的时候就干好了】
后剪枝 (post-pruning): 生成一棵完全树,再“回头”剪枝【具体来说就是从每个叶子节点开始回溯】

时间开销:
• 预剪枝:测试时间开销降低,训练时间开销降低(不用完整生成一棵树了)
• 后剪枝:测试时间开销降低,训练时间开销增加(要完整生成后再剪枝,时间更长)
过/欠拟合风险:
• 预剪枝:过拟合风险降低,欠拟合风险增加(毕竟丢掉了一些信息)
• 后剪枝:过拟合风险降低,欠拟合风险基本不变

泛化性能:后剪枝 通常优于 预剪枝

连续值处理

二分法,𝑛个属性值可形成𝑛 − 1个候选划分

缺失值处理

样本赋权,权重划分的思路。
这个计算要会哦!
解决两个问题:如何选择划分属性、如何对缺失属性的样例进行预测。
问题一的解决:

\[\begin{aligned}\operatorname{Gain}(D,a)&=\rho\times\operatorname{Gain}(\tilde{D},a)\\&=\rho\times\left(\operatorname{Ent}\left(\tilde{D}\right)-\sum_{v=1}^V\tilde{r}_v\operatorname{Ent}\left(\tilde{D}^v\right)\right)\end{aligned} \]

只看在我这个属性上不缺值的训练样本即可!只不过最后要乘以一个无缺失值比例。

问题二的解决:样本按不同概率分给不同子节点,概率是由频率估计得到的。

多变量决策树

例如“斜决策树” (oblique decision tree) 不是为每个非叶结点寻找最优划分属性,
而是建立一个线性分类器

K近邻(KNN)

分类

特殊情况:1NN,设最近邻为z
\(P(err)=1-\sum_{c\in y}P(c|x)P(c|z)\)
假设样本独立同分布,\(c^*=\underset{c\in y}{\operatorname*{argmax}}P(c|x)\)

\(\begin{aligned}P(err)\simeq1-\sum_{c\in y}P^2(c|x)\leq1-P^2(c^*|x) =(1+P(c^*|x))(1-P(c^*|x)) \leq2\times(1-P(c^*|x))\end{aligned}\)
结论:最近邻分类器虽然简单,但它的泛化错误率不超过贝叶斯分类器的错误率两倍!

回归

选择k个最近的训练样本,将距离值的倒数作为权重,然后将𝑘个近邻的标签值加权平均,作为预测值

懒惰学习与急切学习

kNN是“懒惰学习”,训练阶段仅仅是把样本保存起来,时间开销为零,收到测试样本后再进行处理。
SVM、CNN等是“急切学习”,在训练阶段就对样本进行处理,尝试在训练期间构造 一个通用的,与输入无关的目标函数。

KNN优缺点

优点:精度高、对异常值不敏感、无数据输入假定
缺点:计算复杂度高、空间复杂度高

时间复杂度:𝑂(𝑛𝑑 + 𝑛log𝑘),其中d是数据维数。
【注:对前k个数,建立最大堆,对于后面N-k个数,依次和最大堆的最大数比较,如果小于最大数,则替换最大数,并重新建立最大堆。时间复杂度为O(N*logk)。】
空间复杂度:𝑂(𝑛𝑑)

降低近邻计算:维诺图

很容易理解。。。本质还是1NN啊。只不过把训练和测试代价分开了。
2维数据时间复杂度: 𝑂(𝑛log 𝑛)用来计算维诺图;查询(测试)时间为 𝑂(log 𝑛),进行点的定位。
𝑑维数据:得使用二叉空间分割树(binary space partition tree , BSP tree) 进行点的定位,但是时间估计比较难,难以量化。

降低近邻计算:KD树

KD树是一种对K维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。
KD树是二叉树,表示对K维空间的一个划分(partition)。
构造KD树相当于不断地用垂直于坐标轴的超平面将K维空间切分,构成一系列的K维超矩形区域。
KD树的每个结点对应于一个K维超矩形区域。

构造过程:分别计算x,y方向上的方差,哪个大则按哪个方向分割,分割点为中位数。然后递归分割即可。

搜索过程:
从根结点开始,以递归的方式从树的顶端向下移动(二叉搜索,左小右大的那种)
当到达一个叶子结点,即得到最邻近的近似点,判断其是否为最优,并保存为“当前最优”
然后回溯,对整棵树进行递归,并对每个结点执行以下操作:
1.如果当前结点比“当前最优”更近,替换为新的“当前最优”。
2.判断分割平面的另一侧是否存在比“当前最优”更优的点。构造一个超球面,球心为查询点,半径为与当前最优的距离
a.如果超球面跟超平面相交,则有可能存在更优的点;按照相同的搜索过程,从当前结点向下移动到树的另一个分支以寻找更近的点
b.如果超球面跟超平面不相交,则沿着树继续往上走,当前结点的另一个分支则被排除
当算法为根结点完成整个过程时,算法结束

如果选用复杂度为𝑂(nlog𝑛)排序算法来找中位数,时间复杂度\(𝑂(𝑛log^2𝑛)\)
如果选用复杂度为\(𝑂(n)\)median of medians算法来找到中位数,时间复杂度\(𝑂(nlog 𝑛)\)
寻找最近邻的时间复杂度为: \(𝑂(log 𝑛)\)

降低近邻计算:降维

多维缩放 MDS, Multiple Dimensional Scaling

主成分分析 PCA, Principle Component Analysis

降低近邻计算:哈希

利用哈希函数把任意长度的输入映射为固定长度的输出

支持向量机(SVM)

线性支持向量机

一个点(样例)对应的“间隔”margin是其到分界超平面的垂直距离
SVM的目的是最大化最小margin
具有最小间隔的点称为支持向量(support vectors)

\(x\text{的margin是}\frac{|f(x)|}{\|w\|}=\frac{|w^Tx+b|}{\|w\|}\)

问题转化为\(\underset{\boldsymbol{w},b}{\operatorname*{argmax}}\left(\underset{\boldsymbol{i}}{\operatorname*{min}}\left(\frac{y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)}{\|\boldsymbol{w}\|}\right)\right)\)

\(\underset{\boldsymbol{w},b}{\operatorname*{argmax}}\left(\frac1{\|\boldsymbol{w}\|}\min_i(y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b))\right)\)

可进一步转化为

\[argmin_{w,b}\frac12w^Tw \]

\[s.t.y_i(w^Tx_i+b)\geq1,\forall i \]

拉格朗日乘子法。。。对偶问题。。。KKT条件。。。可转化为对偶问题:
image

\[w^\star=\sum_{i=1}^na_i^\star y_ix_i \]

\[b_i^\star=y_i-(w^\star)^Tx_i \]

\[b^\star=\frac1{\mathrm{n}}\sum_{a_i>0}b_i^\star \]

soft margin:允许少数点的Margin比1小

\[y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)\geq1\to y_i(\boldsymbol{w}^T\boldsymbol{x}_i+b)\geq1-\xi_i \]

问题转化为

\[\underset{\boldsymbol{w},\boldsymbol{b},\boldsymbol{\xi}}{\operatorname*{argmin}}\frac12\boldsymbol{w}^T\boldsymbol{w}+C\sum_{i=1}^n\xi_i \]

\[s.t.\quad y_i(w^Tx_i+b)\geq1-\xi_i \]

\[\xi\geq_i 0 \]

非线性支持向量机

特征空间映射:如果原始空间是有限维(属性数有限),那么一定存在一个高维特征空间使样本可分

核函数\(K(x,y)=\emptyset(x)^T\emptyset(y)\)

然后只需要在线性SVM的求解公式中稍加更改:
image
image
预测时,

\[w^T\phi(x)=\phi(x)^T\big(\sum_{i=1}^na_iy_i\phi(x_i)\big)=\sum_{i=1}^na_iy_iK(x,x_i) \]

多分类支持向量机

法1:\(C_n^2个\)分类器,然后结果投票

法2:设计𝐶个分类器,第𝑖个分类器用类𝑖做正类,把其他所有𝐶 − 1个类别的数据合并在一起做负类,每个新的分类器采用其实值输出,作为信心,取信心最大的那个类输出。

其他:可以直接解决多类问题,如Crammer-Singer方法、DAGSVM、ECOC(了解即可)

神经网络

MP神经元

输入、权值、激活函数、偏置单元(常数输入)

局限性:线性求和、单一输出值、时钟同步更新

激活函数

单位阶跃函数、sigmoid、ReLU

感知机

单层感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。也称为阈值逻辑单元(threshold logic unit)

感知机可以学习。对训练样例(x,y),若目前的感知机输出\(\hat{y}\),则做如下调整:

\[w_i\leftarrow w_i+\Delta w_i\:, \]

\[\Delta w_i=\eta(y-\hat{y})x_i\mathrm{~,} \]

可以证明若两类模式是线性可分的,即存在一个线性超平面能将它们分开,如图则感知机的学习过程一定会收敛(converge),否则感知机学习过程将会发生振荡(Huctuation)。

要会与/或/非的感知机模型!
用阶跃函数即可。
与:y=f(x1+x2-2)
或:y=f(x1+x2-0.5)
非:y=f(-0.6x+0.5)

多层感知机

多层网络:包含隐层的网络。

前馈网络:神经元之间不存在同层连接也不存在跨层连接。

隐层和输出层神经元亦称“功能单元”(functional unit)。

仅需一个包含足够多神经元的隐层, 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。

BP(error BackPropagation, 误差逆传播)算法

标准BP算法如下
【TODO】

标准BP算法vs. 累积BP算法

缓解过拟合的技巧策略:早停(验证集误差增大?误差变化低于设定值?)、正则化\(E=\lambda\dfrac{1}{m}\sum_{k=1}^mE_k+(1-\lambda)\sum_iw_i^2\)(偏好简单权值阈值)

局部极小

“跳出”局部极小的常见策略:
不同的初始参数
随机扰动
模拟退火
演化算法

张量

\(R^{2*3*4}\)是一个三阶张量,本质是一个24维数组

手工提取特征和深度特征提取有什么区别?

1.固定 vs 可学习的
2.难以设计 vs 黑盒
3.任务无关 vs 任务相关
4.低层特征 vs 学习层次表示和高级特征
5.需要专业知识 vs 专业解耦的
6.分离的 vs 端到端的

卷积模型参数的计算

看PPT,这个很重要!
image
全连接,1000*1000*1M=10^12
image
局部连接,1M*10*10=100M
image
参数共享,10*10*100=10000
如果我们的图像有三个通道,因为图像有三种基本颜色RGB。在这种情况下,我们在每个通道上使用相同的滤波器进行卷积运算,然后将它们相加以获得最终结果。

CNN

超参数:depth【Filter的个数】, stride【步幅】, zero-padding【填充】

不要管上一小节的参数计算了。。。
image

我们这里,输入三通道,Filter也要有三通道,这三个通道Filter的值是不同的!对应相乘相加,别忘了加上bias。
Filter又可以弄很多个,用于提取不同的特征。

池化Pooling/下采样Subsampling

全连接层(Fully-Connected Layer)

Dropout (Regularization)
一种对许多大的神经网络进行平均的有效方法,可以视为模型平均的一种形式。在最简单的情况下,每个神经单元都以固定的概率p保留,与其他单元无关。

深度学习技巧

数据增广(Data Augmentation)
预处理 (Pre-Processing)
初始化 (Initialization)
过滤器 (Filters)
池化大小(Pooling size)
学习率 (Learning rate)

经典网络架构

LeNet

AlexNet 用了ReLU, Dropout, 数据增强

VGG-16/19 加深,模块化设计

GoogleNet

ResNets 残差结构

Transformer

RNN
LSTM:解决RNN梯度消失/爆炸问题
Self-Attention
Position Embedding
...

Mamba

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

高斯分布

\[p(x)=\frac1{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \]

\[p_X(x_1,...,x_d)=\frac{\exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))}{\sqrt{(2\pi)^d|\Sigma|}} \]

GMM的概率密度函数

其实就是高斯分布的加权平均

\[\begin{aligned}p(x)&=\sum_{i=1}^N\alpha_iN(\boldsymbol{x};\boldsymbol{\mu}_i,\Sigma_i)\\&=\sum_{i=1}^N\frac{\alpha_i}{(2\pi)^{d/2}|\Sigma_i|^{1/2}}\exp\left(-\frac12(\boldsymbol{x}-\boldsymbol{\mu}_i)^T\Sigma_i^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_i)\right)\end{aligned} \]

最大似然估计(MLE, Maximum likelihood estimaton)来参数估计求解模型

单高斯模型中,参数估计很容易发现模型的均值方差就是样本的均值方差。

高斯混合模型中,
image

期望最大化算法(EM, Expectation Maximization algorithm)来参数估计求解模型

EM算法是一个迭代的方法,采用最大似然估计MLE对统计模型中的参数进行估计,特别是针对包含无法观测隐变量的模型。
通常引入隐含变量后会有两个参数,EM算法首先会固定其中的第一个参数,然后使用MLE计算第二个参数;接着通过固定第二个参数,再使用MLE估测第一个参数,依次迭代,直至收敛到局部最优解。

贝叶斯分类器

贝叶斯决策论:
\(R(c_i|x)=\sum_{j=1}^N\lambda_{ij}P(c_j|x)\)
\(h^{*}(x)=\underset{c\in y}{\operatorname*{argmin}}R(c|x)\)

朴素贝叶斯分类器

\[P(c|x)=\frac{P(x,c)}{P(x)} \]

主要问题在估计似然\(P(x|c)\)
朴素贝叶斯基本思路:假设属性相互独立
西瓜分类的计算要会!!!

拉普拉斯修正

若某个属性值在训练集中没有与某个类同时出现过,则直接计算会出现问题,因为概率连乘将“抹去”其他属性提供的信息。(算似然的时候某一项是0了)
这个问题很好解决,我们先给每个属性分一个样本就行了。

实际使用时

  • 若任务对预测速度要求较高,则对给定的训练集,可将朴素贝叶斯分类器涉及的所有概率估值事先计算好存储起来,这样在进行预测时只需要 “查表” 即可进行判别;

  • 若任务数据更替频繁,则可采用 “懒惰学习” (lazy learning) 方式,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值;

  • 若数据不断增加,则可在现有估值的基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习。

半朴素贝叶斯分类器

适当考虑一部分属性间的相互依赖信息。

最常用策略:独依赖估计(One-Dependent Estimator, ODE),假设每个属性类别之外最多仅依赖一个其他属性——父属性。
常见方法:

  • SPODE,假设所有属性都依赖于同一属性,称为“超父”(Super-Parent),然后通过交叉验证等模型选择方法来确定超父属性。
  • TAN (Tree Augmented naïve Bayes),以属性间的条件“互信息”(mutual information)为边的权重,构建完全图,再利用最大带权生成树算法,仅保留强相关属性间的依赖性
    image

贝叶斯网

有向无环图(DAG, Directed Acyclic Graph)

三变量间的典型依赖关系非常重要!!!

https://blog.csdn.net/qq_34758157/article/details/127405600

道德图法!!!

距离度量学习

集成学习

Bias-Variance tradeoff 问题

\[Bias=E\left[\hat{f}(x)\right]-f(x) \]

\[Variance=E\left[(\hat{f}(x)-E[\hat{f}(x)])^2\right] \]

\[Err(x)=Bias^2+Variance+RandomError \]

集成学习分类

利用基学习器之间的依赖关系,依次生成
减小偏差bias

利用基学习器之间的独立关系,并行生成
减小方差variance

集成学习大体思路

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

还可以结合其他乱七八糟的策略:
数据层面
• 自助采样
• 序列采样
属性层面
• 随机选择部分属性(属性子集)【随机森林用到的技巧】
输出层面
• 输出标记随机翻转、随机改变样本标记
• 分类转回归
参数层面
• 算法模型参数的扰动

Bagging(Bootstrap aggregating)的大体思路

Step 1: 从原始样本集中进行B次自助采样,得到B个独立的训练子集。

Step 2: 对于每个训练子集,训练一个相同的个体学习器(如决策树、K近邻等)。

Step 3: 对于新样本,使用所有个体学习器进行预测,对于分类任务,通常采用多数投票或平均概率决定最终类别;对于回归任务,采用平均值作为集成模型的预测结果。

Bagging的代表算法:随机森林

【不光样本随机,选的属性也随机!】

从𝑁个训练用例(样本)bagging取样,得到训练集和测试集。
对于每一个结点,随机选择𝑘个属性特征(k通常为特征种数𝑑的均方根\(log_2𝑑\)个),根据这𝑘个特征,计算其最佳的分裂方式
每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用
以上过程做充分多次,以产生足够多的随机树

随机森林的特点:
缓解了维度灾难
可并行化
稳定性
差异性【废话】
训练和测试的划分不是必须的,因为构建每棵决策树时,总有30%的数据是没有采样的【废话】

Boosting的大体思路

这个涉及到概论里提到过的PAC理论
现在我们有:强可学习和弱可学习等价。因为我们可通过提升方法(Boosting)将弱学习器转为强学习器。

Boosting通过不断地调整每个弱学习器的权重,以及根据前一个学习器的错误来训练下一个学习器,最后将这些基学习器加权结合。

Boosting的代表算法:Adaptive Boost

Boosting Tree

GBDT(Gradient Boosting Decision Tree)

Stacking

Stacking先从初始数据集训练出初始学习器,然后“生成”一个新数据集 用于训练次级学习器(元学习器)
在这个新的数据集中,初始学习器的输出被当作样例输入特征,而初始样 本的标记仍被当作样例标记

posted @ 2024-06-18 00:37  藤君  阅读(56)  评论(0)    收藏  举报