机器学习&深度学习面试笔记

机器学习&深度学习面试笔记

机器学习

Q. 在线性回归中,如果自变量之间存在多重共线性,会导致什么问题?如何检测和处理多重共线性?

在线性回归中, 多重共线性是指⾃变量之间存在⾼度相关性或线性依赖关系的情况
多重共线性可能会导致以下问题:

  1. 不稳定的估计:多重共线性会导致回归系数估计变得不稳定。这意味着⼩的数据变动或微⼩的变量选择变化都可能导致回归系数的⼤幅度变化,使得参数估计不可靠;
  2. 难以解释效果:多重共线性使得很难分离各⾃⾃变量对因变量的独⽴效应,因为它们之间的效应不再明确,这会降低模型的解释能⼒;
  3. 统计检验不准确:多重共线性会导致回归模型的统计检验不准确,如t检验和F检验,这可能会导致错误的结论,例如错误地认为某些⾃变量对因变量没有显著影响;
  4. 过度拟合:多重共线性可以导致过度拟合,因为模型可能会在⾃变量之间寻找微⼩的变化,从⽽试图解释由于共线性引起的噪声。

为了检测和处理多重共线性,可以采取以下⽅法:

  1. 相关系数分析:通过计算自变量之间的相关系数矩阵,可以初步了解⾃变量之间是否存在⾼度相关性,相关系数接近于1表示⾼度相关;
  2. 方差膨胀因子(VIF) : VIF⽤于衡量每个⾃变量与其他⾃变量的相关性程度。 VIF越⼤,表示共线性越严重。通常, VIF⼤于10或更⾼的⾃变量可能需要考虑去除或合并;
  3. 主成分分析(PCA) : PCA可以将相关的⾃变量合并成新的⽆关⾃变量,从⽽减少共线性的影响,但这会导致模型的解释变得更加复杂;
  4. 逐步回归:逐步回归⽅法允许逐渐添加或删除⾃变量,以找到最佳模型。在逐步回归中,会考虑每个⾃变量的贡献,从⽽减少共线性引起的问题;
  5. 合并自变量:如果多个⾃变量之间⾼度相关,可以考虑将它们合并成⼀个新的⾃变量或使⽤其平均值来代替,这样可以减少模型中的共线性。

处理多重共线性是线性回归建模中的⼀个重要挑战,因为它可以显著影响模型的可靠性和解释性。选择合适的⽅法来检测和处理多重共线性取决于数据和领域背景。

Q. 梯度下降\牛顿法\二分法求根号2的值

梯度下降:

import numpy as np  
  
# 初始化参数和学习率  
w = 0.0  
b = 0.0  
eta = 0.01  # 学习率  
x = 1.0  
y = np.sqrt(2)  
epochs = 10000  # 迭代次数  
  
# 梯度下降过程  
for epoch in range(epochs):  
    # 计算预测值和损失  
    y_pred = w * x + b  
    mse = 0.5 * (y_pred - y) ** 2  
      
    # 计算梯度  
    grad_w = (y_pred - y) * x  
    grad_b = y_pred - y  
      
    # 更新参数  
    w -= eta * grad_w  
    b -= eta * grad_b  
      
    # (可选)打印损失值以监控收敛情况  
    if epoch % 1000 == 0:  
        print(f"Epoch {epoch}, MSE: {mse}, w: {w}, b: {b}")  
  
# 输出最终参数值  
print(f"Final w: {w}, Final b: {b}")

输出:

Epoch 0, MSE: 1.0000000000000002, w: 0.014142135623730952, b: 0.014142135623730952
Epoch 1000, MSE: 2.8323785645848305e-18, w: 0.7071067800203108, b: 0.7071067800203108
Epoch 2000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 3000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 4000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 5000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 6000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 7000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 8000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Epoch 9000, MSE: 1.5407439555097887e-29, w: 0.7071067811865448, b: 0.7071067811865448
Final w: 0.7071067811865448, Final b: 0.7071067811865448

牛顿法\二分法:
2种方法求解根号2

Q. 什么是岭回归(Ridge Regression)和Lasso回归(Lasso Regression)?它们与普通线性回归之间的区别?

岭回归(Ridge Regression)是⼀种线性回归的正则化⽅法,⽤于处理多重共线性问题。它通过在目标函数中引⼊L2正则化项来限制模型的系数⼤⼩,以减⼩过拟合⻛险。

Lasso回归(Least Absolute Shrinkage and Selection Operator Regression)是⼀种线性回归的正则化⽅法,⽤于处理多重共线性问题并进⾏特征选择。它通过在⽬标函数中引⼊L1正则化项来约束模型的系数,并促使⼀些系数变为零,从⽽实现自动特征选择

Q. 逻辑回归与线性回归有什么区别?

逻辑回归(Logistic Regression)与线性回归(Linear Regression)是两种不同的回归⽅法,主要⽤于不同类型的问题,具有不同的模型和目标。

它们之间的主要区别,这里通过概念和公式进⾏对比:

1.应用领域

  • 线性回归通常⽤于解决回归问题,其中⽬标是预测⼀个连续数值输出(如房价、销售量等)。线性回归试图建⽴⼀个线性关系,以最⼩化观测值与模型预测值之间的差异;
  • 逻辑回归通常⽤于解决分类问题,其中⽬标是将输⼊数据分为两个或多个类别。逻辑回归使⽤Sigmoid函数将线性组合的输⼊映射到概率输出。

2.输出

  • 线性回归的输出是⼀个连续的数值,可以是任意实数
  • 逻辑回归的输出是⼀个介于0和1之间的概率值

3.目标

  • 线性回归的⽬标是找到⼀条最佳拟合线,以最⼩化实际观测值与预测值之间的误差平⽅和
  • 逻辑回归的⽬标是找到最佳参数,以最⼤化观测数据属于正类别或负类别的概率,从⽽能够进⾏分类。

Q. 什么是逻辑回归的目标函数(损失函数)?

逻辑回归的⽬标函数,通常也称为损失函数或代价函数,⽤于衡量模型的预测与实际观测值之间的差异。逻辑回归通常⽤于⼆分类问题,其⽬标是最⼤化观测数据属于正类别或负类别的概率,从⽽能够进⾏分类。逻辑回归的⽬标函数通常使⽤交叉熵损失函数(Cross-Entropy Loss Function)或对数损失函数(Log Loss Function),这两者通常是等价的。

在这里插入图片描述

这个损失函数的⽬标是最⼩化观测数据的负对数似然(negative log-likelihood),从⽽最⼤化观测数据属于正类别或负类别的概率。对于多分类问题,逻辑回归的损失函数可以使⽤多分类的交叉熵损失函数,如softmax交叉熵损失函数。通常采用梯度下降(Gradient Descent)或其变种来最⼩化损失函数并更新模型的参数(权重和截距)。

Q. 为什么均方差损失函数不能用于二分类?

由于平方误差损失函数会对预测值和真实值之间的误差进行平方,所以对于偏离目标值较大的预测值具有较大的惩罚,使用平方误差损失函数可能导致训练出来的模型过于敏感,对于偏离目标值较远的预测值可能会出现较大的误差,从而导致出现 “震荡”现象:

震荡现象: 平方误差损失函数的梯度在误差较小时非常小,而在误差较大时则非常大,这导致在误差较小时,模型参数的微小变化可能会导致损失函数的微小变化,而在误差较大时,模型参数的变化则会导致损失函数的大幅变化,从而产生了振荡现象。

原文链接:https://blog.csdn.net/weixin_43098506/article/details/129892341
非凸性:均方差损失函数在逻辑回归中会导致损失函数变成非凸函数,这会导致优化过程变得非常困难。因为非凸函数有多个局部最小值, 而均方差损失函数可能会陷入局部最小值而无法到达全局最小值,这回影响模型的训练效果。
输出范围不同:逻辑回归的输出是概率值,范围在0到1之间,而均方差损失函数对于这种概率输出不敏感,它对于离群值(outliers)非常敏感。这意味着即使是一个很小的偏离,也会导致损失函数变得非常大,从而使得模型对于异常值非常敏感。

Q. 如何处理多分类问题?

核心方法包括三种,分别是OvO(one vs one)、OvR(one vs rest)和MvM(multi vs multi)。其中OvO具备性能优势,而MvM则具备判断效力优势

  • OVO的基本过程是将每个类别对应数据集单独拆分成一个子数据集,然后令其两两组合,再来进行模型训练;
  • OVR的策略则是每次将一类的样例作为正例、其他所有数据作为反例来进行数据集拆分;
  • MVM要求同时将若干类化为正类、其他类化为负类,并且要求多次划分,再进行集成。

还有一种Softmax回归方法,将多个类别之间的关系建模为⼀个多类别概率分布。它使⽤Softmax函数来将线性组合的输⼊映射到K个类别的概率分布,其中K是类别的数量。训练Softmax回归模型时,通常使⽤交叉熵损失函数。

Q. L1和L2正则化有什么区别?

L1正则化通过向损失函数添加参数的绝对值之和来惩罚模型中的⼤参数,从⽽促使⼀些参数变为零
这实现了特征选择,可以使模型更加稀疏,剔除不重要的特征,提⾼模型的泛化能⼒

L2正则化通过向损失函数添加参数的平⽅和来惩罚模型中的⼤参数,但不会使参数变为零,它只是压
缩参数的值。 L2正则化有助于减轻多重共线性问题,稳定模型的估计

总的来说, L1和L2正则化都有助于控制模型的复杂度,防⽌过拟合。它们的主要区别在于:

  • L1 正则化倾向于产⽣稀疏模型,即⼀些参数变为零,实现了特征选择
  • L2 正则化不会使参数变为零,⽽是对参数进⾏缩⼩,有助于减轻多重共线性问题

Q. 为什么L1正则化容易产生稀疏解?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Q. 分类模型的评估指标:准确率、精准率、召回率、F1-Score、AP

在这里插入图片描述
假设有以下混淆矩阵:
在这里插入图片描述

  • 准确率(Accuracy) :预测正确的结果占总样本的百分比,(TP+TN)/(TP+TN+FP+FN)
  • 精确率(Precision):所有被预测为正的样本中实际为正的样本的概率,强调降低误报率,TP/(TP+FP)
  • 召回率(Recall):实际为正的样本中被预测为正样本的概率,强调“宁可错杀,不可放过”,TP/(TP+FN)
  • F1-Score:平衡精确率和召回率,(2×Precision×Recall)/(Precision+Recall)
  • AP(Average Precision):衡量模型在不同阈值下的精度变化。它计算了模型在不同召回率下的精确率,并取平均值,即:
    AP = 平均精确率。

Q. 什么是ROC曲线和AUC值?它们用来评估逻辑回归模型的哪些性能?

ROC曲线是⼀种图形化⼯具,⽤于可视化⼆分类模型的性能。它以假正例率(False Positive Rate)(FP/(FP+TN))为横轴,以真正例率(True Positive Rate,也称为召回率)(TP/(TP+FN))为纵轴,绘制出模型在不同阈值下的性能表现。ROC曲线图中的每个点对应于不同的分类阈值,根据阈值的变化(从大到小),计算真正例率和假正例率,然后绘制出曲线。 ROC曲线越靠近左上⻆,模型性能越好。ROC曲线的优点是不受类别不平衡问题的影响,能够展示模型在各种不同阈值下的性能表现。

在这里插入图片描述

AUC是ROC曲线下⽅的⾯积,被称为"Area Under the ROC Curve"。 AUC值的范围通常在0.5和1之间,其中
0.5表示模型的性能等同于随机猜测, 1表示完美分类器。
在这里插入图片描述

Q. ROC曲线和PR曲线的特点

ROC曲线适用于评估分类器在不同分类阈值下的全面性能,对类别平衡的问题不敏感;而PR曲线更适用于评估分类器在类别不平衡情况下的性能,关注于正例的召回率和精确率之间的权衡。在实践中,根据具体的问题和需求,选择使用ROC曲线或PR曲线来评估模型的性能。

Q. 什么是决策树,它是如何工作的?简要描述其基本原理。

决策树(Decision Tree)是⼀种⽤于分类和回归问题的机器学习模型。它是⼀个树状结构,其中每个节点代表⼀个特征,每个分⽀代表⼀个特征值,每个叶⼦节点代表⼀个类别或回归值(该节点中所有训练样本的⽬标变量值的平均值)。决策树的基本原理是根据输⼊特征逐步分割数据集,以便最终能够根据特征的值来预测⽬标变量的类别或值。

基本⼯作原理:

  1. 根节点:开始时,整个数据集视为⼀个根节点。在根节点上,选择⼀个特征,将数据集分割成多个⼦集。选择的特征是基于某种度量标准,通常是根据信息增益(Entropy)、基尼不纯度(Gini Impurity)或均⽅误差(Mean Squared Error)等来进⾏选择;
  2. 分支节点:接下来,每个⼦集都被视为⼀个分⽀节点,并在分⽀节点上选择另⼀个特征,再次将数据集分割成更⼩的⼦集。这个过程递归地进⾏下去,直到达到某个停⽌条件,如达到最⼤深度、节点中的样本数⼩于阈值,或者节点的不纯度低于阈值
  3. 叶子节点:当不再进⾏分割时,节点被标记为叶⼦节点,叶⼦节点中包含⼀个最终的类别标签(对于分类问题)或回归值(对于回归问题)。这个值是根据该节点上的数据集的主要类别(对于分类问题)或平均⽬标值(对于回归问题)来确定的
  4. 预测:⼀旦构建了决策树,对新的未⻅样本进⾏预测时,从根节点开始根据特征的值遍历树的分⽀,直到达到叶⼦节点。然后,将叶⼦节点的类别标签或回归值作为预测结果。

决策树的优点包括易于理解和解释,能够处理数值和分类特征,对异常值不敏感。然⽽,它也容易过拟合,因此需要进⾏剪枝等正则化操作以提⾼泛化能⼒

在这里插入图片描述

Q. 决策树的构建过程中有哪些常用的划分准则?如何选择最佳划分准则?

决策树的构建过程中常⽤的划分准则有三种:

  • 信息增益(Information Gain)信息熵可以理解为表示给定随机变量的平均信息量。如果随机变量的分布接近均匀分布,每个取值的概率相等,那么每个取值所包含的信息量较大,信息熵越高表示不确定性越高。信息增益是⽤于分类问题的常⻅划分准则,它基于信息论的概念。在每个节点上,根据特征的取值将数据集分成多个⼦集,然后计算每个⼦集的熵(Entropy),然后计算信息增益,它是⽗节点熵与⼦节点熵之差信息增益高表示使用该特征进行分裂后,整体熵的减少较大,即带来的信息量增加较多,因此该特征对于分类具有更大的贡献。在决策树算法中,选择信息增益最大的特征作为节点分裂的依据,以最大程度地减少不确定性,提高分类效果。信息增益的问题是它偏向于选择具有较多取值的特征
  • 基尼不纯度(Gini Impurity):基尼不纯度是另⼀种⽤于分类问题的划分准则。在每个节点上,根据特征的取值将数据集分成多个⼦集,然后计算每个⼦集的基尼不纯度,它表示从该⼦集中随机选择两个样本,它们的类别标签不⼀致的概率基尼不纯度越低,表示⼦节点的纯度越⾼。选择基尼不纯度最低的特征作为划分特征。基尼不纯度相对于信息增益更加偏好选择取值较少的特征,因此在某些情况下,它可能会对多分类问题更有利;
  • 均⽅误差(Mean Squared Error):均⽅误差是⽤于回归问题的划分准则。在每个节点上,根据特征的取值将数据集分成多个⼦集,然后计算每个⼦集中⽬标变量的均⽅误差。均⽅误差越低,表示⼦节点的⽬标变量值更接近于均值,模型对数据的拟合越好。

为了选择最佳特征和划分,决策树算法会尝试所有可能的特征和取值组合,并选择最优的划分⽅式,这个过程通常称为"贪心"⽅法。需要注意的是,在决策树构建过程中,还可以应⽤剪枝(pruning)等技术来避免过拟合,提⾼模型的泛化性能。选择合适的划分准则和适当的剪枝策略对于构建⾼性能的决策树模型⾮常重要。

Q. 决策树的种类及差别

决策树是一种常用的机器学习算法,用于分类和回归任务。根据不同的特性和应用场景,存在多种类型的决策树。以下是一些常见的决策树类型及其差异:

  1. ID3(Iterative Dichotomiser 3)
    ID3 是最早的决策树算法之一,用于分类问题。它基于信息增益(Information Gain)来选择最优的划分属性。ID3算法对于具有较少取值的属性有较好的表现,但对于具有大量取值的属性会受到偏好

  2. C4.5
    C4.5 是 ID3 的改进版本,也用于分类问题。相比于 ID3,C4.5引入了对连续属性的处理、处理缺失值、剪枝等改进。此外,C4.5使用基于信息增益比(Gain Ratio)来选择最优划分属性,以解决 ID3 中信息增益偏好的问题。

  3. CART(Classification and Regression Trees)
    CART 既可以用于分类问题,也可以用于回归问题。CART算法通过选择最优的划分属性和划分点来构建决策树。对于分类问题,CART使用基于基尼指数(Gini Index)的准则来选择最优划分属性;对于回归问题,CART使用平方误差最小化来选择最优划分属性。

ID3 和 C4.5 主要用于分类问题,它们构建的决策树用于对样本进行分类预测。CART 既可以用于分类问题,也可以用于回归问题
ID3 和 C4.5 在处理连续属性时需要将其离散化成离散值,然后才能进行划分。CART 可以直接处理连续属性。CART通过选择最优的划分点将连续属性划分为两个子集。
ID3 和 C4.5 在构建决策树时对于缺失值的处理比较困难,通常会采用填充缺失值或忽略缺失值的方法。CART 可以自然地处理缺失值。在构建决策树时,CART能够考虑到缺失值并选择最优的划分属性

Q. 在决策树中如何避免过拟合?

在决策树中避免过拟合的⽅法:

  1. 剪枝(Pruning):剪枝是⼀种减⼩树的复杂度的⽅法,它通过移除⼀些叶⼦节点或将⼀些⼦树替换为叶⼦节点来降低模型的复杂度。这有助于减少模型对训练数据的拟合程度,提⾼模型的泛化能⼒。剪枝的关键是确定何时停⽌分裂节点以及如何选择要剪枝的节点。常⽤的剪枝策略包括预剪枝和后剪枝。
  2. 限制树的深度(Max Depth):限制树的深度是⼀种简单⽽有效的⽅法,通过设置树的最⼤深度可以控制树的复杂度。树的深度过⼤会增加过拟合的⻛险,因此限制树的深度有助于提⾼模型的泛化性能。
  3. 增加最⼩样本数(Min Samples) :通过设置每个叶⼦节点的最⼩样本数,可以控制叶⼦节点的数量。增加最⼩样本数可以防⽌⽣成过于细分的叶⼦节点,从⽽减少模型的过拟合⻛险。
  4. 限制叶⼦节点的最⼩样本数(Min Samples per Leaf):与上⼀点类似,但是是限制每个叶⼦节点的最⼩样本数。这有助于确保叶⼦节点中的样本数量不会太少,从⽽减少过拟合。
  5. 降低信息增益阈值:信息增益⽤于选择划分特征,降低信息增益的阈值可以使模型更加保守,减少过度划分的可能性。
  6. 随机森林(Random Forest):随机森林是⼀种基于决策树的集成⽅法,通过随机选择特征⼦集和样本⼦集来构建多棵树,并将它们组合起来进⾏预测。随机森林通常能够降低过拟合⻛险,提⾼模型的泛化性能。

避免过拟合是决策树模型中的⼀个关键问题,需要根据具体问题和数据集选择适当的⽅法来控制模型的复杂度。通常,通过组合多种策略,可以有效地减轻过拟合问题,使决策树模型更加稳健。

Q. 决策树的剪枝方式有哪些?

决策树剪枝是一种用于减少决策树复杂度和提高泛化性能的技术。以下是常见的决策树剪枝方式:

1.预剪枝(Pre-pruning)
预剪枝是在构建决策树的过程中,在每个节点进行划分之前,通过一些预定的规则来判断是否进行划分。预剪枝的目标是在决策树过度拟合训练数据之前停止树的生长。常见的预剪枝策略包括:

  • 最大深度限制:限制决策树的最大深度,防止过度拟合;
  • 最小样本数限制:限制节点上的最小样本数,如果节点上的样本数小于阈值,则停止划分;
  • 最小信息增益限制:如果划分后的信息增益小于阈值,则停止划分。

2.后剪枝(Post-pruning)
后剪枝是在决策树构建完成后,通过剪枝操作来减小决策树的复杂度。后剪枝的思想是通过剪掉一些节点或子树来减少过拟合。常见的后剪枝策略包括:

  • 错误率剪枝:计算剪枝前后的错误率(训练集),如果剪枝后的错误率小于剪枝前,则进行剪枝操作;
  • 基于验证集的剪枝:将数据集划分为训练集和验证集,通过验证集的性能来评估剪枝操作的效果,选择性能最好的剪枝。

预剪枝和后剪枝都是为了防止决策树过拟合训练数据,提高模型的泛化能力。预剪枝是在决策树构建的过程中进行剪枝操作,而后剪枝是在决策树构建完成后进行剪枝操作。选择合适的剪枝策略取决于具体的问题和数据特点。

Q. 什么是随机森林,以及它是如何⼯作的?

随机森林(Random Forest)是⼀种集成学习算法,⽤于解决分类和回归问题。它基于决策树(Decision Trees)构建,并通过组合多个决策树来提⾼模型的性能和稳定性。随机森林的主要思想是通过随机选择样本和特征来构建多棵决策树,然后综合它们的预测结果来进⾏分类或回归。

随机森林的⼯作原理:

  1. 随机选择样本:从训练数据集中随机选择⼀定数量的样本(有放回抽样),这个过程称为"Bootstrap"抽样。这意味着每棵决策树的训练数据都是随机抽取的,可能包含重复的样本;
  2. 随机选择特征:在每个决策树的节点上,随机选择⼀部分特征⼦集来进⾏分裂。这确保了每棵树都不会过度依赖于某些特征;
  3. 构建多棵决策树:根据以上两个步骤,构建多棵决策树。每棵树都会根据样本和特征的随机选择来学习数据的
    不同⽅⾯;
  4. 综合预测结果:对于分类问题,随机森林会采⽤多数投票的⽅式来确定最终的分类结果。对于回归问题,随机森林会取多棵树的平均预测值

这种随机性多棵树的组合使随机森林具有很强的泛化能⼒和抗过拟合能⼒,因此通常表现出⾊于单个决策树。

Q. 在随机森林中,袋外误差(Out-of-Bag Error)有什么作用,以及如何使用它来评估模型性能?

袋外误差是随机森林中⼀种重要的性能评估指标,主要有3⽅⾯作⽤:

  1. ⽆需额外验证集: OOB误差提供了⼀种在不使⽤额外验证集的情况下评估模型性能的⽅法。这对于⼩数据集或数据不⾜以划分出独⽴的验证集的情况⾮常有⽤;
  2. 评估模型泛化性能: OOB误差是⼀种对模型泛化性能的估计。它通过在训练过程中未被抽样到的数据(OOB样本)上进⾏评估来衡量模型的性能,这使得它可以提供⼀个较好的模型性能估计;
  3. 帮助选择超参数: OOB误差可以⽤于调整随机森林的超参数,例如树的数量、最⼤深度等。通过观察OOB误差在不同超参数设置下的变化,可以选择最佳的超参数配置。

Q. 随机森林如何评估特征的重要性?它们的计算方法是什么?

随机森林可以通过不同⽅法来评估特征的重要性,它们通常基于每个特征在模型中的使⽤频率和重要性来计算。

以下是评估随机森林中特征重要性的两种常⻅⽅法:

1.基于基尼不纯度或熵的特征重要性

在每棵决策树的构建过程中,随机森林可以测量每个特征对于减少不纯度(例如,基尼不纯度或熵)的贡献。这个贡献可以⽤来估计特征的重要性。

特征重要性的计算通常遵循以下步骤:

  • 对于每个特征,在每次分裂节点时,测量该特征的分裂贡献,即通过该特征分裂后的不纯度减少程度。这可以通过基尼不纯度或熵的减少量来衡量;
  • 对于每个特征,将所有分裂贡献的平均值或加权平均值汇总起来,以得到该特征的总体重要性得分;
  • 最后,将所有特征的重要性得分标准化,使它们的总和等于1。

这种⽅法衡量了每个特征在模型中的贡献,对于减少不纯度的特征具有较⾼的重要性分数。

2.基于Out-of-Bag (OOB)误差的特征重要性

随机森林可以利⽤Out-of-Bag(OOB)样本来估计特征重要性。 OOB样本是在Bootstrap抽样过程中未被选择的样本。特征重要性的计算步骤如下:

  • 对于每个特征,记录训练模型时使⽤该特征的树的OOB样本的预测误差;
  • 对于每个特征,计算它对应的OOB误差的增加(或减少)。这是通过将特征的值随机排列来破坏特征与⽬标变量之间的关系,然后重新计算OOB误差来实现的;
  • 特征重要性分数是通过⽐较原始OOB误差和破坏特征后的OOB误差来计算的。如果特征重要性分数增加了,那么该特征对模型的性能具有重要影响。

这两种⽅法都可以⽤来估计特征的相对重要性,但它们的计算⽅式略有不同。

Q. 随机森林的局限性

  1. 计算资源需求较⼤: 随机森林由多个决策树组成,因此需要较多的计算资源和内存来训练和存储模型,对于⼤规模数据集可能不太适⽤;
  2. 模型解释性较弱: 随机森林是集成模型,因此模型的解释性相对较弱,不如单⼀决策树直观;
  3. 可能不适⽤于稀疏数据: 随机森林通常对于稀疏数据的处理效果不如线性模型或其他模型;
  4. 随机性导致结果不确定: 随机森林的随机性机制导致不同运⾏时模型结果可能不完全⼀致,这在⼀些场景下可能不可接受;
  5. 对于平滑决策边界的问题表现较差: 随机森林的决策边界通常是锯⻮状的,不适⽤于对平滑决策边界的问题。

Q. 什么是支持向量机?

⽀持向量机(Support Vector Machine, SVM)是⼀种强⼤的监督学习算法,主要⽤于分类和回归问题。 SVM的核⼼思想是寻找⼀个最优的超平⾯或决策边界,以最⼤化不同类别数据点之间的间隔,并尽量避免误分类

⽀持向量是训练数据中距离超平⾯最近的数据点。它们是⽤于定义分类间隔(Margin)的关键元素。分类间隔是指超平⾯与最近的⽀持向量之间的距离,SVM 的关键⽬标是找到⼀个超平⾯,使得分类间隔最⼤化

SVM也可以应⽤于⾮线性分类问题,通过引⼊核函数来将数据映射到⾼维特征空间,从⽽在⾼维空间中找到线性可分的超平⾯。常⻅的核函数包括线性核、多项式核和径向基函数(RBF)核。

SVM的最优超平面是通过解决一个凸优化问题来获得的。优化问题的目标是在满足间隔最大化或分类误差最小化的约束条件下,找到一个能够将不同类别的样本点正确分开的超平面。这个优化问题可以通过使用拉格朗日乘子法和KKT条件来求解。

SVM使用的损失函数是基于间隔的合页损失函数(Hinge Loss)。合页损失函数的优化目标是最小化损失函数的总和,同时最大化间隔。在求解优化问题时,通常会引入正则化项,如 L2 正则化,以避免过拟合现象。

Q. 支持向量机如何应用在回归任务?

在回归任务中

  1. SVM回归的⽬标是找到⼀个超平⾯,使得数据点尽量接近超平⾯,同时在⼀定容忍度内;
  2. 在回归问题中, SVM的⽬标是最⼩化⼀个损失函数,损失函数衡量了数据点离超平⾯的距离以及容忍度的违规情况;
  3. 容忍度(Tolerance)是⼀个控制在训练期间允许数据点距离超平⾯的程度的参数

Q. 在SVM中,如何处理⾮线性可分的数据?核函数(Kernel Function)的作用和常用类型。

在SVM中处理⾮线性可分的数据时,通常使⽤核函数(Kernel Function)来将数据映射到⼀个⾼维特征空间,使得数据在这个⾼维空间中变得线性可分。

核函数的作⽤是计算两个数据点之间的相似度或内积,⽽不需要显式地将数据映射到⾼维空间。以下是⼀些常⽤的核函数及其作⽤:

  • 线性核函数(Linear Kernel):这是SVM的默认核函数,它在原始特征空间中计算数据点之间的线性关系,适⽤于线性可分的数据;
  • 多项式核函数(Polynomial Kernel):多项式核函数通过引⼊多项式项将数据映射到⾼维空间,使其变得更容易分离。它有⼀个参数d,表示多项式的阶数;
  • 高斯径向基核函数(Gaussian Radial Basis Function Kernel):⾼斯核函数通过计算数据点之间的相似度来将数据映射到⽆限维的⾼维空间。它有⼀个参数σ,控制了特征映射的“宽度”;
  • Sigmoid核函数(Sigmoid Kernel):Sigmoid核函数将数据映射到⾼维空间,类似于神经⽹络的激活函数。它在某些特定应⽤中有⽤,但不如⾼斯核函数和多项式核函数常⽤。

Q. SVM与逻辑回归(Logistic Regression)之间有哪些相似之处和差异?

相似之处

  1. ⽤途:SVM和逻辑回归都可以⽤于⼆元分类问题,也可以扩展到多类别分类;
  2. 线性模型:SVM和逻辑回归都是线性模型,它们尝试在特征空间中找到⼀个线性决策边界来分离不同类别的数据点。

差异

  1. 损失函数:逻辑回归使⽤对数损失函数,⽽SVM使⽤合⻚损失函数(Hinge Loss)。这导致了它们在优化和预测时的不同⾏为。
  2. 决策边界:SVM的⽬标是找到离决策边界最近的数据点(⽀持向量),⽽逻辑回归的⽬标是找到最⼤似然估计下的决策边界。因此, SVM更加关注⽀持向量,⽽逻辑回归更加关注整体数据点的概率分布
  3. 鲁棒性:SVM通常对异常值更加鲁棒,因为它最⼤化了离决策边界最近的数据点的间隔。逻辑回归对异常值更加敏感,因为它使⽤了对数损失函数。
  4. 参数调整:SVM的性能⾼度依赖于核函数的选择,⽽逻辑回归相对较少需要参数调整。

Q. 朴素贝叶斯是什么?它的基本原理是什么?

朴素⻉叶斯(Naive Bayes)是⼀种基于⻉叶斯定理的概率统计分类算法,常⽤于⽂本分类和多类别分类问题。它的基本原理是基于特征之间的条件独⽴性假设,因此称为"朴素"⻉叶斯。该算法通过计算给定类别的特征条件概率来进⾏分类。下⾯是朴素⻉叶斯的基本原理:

给定⼀个分类任务,我们希望找到⼀个类别标签(或类别的概率分布),使得给定特征数据集X的条件下,该类别标签的概率最⼤。
在这里插入图片描述
该方法忽略了特征相关性,且不适用于回归问题。

  1. 定义:朴素贝叶斯是一种基于贝叶斯定理的分类算法,该算法基于条件概率的思想,它利用了训练集中的特征与标签之间的关系来推论新样本的标签。
  2. 假设:对于给定样本,满足特征独立性,条件概率等于各个特征单独概率的乘积。
  3. 使用:首先根据训练数据计算各个特征的概率分布,带入贝叶斯定理中计算后验概率,选择概率最大的标签作为分类结果。
  4. 注意:在实际应用中特征不一定满足相互独立,因此需要进行特征选择和降维操作。

Q. 什么是K近邻算法?

K近邻(K-Nearest Neighbors,简称KNN)算法是⼀种基本的机器学习算法,常⽤于分类和回归问题。⼯作原理很简单,概括为以下步骤:

  1. 训练阶段:在训练阶段,算法会存储所有的训练样本数据及其所属的类别或标签;
  2. 测试阶段:在测试阶段,对于待分类或回归的样本,算法会找出与该样本最近的K个训练样本;
  3. 分类:对于分类问题, KNN算法使⽤这K个最近的训练样本中最常⻅的类别来预测待分类样本的类别。例如,如果K=3,这三个最近的训练样本分别属于类别A、 B、 B,那么待分类样本将被预测为类别B;
  4. 回归:对于回归问题, KNN算法使⽤这K个最近的训练样本的平均值或加权平均值来预测待回归样本的输出。例如,如果K=3,这三个最近的训练样本的⽬标值分别为5、 6、 7,那么待回归样本的输出将被预测为它们的平均值或加权平均值。

计算距离的方法通常有欧⽒距离、曼哈顿距离等。KNN算法需要计算新样本与所有训练样本之间的距离,随着训练集的规模增加,计算成本会显著增加。

Q. 什么是余弦距离,与欧氏距离有什么差别,有哪些方面的应用?

余弦距离(Cosine Distance)是衡量两个向量之间的相似性的一种度量方法。它衡量的是两个向量之间的夹角的余弦值,而不仅仅是向量之间的欧氏距离。与欧氏距离相比,余弦距离的主要差别在于它不考虑向量的大小和绝对位置,而更关注向量之间的方向和夹角。欧氏距离衡量的是两个向量之间的直线距离,而余弦距离衡量的是两个向量之间的夹角的余弦值。

余弦距离具有以下特点:

  • 范围在0到1之间:余弦距离的取值范围在0到1之间,其中0表示两个向量之间完全不相似,1表示两个向量之间完全相似;

  • 不受向量大小的影响:余弦距离只关注向量之间的方向,而不考虑其长度或绝对位置。因此,它对于不同大小的向量具有鲁棒性;

  • 对稀疏向量适用:余弦距离在处理高维稀疏向量时效果较好,因为它只关注向量之间的方向,而不考虑零元素的影响。

应用方面,余弦距离在许多领域有广泛的应用,包括但不限于以下几个方面:

  • 文本相似性度量:在文本挖掘和自然语言处理中,可以使用余弦距离来度量文本之间的相似性,例如计算文档、句子或单词的相似性;
  • 图像检索:在图像处理和计算机视觉中,可以使用余弦距离来比较图像特征向量的相似性,从而进行图像检索和相似图像推荐;
  • 推荐系统:在协同过滤推荐系统中,可以使用余弦距离来度量用户之间的兴趣相似性,从而为用户推荐相似的项目或用户;
  • 聚类分析:在聚类算法中,可以使用余弦距离来度量样本之间的相似性,例如在文本聚类和社交网络分析中;
  • 信息检索:在信息检索系统中,可以使用余弦距离来计算查询和文档之间的相关性,从而进行文档排序和搜索结果的排名。

总结而言,余弦距离是一种度量向量相似性的有效方法,特别适用于处理高维稀疏数据和度量向量之间的方向关系。它在文本处理、图像处理、推荐系统和聚类分析等领域中具有广泛的应用。

Q. 什么是K均值聚类?它的主要目标是什么?

K均值聚类(K-means clustering)是⼀种常⽤的⽆监督学习算法,⽤于将数据集划分为K个不同的簇。该算法通过最⼩化簇内样本之间的平⽅误差和最⼤化簇间的距离来确定簇的位置。K均值聚类的步骤如下:

  1. 随机选择K个初始质⼼作为簇的中⼼点;
  2. 对每个样本计算其与各个质⼼之间的距离,并将样本分配给与其最近的质⼼所代表的簇;
  3. 更新每个簇的质⼼为该簇的所有样本的平均值;
  4. 重复步骤2和3,直到质⼼不再变化或达到预定义的停⽌条件。

Q. K均值聚类的优点和局限性是什么?

K均值聚类是一种常用的无监督学习算法,用于将数据集划分为K个不同的簇。它具有以下优点和缺点:

优点

  • 简单而有效:K均值聚类是一种简单而直观的算法,易于实现和理解。它的计算复杂度相对较低,适用于大规模数据集;
  • 可扩展性:K均值聚类可以轻松地扩展到大规模数据集,因为它的计算复杂度是线性的;
  • 聚类结果可解释性强:K均值聚类的结果相对容易解释,每个簇都由其质心(簇中心)和对应的数据点组成。

缺点

  • 需要指定簇的数量:K均值聚类需要预先指定聚类的数量K,但在实际应用中,我们通常无法事先确定最佳的簇数。选择不合适的K值可能导致聚类结果不准确;
  • 对初始质心敏感:K均值聚类对初始质心的选择非常敏感。不同的初始质心可能导致不同的聚类结果。这意味着算法可能会陷入局部最小值,并且无法找到全局最优解;
  • 受异常值和噪声影响:K均值聚类对异常值和噪声数据非常敏感。异常值可能会导致质心偏离正常聚类,而噪声数据可能会形成自己的簇;
  • 仅适用于凸形簇:K均值聚类假设簇是凸形的,这意味着它无法很好地处理非凸形簇、嵌套簇或具有复杂形状的簇;
  • 不适用于处理数据不平衡的情况:如果数据集的各个簇的大小差异很大,K均值聚类可能无法准确地捕捉到小簇中的数据点。

Q. K均值聚类如何确定K的大小?

确定K-Means聚类中的簇数K的大小是一个重要的问题。选择合适的K值可以确保聚类结果的有效性和可解释性。以下是一些常用的方法来确定K的大小:

  • 手肘法(Elbow Method):这是最常用的确定K值的方法之一。通过绘制K值与聚类误差(即数据点到其所属簇中心的距离)之间的关系曲线(手肘曲线),找到一个明显的"手肘"点,该点对应的K值被认为是最佳的簇数。

  • 轮廓系数(Silhouette Coefficient):轮廓系数度量了聚类结果的紧密性和分离度。对于每个数据点,计算其与其所属簇内其他数据点的平均距离(a)以及与最近邻簇中所有数据点的平均距离(b)。然后,计算轮廓系数为(b - a) / max(a, b)。对所有数据点的轮廓系数求平均,最佳的K值应该对应于最大的平均轮廓系数。轮廓系数的取值范围在[-1, 1]之间,值越接近1表示聚类结果越好,值越接近-1表示聚类结果越差,值接近0表示数据点在不同簇之间存在重叠。

  • Gap统计量(Gap Statistic):Gap统计量通过比较实际数据与随机数据生成的参考数据之间的差异来估计最佳的K值。它计算了不同K值下的聚类误差,并将其与参考数据的聚类误差进行比较。最佳的K值应该对应于最大的Gap统计量值。Gap(K)=E(logDk)-logDk

Q. 什么是层次聚类?

层级聚类(Hierarchical Clustering)是一种将数据点逐步合并或分割为不同的簇的聚类方法。它基于样本之间的相似性或距离构建一个层级结构,从而形成一个聚类树(Dendrogram)。层级聚类的原理如下:

1.距离或相似度度量
层级聚类需要定义样本之间的距离或相似度度量方式。常用的度量方法包括欧氏距离、曼哈顿距离、相关系数等。

2.自底向上聚类(凝聚聚类)

  • 步骤1:将每个样本点作为一个初始簇。
  • 步骤2:计算每对簇之间的距离或相似度。
  • 步骤3:找到距离或相似度最小的两个簇,将它们合并为一个新的簇。
  • 步骤4:更新簇之间的距离或相似度矩阵。
  • 步骤5:重复步骤2-4,直到所有样本点都被合并为一个簇或达到预定的聚类数量。

3.自顶向下聚类(分裂聚类)

  • 步骤1:将所有样本点作为一个初始簇。
  • 步骤2:计算当前簇的距离或相似度。
  • 步骤3:选择距离或相似度最大的簇,将其分裂为两个新的簇。
  • 步骤4:更新簇之间的距离或相似度矩阵。
  • 步骤5:重复步骤2-4,直到达到预定的聚类数量或满足某个停止准则。

4.聚类树(Dendrogram)
在层级聚类过程中,每次合并或分裂都会生成一个新的节点,最终形成一个聚类树(Dendrogram)。聚类树可以表示为树状图,其中每个节点代表一个簇,节点之间的距离表示簇之间的距离或相似度。

5.切割聚类树
根据聚类树的结构,可以选择不同的切割点,将聚类树切割成不同的簇。切割点的选择可以基于预定的聚类数量、距离阈值或其他准则。

层级聚类具有以下特点

  • 不需要预先指定聚类数量,可以根据聚类树进行切割得到不同数量的簇。
  • 能够发现不同尺度的聚类结构,从大的簇到小的簇。
  • 可以通过聚类树的可视化来直观地理解数据的聚类结构。
  • 计算复杂度较高,特别是自底向上的凝聚聚类方法。
  • 对于大规模数据集的处理可能会受到限制

层级聚类是一种常用的聚类算法,它提供了一种层次化的视角来理解数据的聚类结构,并且能够根据需求切割聚类树得到不同粒度的聚类结果。
在这里插入图片描述

Q. K均值聚类和层次聚类之间有哪些区别和相似之处?它们分别适用于什么类型的数据和应用场景?

区别

  1. ⽅法
    K均值聚类: K均值聚类是⼀种划分聚类⽅法,它将数据划分为K个不重叠的簇,每个数据点属于其中⼀个簇。该算法通过迭代更新簇的中⼼点和重新分配数据点来实现聚类。
    层次聚类:层次聚类是⼀种层次性聚类⽅法,它创建⼀个层次结构的簇,从单个数据点开始,逐渐合并为越来越⼤的簇,最终形成⼀个包含所有数据点的单⼀簇或树状结构。
  2. 簇的数⽬
    K均值聚类需要事先指定簇的数量K。
    层次聚类不需要指定簇的数量,它⽣成⼀个层次性的聚类结构,可以根据需要在不同层次上选择聚类。
  3. 结果表示
    K均值聚类的结果是每个数据点属于哪个簇的分配。
    层次聚类的结果可以以树状结构(树状图或树状热图)的形式表示,也可以通过剪枝来获得不同数量的簇。

相似之处

  1. 距离度量: K均值聚类和层次聚类都使⽤距离度量来度量数据点之间的相似性或距离,例如欧⽒距离、曼哈顿距离等。
  2. ⽆监督学习: 它们都是⽆监督学习⽅法,不需要事先标记的类别信息。

适⽤场景

  1. K均值聚类适⽤于:数据点分布近似均匀,簇的形状⼤致相似,簇内的数据点具有相似的⼤⼩和⽅差。你事先知道要分成多少个簇。对计算资源要求有限的情况,因为K均值计算较快。
  2. 层次聚类适⽤于:数据点的分布具有层次性或嵌套结构,可以使⽤不同的聚类级别。不确定需要分成多少个簇,希望通过可视化和剪枝选择聚类数。对计算资源要求相对较⾼,因为构建层次结构可能需要更多的计算资源。

K均值聚类更适⽤于简单的聚类问题,⽽层次聚类更适⽤于复杂的聚类问题,尤其是当你希望获得层次性聚类结果时。选择哪种⽅法应该取决于数据的特性以及问题的需求。

Q. DBSCAN的原理是什么?

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,它能够将具有足够密度的样本划分为簇,并且可以识别出噪声点。DBSCAN的原理如下:

1.密度定义

  • 核心点(Core Point):对于一个样本点,如果在以该点为中心的邻域内(包括该点自身),存在至少指定数量(MinPts)的样本点,则该点被称为核心点。
  • 边界点(Border Point):对于一个样本点,如果在以该点为中心的邻域内,样本点的数量不满足核心点的条件,但它位于某个核心点的邻域内,则该点被称为边界点。
  • 噪声点(Noise Point):对于一个样本点,如果它既不是核心点也不是边界点,则该点被称为噪声点。

2.DBSCAN算法步骤

  • 步骤1:选择一个未被访问的样本点。
  • 步骤2:计算该样本点的邻域内的样本数量,如果满足核心点的条件(大于等于MinPts),则将该点标记为核心点,并创建一个新的簇,并将该点添加到簇中。
  • 步骤3:如果该点是核心点,则通过密度可达性将其邻域内的样本点添加到簇中。如果邻域内的样本点也是核心点,将继续递归地将其邻域内的样本点添加到簇中,直到不能再添加为止。
  • 步骤4:重复步骤1-3,直到所有的样本点都被访问过。
  • 步骤5:将剩余的未被分配到任何簇的样本点标记为噪声点。

3.DBSCAN的特点

  • DBSCAN能够自动发现任意形状的簇,对于非球形簇结构的数据效果较好。
  • 对于密度不均匀的数据集效果较好
  • 能够识别和排除噪声点
  • 对于高维数据集的处理相对较差,容易受到维度诅咒的影响。
  • 对于不同密度簇之间的分隔可能存在困难。

DBSCAN通过基于密度的聚类方式,利用样本点的邻域密度来划分簇,并且能够识别噪声点。它不需要预先指定聚类数量,适用于发现任意形状和密度分布的簇结构。

Q. 介绍一下常用的降维方法的原理,及他们的优缺点?(PCA、LDA、t-SNE、Autoencoder)

当处理高维数据时,常用的降维方法有主成分分析(Principal Component Analysis, PCA)、线性判别分析(Linear Discriminant Analysis, LDA)、t-SNE自编码器(Autoencoder)。以下是它们的原理及其优缺点的详细介绍:

  1. 主成分分析(PCA)
  • 原理:PCA通过线性变换将原始数据投影到一个新的坐标系中,使得数据在新坐标系下的方差最大化。它通过计算数据的协方差矩阵的特征值和特征向量,选择最大的特征值对应的特征向量作为主成分,将数据映射到这些主成分上。特征值表示了协方差矩阵在对应特征向量方向上的方差大小,从而反映了数据在该方向上的重要性。
  • 优点:PCA能够消除数据中的冗余信息,减少数据集的维度,并保留大部分的方差,保留了数据的主要结构。
  • 缺点:PCA假设数据的主要结构是线性的,对于非线性关系的数据降维效果可能较差。
    在这里插入图片描述
  1. 线性判别分析(LDA)
  • 原理:LDA是一种有监督的降维方法,它在处理分类问题时特别有用。LDA的目标是通过最大化类间散布矩阵和最小化类内散布矩阵的比值,找到一个投影方向,使得同一类别的样本尽可能接近,不同类别的样本尽可能远离。
    在这里插入图片描述

  • 优点:LDA不仅可以降低数据的维度,还可以提取出具有判别性的特征,有助于分类任务

  • 缺点:LDA假设数据符合高斯分布,并且类别具有相同的协方差矩阵,这在某些数据集上可能不成立。
    在这里插入图片描述

  1. t-SNE
  • 原理:t-SNE是一种非线性降维方法,主要用于数据可视化。它基于数据点之间的相似性来构建降维后的表示。t-SNE通过计算高维空间和低维空间中数据点之间的相似度,并尝试在低维空间中保持这些相似度,从而将高维数据映射到低维空间。
  • 优点:t-SNE能够在降维过程中保留数据的局部结构,适用于可视化复杂的数据集
  • 缺点:t-SNE的计算复杂度较高,对于大规模数据集可能会变得不可行。
  1. 自编码器(Autoencoder)
  • 原理:自编码器是一种无监督学习的神经网络模型。它包含一个编码器和一个解码器,目标是通过学习数据的压缩表示(编码)和重构原始数据(解码),来实现数据的降维。自编码器的中间层表示通常是降维后的特征。
  • 优点:自编码器可以学习非线性的数据结构,适用于复杂的数据降维任务。它还可以在降维过程中学习数据的重要特征。
  • 缺点:自编码器的训练可能需要大量的数据和计算资源,且模型的性能高度依赖于网络结构和超参数的选择。

Q. 什么是集成学习,以及它的基本思想是什么?

集成学习(Ensemble Learning)是⼀种机器学习⽅法,其基本思想是通过组合多个学习算法或模型的预测来提⾼整体性能和泛化能⼒。它的核⼼思想是通过汇总多个模型的意⻅,以减⼩单个模型的偏差和⽅差,从⽽提⾼模型的鲁棒性和准确性。

Q. 集成学习中的Bagging和Boosting有什么区别?

Bagging(Bootstrap Aggregating)

  1. ⼯作原理: Bagging通过随机有放回地从训练数据集中抽取多个⼦样本(Bootstrap样本),然后使⽤这些⼦样本来训练多个基本模型,每个基本模型都是在不同的数据⼦集上训练的;
  2. 模型训练:每个基本模型都独⽴地学习训练数据的不同⼦集,因此它们之间相对独⽴,可以并⾏训练。这些模型通常使⽤相同的学习算法
  3. 集成策略: Bagging的集成策略是通过平均(对于回归问题)或投票(对于分类问题)来集成基本模型的预测结果,以获得最终的集成模型。

Boosting
4. ⼯作原理: Boosting通过迭代地训练⼀系列基本模型,每个基本模型都试图修正前⼀个模型的错误。它会给每个样本分配⼀个权重,使前⼀个模型错误分类的样本在下⼀轮训练中获得更⾼的权重。
5. 模型训练: Boosting的基本模型是依次训练的,每个模型都在前⼀个模型的基础上进⾏学习,尝试减⼩前⼀个模型的错误。
6. 集成策略: Boosting的集成策略是通过加权平均基本模型的预测结果来获得最终的集成模型。权重通常是根据模型性能分配的,性能更好的模型通常有更⾼的权重。

总之, Bagging的基本思想是通过并⾏训练多个相对独⽴的基本模型,然后将它们的预测结果平均化,以减⼩⽅差;⽽Boosting的基本思想是通过迭代训练⼀系列基本模型,每个模型都试图纠正前⼀个模型的错误,以提⾼整体性能。 Boosting通常在模型性能上更强⼤,但也更容易过拟合

在这里插入图片描述

Q. 对比Stacking和Blending两种融合方法的优劣势?

Stacking(堆叠)方法

  • 数据划分:将原始训练数据划分为多个不相交的子集,通常是将数据划分为K个折(K-fold);
  • 基本学习器训练:对于每个子集,使用不同的基本学习算法或模型进行训练,得到K个不同的基本学习器;
  • 基本学习器预测:对于每个基本学习器,使用剩余的未使用子集进行预测,并将预测结果保存下来;
  • 元学习器训练:将预测结果作为新的特征输入,再加上相应的标签,训练一个元学习器(也称为组合器或者元分类器)进行最终的预测;
  • 元学习器预测:使用测试数据集对元学习器进行预测。
    在这里插入图片描述

Blending(混合)方法

  • 数据划分:将原始训练数据划分为两个不相交的部分,通常是将数据划分为训练集和验证集;
  • 基本学习器训练:使用训练集训练多个不同的基本学习器,得到多个基本学习器;
  • 基本学习器预测:对于每个基本学习器,使用验证集进行预测,并将预测结果保存下来;
  • 元学习器训练:将预测结果作为新的特征输入,再加上相应的标签,训练一个元学习器进行最终的预测;
  • 元学习器预测:使用测试数据集对元学习器进行预测。

主要差别

  • 数据划分方式:Stacking将数据划分为多个折,每个折都用于基本学习器的训练和预测;而Blending只划分为训练集和验证集,验证集用于基本学习器的预测;
  • 预测数据来源:Stacking中,基本学习器的预测结果来自于剩余的未使用子集;而Blending中,基本学习器的预测结果来自于验证集;
  • 元学习器的训练数据:Stacking中,元学习器的训练数据是基本学习器的预测结果和相应的标签;Blending中,元学习器的训练数据是基本学习器的预测结果和验证集的标签;
  • 预测阶段:在预测阶段,Stacking使用元学习器对测试集进行预测;Blending也使用元学习器对测试集进行预测。

总的来说,Stacking和Blending的差异在于数据划分方式、基本学习器预测数据来源和元学习器的训练数据。Stacking使用K-fold交叉验证来训练基本学习器并生成预测数据,而Blending只使用训练集和验证集来训练基本学习器并生成预测数据。

Q. AdaBoost算法是如何改进弱分类器的性能的?它的基本原理是什么?

AdaBoost(Adaptive Boosting)是⼀种集成学习⽅法,旨在通过组合多个弱分类器来提⾼整体性能。它的基本原理是通过逐步改进训练样本的权重分布,使得难以分类的样本逐渐得到更多的关注。下⾯是AdaBoost算法的基本原理:

  1. 初始化样本权重:开始时,将每个训练样本的权重初始化为相等值,通常为1/n,其中n是样本数量;
  2. 迭代训练弱分类器:对于每次迭代, AdaBoost选择⼀个弱分类器并进⾏训练。弱分类器的选择通常基于其分类误差率,即它在当前样本权重下的分类准确度。分类误差率较低的弱分类器将具有更⼤的权重;
  3. 更新样本权重:根据弱分类器的分类结果,更新每个训练样本的权重。被错误分类的样本将获得更⾼的权重,⽽正确分类的样本则获得较低的权重。这样⼀来,被错误分类的样本将在后续的迭代中得到更多的关注;
  4. 组合弱分类器:根据弱分类器的分类准确度,给予每个弱分类器⼀个权重。分类准确度较⾼的弱分类器将获得更⾼的权重;
  5. 集成强分类器:将所有加权的弱分类器组合成⼀个强分类器。在预测过程中,每个弱分类器的输出结果会根据其权重进⾏加权求和,得到最终的预测结果。

通过这种迭代的⽅式, AdaBoost能够逐步提⾼整体分类准确度。它善于处理复杂问题,尤其适⽤于⼆元分类任务弱分类器可以是任何具有略优于随机猜测性能的分类器,如决策树桩(仅有⼀个分裂节点的决策树)

Q. 什么是Gradient Boosting

梯度提升方法(Gradient Boosting)是一种集成学习算法,通过串行训练一系列弱学习器(通常是决策树),逐步减小损失函数的梯度来提升整体模型的性能

梯度提升方法的基本原理是以迭代的方式构建一个强大的预测模型,每一轮迭代都会训练一个新的弱学习器,并将其加入到模型中,以减小之前模型的预测误差。在每一轮迭代中,梯度提升方法会计算损失函数相对于当前模型的负梯度,然后用这个负梯度拟合一个新的弱学习器,使得新学习器能够更好地拟合损失函数的残差

具体来说,梯度提升方法的步骤如下:

  1. 初始化模型,通常使用一个常数作为初始预测值。
  2. 对于每一轮迭代:
    a. 计算损失函数相对于当前模型的负梯度(残差)。
    b. 使用当前模型拟合这个负梯度,得到一个新的弱学习器。
    c. 更新模型,将新的弱学习器加入到模型中。
  3. 重复步骤2,直到达到预设的迭代次数或满足停止条件。

梯度提升方法的一个重要特点是可以通过优化不同的损失函数来适应不同的问题,比如平方损失函数用于回归问题,交叉熵损失函数用于分类问题。另外,梯度提升方法还可以通过正则化技术(如学习率、子采样)来提高模型的泛化能力,防止过拟合。

Q. 梯度提升与梯度下降的区别和联系是什么?

两者都是在每一轮迭代中,利用损失函数相对于模型的负梯度方向的信息来对当前模型进行更新,只不过在梯度下降中,模型是以参数化形式表示,从而模型的更新等价于参数的更新。而在梯度提升中,模型并不需要进行参数化表示,而是直接定义在函数空间中,从而大大扩展了可以使用的模型种类。
在这里插入图片描述

Q. 基于Gradient Boosting的方法有哪些?(GDBT, XGBoost, LightGBM, CatBoost)

参考:https://mp.weixin.qq.com/s/txoXnX3V5rit_6fjxn21Mw

  1. 梯度提升树(Gradient Boosting Trees):梯度提升树是最早和最经典的基于Gradient Boosting的方法之一。它使用决策树作为弱学习器,通过迭代地拟合损失函数的负梯度来逐步提升模型性能。每一棵树都是在之前所有树的预测值的基础上构建的,以减小模型的残差。梯度提升树的核心思想是通过不断添加树来逼近真实的梯度值,从而逐步减小模型的偏差和方差。

  2. XGBoost(eXtreme Gradient Boosting):XGBoost是梯度提升树的一种优化实现,它在梯度提升树的基础上引入了一些创新的技术,如自定义损失函数(要求能求二阶导)、正则化项(L1,L2)、列抽样(特征筛选)等,以提高模型的性能和泛化能力。XGBoost的主要原理是通过近似的贪婪算法来构建树模型,同时利用二阶梯度信息进行分裂点的选择,从而更准确地拟合目标函数。

  3. LightGBM(Light Gradient Boosting Machine):LightGBM是另一种基于梯度提升树的算法,它在XGBoost的基础上进行了改进。LightGBM采用了基于直方图的决策树算法,通过对特征值进行离散化处理,以加快训练速度。此外,LightGBM还引入了互斥特征捆绑技术和直方图偏差修正方法,以进一步提高性能。

  4. CatBoost(Categorical Boosting):CatBoost是一种专门针对具有类别特征的数据集的梯度提升方法,无需手动进行特征编码。它通过使用特殊的处理技术来处理类别特征,并利用对称树和排序算法来提高模型性能。CatBoost还具有自动处理缺失值和稀疏数据的能力,并且支持多种损失函数和评估指标。

Q. xgboost算法介绍?

XGBoost是一种基于梯度提升树(Gradient Boosting Tree)算法的集成学习模型,它在梯度提升树的基础上进行了优化和改进。
在这里插入图片描述

XGBoost的主要特点和优势包括:

  • 正则化:XGBoost引入了正则化项来控制模型的复杂度,防止过拟合。它通过控制叶子节点的权重以及树的复杂度来实现正则化,避免单棵树过于复杂(L1/L2和叶节点的数量)。

  • 自定义损失函数:XGBoost允许用户自定义损失函数,从而能够灵活地适应不同的任务需求。

  • 特征选择:XGBoost通过计算特征的重要性得分,可以帮助识别和选择最具预测能力的特征,随机选择特征。
    在这里插入图片描述

  • 高效并行:XGBoost在训练过程中支持并行计算,可以利用多线程和分布式计算加速模型的训练,对每个特征的值排序(近似排序-分位数排序)后存为block结构,每次迭代调用这个block即可无需重新排序。
    在这里插入图片描述

  • 缺失值处理:XGBoost能够自动学习如何处理缺失值,无需对缺失值进行特殊处理,自动学习样本的分裂方向。

  • 特征交叉:XGBoost支持特征交叉,可以通过组合特征创建新的特征,提升模型的表达能力。

Q. 什么是袋外误差(Out-of-Bag Error)和交叉验证(Cross-Validation)在集成学习中的作用?

袋外误差(Out-of-Bag Error)和交叉验证(Cross-Validation)是⽤于评估集成学习模型性能和选择最佳参数的重要⼯具。

  1. 袋外误差:在基于⾃助采样(Bootstrap)的集成学习⽅法中,每个基础学习器在构建过程中只使⽤了部分训练样本。因此,未被选中的样本可以⽤于评估模型性能,这些样本称为袋外样本。袋外误差衡量了模型在未⻅过的样本上的预测能⼒。通过计算基础学习器在袋外样本上的误差平均值,可以得到整个集成模型的袋外误差估计。袋外误差提供了⼀种⽆偏估计集成模型的泛化性能的⽅法,可以帮助评估模型的准确度
  2. 交叉验证:交叉验证是⼀种常⽤的模型选择和参数调优⽅法,可⽤于选择最佳的基础学习器、确定集成模型的规模或权重等。它包括将训练数据集划分为多个互斥的⼦集(通常称为折),然后在其中⼀部分作为验证集,其余部分作为训练集。重复进⾏交叉验证,并评估模型在各个验证集上的性能。最常⽤的交叉验证⽅法是k折交叉验证,其中将数据集划分为k个⼦集,每次选择⼀个作为验证集,剩余k-1个作为训练集。通过对各个验证集的性能进⾏平均或加权平均,可以得到对模型性能的估计。交叉验证可以帮助选择最佳的基础学习器、调整模型参数、评估模型性能,并避免了对单个训练/验证集的过度依赖

袋外误差和交叉验证都是集成学习中常⽤的评估⼿段,它们提供了⼀种⽆偏估计模型性能的⽅法,有助于选择合适的模型和优化集成模型的参数。

Q. 集成学习在哪些领域和任务中表现出色?它有什么局限性?

集成学习在许多领域和任务中都表现出⾊,特别适⽤于以下情况:

  1. 分类问题:集成学习在分类问题中表现出⾊,尤其是在处理复杂的、⾼维度的数据集时。它能够通过组合多个弱分类器来提⾼整体分类准确度;
  2. ⼤规模数据集:当有⼤量数据可⽤时,集成学习能够有效地利⽤这些数据,从⽽提⾼模型的泛化性能;
  3. 不平衡数据集:当数据集中的类别分布不均衡时,集成学习可以通过调整样本权重或基础学习器的权重来处理这种情况,并提⾼少数类别的分类准确度;
  4. 噪声数据:集成学习对于噪声数据具有鲁棒性,通过组合多个基础学习器的输出,可以降低噪声对最终预测结果的影响。

然⽽,集成学习也有⼀些局限性:

  1. 训练时间:由于需要构建和训练多个基础学习器,集成学习的训练时间通常⽐单个基础学习器更⻓;
  2. 内存消耗:将多个基础学习器组合成集成模型需要占⽤更多的内存空间;
  3. 解释性:当集成模型的复杂度增加时,模型的解释性会降低。这是由于集成模型通常由多个基础学习器组成,并且其预测结果可能更难以解释;
  4. ⾼度依赖基础学习器:集成学习的性能取决于所选择的基础学习器。如果基础学习器性能较差,整个集成模型的性能可能⽆法达到期望;
  5. 过拟合⻛险:在构建过程中,集成学习可能⾯临过拟合问题。当集成模型过于复杂或基础学习器过度拟合训练数据时,模型在未⻅过的数据上的泛化性能可能下降。

尽管存在⼀些局限性,但集成学习仍然是⼀种强⼤的机器学习技术,在很多实际应⽤中取得了显著的成功。

Q. 图像训练数据不足怎么解决?

当图像训练数据不足时,可以考虑以下方法来解决这个问题:

  • 数据增强(Data Augmentation):通过应用各种图像处理技术,如旋转、平移、缩放、翻转、剪切、亮度调整等,对现有数据进行扩充,生成更多的训练样本。这可以帮助模型更好地泛化,并且减少过拟合的风险;

  • 迁移学习(Transfer Learning):使用预训练的模型作为初始模型,然后在较小的数据集上进行微调。预训练模型通常在大规模数据集上进行训练,因此具有良好的特征提取能力。通过在这个基础上微调模型参数,可以在较小的数据集上获得较好的性能;

  • 数据合成(Data Synthesis):如果无法获得足够的真实数据,可以考虑使用合成数据来增加训练样本。例如,使用生成对抗网络(GAN)生成类似真实图像的合成数据。这种方法可能需要一些领域专业知识,以确保生成的数据与真实数据具有相似的特征;

  • 联合训练(Joint Training):如果存在其他相关任务的数据集,可以将这些数据集与目标任务的数据集进行联合训练。通过联合训练,模型可以共享和学习其他任务中学到的特征,从而提高目标任务的性能。

需要根据具体情况选择合适的方法。组合使用多种方法可以进一步提高模型的性能,并使其在数据不足的情况下也能取得较好的效果。

Q. 样本不平衡问题怎么处理的,有什么方法?

  • 重采样方法:通过欠采样(随机删除多数类样本)或过采样(复制少数类样本或生成合成样本)来平衡样本分布。常见的方法包括随机欠采样、SMOTE(Synthetic Minority Over-sampling Technique)等。

  • 类别权重调整:通过调整分类算法中不同类别的权重,使得分类器更加关注少数类样本。一些分类算法(如逻辑回归、支持向量机)提供了设置类别权重的参数。

  • 集成方法:使用集成学习算法,如随机森林或梯度提升树(例如XGBoost和LightGBM),能够处理样本不平衡问题。这是因为集成算法可以从多个子模型中综合考虑不同类别的情况。

Q. 常用的超参数调优方法有哪些?

常用的超参数调优方法包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesian Optimization)、进化算法(Evolutionary Algorithms)等。

1.网格搜索(Grid Search)
网格搜索是一种简单直观的超参数调优方法,通过穷举搜索给定的超参数组合来找到最佳组合。它将超参数的可能取值组成一个网格,然后在这个网格上进行模型的训练和评估,并找出具有最佳性能的超参数组合。

优点

  • 直观易用:网格搜索的原理简单,易于理解和实现;
  • 全面搜索:网格搜索遍历了给定超参数取值的所有组合,因此可以找到在给定搜索空间内的最佳超参数组合。

缺点

  • 计算开销大:当超参数的数量和取值范围增加时,网格搜索的计算开销会呈指数级增长,尤其是在大规模数据集和复杂模型上。

2.随机搜索(Random Search)
随机搜索与网格搜索类似,但是它在给定的超参数空间中随机采样一组超参数组合进行模型训练和评估。相比于网格搜索,随机搜索不需要遍历所有可能的组合,因此具有更低的计算开销。

优点

  • 计算效率高:相比于网格搜索,随机搜索的计算开销较小,尤其是在超参数空间较大时;
  • 可能找到非常好的超参数组合:随机搜索具有一定的随机性,有机会在搜索空间中找到隐藏的最佳超参数组合。

缺点

  • 不保证找到全局最佳解:由于随机性的存在,随机搜索不能保证找到全局最佳超参数组合,可能会在搜索空间中漏掉一些优秀的组合。

3.贝叶斯优化(Bayesian Optimization)
贝叶斯优化通过建立模型来估计超参数和模型性能之间的关系,并根据这个模型选择下一个要尝试的超参数组合。它使用贝叶斯推断来更新模型,并通过选择最有希望的超参数进行迭代优化。

优点

  • 高效的参数搜索:贝叶斯优化通过利用模型的预测来选择下一个要尝试的超参数组合,从而有效地利用了之前的尝试结果,减少了搜索空间;
  • 自适应:贝叶斯优化可以自适应地调整搜索空间,根据之前的结果调整超参数的搜索范围和分布。

缺点

  • 对于大规模数据集和复杂模型,贝叶斯优化的计算开销可能较大
  • 对于某些问题和搜索空间,贝叶斯优化可能需要更多的迭代次数才能找到最佳超参数组合。

4.进化算法(Evolutionary Algorithms)
进化算法使用生物进化的概念,如遗传算法、粒子群优化等,通过模拟进化过程来搜索超参数空间。它通过不断迭代地生成新的超参数组合,并根据预定义的适应度函数来评估和选择优秀的超参数组合。

优点

  • 并行搜索:进化算法可以并行地搜索超参数空间,在每一代中生成多个超参数组合进行评估,从而加快搜索速度;
  • 适用性广泛:进化算法适用于各种问题和搜索空间,不受超参数类型和范围的限制。

缺点

  • 调优结果高度依赖于算法参数:进化算法的性能受到算法参数的影响,需要进行合适的参数设置;
  • 计算开销大:进化算法的计算开销较大,尤其是在大规模数据集和复杂模型上。

Q. RMSE的缺点

RMSE由于有一个平方项,导致其对离群点非常敏感。可以换更鲁棒的评价指标,比如平均绝对百分比误差(MAPE)。

Q. 在模型评估过程中有哪些主流方法,他们的优缺点是什么?

在模型评估过程中,常见的主流方法包括交叉验证(Cross-Validation)、留出法(Holdout Method)、自助法(Bootstrap Method)。

1.交叉验证(Cross-Validation)
交叉验证是一种常用的模型评估方法,它将数据集划分为训练集和验证集,并多次重复这个过程以获得稳定的评估结果。常见的交叉验证方法包括k折交叉验证(k-fold Cross-Validation)和分层k折交叉验证(Stratified k-fold Cross-Validation)。

优点

  • 充分利用数据:交叉验证可以最大程度地利用给定的数据进行模型评估,因为它在多个数据集划分上进行评估;
  • 可靠性高:通过多次重复划分和评估,交叉验证可以提供相对可靠的评估结果;

缺点

  • 计算开销较大:交叉验证需要多次训练模型和评估,因此在计算上比留出法和自助法要更昂贵;
  • 不适用于大数据集:对于大规模数据集,交叉验证可能会消耗大量的计算资源;
  • 不适用于小数据集:样本划分导致训练数据减少,影响训练效果。

2.留出法(Holdout Method)
留出法是将数据集划分为训练集和测试集两个部分,其中训练集用于模型的训练,测试集用于模型的评估。

优点

  • 计算效率高:相对于交叉验证和自助法,留出法只需要进行一次训练和评估,因此计算开销较小;
  • 适用于大数据集:留出法对于大规模数据集是一种较为实用的评估方法。

缺点

  • 数据利用效率低:留出法将一部分数据作为测试集,因此留给模型训练的数据较少,可能导致评估结果的方差较大;
  • 对数据分布敏感:如果训练集和测试集的数据分布有较大差异,留出法可能会导致评估结果不准确。

3.自助法(Bootstrap Method)
自助法是一种通过有放回地从原始数据集中抽样来创建新的训练集的方法。每次抽样后,该样本被放回,使得样本在新训练集中的选择概率相等。

优点

  • 数据利用效率高:自助法通过有放回地抽样,可以充分利用原始数据集,使得大约有63.2%的样本出现在新的训练集中;
  • 适用于小样本数据集:对于样本较少的数据集,自助法可以提供相对可靠的评估结果;

缺点

  • 产生冗余样本:由于有放回地抽样,自助法会产生与原始数据集大小相当的冗余样本,这可能导致训练集中包含重复的样本;
  • 计算开销较大:由于每次抽样都会生成一个新的训练集,自助法需要进行多次训练和评估,因此计算开销较大;

总结而言,不同的模型评估方法具有各自的优点和缺点。交叉验证提供了相对可靠的评估结果,但计算开销较大;留出法计算效率高,但数据利用率较低;自助法适用于小样本数据集,但产生冗余样本;

深度学习

Q. BN和LN的区别

Batch Normalization(BN)是在每个特征上单独做标准化。假设我们有10行3列的数据,即batchsize = 10,每一行数据有三个特征,假设这三个特征是身高、体重、年龄,那么BN是针对每一列(特征)进行缩放。相反Layer Normalization(LN)是在每个样本上做标准化,即针对每一行(样本)进行缩放。

BN是为了克服神经网络加深导致难以训练而诞生的,随着神经网络深度加深,训练起来就会越来越困难,收敛速度回很慢,常常会导致梯度弥散问题(Vanishing Gradient Problem)。BN一般用在非线性映射(激活函数)之前,让每一层的输入有一个稳定的分布会有利于网络的训练。

BN的优点:

  • 加大搜索的步长,加快收敛的速度
  • 更容易跳出局部最小值
  • 破坏原来的数据分布,一定程度上缓解了过拟合
  • 提高梯度流动,BN通过将数据归一化到均值为0、方差为1的分布,有助于缓解梯度消失和爆炸的问题,使得梯度能够更好地传播。

BN的缺点:

  • BN是在batch size样本上各个维度做标准化的,所以size越大肯定越能得出合理的μ和σ来做标准化,因此BN比较依赖size的大小
  • BN需要计算每个批次的均值和方差,增加了计算的复杂性

然而在NLP领域中LN更合适,这是因为BN的操作方向是对每个位置的词在batch维度进行操作。但语言文本的复杂性是很高的,任何一个词都有可能放在初始位置,而且每个句子长度不一,且词序可能并不影响我们对句子的理解。而BN是针对每个位置进行缩放,这不符合NLP的规律。而LN则是针对一句话进行缩放的,且LN一般用在第三维度,如[batchsize, seq_len, dims]中的dims,一般为词向量的维度,或者是RNN的输出维度等等,这一维度各个特征的量纲应该相同,因此也不会遇到上面因为特征的量纲不同而导致的缩放问题。

LN的优点:

  • LN是每个样本内部做标准化,跟size没关系,不受其影响
  • LN对网络深度的变化比较鲁棒,适用于较深的网络结构

LN的缺点:

  • 比较容易受到输入维度的影响,LN是在特征维度上进行归一化的,因此对于输入维度较大的情况,可能会受到特征之间关系的影响。

BN 和 LN 都可以比较好的抑制梯度消失和梯度爆炸的情况。BN不适合RNN、transformer等序列网络,不适合文本长度不定和​​batchsize​​较小的情况,适合于CV中的CNN等网络;而LN适合用于NLP中的RNN、transformer等网络,因为sequence的长度可能是不一致的
在这里插入图片描述

Q. 梯度消失和梯度爆炸产生的原因和解决办法

当前神经网络依靠反向传播来更新参数,反向传播算法可以说是梯度下降在链式法则中的应用,而链式法则是一个连乘的形式,所以当层数越深的时候,梯度将以指数形式传播。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。在根据损失函数计算的误差通过梯度反向传播的方式对深度网络权值进行更新时,得到的梯度值接近0或特别大,也就是梯度消失或爆炸。梯度消失或梯度爆炸在本质原理上其实是一样的

梯度消失】产生的原因有:一是在深层网络中,二是采用了不合适的损失函数,比如sigmoid。当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。

梯度爆炸】一般出现在深层网络权值初始化值太大的情况下。在深层神经网络或循环神经网络中,误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于 1.0,那么重复相乘会导致梯度呈指数级增长,梯度变的非常大,然后导致网络权重的大幅更新,并因此使网络变得不稳定。

解决办法:

  • 梯度剪裁:通过设置一个阈值,限制梯度的最大值,防止梯度超过阈值,用于解决梯度爆炸问题;
  • 权重正则化:正则化主要是通过对网络权重做正则来限制过拟合。如果发生梯度爆炸,那么权值就会变的非常大,反过来,通过正则化项来限制权重的大小,也可以在一定程度上防止梯度爆炸的发生;
  • 激活函数:选择ReLU等梯度大部分落在常数上的激活函数,ReLU函数的导数在正数部分是恒等于1的,因此在深层网络中使用ReLU激活函数就不会导致梯度消失和爆炸的问题;
  • Batch Normalization:BN就是通过对每一层的输出规范为均值和方差一致的方法,消除了权重参数放大缩小带来的影响,进而解决梯度消失和爆炸的问题,或者可以理解为BN将输出从饱和区拉倒了非饱和区;
  • 残差结构:残差网络反向传播时,错误信号可以不经过任何中间权重矩阵变换直接传播到低层,一定程度上可以缓解梯度弥散问题。计算梯度时因为有“1”的存在,高层的梯度可以直接传递到低层,有效防止了梯度消失的情况;
  • LSTM的“门”结构:LSTM的结构设计可以改善RNN中的梯度消失的问题,主要原因在于LSTM内部复杂的“门”,记忆细胞允许梯度在时间上保持更长的路径,而门控机制允许选择性地更新和传递信息,从而改善了梯度的传播和稳定性

Q. 过拟合和欠拟合

欠拟合原因
1.训练样本数量少
2.模型复杂度过低
3.参数还未收敛就停止循环

欠拟合的解决办法
1.增加样本数量
2.增加模型参数,提高模型复杂度
3.增加循环次数
4.查看是否是学习率过高导致模型无法收敛

过拟合原因
1.模型复杂度过高,参数过多
2.训练集数据比较小
3.训练集和测试集分布不一致:
(1)样本里面的噪声数据干扰过大,导致模型过分记住了噪声特征,反而忽略了真实的输入输出特征
(2)训练集和测试集特征分布不一样(如果训练集和测试集使用了不同类型的数据集会出现这种情况)

过拟合的解决办法
1.降低模型复杂度
2.增加训练集
3.数据增强
4.正则化
5.Dropout
6.早停策略
7.重新清洗数据
8.使用集成学习方法

Q. RNN、LSTM和GRU的区别

RNN(循环神经网络),LSTM(长短期记忆网络)和GRU(门控循环单元)是用于处理序列数据的神经网络模型,它们在结构和功能上有一些区别:

RNN(循环神经网络):

  • RNN是最基本的循环神经网络模型,通过在网络中引入循环连接,使得网络可以处理序列数据;
  • RNN的隐藏状态在每个时间步被更新,并传递到下一个时间步,以捕捉序列中的上下文信息;
  • 然而,标准RNN存在梯度消失和梯度爆炸的问题,难以处理长期依赖关系

LSTM(长短期记忆网络):

  • LSTM是一种特殊类型的循环神经网络,旨在解决RNN中的梯度消失和梯度爆炸问题;
  • LSTM引入了记忆细胞(memory cell)和门控机制(如遗忘门、输入门和输出门)来控制信息的流动和存储。记忆细胞允许梯度在时间上保持更长的路径,而门控机制允许选择性地遗忘、更新和输出信息,减轻梯度消失和梯度爆炸的问题

GRU(门控循环单元):

  • GRU是LSTM的一种简化变体,旨在减少LSTM的复杂性并降低计算成本
  • GRU合并了LSTM中的遗忘门和输入门,只使用了一个更新门和一个复位门更新门决定了过去信息和当前输入的权重,复位门决定了如何将过去信息与当前输入相结合
  • GRU的参数比LSTM更少,计算效率更高,但在某些情况下可能性能稍逊于LSTM。

总的来说,LSTM和GRU是对标准RNN进行改进的模型,解决了梯度消失和梯度爆炸的问题。LSTM通过引入记忆细胞和门控机制,而GRU通过合并门控单元来简化网络结构。选择使用哪种模型取决于具体的任务需求和性能要求。
在这里插入图片描述

Q. 深度学习常用的优化算法

  1. 梯度下降(Gradient Descent):是最基本的优化算法之一,通过计算目标函数的梯度,并沿着负梯度方向更新参数值,以逐步逼近最优解;
    在这里插入图片描述
  2. 随机梯度下降法(Stochastic Gradient Descent,SGD):是梯度下降算法的一种变体,每次迭代只使用一个样本或一小批样本计算梯度和更新参数,以降低计算成本和内存需求。但是该方法会导致准确度下降,由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛,此外可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势;
  3. Mini-Batch SGD(Mini-Batch Stochastic Gradient Descent):是梯度下降算法的一种变体,它在每次迭代中使用一小批(mini-batch)的样本来计算梯度和更新参数。相比于传统的梯度下降算法和随机梯度下降算法,Mini-Batch SGD综合了两者的优点,既减少了计算成本,又保持了一定的随机性
  4. AdaGrad(Adaptive Gradient):是梯度下降法的改进算法,其优点是可以自适应学习率。该优化算法在较为平缓处学习速率大,有比较高的学习效率,在陡峭处学习率小,在一定程度上可以避免越过极小值点。但是AdaGrad算法过于依赖之前的梯度,在梯度突然变化无法快速响应
    在这里插入图片描述
  5. RMSProp(Root Mean Square Propagation):为了解决Adagrad的问题,在AdaGrad的基础上添加了衰减速率参数。也就是说在当前梯度与之前梯度之间添加了权重,如果当前梯度的权重较大,那么响应速度也就更快
    在这里插入图片描述
  6. AdaDelta:AdaDelta是对RMSprop的改进,它消除了学习率的设置,并引入了一个适应性学习率的更新规则,使得学习率的调整更加平滑。AdaDelta的主要目标是解决学习率衰减的问题,使得学习率的调整更加平滑,不需要手动设置学习率
  7. 动量优化(Momentum):用于加速模型的收敛和减少震荡,避免陷入局部最优。它引入了一种动量项,通过累积过去梯度的指数加权平均,并将其与当前的梯度相结合,以更新模型参数。Momentum的作用是在参数更新时增加一个惯性项,这样可以使得参数在梯度方向上累积动量,从而加速收敛过程。其实vi就是之前所有的gradient的加权总和,越久远的gradient对现在产生的影响越小;
    在这里插入图片描述
  8. Adam(Adaptive Moment Estimation):结合了Momentum和RMSprop的优点。它使用了动量项和自适应学习率,并且能够在训练初期迅速收敛,同时在后期能够更精确地调整参数。
    在这里插入图片描述

Q. 什么是互信息?它如何用于特征选择和降维问题?

互信息(Mutual Information)是⼀种⽤于度量两个随机变量之间的相关性或依赖关系的概念。互信息衡量了⼀个随机变量中的信息对另⼀个随机变量的预测能力,即⼀个随机变量中的信息是否提供了关于另⼀个随机变量的额外信息
在这里插入图片描述
其中, 是p(x,y)联合概率分布,p(x)和p(y)分别是边缘概率分布。互信息可以⽤于特征选择降维问题

  • 特征选择:互信息可⽤于评估⼀个特征与⽬标变量之间的相关性。通过计算每个特征与⽬标变量的互信息,可以选择具有⾼互信息值的特征作为重要的特征进⾏建模和预测;
  • 降维:在降维问题中,互信息可⽤于度量原始特征与新⽣成的降维特征之间的相关性。通过选择具有⾼互信息值的特征或特征组合,可以保留最具信息量的特征,从⽽实现维度的减少。

注意,互信息在计算特征之间的相关性时不考虑它们的线性关系。在某些情况下,互信息可能⽆法捕捉到⾮线性相关性。因此,在实际应⽤中,需要结合其他⽅法和技术来综合考虑特征选择和降维的需求。

在这里插入图片描述

Q. 归一化/标准化的作用

  • 消除特征之间的量纲差异:不同的特征往往具有不同的数值范围,归一化或标准化可以使得特征之间的数值范围统一,避免由于数值范围差异带来的偏差;
  • 提高模型收敛速度:归一化或标准化可以加快模型的收敛速度,尤其是对于使用基于梯度的优化算法(如梯度下降)的模型。这是因为特征值的范围统一可以使得更新的步长更加一致和稳定;
  • 有效地利用特征信息:归一化或标准化可以确保特征的分布形状和方差尽可能一致,这有助于避免某些特征对模型的影响过大,从而更好地利用特征信息;
  • 提⾼特征的可解释性:在某些情况下,归⼀化或标准化可以提⾼特征的可解释性,使得不同特征的权重
    更容易⽐较

⼀般来说,如果特征值的分布范围未知,或者特征值分布接近正态分布,标准化是⼀个不错的选择。如果特征有已知的上下界或者需要将特征映射到⼀定范围内,那么归⼀化可能更合适。有时候,也可以同时使⽤两者,根据具体情况对不同特征进⾏不同的处理。

Q. 特征选择和特征抽取的区别,以及它们在数据预处理中的作用

特征选择(Feature Selection)

  • 特征选择是从原始特征集合中选择⼀部分重要的特征,保留它们,⽽丢弃不相关或冗余的特征;
  • 特征选择的⽬的是降低维度、减少计算成本、提⾼模型的解释性、减少过拟合的⻛险,并且可能改善模型的性能;
  • 特征选择⽅法包括过滤⽅法、包装⽅法和嵌⼊⽅法等。过滤⽅法独⽴于模型,基于统计或信息论等度量进⾏特征选择,如相关性、互信息等。包装⽅法通过模型的性能来评估特征的重要性,例如递归特征消除(Recursive Feature Elimination, RFE)。嵌⼊⽅法将特征选择与模型训练过程结合在⼀起,例如L1正则化的线性回归。

特征抽取(Feature Extraction)

  • 特征抽取是通过将原始特征转换为新的特征集合来降低维度。这些新特征通常是原始特征的线性或⾮线性组合;
  • 特征抽取的⽬的是发现数据中的潜在结构、减少冗余信息、降低维度、提⾼模型性能,并且可以⽤于降维和可视化;
  • 常⻅的特征抽取技术包括主成分分析(Principal Component Analysis,PCA)和独⽴成分分析(Independent Component Analysis,ICA),以及⾮线性降维技术如t-SNE(t-Distributed Stochastic Neighbor Embedding)等。

区别

  • 主要区别在于特征选择保留了原始特征,⽽特征抽取创建了新的特征。特征选择是从现有特征中挑选出最有价值的特征,⽽特征抽取是通过线性或⾮线性变换创建新的特征;
  • 特征选择通常更容易解释,因为它仅仅是选择原始特征中的⼀个⼦集,⽽特征抽取可能创建的新特征不直接对应原始特征;
  • 特征选择更适⽤于数据维度较低,⽽特征抽取通常⽤于⾼维数据或在需要减少冗余信息的情况下。

在实际应⽤中,选择特征选择还是特征抽取取决于问题的性质、数据的维度和机器学习模型的要求。在某些情况下,这两种⽅法也可以结合使⽤,先进⾏特征抽取,然后再进⾏特征选择,以达到更好的特征⼯程效果。

Q. 什么是无监督学习?举例说明无监督学习任务

⽆监督学习(Unsupervised Learning)是机器学习的⼀种分⽀,其特点是在训练数据中没有明确的标签或⽬标输出。在⽆监督学习中,模型的任务是从数据中发现隐藏的结构、模式或关系,⽽不需要预先知道⽬标变量或标签。⽆监督学习任务通常可以分为两类:

  • 聚类(Clustering):聚类任务的⽬标是将数据分成不同的组或簇,使得同⼀组内的数据点相似,⽽不同组之间的数据点差异较⼤;
  • 降维(Dimensionality Reduction):降维任务的⽬标是减少数据的维度,保留尽可能多的信息,同时降低冗余性。降维可以帮助简化数据,减少噪声,并提⾼计算效率。

⽆监督学习通常⽤于发现数据的内在结构和关联,因此在数据挖掘、特征⼯程和可视化等领域有⼴泛的应⽤。与监督学习不同,⽆监督学习不需要事先标记的训练数据,因此更适⽤于探索性分析和数据探索。

Q. 常用的激活函数及优缺点

常用的激活函数有以下几种:

Sigmoid函数

  • 优点:Sigmoid函数将输入映射到0到1之间的连续输出,适用于二分类问题和输出概率的情况。
  • 缺点:Sigmoid函数存在梯度饱和问题,当输入较大或较小时,梯度接近于0,导致反向传播时梯度消失的问题;输出不是以0为中心,可能导致神经元的输出偏移

双曲正切函数(Tanh函数)

  • 优点:Tanh函数将输入映射到-1到1之间的连续输出,相比于Sigmoid函数,Tanh函数的输出以0为中心,更适用于神经网络的隐藏层。
  • 缺点:Tanh函数同样存在梯度饱和问题,当输入较大或较小时,梯度接近于0,导致反向传播时梯度消失的问题。

ReLU函数

  • 优点:ReLU函数将负数映射为0,正数保持不变,解决了Sigmoid和Tanh函数的梯度饱和问题,使得神经网络的训练更加快速和稳定;计算简单,减少了计算复杂性。
  • 缺点:ReLU函数存在一个问题称为“神经元死亡”,当输入小于0时,梯度为0,导致该神经元无法更新权重,因此在训练过程中可能会出现某些神经元始终不被激活的情况。

Leaky ReLU函数

  • 优点:Leaky ReLU函数在负数部分引入一个小的斜率,解决了ReLU函数的“神经元死亡”问题,允许负数部分有小的梯度,使得神经元在训练过程中能够更新权重。
  • 缺点:Leaky ReLU函数在实践中并没有被广泛证明比ReLU函数效果更好,斜率的选择可能会影响模型的性能。

Softmax函数

  • 优点:Softmax函数常用于多分类问题,将输入映射到0到1之间的概率分布,并且所有类别的概率之和为1。
  • 缺点:Softmax函数的输出受到输入中最大值的影响,当输入较大时,Softmax函数的输出梯度接近于0,可能导致梯度消失的问题。

每种激活函数都有其适用的场景和局限性,选择适合特定任务和网络结构的激活函数是神经网络设计中的重要考虑因素。

Q. 正则化为什么可以提高模型泛化能力

正则化可以增加模型的泛化能力,主要基于以下两个原因:

  • 减少过拟合:正则化通过限制模型的复杂性,防止模型对训练数据的过拟合。过拟合指的是模型过度拟合训练数据,导致在新的未见过的数据上表现不佳。正则化方法(如L1正则化、L2正则化)通过在损失函数中引入正则化项,惩罚模型的复杂性,使得模型倾向于选择简单的解决方案。这样可以防止模型过于依赖于训练数据中的噪声或不相关的特征,从而提高在新数据上的泛化能力。

  • 特征选择和权重衰减:正则化方法可以促使模型选择重要的特征并减少对不相关或冗余特征的依赖。例如,L1正则化倾向于产生稀疏权重向量,将一些特征的权重推向零,相当于进行特征选择,只保留对目标变量有更强预测能力的特征。而L2正则化通过权重衰减减小权重的幅度,使得每个特征对模型的影响更加均衡。这样可以提高模型对特征的鲁棒性,减少对特定样本的过度敏感性,进而提高泛化能力。

通过正则化方法,模型能够在学习过程中在准确性和复杂性之间进行权衡,更好地适应未见过的数据。正则化可以看作是一种对模型的约束,帮助模型学习到更一般化的规律,减少对训练数据的过度拟合,从而提高模型的泛化能力。

Q. 介绍一下Transformer

Transformer的原理只言片语无法描述清楚,请参考:自然语言处理Transformer模型最详细讲解(图解版) 【原理】经典的预训练模型(上)-Transformer
在这里插入图片描述
在这里插入图片描述

Q. Attention为什么要除以 d k \sqrt{d_k} dk

在Transformer模型中,将查询(Query)和键(Key)的点积除以 d k \sqrt{d_k} dk 的做法主要有以下几个原因:

  • 平衡数据,利于模型收敛:查询和键相乘后的数值可能会相差很大,除以根号d可以平衡这些数据,使得模型更容易收敛;
  • 防止softmax输入值过大:当embedding的维度越大,矩阵乘法的数值也越大,这可能导致softmax函数的输入值过大。为了避免softmax输入值过大,从而防止偏导数趋于0,有益于训练的稳定性;
  • 归一化处理:除以根号d可以使qk的分布归一化,服从均值为0,方差为1的分布,这有助于模型的稳定性和收敛;
  • 避免梯度稀疏:如果不除以 d k \sqrt{d_k} dk ,softmax输出可能会更尖锐,导致梯度稀疏。通过除以根号d,可以使softmax输出更平滑,从而避免梯度稀疏,提高模型的训练效率;
  • 控制注意力分数的范围:当输入向量的维度d比较大时,内积的结果也可能非常大,这可能导致注意力分数变得非常大。通过除以 d k \sqrt{d_k} dk ,可以将注意力分数缩小到一个合适的范围内,从而使softmax函数计算更加稳定,并且更容易收敛。

综上所述,Transformer中除以根号d的操作是为了平衡数据、防止softmax输入值过大、进行归一化处理、避免梯度稀疏以及控制注意力分数的范围,从而提升模型的训练稳定性和效率。

Q. Multi-head Attention的作用

Attention是将query和key映射到同一高维空间中去计算相似度,而对应的multi-head attention把query和key分成h个小序列分别映射到高维空间的不同子空间中去计算相似度,这样的好处是在两种方法的参数总量保持不变的情况下,Attention在不同子空间有不同的分布,进行concat后使得Attention层信息多样化,增加了Attention的表达能力

Q. 静态词向量和动态词向量的区别?

在这里插入图片描述在这里插入图片描述

Q. 预训练语言模型的分类?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Q. 预训练语言模型的学习范式?

在这里插入图片描述
参数微调的缺点:

  • 下游任务的数据稀缺;
  • 预训练语言模型的参数越来越大。

在这里插入图片描述

Q. 提示学习的重要过程?

在这里插入图片描述

Q. 什么是BERT/GPT?

⭐参考文献:
Transformer、Bert、Gpt对比系列,超详细介绍transformer的原理,bert和gpt的区别
【原理】经典的预训练模型(下)-BERT
【原理】经典的预训练模型(下)-GPT

BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言表示学习模型,由Google公司的研究人员在2018年提出,它是基于Transformer Encoder的深度双向模型,可以在各种自然语言处理任务上达到先进的效果。
在这里插入图片描述

BERT模型的预训练任务是通过掩码语言模型(Masked Language Model,MLM)和下一句预测(Next Sentence Prediction,NSP)两种方式进行的。其中,MLM任务在输入文本中随机掩盖一些标记(通常是15%左右),并要求模型预测这些标记的正确词汇;NSP任务通过给定两个句子,让模型判断它们是否是连续的语言序列,以此来学习语言的连贯性。

BERT的训练包含pre-train和fine-tune两个阶段。pre-train阶段模型是在无标注的标签数据上进行训练,fine-tune阶段,BERT模型首先是被pre-train模型参数初始化,然后所有的参数会用下游的有标注的数据进行训练。
在这里插入图片描述

Q. ChatGPT的基本过程?

在这里插入图片描述

Q. 大模型的基本架构(Transformer Decoder)

在这里插入图片描述
在这里插入图片描述

Q. 参数微调、提示学习、指令微调的区别?

在这里插入图片描述
在这里插入图片描述

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值