1.机器学习

1.1 基础问题

1.机器学习学习方式有哪些?各有什么特点?

学习方式分为:监督学习、无监督学习、半监督学习
在监督学习中,数据是带有标签的,常见的应用场景为分类和回归任务,常用的算法包括SVM、决策树、随机森林、xgboost等。
无监督学习中,数据不带有标签,常见的应用场景包括关联规则的学习和聚类等。常用算法包括Apriori及k-Means。
半监督学习,部分数据带标签。这种学习方式适用于标记数据较少的情况。常见算法如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。

2.使用机器学习解决问题的步骤有哪些?

使用机器学习解决问题的一般步骤包括:
问题定义、数据收集及预处理、特征工程、模型选择与训练、模型评估及改进、模型部署。
首先,我们需要确定问题类型和需要优化的目标,并收集相关数据进行预处理,如格式化处理和增强数据等。
接着,我们对特征进行分析,做一些特征选择、交叉融合和降维等工作。
然后,我们需要选择适合的机器学习模型进行训练,如监督学习、无监督学习和强化学习模型等,并进行超参数的调整以提高模型性能和泛化能力。
训练完成后,我们需要对模型进行评估,如召回率、精确率和F1-score等指标。
如果评估结果不理想,我们需要进行优化操作,如调整模型参数、增加数据量和优化特征工程等。
最后,我们对模型进行部署。在部署过程中,我们需要考虑模型的可靠性、效率、可扩展性和安全性等方面问题。

3.分类算法的常用的评估指标一般有哪些?

一般有准确率、精确率、召回率、F1-socre、ROC曲线和AUC值。这些指标的选择根据具体的问题和应用场景而定。
准确度:一般适用于样本均衡的情况下。
精准度:适用于对误报有较高容忍度的场景,例如在垃圾邮件分类中,我们更希望将正常邮件错判为垃圾邮件,而不是将垃圾邮件错判为正常邮件。
召回率:适用对误报容忍度非常低的场景,例如,在金融欺诈检测中,漏报一个欺诈行为可能会导致严重的后果。
F1-score:适用于正负样本不均衡的情况下,对算法整体进行综合评估。
ROC曲线和AUC值:可以用于比较不同分类器的性能,以及选择合适的阈值来平衡模型的精准度和召回率。
此外,当模型的精准度和召回率不能同时优化时,可以使用ROC曲线和AUC值来确定最优的阈值。

4.常用评估指标公式?

True positives(TP): 正样本(T)、判为正确(P);
False positives(FP): 负样本(F)、判为正确(P);
False negatives(FN):负样本(F)、判为错误(N);
True negatives(TN): 正样本(T)、判为错误(N)。
公式:
准确率:accuracy = (TP+TN)/(P+N)
精准度:precision=TP/(TP+FP)
召回率:recall=TP/(TP+FN)
F1-socre:F1-score = 2 * (precision * recall) / (precision + recall)
ROC曲线的横坐标是假阳性率,而纵坐标是真阳性率;AUC面经为曲线于横坐标围成的面积,面积越大越好。

5.在数据预处理时如何处理类别特征?

一般处理的方式为对类别特征进行编码,常用的编码方式有标签编码、独热编码、二进制编码等。
独热编码:适用于类别特征之间没有大小或顺序关系的情况,或者类别特征具有少量唯一值的情况。
标签编码:适用于类别特征之间具有大小或顺序关系的情况,或者类别特征具有大量唯一值的情况。
二进制编码:适用于类别特征具有大量唯一值的情况,并且对于每个类别特征,只有少量的值是经常出现的。这种编码方法可以节省特征空间,并提高算法的效率。

6.在机器学习中,特征选择的方法有那些?

特征选择是指在机器学习模型中选择对预测结果有最大贡献的特征组合,以避免过度拟合和降低维度,从而提高模型的泛化能力。
常用的方法有:
过滤方法:先对特征进行评估,然后根据评估结果选择重要的特征。评估方法包括皮尔逊相关系数、互信息等。常用的算法包括方差选择、互信息选择、卡方选择等。
包装方法:将特征选择看作是一个搜索问题,将特征选择嵌入到模型选择过程中。常用的算法包括递归特征消除(RFE)、正则化(L1)等。
嵌入方法:将特征选择嵌入到模型训练的过程中,使得模型在训练过程中自动选择重要的特征。常用的算法包括树模型(例如随机森林和梯度提升树)。
主成分分析(PCA):将原始特征通过线性变换转化为新的互相独立的特征,这些新特征能够保留原始数据的大部分信息,但是特征的个数减少了。PCA 适用于高维度数据,可以减少特征数目。

1.2 过拟合与欠拟合

1.过拟合是什么及检验方法?

是什么:当训练集和测试集之间的误差呈现较大的差异时,即为高方差。在高方差的情况下,训练集的训练效果很好,但验证集的验证效果很差,这种现象称为过拟合,意味着模型的泛化能力差。
检验方法:观察模型在训练集和测试集上的损失函数值随着epoch的变化情况,当 模型在测试集上的损失函数值出现先下降后上升,那么此时可能出现过拟合。

2.导致过拟合的原因是什么?

模型复杂度过高:记忆到数据的噪声特别的规律,而不是数据的通用规律,从而导致模型的泛化能力较差
数据集过小,样本类型单一:模型学习到的信息有限,不能很好地代表整个数据集的特征,因此容易发生过拟合。
数据中存在噪声或者异常值:模型就可能过度拟合这些异常数据,从而导致过拟合。
特征选择不当:可能会导致模型学习到无用的特征,从而增加了模型的复杂度,导致过拟合。
过度训练:就可能过度拟合训练数据,从而导致过拟合。

3.过拟合的解决方法是什么?
数据方面:增加样本量,去除噪声,使样本尽可能均衡。
降低模型复杂度:对特征进行选择,减少特征数,并从简单模型到复杂模型不断调控。
正则化:通过对模型的参数进行惩罚,可以控制模型的复杂度。常见的正则化方法包括L1正则化和L2正则化。而且 L1正则还可以自动进行特征选择。
模型集成:常见的方法包括Bagging、Boosting等。
交叉检验:利用交叉检验的方法,来让模型得到充分的训练,以得到较优的模型参数;
提前停止策略:选择合适的训练次数,避免训练的网络过度拟合训练数据;
DropOut策略。核心思想就是bagging,可以看作是低成本的集成学习。所Dropout是一种常用的正则化方法,它通过在训练过程中随机丢弃一些神经元来降低模型的复杂度,从而减少过拟合的风险。
使用基于dropout的正则化比基于bagging的正则化简单,但由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。

4.欠拟合是什么、检验方法、原因、解决办法

模型的训练误差和测试误差都很高,准确率都不高。一般通过看模型学习曲线,模型性能来确定是否欠拟合。
原因:模型过于简单、数据量不足、特征选择不当、正则化系数过大等。
解决办法:增加数据量。进行特征组合、多项式交叉等。提高模型复杂度、减少正则化系数。

1.3 BatchNorm与LayerNorm

1.独立同分布与白化

独立同分布(Independent and Identically Distributed,IID)指的是样本之间是独立的且具有相同的分布。
在机器学习中,IID的假设通常是必须的,因为它能够简化模型的训练过程,并提高模型的泛化能力。
例如,在使用随机梯度下降等优化算法时,IID假设可以使优化过程更加稳定,从而加速模型的训练过程。
然而,在实际应用中,数据样本通常不是完全独立的,可能存在一定的相关性。
在这种情况下,需要进行数据预处理,例如白化(Whitening)操作,以减少特征之间的相关性。
白化是一种数据预处理的方法,旨在去除特征之间的相关性,同时使所有特征具有相同的均值和方差。具体来说,白化操作可以通过以下步骤实现:
1.计算特征的均值和协方差矩阵。
2.对协方差矩阵进行特征值分解,得到特征向量和特征值。
3.将特征向量作为变换矩阵,对原始数据进行变换。
4.对变换后的数据进行标准化处理,即将其均值设为0,方差设为1。
通过白化操作,可以使所有特征具有相同的方差,并且不存在特征之间的相关性。这有助于提高机器学习模型的训练速度和泛化能力。

2.如果每个神经元的输入数据不再是“独立同分布”会导致什么样的后果(ICS问题)

学习速度下降:上层参数需要不断适应新的输入数据分布,导致学习速度下降;
学习过早停止:下层输入的变化可能趋于变大或变小,导致上层落入饱和区,从而学习过早停止;
每层的更新都会影响到其他层,因此每层参数更新策略需要尽可能谨慎;
3.如何解决内部协变量偏移(ICS)问题?

1.对每一层做白化处理,但是成本高,因为要保证白化操作是可微的。
2.批量归一化(Batch Normalization):该方法通过在每一层的输入上应用归一化操作来减少内部协变量偏移的影响。 将每个特征维度的均值和方差缩放到一个标准的均值和方差,使得网络对每个 mini-batch 的输入数据更加鲁棒。
3.层归一化(Layer Normalization):与批量归一化不同,层归一化是在每个样本上对每个特征维度进行归一化,使得网络对每个样本的输入数据更加鲁棒。

4. Batch Normalization 与Layer Normalization区别、优缺点、适用场景
区别:
批量归一化是在每个特征的所有样本上进行归一化,使得每个特征的均值和方差都接近于 0 和 1。
层归一化是在每个样本的所有特征上进行归一化,使得每个样本的均值和方差都接近于 0 和 1。
缺点:
BN 需要对每个 mini-batch 进行归一化,因此需要更多的内存和计算资源,特别是在 batch size 很小时。
BN 对 batch size 的选择很敏感。较小的 batch size 可能会导致较大的归一化噪声,从而影响模型的性能。
BN 的应用还需要谨慎考虑。例如,如果应用 BN 到 RNN 中,它可能会破坏时间步上的信息流,从而影响模型的性能。
LN 不能像 BN 那样显著加速网络的收敛。
LN 对特征数量的敏感度较高。当特征数量很大时,LN 可能会导致计算成本的增加。
适用场景:
BN适用与CNN类模型,较大的mini-batch情况,不适合RNN类时间序列模型,因为在时间步上归一化可能会破坏序列数据的信息流。
LN通常用于RNN类模型,较小的 mini-batch情况,处理高维数据时,一般不用在CNN类模型。

1.4 激活函数

1.为什么要有激活函数?

激活函数能够将输入的信号进行非线性变换可以增加神经网络的表达能力,使其可以学习更加复杂的函数关系,同时还可以提高神经网络的分类准确率和泛化能力。

2.各激活函数的优缺点及适用场景?

常见的激活函数包括sigmoid函数、tanh函数、ReLU函数、Leaky ReLU函数、ELU函数、Swish函数等,它们各有优缺点和适用场景。
sigmoid函数
优点:sigmoid函数具有可导性,且函数值在0到1之间,适合用于输出层二分类问题。
缺点:sigmoid函数的导数在接近边界时非常小,导致反向传播时梯度消失问题;sigmoid函数的输出不是以0为中心的,会导致网络参数更新速度变慢。
适用场景:输出层的二分类问题。
tanh函数
优点:tanh函数相对于sigmoid函数具有输出以0为中心的特性,更适合用于隐藏层激活函数。
缺点:tanh函数同样存在梯度消失问题,且函数值的范围也是在-1到1之间,输出不够大,不利于神经网络的学习。
适用场景:隐藏层的非线性转换。
ReLU函数
优点:ReLU函数的计算速度非常快,且不存在梯度消失问题;ReLU函数的输出为非负数,使得神经网络更加稀疏,更容易学习到有用的特征。
缺点:ReLU函数在输入为负数时输出为0,可能导致一些神经元失活,称为“dead ReLU”问题。
适用场景:隐藏层的激活函数。
Leaky ReLU函数
优点:Leaky ReLU函数通过给ReLU函数加入一个小的斜率,可以避免“dead ReLU”问题。
缺点:Leaky ReLU函数的斜率需要手动调整。
适用场景:隐藏层的激活函数,尤其是遇到“dead ReLU”问题时。
ELU函数
优点:ELU函数可以避免ReLU函数的“dead ReLU”问题,同时保持ReLU函数的优点。
缺点:ELU函数的计算复杂度比ReLU函数高,同时也存在负数输出问题。
适用场景:隐藏层的激活函数,特别是需要避免“dead ReLU”问题的场景。
Swish函数
优点:Swish函数的输出范围和sigmoid函数类似,但相比sigmoid函数和ReLU函数,Swish函数的表现更加优秀。
缺点:Swish函数相对于ReLU函数的计算复杂度更高。
适用场景:隐藏层的激活函数,需要更好的性能表现。
最好不要用sigmoid,可以试试tanh,不过可以预期它的效果会比不上 ReLU 和 Maxout.

1.5 正则化

1.正则化是什么?为什么要用正则化?

正则化就是在原来的损失函数的基础上加上了一些模型复杂度惩罚项。正则化通过在损失函数中引入惩罚项,以抑制模型参数的过度增长。通常使用的正则化方法有L1正则化和L2正则化。
L1正则化通过在损失函数中加入模型参数的L1范数,使得一些不重要的特征权重趋近于0,从而达到特征选择的效果。
L2正则化通过在损失函数中加入模型参数的L2范数,使得模型参数趋向于较小的值,从而抑制模型过拟合。

L1正则化和L2正则化有什么区别?你会如何选择正则化项?

在优化过程中,L1正则化会使得部分模型参数趋近于0,从而实现特征选择的效果。L1正则化的优点在于可以将不重要的特征的权重置为0,从而提高模型的可解释性
,并且可以减少模型的计算量。L1正则化的缺点在于它是不可导的,需要使用其他的优化方法来求解。
在优化过程中,L2正则化会使得模型参数趋向于较小的值,从而抑制模型过拟合的风险。L2正则化的优点在于它是可导的,可以使用标准的优化方法来求解。
此外,L2正则化还可以通过权重衰减(Weight Decay)来实现。
选择正则化项的方法可以基于以下几个因素:
如果特征的数量较大,L1正则化可能会更有效,因为它可以减少不重要特征的权重。
如果训练集比较小,L2正则化可能会更好,因为它可以帮助模型更好地拟合数据。
如果模型很复杂,L2正则化可能会更好,因为它可以限制模型的权重增长,防止模型过拟合。

除了L1和L2正则化,你还知道其他的正则化方法吗?

除了L1和L2正则化,还有一些其他的正则化方法:
Elastic Net正则化:Elastic Net正则化是L1和L2正则化的一种结合,它同时惩罚模型中的大量无用参数(L1正则化)和相关参数的平方和(L2正则化),从而
能够处理多重共线性问题。
Dropout正则化:Dropout正则化是一种随机正则化方法,它在每次训练迭代中随机丢弃一部分神经元,从而防止过拟合。
在测试阶段,所有的神经元都参与计算,但是每个神经元的输出会乘以一个缩放因子,这样可以保持网络的期望输出不变。

1.6 优化函数

1.你知道哪些优化函数,它们的作用是什么?

在深度学习中,优化函数被用于训练神经网络,目的是最小化损失函数,从而使神经网络能够更好地拟合训练数据,同时避免过拟合。以下是一些常见的优化函数及其作用:
梯度下降:这是最基本的优化算法之一。梯度下降通过计算损失函数对每个参数的偏导数来更新参数,以逐步减小损失函数的值。梯度下降有多个变种,如批量梯度下降、随机梯度下降和小批量梯度下降等。
动量(Momentum):动量算法引入了动量变量来加速梯度下降,使得在梯度方向变化较小的维度上减少震荡,并在梯度方向变化较大的维度上加速学习。
自适应矩估计(Adam):Adam是一种基于梯度的自适应学习率算法,它使用梯度的一阶矩和二阶矩估计来调整每个参数的学习率,使得参数在更新时更加平滑,从而可以更快地收敛。
Adagrad:Adagrad是一种自适应学习率算法,它通过缩小梯度的幅度来调整每个参数的学习率,使得对于稀疏特征或者稀疏梯度的数据集,学习率可以自适应地调整。
RMSProp:RMSProp是另一种自适应学习率算法,它通过对梯度平方的移动平均值来调整每个参数的学习率,使得对于不同的特征,学习率可以自适应地调整。
Adadelta:Adadelta是一种基于梯度的自适应学习率算法,它通过缩放历史梯度的均方根来调整每个参数的学习率,使得可以自适应地调整学习率,从而可以更快地收敛。
Adamax:Adamax是Adam算法的变种,它使用了无限范数(Infinity Norm)来计算梯度的一阶矩和二阶矩估计,从而可以更好地处理大范围的梯度值。

2.优化函数的优缺点

梯度下降:它的优点是简单易懂、易于实现,但是由于它是基于全局梯度的,计算量大,可能陷入局部最优。
随机梯度下降:随机梯度下降可能每次不是朝着真正最小的方向,这样反而可以跳出局部的最优解。但下降速度慢,而且可能会在沟壑的两边持续震荡,停留在一个局部最优点。
动量:动量算法可以加速梯度下降的收敛速度,减少震荡。因为加入了历史梯度的影响而导致在峡谷区域横跳。
自适应矩估计(Adam):Adam算法通过自适应地调整每个参数的学习率,可以在处理不同特征的数据时更加稳定,收敛速度较快。但是对于非平稳目标函数,Adam可能会导致过度适应,甚至出现震荡。
Adagrad:Adagrad算法可以自适应地调整每个参数的学习率,对于稀疏特征或者稀疏梯度的数据集,学习率可以自适应地调整。但是Adagrad会导致学习率下降太快,过早地停止训练。
RMSProp:RMSProp算法可以自适应地调整每个参数的学习率,对于不同的特征,学习率可以自适应地调整。相对于Adagrad,RMSProp可以缓解学习率下降过快的问题,但是它可能会受到噪声干扰的影响。
Adadelta:Adadelta算法可以自适应地调整每个参数的学习率,对于非平稳目标函数,Adadelta算法表现较好。但是Adadelta算法的收敛速度较慢,需要更多的迭代次数。
Adamax:Adamax算法是Adam算法的变种,它使用了无限范数来计算梯度的一阶矩和二阶矩估计,从而可以更好地处理大范围的梯度值。但是它可能会受到过大的梯度值的影响,导致学习率过大或过小。

3.各优化函数的适用场景

梯度下降:适用于数据集较小的场景,可以通过全局梯度来优化参数,但训练速度较慢。
随机梯度下降:适用于大规模数据集的场景,每次只使用一个样本来更新参数,训练速度快,但容易受到样本噪声的影响。
动量优化:适用于目标函数存在平台或平坦区域的场景,可以加速学习,避免陷入局部最优解。
AdaGrad:适用于数据集稀疏或具有较大差异的场景,可以对不同特征的学习率进行自适应调整。
AdaDelta:适用于需要对学习率进行自适应调整的场景,能够自动调整学习率,但需要进行较多的超参数调节。
Adam:适用于大规模数据集的场景,可以自适应调整每个参数的学习率,并可以控制动量和学习率的偏差,具有较好的性能表现。
RMSProp:适用于需要对学习率进行自适应调整的场景,可以有效地处理学习率的衰减。

1.7 归一化

1.为什么对数值特征进行特征归一化?

特征归一化可以避免特征之间的差异性、加速模型训练、避免异常值的影响。 
不同的特征通常具有不同的单位和量级,这可能会导致一些特征对模型的贡献更大。
不同的特征在数值范围上的差异可能会导致模型在训练时需要更长的时间来找到最优解。 
通过对数值特征进行归一化,可以消除异常值的影响,使模型更稳健。

2.有哪些特征归一化的方式,一般在什么情况用特征归一化?

特征归一化常用的有线性函数归一化和零均值归一化,前者相当于等比缩放,后者映射到到均值为0、标准差为1的分布上。 
当然 ,数据归一化并不是万能的在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,
例如线性回归、逻辑回归、支持向量机、 神经网络等模型。 但对于树模型则通常并不适用。
树模型通常是通过在特征上选择最优的分割点来构建树结构的。 
如果对数值特征进行特征归一化,可能会改变特征的原始分布,从而导致分割点的选择出现偏差,进而影响模型的表现。

1.8 集成学习

1.请解释Bagging和Boosting的原理。它们有什么不同?

Bagging(自举汇聚法): Bagging使用自助采样(bootstrap sampling)来生成不同的训练数据子集。对于每个子集,独立训练一个基学习器。在预测时,对于分类问题,通常采用投票法(voting)对各个基学习器的预测结果进行汇总;对于回归问题,则采用平均法(averaging)对预测结果进行汇总。Bagging的主要目标是减少模型的方差,因此它对降低过拟合问题特别有效。随机森林(Random Forest)就是一种基于决策树的Bagging方法。
Boosting: Boosting是一种迭代的集成方法,其基学习器是按顺序训练的。在每一轮训练中,Boosting都会调整样本权重,使得上一轮分类错误的样本在接下来的轮次中得到更多关注。然后,将各个基学习器按照其性能加权组合,以获得最终的预测结果。Boosting的主要目标是减少模型的偏差,因此它对降低欠拟合问题特别有效。梯度提升树(Gradient Boosting Machine, GBM)和AdaBoost就是Boosting方法的两个典型例子。
它们的主要区别如下

  1. 学习器训练方法:Bagging中的基学习器是独立且同时训练的,而Boosting中的基学习器是按顺序迭代训练的。
  2. 样本权重调整:Bagging使用自助采样生成不同的训练子集,样本权重保持不变;而Boosting则根据上一轮的分类错误调整样本权重。
  3. 集成策略:Bagging通常对基学习器进行简单的投票或平均;而Boosting则根据每个基学习器的性能为它们分配权重。
  4. 目标:Bagging主要关注减少模型的方差,降低过拟合风险;而Boosting主要关注减少模型的偏差,降低欠拟合风险。

2.随机森林和梯度提升树(GBM)有什么区别?它们各自的优点和缺点是什么?

随机森林和梯度提升树(Gradient Boosting Machine,GBM)都是基于决策树的集成学习方法,但它们在训练方法、集成策略和目标上有一些区别。
随机森林

  1. 训练方法:随机森林使用Bagging策略,其中基学习器(决策树)是独立且同时训练的。
  2. 随机化策略:随机森林在构建决策树时,既随机抽取样本(有放回地抽取),也随机选择特征子集。
  3. 集成策略:随机森林通常对基学习器的预测结果进行简单的投票(分类问题)或平均(回归问题)。
  4. 目标:随机森林主要关注降低模型的方差,从而减小过拟合的风险。

梯度提升树(GBM)

  1. 训练方法:GBM使用Boosting策略,基学习器(决策树)是按顺序迭代训练的。
  2. 随机化策略:GBM中可以选择不使用随机化策略,但也可以采用类似随机森林的随机抽样和特征子集选择(这称为随机梯度提升)。
  3. 集成策略:GBM根据每个基学习器的性能为它们分配权重,然后将它们加权组合以获得最终的预测结果。
  4. 目标:GBM主要关注降低模型的偏差,从而减小欠拟合的风险。

各自的优点和缺点

随机森林的优点

  • 训练过程可以并行化,速度较快。
  • 对于特征选择和噪声数据具有较好的鲁棒性。
  • 模型较简单,不容易过拟合。
  • 可以直接估计特征重要性。

随机森林的缺点

  • 相对于GBM,对于某些问题可能无法达到同样的预测精度。

梯度提升树(GBM)的优点

  • 通常具有较高的预测准确性。
  • 可以灵活地调整模型的复杂性,通过调整参数来平衡偏差和方差。
  • 可以处理具有混合类型特征的数据集
  • 同样可以估计特征重要性。
  • 可以通过早停(early stopping)等技术防止过拟合。

梯度提升树(GBM)的缺点

  • 训练过程相对较慢,因为基学习器是顺序训练的,难以并行化。
  • 超参数调优对模型性能影响较大,需要更多的调试时间。
  • 相对于随机森林,对异常值和噪声数据较敏感。
  • 如果参数设置不当,容易过拟合。

3.为什么集成学习方法通常在减小泛化误差方面表现优越?
集成学习方法在减小泛化误差方面表现优越,主要是因为它们结合了多个基学习器的预测结果,从而提高了模型的整体性能。具体来说,集成学习的优势可以从以下几个方面来理解:
降低偏差(Bias):Boosting 类方法(如 GBM、AdaBoost)通过迭代训练一系列弱学习器并加权组合,特别关注在前一轮迭代中预测错误的样本。这种策略有助于降低模型的偏差,从而改善整体预测性能。
降低方差(Variance):Bagging 类方法(如随机森林)通过自助采样生成多个训练数据子集,然后独立训练多个基学习器。这种策略可以减少模型的方差,降低过拟合的风险。在预测阶段,基学习器的预测结果通过投票或平均进行汇总,这有助于减少预测的误差。
错误的独立性:集成学习方法在组合多个基学习器时,如果基学习器的错误相互独立或不相关,那么集成模型的泛化误差就会减小。例如,在随机森林中,随机选择特征子集有助于构建多样性更大的决策树,从而降低树之间的相关性。
智慧的群体:集成学习利用了“群体智慧”的概念。即使单个基学习器的预测性能并不高,通过组合多个基学习器,可以实现更高的整体性能。这是因为集成方法在一定程度上可以平衡或抵消基学习器的个别错误。

4.为什么使用决策树作为基学习器?

  • 决策树的表达能力和泛化能力,可以通过剪枝快速调整;
  • 决策树可以方便地将样本的权重整合到训练过程中;(适合 Boosting 策略)
  • 决策树是一种不稳定的学习器; (适合Bagging 策略)
  • 所谓不稳定,指的是数据样本的扰动会对决策树的结果产生较大的影响;

5.为什么不稳定的学习器更适合作为基学习器?

  • 不稳定的学习器容易受到样本分布的影响(方差大),很好的引入了随机性;这有助于在集成学习(特别是采用
    Bagging策略)中提升模型的泛化能力。

  • 为了更好的引入随机性,有时会随机选择一个属性子集中的最优分裂属性,而不是全局最优(随机森林)

6.Bagging 方法中能使用线性分类器作为基学习器吗? Boosting 呢?
Bagging 方法中不推荐

  • 线性分类器都属于稳定的学习器(方差小),对数据不敏感;
  • 甚至可能因为 Bagging 的采样,导致在训练中难以收敛,增大集成分类器的偏差。

Boosting 方法中可以使用

  • Boosting 方法主要通过降低偏差的方式来提升模型的性能,而线性分类器本身具有方差小的特点,所以两者有一定相性。
  • XGBoost 中就支持以线性分类器作为基学习器。

1.8 模型

逻辑回归

1.逻辑回归是什么?它的优势有哪些?

LR本质上是线性回归,特殊之处在于特征到结果的映射中加入了一层逻辑函数g(z),逻辑回归使用的g(z)函数是sigmoid函数。将线性回归的输出映射到(0, 1)之间的概率值。
因此逻辑回归=线性回归 + sigmoid。

逻辑回归的优点:
它是直接对分类可能性进行建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题;
它不是仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;
逻辑回归函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。
对于线性数据,(大部分时候)逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林

2.逻辑回归的推导

逻辑回归(Logistic Regression)是一种用于处理二分类问题的线性模型。推导逻辑回归主要分为以下几个步骤:
1.线性模型:我们首先构建一个线性模型,将输入特征与模型参数进行线性组合。
设有 m 个特征向量 x = (x₁, x₂, ..., xₘ) 和模型参数 w = (w₀, w₁, ..., wₘ),线性模型可表示为:
z = w₀ + w₁x₁ + w₂x₂ + ... + wₘxₘ = w^T * x

2.Sigmoid 函数:为了将线性模型的输出映射到概率值(0, 1),我们引入 Sigmoid 函数(逻辑函数):σ(z) = 1 / (1 + exp(-z))

3.将 z 代入 Sigmoid 函数得到:p(y = 1 | x) = σ(w^T * x) = 1 / (1 + exp(-w^T * x))
这表示给定输入特征 x 时,事件 y=1(正类)发生的概率。

4.似然函数:我们的目标是找到最优的模型参数 w,使得在给定数据集 D = {(x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ)} 的情况下,事件发生的概率最大。
这可以通过最大化似然函数来实现。
似然函数可以表示为:L(w) = ∏[p(y = 1 | x) ^ y * (1 - p(y = 1 | x)) ^ (1 - y)]其中,y ∈ {0, 1},n 是样本数量。

5.对数似然函数:为了便于计算,我们通常取似然函数的对数,称为对数似然函数:
LL(w) = ∑[y * log(p(y = 1 | x)) + (1 - y) * log(1 - p(y = 1 | x))]
我们的目标变为最大化对数似然函数。

6.梯度下降法:为了求解最优参数 w,我们可以使用梯度下降法等优化算法。首先计算对数似然函数的梯度:
∇LL(w) = ∑[y * (1 - p(y = 1 | x)) * x - (1 - y) * p(y = 1 | x) * x]
然后通过迭代更新参数 w:
w ← w + α * ∇LL(w)
其中,α 是学习率。

通过多次迭代,我们可以找到使得对数似然函数最大化的参数 w,从而得到逻辑回归模型。

SVM

1.SVM 是什么?请简要介绍 SVM 的原理?

支持向量机(SVM)是一种监督学习算法,主要用于分类和回归任务。
在分类问题中,SVM 试图找到一个超平面,能够最大化两个类别之间的间隔。
这个超平面被称为最大间隔超平面,它使得距离超平面最近的数据点(即支持向量)之间的间距最大化。
SVM 的基本思想是在高维空间中寻找一个决策边界,使得两个类别之间的边界最大化。

2.什么是支持向量?它们在 SVM 中的作用是什么?

支持向量是距离最大间隔超平面最近的那些数据点。在训练 SVM 模型时,支持向量对最大间隔超平面的确定起到关键作用。
实际上,只有支持向量对最终确定的超平面产生影响,而其他非支持向量的数据点对结果没有贡献。
这意味着支持向量是决定分类边界的关键数据点。

3.请解释线性 SVM 和非线性 SVM 的区别。什么时候应该使用非线性 SVM?

线性 SVM 是指在特征空间中可以用线性超平面对数据进行分类的 SVM。在这种情况下,数据是线性可分的。
然而,现实中很多问题并不是线性可分的。此时,我们需要使用非线性 SVM。
非线性 SVM 通过核技巧将数据映射到一个更高维的空间中,使得数据在高维空间变得线性可分。
当面对非线性可分的问题时,我们应该使用非线性 SVM。

4.请介绍一下核函数及其在 SVM 中的作用。常见的核函数有哪些?

核函数是用于将数据从原始特征空间映射到高维空间的函数,使得在高维空间中数据变得线性可分。
核函数的引入避免了直接在高维空间进行计算的复杂性,从而提高了计算效率。
在 SVM 中,核函数可以看作是计算两个数据点在映射后的高维空间中的内积。
常见的核函数有:线性核、多项式核、径向基函数核和 Sigmoid 核。

5.如何选择合适的核函数?

选择合适的核函数取决于数据的分布和问题的复杂性
线性核:当数据线性可分或者问题相对简单时,可以选择线性核。线性核具有较低的计算复杂度,因此在大型数据集上的性能较好。
多项式核:当数据呈现一定程度的非线性关系时,可以尝试使用多项式核。多项式核可以处理更复杂的非线性关系,但计算复杂度较高,可能导致过拟合。
RBF核:RBF核是一种通用的核函数,适用于多种非线性问题。它可以处理高度非线性的数据分布,但计算复杂度和参数调整的难度较高。

6.什么是软间隔 SVM?它与硬间隔 SVM有何区别?

硬间隔 SVM 要求数据必须完全线性可分,即没有任何数据点落在最大间隔超平面的错误一侧。
然而,在现实问题中,数据往往存在噪声和异常值,使得硬间隔 SVM 难以适用。

软间隔 SVM 引入了松弛变量,允许一定数量的数据点落在最大间隔超平面的错误一侧,从而提高模型的泛化能力。
软间隔 SVM 在最大化间隔的同时,尽量减少误分类的数据点数量。通过调整正则化参数 C,我们可以在间隔大小和误分类之间找到一个平衡。

7.请解释正则化参数 C 在 SVM 中的作用。如何选择合适的 C 值?

正则化参数 C 是用于控制模型复杂度和过拟合程度的超参数。
C 值较大时,模型会对误分类的数据点进行严格惩罚,可能导致模型过拟合;
C 值较小时,模型对误分类的数据点的惩罚减轻,允许一定程度的误分类,从而提高泛化能力。
通过调整 C 值,我们可以在过拟合和欠拟合之间找到一个平衡。

8.SVM 的优点和缺点分别是什么?与其他分类算法(如逻辑回归、决策树等)相比,它有何优势?

优点:
在高维空间中表现良好,尤其适合处理特征数量大于样本数量的情况。
只需使用部分训练数据(支持向量)就可以确定决策边界,因此具有较好的泛化能力。
可以通过核技巧处理非线性问题,具有很强的灵活性。

缺点:
训练时间较长,尤其在大型数据集上计算复杂度较高。
对于核函数和正则化参数 C 的选择敏感,需要仔细调整以获得最佳性能。
无法直接处理多分类问题,需要将其转换为多个二分类问题。
SVM 模型不易解释,相比于决策树等模型,可解释性较差。

9.请简要介绍一下 SVM 的训练过程。如何求解 SVM 的优化问题?常用的求解方法有哪些?

SVM 的训练过程包括以下步骤:
1.将原始问题转换为求解最大间隔超平面的优化问题,通常表现为凸二次规划问题。
2.通过优化算法求解二次规划问题以获得最优解,得到最大间隔超平面的参数。
3.确定支持向量,并根据支持向量计算截距项。

常用的求解方法:
序列最小优化算法:一种启发式算法,通过每次优化一对变量来逐步求解二次规划问题。SMO 算法的优点是计算复杂度较低,适合于大型数据集。
梯度下降:通过计算目标函数的梯度并沿负梯度方向更新参数来求解优化问题。梯度下降算法需要设置学习率和迭代次数,可能需要较长时间才能收敛到最优解。
内点法:一种基于凸优化理论的求解方法,可以在多项式时间内求解二次规划问题。内点法在中小型数据集上表现良好,但在大型数据集上可能计算复杂度较高。

10.为什么要用对偶问题求解?

SVM的原始问题是一个凸二次规划问题。然而,在解决原始问题时,可能会面临计算复杂度较高的问题。
这是因为在原始问题中,计算涉及特征空间中的内积,当特征空间的维数非常高时,计算量可能非常大。
为了降低计算复杂度,我们可以将原始问题转化为对偶问题。对偶问题具有以下优点:
更高的计算效率:在对偶问题中,我们计算的是数据点在原始空间中的内积,而不是特征空间中的内积。
这意味着计算复杂度仅与数据点的数量有关,而与特征空间的维数无关。当特征空间的维数远大于数据点的数量时,对偶问题的求解效率更高。
引入核技巧:通过对偶问题,我们可以将原始空间中的内积替换为核函数。核函数可以将数据从原始空间映射到一个高维空间,使得在高维空间中数据线性可分。
核技巧避免了在高维空间中进行直接计算的复杂性,从而提高了计算效率。
易于求解:对偶问题的目标函数是一个关于拉格朗日乘子的凸二次规划问题,且满足KKT条件。
这使得对偶问题相对容易求解,可以使用现有的优化方法,如序列最小优化(SMO)算法、梯度下降法和内点法等。
总之,将原始问题转化为对偶问题可以提高计算效率、方便引入核技巧,以及利用现有优化方法进行求解。
这些优点使得对偶问题在实际应用中更加具有实用价值。

决策树

1.什么是决策树?决策树有哪些常见的算法?并介绍下区别

决策树是一种监督学习算法,用于分类和回归任务。它通过对特征进行递归划分,构建一个树状结构,以将数据集划分为尽可能纯净的子集。每个内部节点表示一个特征,每个分支表示一个决策规则,而每个叶节点表示一个类别或目标值。
常见的决策树算法有:
ID3(Iterative Dichotomiser 3):是一种基于信息增益(Information Gain)的贪婪算法,用于分类任务。ID3主要处理离散特征,并且不能直接处理缺失值。ID3容易受到噪声干扰,导致过拟合。
C4.5(Classifier 4.5):是ID3的改进版本,用于分类任务。C4.5基于信息增益比(Gain Ratio)来选择特征。相比ID3,C4.5可以处理连续特征,支持特征值缺失,并引入了剪枝技术以减少过拟合。
CART(Classification and Regression Tree):是一种广泛应用于分类和回归任务的决策树算法。CART使用基尼不纯度(Gini Impurity)来选择特征。与C4.5类似,CART也可以处理连续特征和缺失值,同时采用剪枝技术防止过拟合。不过,CART生成的决策树是二叉树,每个内部节点只有两个子节点。
这些算法的主要区别如下:
特征选择标准:ID3使用信息增益,C4.5使用信息增益比,CART使用基尼不纯度。
处理连续特征:ID3无法直接处理连续特征,而C4.5和CART可以。
处理缺失值:ID3无法直接处理缺失值,而C4.5和CART可以。
树的结构:CART生成的决策树是二叉树,而ID3和C4.5生成的决策树可以是多叉树。
应用范围:ID3和C4.5主要用于分类任务,而CART既可用于分类,也可用于回归任务。
剪枝技术:C4.5和CART引入了剪枝技术以减少过拟合,而ID3没有。

自然语言处理

文本表示模型

1.有哪些文本表示模型?它们各有什么优缺点?

词袋模型:将文本中的每个单词都视为一个独立的特征,并将其在文本中出现的频次作为特征值。
优点是简单易用,适用于大规模语料库。缺点是无法捕捉单词的语义信息和上下文关系。
TF-IDF :TF-IDF将BoW中的特征值改进为计算单词在文本中出现的频率和在语料库中出现的文档数的倒数之积,以反映单词在文档中的重要性。
优点是能够降低常见单词的权重,提高罕见单词的权重,使得文本表示更加准确。缺点是仍然无法处理单词的语义信息和上下文关系。
Word Embedding:Word Embedding通过将每个单词映射到一个低维向量空间中的向量来表示单词。常用的算法包括Word2Vec和GloVe等。
Word Embedding可以捕捉单词的语义信息和上下文关系,但需要大量的训练数据和计算资源。
Transformer:Transformer可以自动学习单词之间的关系,处理长文本序列,具有较好的效果,但训练复杂度较高。

2.Word2Vec 是如何工作的?

Word2Vec模型通过训练神经网络来学习词向量表示,其中有两种算法:CBOW和Skip-Gram。
在CBOW方法中,模型通过给定单词的上下文来预测该单词。它首先将单词编码成向量,然后将上下文向量作为输入,预测当前单词。
在Skip-gram方法中,模型反之通过给定单词来预测它周围的上下文。
在训练过程中,通常使用随机梯度下降算法来最小化损失函数。可以使用一些技巧来提高模型性能,例如使用负采样来减少训练时间和内存消耗。

3.Word2Vec 的优化方法

Word2Vec算法有两种优化方法:Hierarchical Softmax(分层softmax)和Negative Sampling(负采样)。
Hierarchical Softmax是一种基于树结构的优化方法,通过构建霍夫曼编码树,将原本的多分类问题转化为二分
类问题,从而减少计算量。Hierarchical Softmax通过对每个单词分配一个唯一的霍夫曼编码来构建一棵二叉
树,使得在预测某个单词出现的概率时,只需沿着树的某个路径走到叶节点,就可以得到该单词的概率,而不
需要计算所有单词的概率。这样可以大大减少计算量。
Negative Sampling是另一种优化方法,它把多分类问题转化为二分类问题,但与Hierarchical Softmax不同的
是,Negative Sampling不需要构建霍夫曼编码树。Negative Sampling的基本思想是,对于给定的一个正样本
(即一个中心词和它周围的上下文词),在训练时随机采样一些负样本,然后将这些样本作为训练数据来训练
模型。对于一个正样本,模型的目标是将其与其上下文词的向量“靠近”,同时将其与负样本的向量“远离”,从而
实现词向量的学习。
在实际应用中,Negative Sampling相比Hierarchical Softmax更加高效,计算量更小,能够处理大规模的语料
库。但是需要注意的是,Negative Sampling的性能很大程度上取决于负样本采样的质量,负样本采样不好会导
致模型训练不收敛。

计算机视觉

关于CNN

1.卷积层的本质/特点和作用是什么?
卷积层的本质是通过对输入数据进行局部感受野的加权求和操作从而提取输入数据中的局部特征
卷积层的主要特点和作用如下:
局部连接:卷积层中的神经元仅与输入数据的一个局部区域相连接,这个局部区域被称为感受野(Receptive Field)。局部连接可以降低网络的参数数量,减小计算复杂性,并有助于发现局部特征。
权重共享:在卷积层中,同一层的神经元共享一组权重(卷积核或滤波器)。这意味着不同位置的神经元在进行卷积操作时使用相同的权重,这有助于减少参数数量,同时增强对平移不变性的检测能力。
多个卷积核:卷积层通常包含多个卷积核,每个卷积核负责检测一种特定的特征。例如,在图像处理中,不同的卷积核可能分别负责检测边缘、纹理和形状等特征。
层级结构:卷积神经网络通常包含多个卷积层,这些层按照层级结构进行堆叠。较低层的卷积层负责提取简单的局部特征,如边缘和纹理;较高层的卷积层则基于较低层的特征来提取更复杂的特征,如形状和对象。这种层级结构有助于模型逐渐学习更复杂、更高层次的表示。
总之,卷积层的本质是通过局部连接、权重共享、多个卷积核和层级结构来提取输入数据的局部特征

2.卷积神经网络为什么会具有平移不变性?
卷积神经网络(CNN)具有平移不变性,主要是因为其卷积层和池化层的设计特点。以下是这两个组件如何帮助 CNN 具有平移不变性的解释:

  • 卷积层:在卷积层中,神经元使用相同的卷积核(或滤波器)在输入数据上进行滑动窗口卷积操作。由于同一层的神经元共享卷积核权重,这意味着它们在进行卷积操作时使用相同的权重。因此,当输入数据中的某个特征发生平移时,卷积层的神经元依然能够检测到这个特征,只是检测到的位置发生了相应的变化。这就使得CNN 具有一定程度的平移不变性。
  • 池化层:池化层进一步增强了 CNN的平移不变性。池化层通过在局部区域内进行降采样(如最大池化或平均池化)来减小数据的空间维度。这种操作使得模型对输入数据中的小平移具有更强的鲁棒性,因为这些小平移不太可能影响池化层的输出。池化层有助于提取更抽象、更具鲁棒性的特征,从而使得CNN 对平移更加不变。
    需要注意的是,CNN 的平移不变性是有限的。当输入数据中的特征平移超过一定程度时,CNN 可能无法完全保持平移不变性。但在实际应用中,这种有限的平移不变性通常已经足够应对多种情况。如果需要增强平移不变性,可以使用数据增强(如随机平移和翻转等)来训练 CNN,从而提高模型对不同平移下的特征检测能力。

3.什么是 Dilated CNN 空洞卷积?
空洞卷积(Dilated Convolution),也称为扩张卷积,是一种在卷积神经网络(CNN)中使用的特殊卷积技术。它是基于标准卷积的一种变体,通过在卷积核的各个元素之间引入一个固定间隔(扩张因子,dilation factor)来增大卷积核的感受野。这样可以使网络捕捉到更广泛的上下文信息,同时保持相同的参数数量和计算复杂性。
空洞卷积的主要优势如下:

  • 更大的感受野:通过增大卷积核的感受野,空洞卷积可以帮助模型捕捉到输入数据中更大范围的上下文信息。这在许多计算机视觉任务中是非常有用的,如语义分割、物体检测和场景理解等。
  • 参数和计算效率:空洞卷积在扩大感受野的同时,保持了相同的参数数量和计算复杂性。这使得模型可以在不增加额外计算负担的情况下捕捉更多的上下文信息。
  • 多尺度特征融合:空洞卷积可以用于构建多尺度特征提取器,通过使用不同扩张因子的空洞卷积层,可以使模型同时捕捉到不同尺度的特征。这种多尺度特征融合有助于提高模型的性能和泛化能力。

空洞卷积在许多深度学习应用中取得了显著的成功,特别是在计算机视觉领域。一个典型的应用示例是 DeepLab 系列模型,它使用空洞卷积进行语义分割,成功地提高了模型在各种视觉基准数据集上的性能。

强化学习

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐