机器学习算法
逻辑回归: 用于二分类问题。它基于一个或多个预测变量建模二元结果的概率。
线性回归: 用于预测基于一个或多个预测变量的连续结果。它通过拟合线性方程来建模因变量和自变量之间的关系。
决策树: 一种用于分类和回归任务的树状模型。它根据特征值将数据分支,以做出决策或预测。
梯度提升决策树 (GBDT) 和随机森林:
GBDT: 一种集成技术,它按顺序构建多个决策树,每个树纠正前一个的错误。用于回归和分类。
随机森林: 另一种集成方法,它独立构建多个决策树,并平均它们的预测(用于回归)或进行多数投票(用于分类)。
支持向量机 (SVM): 用于分类和回归。SVM在特征空间中找到最能分离类别的超平面。
朴素贝叶斯: 基于贝叶斯定理的分类技术。它假设预测变量之间相互独立,常用于文本分类。
因式分解机 (FM): 用于稀疏数据中的预测任务,如推荐系统。它通过捕获所有特征对之间的交互来推广矩阵分解。
神经网络: 受人脑启发的一组算法,用于各种任务,包括分类、回归和更复杂的任务,如图像识别。神经网络由层层相连的神经元组成,并通过根据数据调整这些连接的权重来学习。
重采样是指调整不同类之间的比例,使数据更加均衡的过程。例如,我们可以对少数类进行过采样(图 1.17)或对多数类进行欠采样(图 1.18)
大规模训练变得越来越重要,因为模型随着时间的推移变得越来越大,并且数据集的大小也急剧增加。分布式训练通常用于通过将工作分配给多个工作节点来训练模型。这些工作节点并行运行,以加快模型训练速度。分布式训练主要有两种类型:数据并行[13]和模型并行[14]。
模型压缩
Knowledge distillation: The goal of knowledge distillation is to train a small model (student) to mimic a larger model (teacher).
知识蒸馏:知识蒸馏的目标是训练一个小模型(学生)来模仿更大的模型(老师)。
Pruning: Pruning refers to the process of finding the least useful parameters and setting them to zero. This leads to sparser models which can be stored more efficiently.
剪枝:剪枝是指找到最无用的参数并将其设置为零的过程。这导致模型更稀疏,可以更有效地存储。
Quantization: Model parameters are often represented with 32-bit floating numbers. In quantization, we use fewer bits to represent the parameters, which reduces the model’s size. Quantization can happen during training or post-training [39].
量化:模型参数通常用 32 位浮点数表示。在量化中,我们使用更少的位数来表示参数,从而减小了模型的大小。量化可以在训练期间或训练后进行[39]。
Feature scaling 特征缩放
标准化(最小-最大缩放)。在此方法中,使用以下公式对特征进行缩放,因此所有值都在 [0,1] 范围内:
标准化(Z 分数标准化)。标准化是改变特征分布以具有 0均值和 1 标准差的过程。以下公式用于标准化特征:
对数缩放。为了减轻特征的偏度,可以使用一种称为对数缩放的常用技术,其公式如下:
离散化(分桶)
损失函数
-
交叉熵损失(Cross-Entropy Loss):
- 常用于分类问题,特别是多分类问题。它衡量的是实际标签与预测概率分布之间的差异。
- 公式:
L
=
−
∑
i
=
1
N
y
i
log
(
y
^
i
)
L = -\sum_{i=1}^{N} y_i \log(\hat{y}_i)
L=−i=1∑Nyilog(y^i)
其中, y i y_i yi 是实际标签, y ^ i \hat{y}_i y^i 是预测概率。
-
均方误差(Mean Squared Error, MSE):
- 常用于回归问题。它衡量的是预测值与实际值之间差异的平方和的平均值。
- 公式:
MSE
=
1
N
∑
i
=
1
N
(
y
i
−
y
^
i
)
2
\text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2
MSE=N1i=1∑N(yi−y^i)2
其中, y i y_i yi 是实际值, y ^ i \hat{y}_i y^i 是预测值, N N N 是样本数量。
-
平均绝对误差(Mean Absolute Error, MAE):
- 也是常用于回归问题。它衡量的是预测值与实际值之间差异的绝对值的平均值。
- 公式:
MAE
=
1
N
∑
i
=
1
N
∣
y
i
−
y
^
i
∣
\text{MAE} = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i|
MAE=N1i=1∑N∣yi−y^i∣
其中, y i y_i yi 是实际值, y ^ i \hat{y}_i y^i 是预测值, N N N 是样本数量。
-
Huber 损失(Huber Loss):
- 结合了 MSE 和 MAE 的优点,在误差较小时类似于 MSE,在误差较大时类似于 MAE。常用于对异常值不敏感的回归问题。
- 公式:
L
δ
(
a
)
=
{
1
2
a
2
if
∣
a
∣
≤
δ
δ
(
∣
a
∣
−
1
2
δ
)
otherwise
L_{\delta}(a) = \begin{cases} \frac{1}{2}a^2 & \text{if } |a| \leq \delta \\ \delta(|a| - \frac{1}{2}\delta) & \text{otherwise} \end{cases}
Lδ(a)={21a2δ(∣a∣−21δ)if ∣a∣≤δotherwise
其中, a = y i − y ^ i a = y_i - \hat{y}_i a=yi−y^i, δ \delta δ 是一个阈值参数。
正则化
-
L1 正则化(L1 Regularization):
- 也称为 LASSO(Least Absolute Shrinkage and Selection Operator)。它通过对模型的系数施加 L 1 L1 L1 范数来进行正则化,即对系数的绝对值求和。
- 公式:
L
L
1
=
λ
∑
i
=
1
N
∣
w
i
∣
L_{L1}=\lambda \sum_{i=1}^{N}|w_i|
LL1=λi=1∑N∣wi∣
其中, λ \lambda λ 是正则化参数, w i w_i wi 是模型的系数。 - L1 正则化倾向于产生稀疏模型,即许多系数变为零,这样可以选择特征并提高模型的可解释性。
-
L2 正则化(L2 Regularization):
- 也称为岭回归(Ridge Regression)。它通过对模型的系数施加 L 2 L2 L2 范数来进行正则化,即对系数的平方和求和。
- 公式:
L
L
2
=
λ
∑
i
=
1
N
w
i
2
L_{L2}=\lambda \sum_{i=1}^{N}w_i^2
LL2=λi=1∑Nwi2
其中, λ \lambda λ 是正则化参数, w i w_i wi 是模型的系数。 - L2 正则化倾向于减小系数的大小,但不会使其变为零,从而在模型复杂度和性能之间取得平衡。
-
熵正则化(Entropy Regularization):
- 熵正则化是一种通过最小化预测概率分布的熵来防止模型过度拟合的方法。它鼓励模型输出的概率分布更加集中。
- 公式:
L
e
n
t
r
o
p
y
=
λ
∑
i
=
1
N
H
(
p
i
)
L_{entropy}=\lambda \sum_{i=1}^{N}H(p_i)
Lentropy=λi=1∑NH(pi)
其中, H ( p i ) H(p_i) H(pi) 是第 i i i 个样本的预测概率分布的熵, λ \lambda λ 是正则化参数。 - 熵正则化可以帮助提高模型的置信度和决策边界的清晰度。
-
K 折交叉验证(K-Fold Cross-Validation,K-Fold CV):
- 这是一种用于评估模型性能的技术。数据集被分为 K K K 个子集,然后进行 K K K 次训练和验证,每次使用不同的子集作为验证集,其余子集作为训练集。
- 公式:无具体公式,步骤如下:
- 将数据集随机分为 K K K 个子集。
- 进行 K K K 次训练和验证,每次使用一个子集作为验证集,其余子集作为训练集。
- 计算 K K K 次验证的平均性能指标。
- K 折交叉验证可以帮助评估模型的稳定性和泛化能力,减少过拟合的风险。
-
Dropout:
- Dropout 是一种用于神经网络的正则化技术,通过在训练过程中随机“丢弃”一些神经元来防止过拟合。
- 公式:无具体公式,步骤如下:
- 在每次训练迭代中,以一定的概率 p p p 随机将一部分神经元的输出设置为零。
- 在预测阶段,所有神经元都参与计算,但输出值按 p p p 缩放。
- Dropout 可以帮助模型学习更鲁棒的特征,提高泛化能力。
优化方式
-
随机梯度下降(Stochastic Gradient Descent, SGD):
- SGD 是一种迭代优化算法,它通过在每次迭代中只使用一个或几个样本来近似计算梯度,从而更新模型参数。
- 公式:
θ
t
+
1
=
θ
t
−
η
∇
θ
J
(
θ
;
x
i
,
y
i
)
\theta_{t+1}=\theta_t-\eta \nabla_{\theta}J(\theta; x_i, y_i)
θt+1=θt−η∇θJ(θ;xi,yi)
其中, θ t \theta_t θt 是第 t t t 次迭代的模型参数, η \eta η 是学习率, ∇ θ J ( θ ; x i , y i ) \nabla_{\theta}J(\theta; x_i, y_i) ∇θJ(θ;xi,yi) 是样本 ( x i , y i ) (x_i, y_i) (xi,yi) 的梯度。
-
AdaGrad(Adaptive Gradient Algorithm):
- AdaGrad 是一种自适应学习率方法,它根据以往梯度的平方和来调整每个参数的学习率,使得频繁更新的参数学习率降低,反之亦然。
- 公式:
θ
t
+
1
=
θ
t
−
η
G
t
,
i
i
+
ϵ
∇
θ
J
(
θ
;
x
i
,
y
i
)
\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{G_{t,ii}+\epsilon}} \nabla_{\theta}J(\theta; x_i, y_i)
θt+1=θt−Gt,ii+ϵη∇θJ(θ;xi,yi)
其中, G t , i i G_{t,ii} Gt,ii 是迄今为止梯度平方的累加和, ϵ \epsilon ϵ 是一个平滑项,防止分母为零。
-
动量优化(Momentum):
- 动量优化在更新参数时考虑了之前的更新方向,通过引入动量项来加速收敛并减少震荡。
- 公式:
v
t
=
γ
v
t
−
1
+
η
∇
θ
J
(
θ
;
x
i
,
y
i
)
v_t=\gamma v_{t-1}+\eta \nabla_{\theta}J(\theta; x_i, y_i)
vt=γvt−1+η∇θJ(θ;xi,yi)
θ t + 1 = θ t − v t \theta_{t+1}=\theta_t-v_t θt+1=θt−vt
其中, v t v_t vt 是动量项, γ \gamma γ 是动量系数,通常介于 0 和 1 之间。
-
RMSProp(Root Mean Square Propagation):
- RMSProp 是一种自适应学习率方法,通过对梯度的平方进行指数加权移动平均来调整学习率,减轻了 AdaGrad 中学习率迅速减小的问题。
- 公式:
E
[
g
2
]
t
=
ρ
E
[
g
2
]
t
−
1
+
(
1
−
ρ
)
g
t
2
E[g^2]_t=\rho E[g^2]_{t-1}+(1-\rho)g_t^2
E[g2]t=ρE[g2]t−1+(1−ρ)gt2
θ t + 1 = θ t − η E [ g 2 ] t + ϵ g t \theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{E[g^2]_t+\epsilon}} g_t θt+1=θt−E[g2]t+ϵηgt
其中, E [ g 2 ] t E[g^2]_t E[g2]t 是梯度平方的移动平均, ρ \rho ρ 是衰减率, g t g_t gt 是当前梯度, ϵ \epsilon ϵ 是一个平滑项。
激活函数
-
ELU(Exponential Linear Unit):
- ELU 是一种在负值区域具有指数形式的激活函数,能够加速神经网络的训练并保持较小的输入均值接近零。
- 公式:
E
L
U
(
x
)
=
{
x
if
x
>
0
α
(
e
x
−
1
)
if
x
≤
0
ELU(x)=\begin{cases} x & \text{if } x > 0 \\ \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases}
ELU(x)={xα(ex−1)if x>0if x≤0
其中, α \alpha α 是一个可调参数,通常取值为 1。
-
ReLU(Rectified Linear Unit):
- ReLU 是一种常用于深度学习的激活函数,它的输出为输入本身或零,能够有效解决梯度消失问题。
- 公式:
R
e
L
U
(
x
)
=
max
(
0
,
x
)
ReLU(x)=\max(0, x)
ReLU(x)=max(0,x)
该函数对正值输出输入本身,对负值输出零。
-
Tanh(双曲正切函数):
- Tanh 是一种常用于神经网络的激活函数,它将输入压缩到 ( − 1 , 1 ) (-1, 1) (−1,1) 范围内,输出均值为零,有助于加速收敛。
- 公式: T a n h ( x ) = e x − e − x e x + e − x Tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} Tanh(x)=ex+e−xex−e−x
-
Sigmoid(S 型函数):
- Sigmoid 是一种常用于二分类问题的激活函数,它将输入压缩到 ( 0 , 1 ) (0, 1) (0,1) 范围内,可以解释为概率。
- 公式:
S
i
g
m
o
i
d
(
x
)
=
1
1
+
e
−
x
Sigmoid(x)=\frac{1}{1+e^{-x}}
Sigmoid(x)=1+e−x1