机器学习复习
极速版机器学习
作者:哈利波特👑
1. 线性回归和逻辑回归
线性回归
建模:

目标函数(最小二乘法):

参数更新:


数据集形式:

梯度下降法:
- 简单容易实现
- 可能陷入局部最优
- 对参数尺度敏感(需要归一化)
为什么需要空间转换
因为线性回归模型是假设X和Y是线性的,但是现实中不一定所有都是线性的,所以进行空间转换,希望能更好的捕捉希望将这种非线性转换成线性关系。
了解偏差 误差 方差
- 偏差:总是低估或高估价格(预测值与真实值有系统性差异)。
- 误差:每次预测与实际房价的差异(具体的预测偏差)。
- 方差:不同训练集上的预测结果波动(模型的稳定性)。
- 机器学习中偏差、方差的理解与总结_机器学习 偏差 方差-CSDN博客


逻辑回归
逻辑回归就是在线性回归的基础上,增加了sigmoid函数,使得它的输出是 0~1 。

与线性回归差别
-
线性回归是预测连续值的(房价),逻辑回归是进行分类的。
-
线性回归要求X和Y是线性关系,逻辑回归没有要求。
-
线性回归要求因变量(Y)是连续的,逻辑回归要求Y是离散(标签)。
目标函数:

参数更新

为什么要增加正则项


提高分类模型的泛化能力。
2. 评判指标
看作业
3. PCA(主成分分析)
将数据从高维空间映射到低维空间,同时尽可能保留数据的主要特征(或信息)。非监督。
可以从最小化重构误差理解,或者从最大化方差理解。
-
最小化重构误差
PCA通过选择最重要的方向来表示数据,使得通过这些方向来重建原始数据时,重构误差最小。
-
最大化方差
通过将数据投影到这些方差最大的方向上,我们最大化了数据中保留的信息。
假设方向向量(主成分)是两两正交的。
- 这样就没有冗余信息,两两独立。
基本思想:PCA确实是通过寻找一组正交方向,然后将数据投影到这些方向上来实现降维的。

\alpha_i$$的取值是由下面推导出来的(可以理解成是X在方向向量上的投影):
方向向量是基于协方差矩阵特征值分解,找到特征值最大的几个向量作为方向向量。再将X投影到这些方向向量上进行降维。
因为特征值越大,代表这个方向上的方差越大,即信息越多。
换个角度想,PCA也可以用作提取特征。
**应用:**
- 图像压缩
- 降噪
- 提取特征(像人脸识别)
**缺陷:**
- 适合于线性数据,不适合非线性数据。(想想看建模)
- 计算协方差矩阵对于尺度敏感,需要归一化。
- 需要大量的矩阵运算和特征值分解。
推导过程:
**从最小化重构误差的角度理解 PCA**
* 高维空间中的正交方向是一组两两正交的(单位)向量组,**正交可以表示成向量内积等于 0。**
* **定理:在给定 M 个标准正交方向 $u_i$ 下,与数据样本 $x$ 的最佳近似为:$\hat {\mathbf x} = \alpha_1 \mathbf u_1 + \alpha_2 \mathbf u_2 +...+\alpha_M \mathbf u_M$, $\alpha_i = \mathbf u_i^T\mathbf x$(系数 $\alpha_i$ 可以算出,但最佳方向还未确定)。**
* 目标:确定最佳方向
* 给定数据 $\{\mathbf x^{(n)}\}_{n=1}^N \in \mathbb R^D$ ,找出最能代表原始数据的正交方向 $u_i$,即 $\mathbf x^{(n)} \approx \sum_{i=1}^{M}\alpha_i^{(n)}\mathbf u_i$
* 目标可以表述为最小化数据 $\mathbf x^{(n)}$与其近似值 $\hat{\mathbf x}^{(n)} = \sum_{i=1}^{M}\alpha_i^{(n)}\mathbf u_i$ 之间的误差
* 推导步骤:
1. 中心化样本:$\mathbf x^{(n)} - \overline {\mathbf x} = \mathbf x^{(n)} - \frac1N\sum_{n=1}^N\mathbf x^{(n)}$
2. 描述目标问题:
E = \frac1N\sum_{n=1}^N||(\mathbf x^{(n)}-\overline{\mathbf x})-\hat{\mathbf x}^{(n)}||^2 \\
\alpha_I^{(n)} = \mathbf u_i^T(\mathbf x^{(n)}-\overline{\mathbf x})
$$
-
将 $ \hat{\mathbf x}^{(n)}$ 的表达式代入 ,并将平方展开,再将 的表达式代入展开后的 得到:
我们令 , 的前半部分是常数
-
将 写成矩阵形式:
其中:, 是 Frobenius范数,定义为矩阵各项元素的绝对值平方的总和开根。
-
问题转换:
-
在 的情况下,使用拉格朗日方法,可以看出 应该是 最大特征值对应的特征向量
-
在 的情况下(推导同样使用拉格朗日方法,注意利用正交的条件), 就是 最大的 个特征值对应的特征向量
-
-
从最大化方差的角度理解 PCA:最大化方差等于尽可能保留原始数据的信息
-
推导过程:
-
以 为例:
-
对于第一个方向 ,我们希望投影到 方 向上的数据方差,即 ,是最大的。
-
方差的表达式:
-
同样可以推出 应该是 最大特征值对应的特征向量
-
-
在 的情况下(推导同样使用拉格朗日方法,注意利用正交的条件), 就是 最大的 个特征值对应的特征向量
-
-
4. 自动编码器 AE
是一种无监督机器学习算法。
基本上分为编码和解码过程:
- 编码:将输入通过一个编码器(通常是一个神经网络)来转换为低维的隐层表示。编码后的结果可以理解成输入数据的关键信息或者是一个隐含信息(隐含层)。
- 解码:将隐层表示通过解码器进行重构,希望能恢复出原数据。目标是让解码器输出尽可能接近输入数据。

目标函数:

PCA与自动编码器的关系:
- 都是无监督的、降维、提取数据特征。
- 并且可以从降维后的数据尽量恢复出原始数据。
- PCA只能处理线性数据,AE可以处理非线性数据。
自动编码器的变种算法:
- 去噪自动编码器(Denoising Autoencoder, DAE): 输入数据中加入噪声,训练网络恢复原始的无噪声数据。这种方法可以帮助网络学习到更加鲁棒的特征。
- 变分自动编码器(Variational Autoencoder, VAE): 变分自动编码器是一种生成模型,它通过对潜在变量的概率分布进行建模来生成新的数据样本。
应用:
- 去噪
- 生成图片(VAE)
5. BP神经网络
主要作用是通过计算误差并将其传播回网络,从而更新神经网络的权重,使得网络的输出更接近目标值。
激活函数:
激活函数的作用是使得神经网络可以处理非线性的数据(想想看感知机处理异或)
- sigmoid好处是跟概率一样都是0到1,导数很好求,但是可能会梯度消失。
- Relu好处是不会梯度消失,并且计算更快,但是可能导致部分神经元(死神经元)一直不参与运算。


前向和反向传播公式推导一下。
基于动量的梯度下降法:
很像下降之后还有一个惯性,利用了更多的历史信息(对比经典梯度下降)。

应用:
- 图像分类
- 语音识别
6. 聚类
分为软聚类和硬聚类。
软聚类表示数据点可以属于多个类,利用概率来表示。
硬聚类表示数据点只能属于一个类。
模糊C-means 是一个软聚类算法。

- Wij 表示数据点Xi属于聚类Cj的概率。
- 先固定Wij,来更新聚类中心点Cj。
- 再固定Cj,来更新权重Wij。
高斯混合聚类
一种基于概率的算法,是软聚类。
GMM假设数据是由若干个高斯分布混合而成,每个高斯分布代表一个簇。

使用期望最大化(EM)算法进行优化:
-
GMM通常使用期望最大化(EM)算法来估计模型参数。EM算法由两部分组成:
-
E步(期望步):计算每个数据点属于每个高斯分布的后验概率(责任值)。
-
M步(最大化步):基于责任值更新每个高斯分布的参数(均值、协方差和权重)。
-
K Means聚类
目的,终止条件,一定最优吗,kmeans有哪几步,优缺点,乘积聚类。
无监督、硬聚类算法。
**聚类的目的:**提高类内的相似性,减少类间相似性。
Kmeans 流程如下:
- 一开始随机初始化k个中心点。
- 计算每个数据点到每个中心点的距离,选择最小的中心点的类作为数据点的类。
- 计算类间位置均值,将该均值调整为该类新的中心点。
- 重复上述步骤2 3,直到收敛。
Kmeans目标函数:

不一定最优:
- 因为Kmeans很吃初始点的位置,如果选择的不好对最后的分类结果影响很大。
- 并且如果数据点的分布很复杂,Kmeans效果也不太好,Kmeans假设簇是圆形的。
- K值的取值也是一个关键因素。
**改进:**选择中心位置的时候,先假设选择前k个中心点,剩下的中心点距离前k个中心点越远越好。
算法收敛的证明:
因为数据点到最优中心点的距离总和有下界,并且每次随着算法运行距离总和都会下降,最终收敛。
优缺点:
- 简单易懂
- 适合用于数据分布为球状的时候
- 对初始中心位置敏感
- 不能处理复杂形状的数据
- K值的取值也是一个关键因素。(选择肘部点)
单链接层次聚类
主要步骤:
- 初始化:每个数据点都看作一个单独的簇。
- 计算距离:计算所有簇之间的距离,初始时簇间的距离是簇内点之间的距离。对于每一对簇,计算簇间的距离。
- 合并簇:选择距离最小的两个簇进行合并,形成一个新的簇。
- 更新距离:更新新合并簇与其他簇之间的距离。使用单链接方法,即新的簇与其他簇之间的距离是新簇与其他簇之间点对距离的最小值。
- 重复:重复步骤3和步骤4,直到所有数据点都被合并成一个簇为止,或者满足某个停止条件(例如,设定的簇数)。
适用于对簇的形状没有严格要求的情况,尤其是当簇的形状不规则
7. EM算法(高斯混合聚类)
最大似然函数是根据X反推参数zeta,在高斯混合聚类中,参数就是聚类结果。
适合有观察变量和隐变量使用的算法。
为什么不是全局最优:
- EM算法的每一步(E步和M步)都是为了局部改进对数似然值,缺乏探索整个参数空间的能力。换句话说,它是一个贪心的算法,每次优化只考虑当前步骤的改进,而不是全局视角。
- 并且对初始参数敏感,如果设置的不好效果差很多。
- 所以容易陷入局部最优解。
- 试多几次。
介绍:

-
无监督分类问题,有点像 K-Means
-
问题的一般形式:给定一个联合分布 (在概率模型的参数 下, 的联合概率分布), 是观测变量, 是隐变量(Latent variable),目标是最大化似然分布:,满足 $ p(x;\theta) = \sum_z p(x,z;\theta)$。即我们需要根据联合概率分布函数 ,优化边缘概率分布函数
-
EM 算法(期望最大化算法)算法步骤
-
E 步:评估期望(下标所示分布下,括号内的随机变量的期望)
- 假定参数已知,计算此时隐变量的后验概率(求出每一个样本属于类别的期望值)
-
M 步:更新参数
- 带入隐变量的后验概率,最大化样本分布的对数似然函数,求解相应的参数(通过当前数据求出最可能的分布参数)
-
参数说明:
-
:隐变量的后验分布(条件概率)
-
:联合分布的对数 关于后验概率分布 的期望
条件概率:;
全概率公式:
-
-
-
EM 的证明:证明算法可以保证每一步的 likelihood 增加
- 其中: 是 KL 散度,用于衡量两个分布的距离
-
训练高斯混合模型的例子
-
混合高斯分布:
-
可以将其表示为联合分布的边缘分布(?)
其中, 服从分类分布,参数为
分类分布:,其中
-
-
E 步:
-
后验分布:其中 指第 个元素为 1 的独热向量
-
对数联合分布:就直接在混合高斯分布上加 就行了
-
计算期望:
其中, 用后验分布的式子代替(将混合高斯分布代入 ,参数加上标)
最后代入到 :
-
将 代入 :
是常量( 部分)
-
最后,考虑所有样本:
-
-
M 步:通过对 求导并将它们设为零,得到最佳 :
其中:,分配给第 类的样本数
-
-
训练高斯混合模型的EM算法总结:
-
给定当前估算值:,更新 :
-
跟据 ,更新
-
8. 集成模型
**动机:**希望可以利用多个弱分类器来组合出一个强分类器,这些弱分类器可能在数据集的某些地方表现很好,如果将在不同部分上表现良好的弱分类器结合在一起,就可以得到一个强分类器。
- 例如有些分类器比较会识别猫,有些比较会识别狗。
结合的方法:
- 使用投票机制(无权重),即利用多数赞成来决定分类器的结果。bagging
- 使用加权平均投票,即表现好的分类器获得更大的权重。boosting
目的:
- 提高模型准确率
- 增加鲁棒性
- 减少过拟合和欠拟合
- 增加模型的多样性
Bagging
基本流程如下:
- 采用bootstrap方法对数据集采样(有放回采样)K个数据集。
- 根据这K个数据集训练出K个决策树。
- 最终使用大多数投票机制将这K个决策树合并为一个决策树(强分类器)。
Boosting
思想:如果样本A分错了,则下次采样到样本A的几率上升,很像错题本一样。
- **弱分类器创建:**重复执行以下步骤:识别被错误分类的例子,重新训练分类器,对错误分类的例子给予更多的权重 。
- 弱分类器合并:将各分类器的预测结果进行加权平均。
Adaboost算法流程如下:
分类器准确率越高,权重越高。
-
迭代:计算第一个分类器 上的错误率,并为此分类器赋予权值 。最开始的时候,每一个样本的权重都是一样的,而现在需要将被错误分类的样本的权重以的倍率增强,被正确分类的样本的权重以的倍率减弱,不断迭代计算。
-
结合:每个弱分类器的输出乘以权重后加和做为最终输出。

无监督集成学习的挑战
例如考虑聚类,可能不同弱分类器分的聚类结果有不同的意思。
解决方法:
-
硬对应:标签重命名和投票。
-
软对应:软对应的思想是通过优化多个聚类结果之间的对应关系,找到一个共识聚类,使得每个数据点的归属在所有聚类中尽量一致。
成员矩阵M的元素表示数据点与类别的归属关系。
每个 Sj 矩阵是一个 n×n 的矩阵,记录了数据点之间的对应关系。

9. Knn
这是个分类算法。
- 已经有一批有标签的数据了。
- 然后再输入一批没有标签的数据。
- 选取没有标签的数据的前k个最近邻居,统计它们的标签,出现最多的标签成为这个数据的标签。
计算距离公式
利用欧拉距离。

分类结果受什么影响
- 受到K值大小影响,如果k太小,容易受到噪声影响;如果k太大,则性能会下降,因为可能包括其他类别的邻居了。
- 受原本有标签的样本数量影响,如果样本数量太小了,效果也不好。
- 需要对数据点进行归一化,因为需要计算距离,需要每个维度能表示的范围一致,避免被某个维度支配了。
如何确定k值
-
k折交叉验证:
将数据集划分为k等分,⼀份为测试集,其他为训练集,计算k次测试集上的正确率的平均值。⽐较knn不同的参数的k折交叉验证的结果,选取效果最好的。
优缺点
- 是懒惰算法,无需训练模型,可以适合动态数据。
- 原理简单,易实现。
- 对多分类问题很适合。
- 计算代价大,需要计算距离。
- k值选取需要谨慎。
10. 推荐系统
目的:目的是为了向用户推荐相关项,项可以是未看过的电影,网站或者是未买过的物品。推荐系统为客户实现一种个性化的推荐。
给定用户集合和项的集合,推出用户对项打分的集合。推荐系统可以总结为以下模型:
其中, 是用户的集合, 是项的集合, 是用户对项评分的集合,并且是关于项的有序集。
-
推荐系统问题关键问题:如何为矩阵收集已知的评级,如何从已知的评级中推断未知的评级,如何评估推断的好坏。
-
冷启动问题:项没有被评分,用户的评分记录为空。
推荐系统有有三种实现方式:协同(需要打分,冷启动问题,相似用户或者相似商品)、基于内容特征(基于内容的特征,无需依赖其他用户,避免冷启动,但是比较吃用户的历史资料)、基于知识(无冷启动问题,难获得知识)。
三种实现的优缺点:
-
协同:需要进行打分,需要一个打分矩阵,容易有冷启动问题(对于基于用户的协同滤波算法,需要积累足够多的用户,并且用户有一定评分时才能找到一个用户的相似用户),主要思想是基于用户和商品的相似性来进行推荐,即假设用户A和用户B相似度很高,则推荐系统会认为它们喜欢的商品很接近,容易发现用户潜在的兴趣。不需要提取商品的特征,只依赖于用户的打分。有首评者问题,如果一个商品被打分的次数太少,那么也不会进行推荐;会有流行性传播的问题,一直推荐最近流行的商品,可能有用户不喜欢。
-
基于内容特征:注重于商品的特征,不需要依靠其他用户(无用户冷启动),可以实现比较精准的推荐,但是吃用户的历史资料并且难以获得商品的特征。如:一个人很喜欢看科幻电影,所以可以推荐科幻的书本给他。难以发现用户潜在的特征。
-
混合方法:可以利用加权平均组合协同和基于内容特征的推荐系统。例如将基于内容特征的特性加入到一个协同推荐系统中,当遇到用户冷启动(即用户刚刚打开网站),此时可以利用基于内容特征的推荐方法(利用用户的个人信息)为它推荐商品。
例子:电影推荐系统,一个新用户协同推荐系统无法为他推荐电影,但是可以基于内容特征推荐系统根据这个新用户的年龄和性别对他进行推荐电影
物品-物品协同过滤方法和基于内容的推荐方法很相似:这两者都通过评估物品之间的相似性来进行推荐。然而,为什么协同过滤方法没有物品特征选择的问题呢?
这个问题的意思是,物品-物品协同过滤和基于内容的方法在推荐逻辑上看起来有相似之处:它们都评估物品之间的相似性,然后推荐相似的物品。但与基于内容的方法需要选择合适的物品特征来进行比较不同,协同过滤方法则是基于用户的行为数据来计算物品之间的相似性,完全不需要考虑物品的具体特征。因此,协同过滤方法不受特征选择的困扰。
-
协同
-
基于用户的协同
思想:用户A和用户B如果对于过往的项的评分很接近,那么它们的喜好和兴趣是接近的。推荐系统为用户A提供一些与用户A相似度高的用户B的商品。
给定一个打分矩阵,计算用户a和用户b的相似度:
根据用户之间的相似性,可以预测用户对于这个项的打分是多少:
-
基于商品的协同
思想:如果用户喜欢商品A同时也喜欢商品B,那么喜欢商品A的用户也很可能喜欢商品B。
计算商品之间的相似度:
-
对推荐系统的推荐进行评判的指标有:召回率,准确率,F1评判指标,均方根误差。

- 记得看看基于内容的。
11. 决策树
处理分类和回归问题,有监督学习算法。
基本思想:对属性进行逐层划分,每次划分将数据分割成不同的子集,以实现对目标的分类预测。
学习目的:为了实现一个泛化能力强的决策树。
决策树建立流程如下:
- 根据算法选择 “最优属性” 。
- 根据最优属性划分数据集。
- 不断重复上述两个步骤,直到数据集内的数据都是同一类的。
- 进行剪枝。
关键点在于如何选择最优属性进行划分。
- 希望能选择一个属性,划分完之后的数据集子集尽量都属于同一个类别。
有三种选择最优属性的判断方法:信息熵、信息增益、基尼指数。
ID3算法:使用信息增益选择测试属性。

信息增益倾向于取值较多的特征,因此我们对信息增益归⼀化(就是除以原本数据集D的熵),引入增益率:


不过还存在的问题是,它更倾向于取值数目比较少的属性 。
启发式方法:⼀种启发式方法是结合二者,先从候选划分属性中找出信息增益高于平均水平的属性,再从中选取增益率最高的。
CART:使用gini指标进⾏属性选择
Gini值:反映了从D中随机抽取两个样本,其类别标记不一致的概率,因此Gini指标越小,代表这样分类越好。

决策树容易有过拟合问题:
-
预剪枝:在模型构建过程中对模型进⾏剪枝
在决策树⽣成过程中,对每个结点在划分前进⾏验证集的估计,如果划分结点对泛化能⼒不带来提 升,则停⽌划分并将当前结点记为叶结点。
带来了欠拟合的风险。
-
后剪枝:构建完之后再进⾏剪枝
后剪枝:先从训练集⽣成⼀棵完整的决策树,然后⾃底向上地对非叶结点进⾏考察,若将该结点对应的⼦树替换为叶结点能带来泛化性能提升则更换。
泛化能力好,但是开销比预剪枝要大。
12. 支持向量机
目的:在空间中找出一个超平面,使得分类效果最好。找寻超平面的目标是最大化类内距离超平面最近的点(支持向量)的距离。
距离超平面最近的数据点成为支持向量,因为超平面是根据它们而选择的。

软间隔:如果数据集不是线性可分的,可以增加一部分松弛变量,使得模型允许一些分类错误。
- 其实我觉得可以把它想象成一个正则项。


核函数:因为支持向量机只能处理线性可分的数据,对于线性不可分的数据集可以使用核函数进行升维,升维度之后可能数据集就会可分了。
直接定义数据在高维空间的内积为核函数,不需要定义如何转换到高维空间。
记得高斯核。

优缺点:
-
能够处理高维分类
-
能处理非线性可分数据(经过核函数)
-
只依赖支持向量(一小部分数据集)
-
鲁棒性好
-
计算复杂度高
-
无法处理多分类问题