机器学习 -> Machine Learning (I)

1 机器学习概述

1.1 定义及应用领域

机器学习是一种让计算机通过经验学习并对输入数据做出决策或预测的方法. 它是人工智能的一个重要分支, 已广泛应用于各种领域, 如自然语言处理, 计算机视觉, 推荐系统, 医疗诊断, 金融风险预测等.

1.2 机器学习与人工智能, 深度学习的关系

  • 人工智能是一种研究和实现让计算机具有人类智能的技术, 旨在使计算机能够理解, 推理, 学习, 计划和感知等.

  • 机器学习是实现人工智能的关键方法之一, 通过让计算机从数据中学习知识和规律, 以实现对未知数据的预测和决策.

  • 深度学习是机器学习的一个子领域, 主要基于神经网络和层次化表征学习, 尤其是在处理大规模高维数据方面具有显著优势.

1.3 机器学习的分类

  • 监督学习: 学习任务是在给定输入输出对的数据集上训练模型, 以便对新的输入进行预测. 监督学习包括回归和分类任务.

  • 无监督学习: 学习任务是在无标签数据集上训练模型, 以便发现数据的内在结构或模式. 无监督学习包括聚类, 降维和关联规则挖掘等任务.

  • 半监督学习: 学习任务是在部分标签数据和大量无标签数据的数据集上训练模型, 充分利用无标签数据的信息来提高模型的性能. 半监督学习是监督学习和无监督学习的结合.

  • 强化学习: 学习任务是通过智能体与环境的交互, 学习在不同状态下采取的最优动作以达到最大累积奖励. 强化学习不依赖于预先给定的输入输出对, 而是通过试错和反馈来进行学习.

2 数学部分

2.1 线性代数

2.1.1 向量和矩阵

向量是一维或多维的数字数组, 通常用于表示空间中的点或方向. 默认向量是列向量. 矩阵是二维的数字数组, 通常用于表示线性变换或系统的参数. 矩阵满足结合律.

2.1.2 基本运算与初等变换

  1. 加法

如果 \(A\)\(B\) 是两个大小为 \(m\times n\) 的矩阵, 那么它们的和 \(C=A+B\) 计算如下:

\[C_{ij}=A_{ij}+B_{ij}, \quad \forall i=1,2,\cdots,m;j=1,2,\cdots,n \]

其中 \(C_{ij}\), \(A_{ij}\)\(B_{ij}\) 分别是矩阵 \(C\), \(A\)\(B\) 的元素.

  1. 乘法

如果 \(A\) 是大小为 \(m\times n\) 的矩阵, \(B\) 是大小为 \(n\times p\) 的矩阵, 那么它们的乘积 \(C = AB\) 计算如下:

\[C_{ij}=\sum_{k=1}^n A_{ik}B_{kj},\quad \forall i=1,2,\cdots,m;j=1,2,\cdots,p \]

其中 \(C_{ij}\) 是矩阵 \(C\) 的元素.

我们将很常见 \(Y=XW\) 以及 \(y_i=w^Tx_i\) 这种写法.

  1. 转置

如果 \(A\) 是大小为 \(m\times n\) 的矩阵, 那么它的转置矩阵 \(A^T\) 计算如下:

\[(A^T)_{ij}=A_{ji},\quad \forall i=1,2,\cdots,n;j=1,2,\cdots,m \]

其中 \((A^T)_{ij}\)\(A_{ji}\) 分别是矩阵 \(A^T\)\(A\) 的元素.

我们将很常见转置后的乘法:

\[(A^TB)_{ij}=\sum_{k=1}^n A_{ki}B_{kj} \]

  1. 逆矩阵

如果 \(A\) 是一个可逆的 \(n\times n\) 方阵, 那么它的逆矩阵 \(A^{-1}\) 满足以下条件:

\[AA^{-1}=A^{-1}A=I \]

其中 \(I\)\(n\times n\) 的单位矩阵. 只有当矩阵 \(A\) 是方阵并且其行列式非零时, 逆矩阵才存在.

  1. 求导

这里的求导指的是实值标量函数对向量或矩阵变元求导.

如果是一个向量变元 \(x\), 那么

\[\begin{aligned} &\frac{\partial (c_1f(x)+c_2g(x))}{\partial x}=c_1\frac{\partial f(x)}{\partial x}+c_2\frac{g(x)}{\partial x}\\ &\frac{\partial (f(x)g(x))}{\partial x}=\frac{f(x)}{\partial x}g(x)+f(x)\frac{g(x)}{\partial x}\\ &\frac{\partial (x^T a)}{\partial x}=\frac{\partial (a^T x)}{\partial x}=a\\ &\frac{\partial(x^T x)}{\partial x}=2x\\ &\frac{\partial (x^TAx)}{\partial x}=Ax+A^Tx\\ &\frac{\partial (a^T x x^T b)}{\partial x}=ab^Tx+ba^Tx \end{aligned} \]

证明时按照分量证明即可。

简短的证明

\[\begin{aligned} \frac{\partial (a^T x x^T b)}{\partial x_k}=&\frac{\partial}{\partial x_k}\left(\sum_{i=1}^n\sum_{j=1}^n a_ib_jx_ix_j\right)\\ =&\sum_{i=1}^n a_ib_kx_i\frac{\partial}{\partial x_k}x_k+\sum_{j=1}^n a_kb_jx_j\frac{\partial}{\partial x_k}x_k\\ =&b_k\sum_{i=1}^n a_ix_i+a_k\sum_{j=1}^n b_jx_j\\ =&b_ka^Tx+a_kb^Tx \end{aligned} \]

如果是一个矩阵变元 \(X\), 那么

\[\begin{aligned} &\frac{\partial (c_1f(X)+c_2g(X))}{\partial X}=c_1\frac{\partial f(X)}{\partial X}+c_2\frac{g(X)}{\partial X}\\ &\frac{\partial (f(X)g(X))}{\partial X}=\frac{f(X)}{\partial X}g(X)+f(X)\frac{g(X)}{\partial X}\\ &\frac{\partial (a^TXb)}{\partial X}=ab^T\\ &\frac{\partial (a^TX^Tb)}{\partial X}=ba^T\\ &\frac{\partial (a^TXX^Tb)}{\partial X}=ab^TX+ba^TX\\ &\frac{\partial (a^TX^TXb)}{\partial X}=Xba^T+Xab^T \end{aligned} \]

简短的证明

\[\begin{aligned} \frac{\partial (a^TX^Tb)}{\partial X_{mn}}=&\frac{\partial}{\partial X_{mn}}\left(\sum_{i=1}^n\left(\sum_{k=1}^n a_k x_{ik}\right)b_i\right)\\ =&\frac{\partial}{\partial X_{mn}}(a_nx_{mn}b_m)\\ =&a_nb_m \end{aligned} \]

2.1.3 线性相关性

  1. 方程组的解

对于形如 \(Ax = 0\) 的齐次线性方程组, 这个方程组总是有至少一个解, 即零解 \(x = 0\). 如果 \(A\) 的列向量线性相关, 那么方程组有非零解; 如果 \(A\) 的列向量线性无关, 那么方程组只有零解.

对于形如 \(Ax = b\) 的非齐次线性方程组, 如果 \(b\) 可以被 \(A\) 的列向量线性组合表示, 那么方程组有解; 如果不能, 那么方程组无解. 如果 \(A\) 的列向量线性相关, 并且 \(b\) 可以被 \(A\) 的列向量线性组合表示, 那么方程组有无穷多个解; 如果 \(A\) 的列向量线性无关, 并且 \(b\) 可以被 \(A\) 的列向量线性组合表示, 那么方程组有唯一解.

  1. 行列式

矩阵的行列式可以被解释为其列向量所构成的体积. 对于一个 \(n\) 维矩阵, 它的行列式就是其 \(n\) 个列向量所张成的 \(n\) 维平行体的体积. 如果矩阵的列向量是线性相关的, 这意味着至少有一个列向量可以被其他列向量的线性组合表示. 这就相当于在一个 \(n\) 维空间中, 我们实际上只有少于 \(n\) 个独立的方向, 所以列向量所张成的平行体将会塌陷, 其体积为 \(0\). 因此, 如果一个矩阵的列向量是线性相关的, 那么它的行列式就为 \(0\).

如果矩阵的秩等于其列数 (或行数), 那么这个矩阵的列向量 (或行向量) 是线性无关的; 反之, 如果秩小于列数 (或行数), 那么列向量 (或行向量) 就是线性相关的.

2.1.4 特征向量

矩阵乘法可以被看作是一个线性变换, 给定一个向量, 当我们用一个矩阵与它相乘时, 我们实际上是在对这个向量进行变换. 在这样的变换中, 大部分向量的方向都会改变. 但是, 有些特殊的向量在变换后的方向仍然保持不变, 只是被拉伸或压缩了, 这些特殊的向量被称为 "特征向量".

给定一个 \(n\times n\) 的矩阵 \(A\), 非零向量 \(v\)\(A\) 的一个特征向量, 当且仅当存在标量 \(\lambda\) (特征值) 满足以下等式

\[Av = \lambda v \]

这个等式表示, 矩阵 \(A\) 作用在特征向量 \(v\) 上, 结果仍然是 \(v\) 本身, 只是被伸缩了一个特征值 \(\lambda\) 的比例.

移项得 \((A-\lambda I)v=0\), 应满足 \(\text{det}(A-\lambda I)=0\), 这样可以解出特征值, 从而得到特征向量.

2.1.5 正交性和标准化

  1. 正交性

在欧几里得空间中, 如果两个向量的点积为零, 那么称这两个向量正交. 这意味着两个向量在几何上是垂直的.

  1. 标准化

标准化是一种将向量转化为具有特定大小 (通常是单位长度) 的过程. 对于给定的非零向量 \(a\), 其标准化向量 \(a'\) 可以通过将 \(a\) 除以其自身的模长来得到, 即 \(\displaystyle{a' = \frac{a}{||a||}}\).

2.1.6 合同变换与相似变换

  1. 合同变换

如果存在一个非奇异矩阵 \(P\), 使得矩阵 \(A\)\(B\) 满足关系式 \(A=P^TBP\), 那么称矩阵 \(A\) 与矩阵 \(B\) 是合同的. 合同变换是一种保持向量的内积, 角度和长度不变的变换.

合同变换可以看作是对空间中的向量进行旋转和反射, 但不改变向量的长度和角度.

  1. 相似变换

如果存在一个可逆矩阵 \(P\), 使得矩阵 \(A\)\(B\) 满足关系式 \(A=P^{-1}BP\), 那么称矩阵 \(A\) 与矩阵 \(B\) 是相似的. 相似变换是一种保持向量的特征值不变的变换, 常用于矩阵对角化. 这种形式与特征向量的定义十分相似.

相似变换可以看作是对空间进行一次线性变换, 然后再进行一次逆变换. 在这个过程中, 特征值保持不变.

在矩阵对角化的过程中, 如果我们有一个矩阵 \(P\), 其列向量是 \(A\) 的所有特征向量, 那么 \(AP\) 就是一个新的矩阵, 其中每一列都是 \(A\) 作用于对应特征向量后的结果. 根据特征值和特征向量的定义, 这个结果就是原来的特征向量乘以对应的特征值. 因此 \(AP\) 是一个矩阵, 其每一列都是 \(P\) 的对应列乘以一个标量, 这正好是 \(P\) 和对角矩阵 \(D\) 的乘积, 即 \(AP=PD\).

2.1.7 奇异值分解

对于任意一个 \(m\times n\) 的矩阵 \(A\), 都可以进行奇异值分解. 它将矩阵 \(A\) 分解为三个矩阵的乘积:

\[A = U\Sigma V^T \]

其中:

\(U\) 是一个 \(m\times m\) 的正交矩阵, \(U\) 的列向量被称为左奇异向量, 它们是 \(AA^T\) 的特征向量.

\(Σ\) 是一个 \(m\times n\) 的对角矩阵, 对角线上的元素称为奇异值, 是 \(A^TA\) 的非零特征值的平方根, 且按从大到小排列.

\(V\) 是一个 \(n\times n\) 的正交矩阵, \(V\) 的列向量被称为右奇异向量, 它们是 \(A^TA\) 的特征向量.

2.2 概率论

2.2.1 条件概率

\[\begin{aligned} &P(A|B)=\dfrac{P(AB)}{P(B)}\\ &P(AB)=P(A)P(B|A)=P(A|B)P(B)\\ &P(A)=\sum P(A|B_i) P(B_i) \end{aligned} \]

2.2.2 数学期望

\[\begin{aligned} &E(X)=\sum_k x_kp_k\\ &E(X)=\int_{-\infty}^{+\infty} xf(x)\text dx\\ &E(Z)=\sum_i\sum_j g(x_i,y_j)p_{ij}\\ &E(Z)=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty} g(x,y)f(x,y) \text dx\text dy \end{aligned} \]

2.2.3 方差与相关系数

\[\begin{aligned} &D(X)=E(X-E(X))^2=E(X^2)-E^2(X)\\ &D(aX+bY)=a^2D(X)+b^2D(Y)+2ab\sigma(X,Y)\\ &\sigma(X,Y)=E((X-E(X))(Y-E(Y)))=E(XY)-E(X)E(Y)\\ &\sigma(X_1+X_2,Y)=\sigma(X_1,Y)+\sigma(X_2,Y) \end{aligned} \]

2.2.4 最大似然法

"似然" 的意思是在给定某个参数值时, 观察到某组数据的概率或者说 "可能性".

最大似然法的核心思想是在给定的模型结构和观测到的数据下, 选择哪些参数使得我们观测到的数据出现的 "可能性" 最大.

\[L(\hat{\theta})=\text{max}L(\theta)=\text{max}\prod_{i=1}^n p(x_i,\theta) \]

2.2.5 贝叶斯公式

贝叶斯公式是一种计算 "后验概率" 的方法.

\[P(B_i|A)=\frac{P(B_i)P(A|B_i)}{\sum_{i=1}^n P(B_i)P(A|B_i)} \]

2.3 数学分析

2.3.1 极值

拉格朗日乘数法的核心观点是: 在约束条件下的极值点, 目标函数的梯度和约束的梯度是共线的.

对于等式约束, 定义

\[L(x,\lambda)=f(x)+\lambda g(x) \]

对其求偏导数置零即得.

对于不等式约束, 还需满足

\[\lambda^* g(x^*)=0,\quad \lambda^*\geq0 \]

2.3.2 梯度和散度

梯度定义为

\[\nabla f=\sum_{i=1}^n \frac{\partial f}{\partial x_i} e_i \]

散 (sàn) 度定义为

\[\text{div}f=\nabla\cdot f=\sum_{i=1}^n \frac{\partial f_i}{\partial x_i} \]

2.3.3 泰勒公式

\[f(x)=\sum_{n=0}^\infty \frac{1}{n!}((r-r_0)\cdot\nabla)^n f(r_0) \]

3 监督学习

监督学习是机器学习中最常见的任务类型, 它的目标是通过训练数据集 (包含输入特征和对应的目标输出) 来学习一个模型, 从而对新的, 未知的数据进行预测.

监督学习主要分为回归问题 (目标变量是连续变量) 和分类问题 (目标变量是离散 (sǎn) 变量).

3.1 回归问题

给定一个包含 \(m\) 个训练样本的数据集 \(D=\{(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)\}\), 其中 \(x_i\) 是第 \(i\) 个样本的特征向量, \(y_i\) 是对应的真实输出值. 我们的目标是学习一个模型 \(f(x,w)\), 其中 \(w\) 是权重参数, 以最小化模型在训练数据上的预测误差.

3.1.1 线性回归

正规方程法

  1. 一元线性回归

一元线性回归指的是 \(y=wx+b\) 只有一个输入特征的线性回归问题.

为了使 \(f(x_i)\) 尽可能接近 \(y_i\), 使用均方误差

\[E(w,b)=\frac{1}{m}\sum_{i=1}^m (f(x_i)-y_i)^2 \]

求导

\[\begin{aligned} &\frac{\partial E(w,b)}{\partial w}=\frac{2}{m}\left( w\sum_{i=1}^m x_i^2-\sum_{i=1}^m (y_i-b)x_i\right) =0\\ &\frac{\partial E(w,b)}{\partial b}=\frac{2}{m}\left(mb-\sum_{i=1}^m (y_i-wx_i)\right)=0 \end{aligned} \]

解得

\[\begin{aligned} &w=\frac{\sum_{i=1}^m y_i(x_i-\bar{x})}{\sum_{i=1}^m x_i^2-\frac{1}{m}(\sum_{i=1}^m x_i)^2}\\ &b=\frac{1}{m} \sum_{i=1}^m (y_i-wx_i) \end{aligned} \]

  1. 多元线性回归

多元线性回归指的是 \(y = w_1x_1 + w_2x_2 + \cdots+ w_nx_n + b\) 有多个输入特征的线性回归问题.

为了简洁起见, 令

\[X=\left(\begin{matrix}x_{11}&x_{12}&\cdots&x_{1n}&1\\x_{21}&x_{22}&\cdots&x_{2n}&1\\\vdots&\vdots&\ddots&\vdots&\vdots\\x_{m1}&x_{m2}&\cdots&x_{mn}&1\end{matrix}\right),W=\left(\begin{matrix}w_1\\w_2\\\vdots\\w_{n+1}\\\end{matrix}\right),Y=\left(\begin{matrix}y_1\\y_2\\\vdots\\y_m\end{matrix}\right) \]

其中偏置项 \(w_{n+1}=b\), 那么可表示为

\[E(W)=\frac{1}{m}(Y-XW)^T(Y-XW) \]

求导

\[\begin{aligned} \frac{\partial E(W)}{\partial W}=\frac{2}{m}\left(X^TXW-X^TY\right)=0 \end{aligned} \]

解得

\[W=(X^TX)^{-1}X^TY \]

梯度下降法

首先初始化权重向量 \(w\) (通常为 \(0\) 或随机值), 然后计算损失函数 \(L(w)\) (通常为均方误差) 关于 \(w_j\) 的偏导数.

更新权重

\[w_j^*=w_j-\alpha\frac{\partial}{\partial w_j}L(w) \]

这里的 \(\alpha\) 称为学习率, \(\dfrac{\partial}{\partial w_j}L(w)\) 是损失函数的梯度分量, 二者相乘称为步长. 将当前权重 \(w_j\) 减去步长, 得到新的权重 \(w_j^*\). 它的目的是沿着梯度的负方向 (即损失函数值下降最快的方向) 更新权重, 以逐步降低损失函数值.

重复迭代, 直到步长 \(||w^*-w||\), 损失函数的变化量 \(||L(w^*)-L(w)||\) 或梯度 \(||\nabla L(w)||\) 小于阈值 \(\varepsilon\) 停止.

3.1.2 多项式回归

多项式回归与线性回归非常相似, 只不过增添了高次项, 从一次直线变为了高次曲线.

一元多项式回归的形式为 \(y = w_0+w_1x+w_2x^2+\cdots +w_nx^n\)

如果令 \(x=z_1,x^2=z_2,\cdots,x^n=z_n\), 将原始特征的高阶项看作是新的输入特征, 那么就相当于是多元线性回归了.

多元多项式回归的形式为 \(y=XW\)

其中

\[X=\left(\begin{matrix}1&x_1&x_1^2&\cdots&x_1^n\\1&x_2&x_2^2&\cdots&x_2^n\\\vdots&\vdots&\vdots&\ddots&\vdots\\1&x_k&x_k^2&\cdots&x_k^n\end{matrix}\right),W=\left(\begin{matrix}w_{01}&w_{02}&\cdots&w_{0k}\\w_{11}&w_{12}&\cdots&w_{1k}\\\vdots&\vdots&\ddots&\vdots\\w_{n1}&w_{n2}&\cdots&w_{nk}\\\end{matrix}\right) \]

3.1.3 岭回归

岭回归的目标函数在一般的线性回归的基础上加入了正则化项 \(\mathbb{L}^2\), 防止回归系数过大导致模型对噪声数据过度敏感即 "过拟合":

\[\mathbb{L}^2(w)=\lambda \sum_{i=1}^{n} w_i^2 \]

如果某个自变量的回归系数较大,那么它对应的正则化项就会变得更大,导致整个回归模型的损失函数变大, 惩罚回归系数较大的自变量, 从而缩小回归系数的范围.

当正则化项的强度 \(\lambda\) 增大时, 回归系数的大小会进一步收缩, 形成 “岭” 的形状, 因而使得这种回归方法被称为 “岭回归”.

岭回归能够让所有特征的系数都缩小, 但是不会减为零 (保持维度), 因为等高线是圆形的, 解不太可能落在坐标轴上.

3.1.4 套索回归

LASSO 回归和岭回归类似, 它在一般的线性回归的基础上加入了正则化项 \(\mathbb{L}^1\) 防止 "过拟合":

\[\mathbb{L}^1(w)=\lambda \sum_{i=1}^{n} |w_i| \]

\(\lambda\) 较大时, 正则化项会使得一些回归系数变为零, 从而压缩回归系数实现特征选择, 避免不重要的自变量对模型产生影响. 它同时可能丢失一些信息.

LASSO 回归最大的特点是能稀疏矩阵, 进行庞大特征数量下的特征选择 (降低维度), 因为等高线在坐标轴上有尖点, 解倾向于落在坐标轴上.

事实上, 套索回归和岭回归 (即 L1 正则化和 L2 正则化) 不仅用于回归任务, 还常用于分类, 神经网络等其他算法.

3.2 分类问题

如果说回归问题旨在输出连续的数值, 那么分类问题则是输出离散的数值. 在分类问题中, 我们希望构建一个模型, 能够根据输入的特征对其进行分类, 并预测新样本所属的类别.

3.2.1 逻辑回归

逻辑回归常用于二分类问题.

逻辑回归的主要思想是: 根据现有数据对分类边界线建立回归公式, 以此进行分类. 以下是逻辑回归的主要步骤:

  1. 线性回归部分: 逻辑回归的前半部分和线性回归类似, 都是对输入特征进行线性组合, 形式如下:

\[Z = w_1x_1 + w_2x_2 + \cdots + w_nx_n + b \]

其中 \(w\)\(b\) 是我们需要找出的最优参数, \(x_1\)\(x_n\) 为特征变量.

  1. 逻辑函数 (Sigmoid 函数): 逻辑回归的后半部分将线性回归的结果通过逻辑函数 (Sigmoid 函数) 进行映射, 将其转化为概率输出, 形式如下:

\[p = \frac{1}{1 + e^{-Z}} \]

其中 \(Z\) 为线性回归结果, \(p\) 为目标类别的预测概率.

  1. 最大似然估计: 逻辑回归的目标是找到一组参数 \(w\)\(b\), 使得给定输入特征下目标类别的预测概率最大, 即交叉熵损失函数最小:

\[L=-(y\log p+(1-y)\log(1-p)) \]

在这个损失函数中, 如果实际结果 \(y\)\(1\), 预测概率 \(p\) 接近 \(1\), 那么损失接近 \(0\); 如果实际结果 \(y\)\(0\), 预测概率 \(p\) 接近 \(0\), 那么损失接近 \(0\).

  1. 预测: 在得到最优参数后, 我们就可以使用训练好的模型对新的数据进行预测. 一般来说, 如果预测概率大于 \(0.5\), 我们就预测该样本属于正类, 否则属于负类.

  2. 评估: 评估模型的效果, 通常我们会使用准确率, AUC 值, 混淆矩阵等指标.

一个特征中的极端值或者称为异常值会影响逻辑回归的性能. 它们可能导致模型对这些极端值过度拟合, 从而影响其泛化能力.

3.2.2 支持向量机

SVM 尝试寻找一个最优的决策边界, 距离两个类别的最近的样本最远. 样本中距离超平面最近的一些点, 这些点叫做支持向量.

SVM 最优化问题

SVM 想要的就是找到各类样本点到超平面的距离最远, 也就是找到最大间隔超平面.

二维空间中

\[d\leq\frac{|Ax+By+C|}{\sqrt{A^2+B^2}} \]

扩展到 n 维

\[d\leq\frac{|w^Tx+b|}{||w||} \]

\(||w||d=1\), 亦即

\[y(w^Tx+b)\geq1 \]

其中 y 取值 1 时为上超平面, y 取值 -1 时为下超平面.

最优化问题是寻找最小的 \(\dfrac{1}{2}||w||^2\), 使得 \(y_i(w^Tx_i+b)\geq1\).

这一步常常通过拉格朗日乘数法解决.

3.2.3 决策树

决策树主要应用于分类问题.

信息熵

信息熵反映的是数据的混乱程度, 熵值高则意为纯度低, 反之熵值低则意为纯度高即分类效果好. 信息熵的概念由香农提出, 沿袭了热力学中由玻尔兹曼发现的熵的定义式.

\[\text{Ent}(D)=\sum p_k\log p_k \]

条件熵

\[\text{Ent}(D|A)=\sum\frac{|D^v|}{|D|}\text{Ent}(D^v) \]

信息增益

信息增益指的是以某一属性对数据集进行分类, 使熵下降的量的多少. 显然信息增益越高, 越适合作为分类标准.

\[\text{Gain}(D,A)=\text{Ent}(D)-\text{Ent}(D|A) \]

固有值

\[\text{IV(A)}=\sum\frac{|D^v|}{|D|}\log\frac{|D^v|}{|D|} \]

信息增益率

信息增益率概念的提出是为了防止递归到后期只判定信息增益, 出现的过拟合现象.

\[\text{Gain}_r (D,A)=\frac{\text{Gain}(D,A)}{\text{IV}(A)} \]

基尼系数

基尼系数的直观意义是在数据集中任取两个样本, 它们属于不同类的概率. 可知其值越低, 纯度越高, 分类效果越好.

\[\text{Gini}(D)=1-\sum p_k^2 \]

条件基尼系数

\[\text{Gini}(D|A)=\sum \frac{|D^v|}{|D|}\text{Gini}(D^v) \]

ID3 算法

以信息增益作为最优划分属性.

C4.5 算法

以信息增益率作为最优划分属性.

CART 算法

以基尼系数作为最优划分属性.

共有三种情况导致递归返回:

  1. 当前结点同属于一个类别, 标记为该类别, 返回;
  2. 当前属性已经用完, 或所有样本所有属性相同而类别不同, 标记为含样本更多的类别, 返回;
  3. 某一属性值下没有样本, 标记为含样本更多的类别, 返回.

3.2.4 随机森林

随机森林是由很多决策树构成的, 不同决策树之间没有关联.

  1. 一个样本容量为 N 的样本, "有放回" 地抽取 N 次, 每次抽取 1 个, 最终形成了 N 个样本. 这选择好了的 N 个样本用来训练一个决策树, 作为决策树根节点处的样本.

  2. 当每个样本有 M 个属性时, 每次在决策树的节点需要分裂时, 随机从这 M 个属性中选取出 m 个属性构成子集, 然后从这 m 个属性中选择该节点的最优划分属性.

  3. 当我们进行分类任务时, 新的输入样本进入, 就让森林中的每一棵决策树分别进行判断和分类, 每个决策树会得到一个自己的分类结果, 决策树的分类结果中哪一个分类最多, 那么随机森林就会把这个结果当做最终的结果.

3.2.5 K 邻近算法

这是一种根据附近 K 个邻居进行分类的算法.

KNN 的三个基本要素: k 值的选择, 距离度量及分类决策规则.

  1. 计算训练样本和测试样本中每个样本点的距离 (如欧氏距离);
  2. 对上面所有的距离值进行排序;
  3. 选前 k 个最小距离的样本;
  4. 根据这 k 个样本的标签进行投票 (如平均数), 得到最后的分类类别.

3.2.6 朴素贝叶斯

朴素贝叶斯是一个基于贝叶斯定理的分类算法, 它假设每个特征都是独立的 ("朴素" 二字的来源).

核心公式是

\[P(A|B)=\frac{P(B|A)P(A)}{P(B)}=\frac{\prod P(B_i|A)P(A)}{\prod P(B_i)} \]

也可以将分母略去.

3.3 评价指标

3.3.1 混淆矩阵

混淆矩阵是一个用于评估分类模型性能的工具. 通过这个矩阵, 我们可以清晰地看到模型的真正类别与预测类别之间的关系.

3.3.2 准确率, 召回率, 精确率, F1 分数

准确率

定义为整体预测正确的比率.

上例中 "Cat" 的准确率为 \(\dfrac{5+3+2+1+11}{27}=\dfrac{22}{27}\).

召回率

在所有真实为 "True" 的样本中, 预测正确的比率.

上例中 "Cat" 的召回率为 \(\dfrac{5}{5+3+0}=\dfrac{5}{8}\).

精确率

预测为 "True" 的样本中, 真实为 "True" 的比率.

上例中 "Cat" 的精确率为 \(\dfrac{5}{5+2+0}=\dfrac{5}{7}\).

假正例率

在所有真实为 "False" 的样本中, 错误地预测为 "True" 的比率.

上例中 "Cat" 的假正例率为 \(\dfrac{2+0}{2+0+3+2+1+11}=\dfrac{2}{19}\).

F1 分数

定义为精确率和召回率的调和平均值.

上例中 "Cat" 的 F1 分数为 \(2\dfrac{\frac{5}{7}\cdot\frac{5}{8}}{\frac{5}{7}+\frac{5}{8}}=\dfrac{2}{3}\).

3.3.3 ROC 曲线和 AUC

ROC 曲线是一个描绘真正例率 (召回率) 与假正例率之间关系的图形.

AUC 是 ROC 曲线下的面积.

  1. 如果 AUC = 0.5, 表示模型的性能等同于随机猜测.
  2. 如果 AUC = 1, 表示模型完美地分类了所有正例和负例.
  3. 如果 AUC = 0, 表示模型完全反向地分类了所有的正例和负例.
  4. 通常情况下, AUC 值越接近 1, 模型的性能越好.

4 无监督学习

无监督学习的模型在没有标签的数据上进行训练, 也就是说, 给定的数据没有明确的输出或正确答案与之相关. 无监督学习的主要目标是发现数据中的结构, 模式或关系.

4.1 聚类

4.1.1 K-means

聚类属于非监督学习, K 均值聚类是最基础常用的聚类算法. 它的基本思想是, 通过迭代寻找 K 个簇的一种划分方案, 使得聚类结果对应的损失函数最小. 其中损失函数可以定义为各个样本距离所属簇中心点的误差平方和

\[J(c,\mu)=\sum_{i=1}^M ||x_i-\mu_{c_i}||^2 \]

其中 \(x_i\) 代表第 \(i\) 个样本, \(c_i\)\(x_i\) 所属的簇, \(\mu_{c_i}\) 代表簇对应的中心点, \(M\) 是样本总数.

以下是 K-means 的基本步骤:

  1. 初始化

随机选择 K 个数据点作为初始的簇中心, 或使用其他更先进的方法来初始化.

  1. 分配每个数据点到最近的簇中心

对于数据集中的每个点, 计算其到 K 个中心的距离, 并将其分配到最近的簇中心.

  1. 重新计算簇中心

对于每一个簇, 计算簇内所有数据点的平均值, 并将该平均值设为新的簇中心.

  1. 重复步骤 2 和 3

重复上述的分配和重新计算的过程, 直到簇中心不再发生显著的变化或满足其他停止条件为止.

4.1.2 层次聚类

层次聚类的目标是基于相似度或距离逐步地将数据点或小的数据簇合并成更大的簇, 或者从一个大的簇开始逐步分裂成更小的簇, 直到满足某些停止条件为止. 这种方法会产生一个树形的层次结构, 通常可视化为树状图.

层次聚类可以分为两种主要类型.

凝聚型层次聚类

  1. 开始时, 每个数据点都被视为一个单独的簇.
  2. 在每一步中, 算法找到最相似 (或距离最近) 的两个簇, 并将它们合并为一个新的簇.
  3. 这一过程重复进行, 直到所有的数据点都被合并到一个单一的簇中, 或者达到其他停止条件.

分裂型层次聚类

  1. 开始时, 所有的数据点都在一个大的簇中.
  2. 在每一步中, 算法找到可以最优地分裂的簇, 并将其分成两部分.
  3. 重复这个过程, 直到每个数据点都在其自己的簇中, 或者达到其他停止条件.

层次聚类的一个主要优点是不需要预先设定簇的数量, 而其结果的可视化, 树状图, 可以为用户提供关于数据结构的直观信息.

4.2 降维

4.2.1 主成分分析

PCA 的目的是找到一个线性投影, 使得数据在新的坐标系 (主成分) 上的方差最大化, 是一种使用最广泛的数据降维算法.

其优化目标是将一组 n 维向量降为 k 维, 选择 k 个标准正交基, 使得原始数据变换到这组基上后, 各字段两两间协方差为 0, 且字段的方差则尽可能大.

数据经过中心化处理后, 协方差矩阵

\[\Sigma=\frac{1}{n}X^TX=\left(\begin{matrix} \sigma(x_1,x_1)&\cdots&\sigma(x_1,x_n)\\ \vdots&\ddots&\vdots\\ \sigma(x_n,x_1)&\cdots&\sigma(x_n,x_n) \end{matrix}\right) \]

具体步骤:

  1. 数据的中心化处理.

  2. 计算数据的协方差矩阵.

  3. 计算协方差矩阵的特征值和特征向量.

  4. 将特征值进行降序排序, 并选择前 k 个最大的特征值对应的特征向量, 构成一个新的数据投影矩阵.

此处考虑到特征向量是正交的, 特征值是数据在对应特征向量方向上的方差, 特征值从大到小排序后, 前 k 个特征值对应的特征向量将组成投影矩阵用于降维.

  1. 使用这个投影矩阵将数据转换到 k 个新的维度上.

4.2.2 t-SNE

t 分布-随机邻近嵌入的目的是为高维数据找到一个低维嵌入, 使得相似的数据点在低维空间中仍然相近.

具体步骤:

  1. 在高维空间中, 为每一对数据点计算其相似性概率 (高斯分布).

  2. 在低维空间中, 为每一对数据点计算其相似性概率 (t分布).

  3. 最小化高维空间和低维空间之间的相似性概率之间的 KL 散度.

posted @ 2023-08-27 18:11  Lachrymosa  阅读(45)  评论(0编辑  收藏  举报