算法面试高频知识点:机器学习基础总结

图片说明

----【机器学习基础】----

【一】什么是模型的偏差和方差?

误差(Error)= 偏差(Bias) + 方差(Variance) + 噪声(Noise),一般地,我们把机器学习模型的预测输出与样本的真实label之间的差异称为误差,其反应的是整个模型的准确度。

噪声(Noise):描述了在当前任务上任何机器学习算法所能达到的期望泛化误差的下界,即刻画了当前任务本质的难度。

偏差(Bias):衡量了模型拟合训练数据的能力,偏差反应的是所有采样得到的大小相同的训练集训练出的所有模型的输出平均值和真实label之间的偏差,即模型本身的精确度。

偏差通常是由于我们对机器学习算法做了错误的假设所导致的,比如真实数据分布映射的是某个二次函数,但我们假设模型是一次函数。

偏差(Bias)越小,拟合能力却强(可能产生过拟合);反之,拟合能力越弱(可能产生欠拟合)。偏差越大,越偏离真实数据。

方差描述的是预测值的变化范围,离散程度,也就是离期望值的距离。方差越大,数据的分布越分散,模型的稳定程度越差

方差也反应了模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。由方差带来的误差通常体现在测试误差相对于训练误差的增量上

方差通常是由于模型的复杂度相对于训练样本数过高导致的。方差越小,模型的泛化能力越高;反之,模型的泛化能力越低

如果模型在训练集上拟合效果比较优秀,但是在测试集上拟合效果比较差,则表示方差较大,说明模型的稳定程度较差,出现这种现象可能是由于模型对训练集过拟合造成的。

接下来我们用下面的射击的例子进一步解释这二者的区别。假设一次射击就是机器学习模型对一个样本进行预测。射中靶心位置代表预测准确,偏离靶心越远代表预测误差越大,其中左上角是最好的结果。

【二】数据类别不平衡怎么处理?

  1. 数据增强。

  2. 对少数类别数据做过采样,多数类别数据做欠采样。

  3. 损失函数的权重均衡。(不同类别的loss权重不一样,最佳参数需要手动调节)

  4. 采集更多少数类别的数据。

  5. 转化问题定义,将问题转化为异常点检测或变化趋势检测问题。 异常点检测即是对那些罕见事件进行识别,变化趋势检测区别于异常点检测,其通过检测不寻常的变化趋势来进行识别。

  6. 使用新的评价指标。

  7. 阈值调整,将原本默认为0.5的阈值调整到:较少类别/(较少类别+较多类别)。

【三】什么是过拟合,解决过拟合的方法有哪些?

过拟合:模型在训练集上拟合的很好,但是模型连噪声数据的特征都学习了,丧失了对测试集的泛化能力。

解决过拟合的方法

  1. 重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据或重新选择数据。

  2. 增加训练样本数量。使用更多的训练数据是解决过拟合最有效的手段。我们可以通过一定的规则来扩充训练数据,比如在图像分类问题上,可以通过图像的平移、旋转、缩放、加噪声等方式扩充数据;也可以用GAN网络来合成大量的新训练数据。

  3. 降低模型复杂程度。适当降低模型复杂度可以避免模型拟合过多的噪声数据。在神经网络中减少网络层数、神经元个数等。

  4. 加入正则化方法,增大正则项系数。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。

  5. 采用dropout方法,dropout方法就是在训练的时候让神经元以一定的概率失活。

  6. 提前截断(early stopping),减少迭代次数。

  7. 增大学习率。

  8. 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。

【四】什么是欠拟合,解决欠拟合的方法有哪些?

欠拟合:模型在训练集和测试集上效果均不好,其根本原因是模型没有学习好数据集的特征。

解决欠拟合的方法

  1. 可以增加模型复杂度。对于神经网络可以增加网络层数或者神经元数量。

  2. 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要有针对性地减小正则化系数。

  3. Boosting。

【五】常用的距离度量方法

  1. 欧式距离

  2. 闵可夫斯基距离

  3. 马氏距离

  4. 互信息

  5. 余弦距离

  6. 皮尔逊相关系数

  7. Jaccard相关系数

  8. 曼哈顿距离

【六】正则化的本质以及常用正则化手段?

正则化是机器学习的核心主题之一。正则化本质是对某一问题加以先验的限制或约束以达到某种特定目的的一种操作。在机器学习中我们通过使用正则化方法,防止其过拟合,降低其泛化误差。

常用的正则化手段:

  1. 数据增强

  2. 使用L范数约束

  3. dropout

  4. early stopping

  5. 对抗训练

【七】L范数的作用?

L范数主要起到了正则化(即用一些先验知识约束或者限制某一抽象问题)的作用,而正则化主要是防止模型过拟合。

范数主要用来表征高维空间中的距离,故在一些生成任务中也直接用L范数来度量生成图像与原图像之间的差别。

下面列出深度学习中的范数:

【八】Dropout的作用?

Dropout是在训练过程中以一定的概率使神经元失活,也就是输出等于0。从而提高模型的泛化能力,减少过拟合。

使用Dropout

我们可以从两个方面去直观地理解Dropout的正则化效果:1)在Dropout每一轮训练过程中随机丢失神经元的操作相当于多个模型进行取平均,因此用于预测时具有vote的效果。2)减少神经元之间复杂的共适应性。当隐藏层神经元被随机删除之后,使得全连接网络具有了一定的稀疏化,从而有效地减轻了不同特征的协同效应。也就是说,有些特征可能会依赖于固定关系的隐含节点的共同作用,而通过Dropout的话,就有效地避免了某些特征在其他特征存在下才有效果的情况,增加了神经网络的鲁棒性。

Dropout在训练和测试时的区别:Dropout只在训练时产生作用,是为了减少神经元对部分上层神经元的依赖,类似将多个不同网络结构的模型集成起来,减少过拟合风险。而在测试时,应该用整个训练好的模型,因此不需要Dropout。

【九】Softmax的定义和作用

在二分类问题中,我们可以使用sigmoid函数将输出映射到【0,1】区间中,从而得到单个类别的概率。当我们将问题推广到多分类问题时,可以使用Softmax函数,对输出的值映射为概率值。

其定义为:

其中a代表了模型的输出。

【十】交叉熵定义和作用

交叉熵(cross entropy)常用于深度学习中的分类任务,其可以表示预测值与ground truth之间的差距。

交叉熵是信息论中的概念。其定义为:

代表的概率分布,代表预测值的概率分布。交叉熵从相对熵(KL散度)演变而来,代表了信息量,越大说明可能性越大,其信息量越少;反之则信息量越大。通过不断的训练优化,逐步减小交叉熵损失函数的值来达到缩小距离的目的。

【十一】训练集/验证集/测试集划分

机器学习的直接目的是希望模型在真实场景的数据上有很好的预测效果,泛化误差越低越好。

如何去跟踪泛化误差呢?这时就需要验证集和测试集了。

我们可以使用训练集的数据来训练模型,然后用测试集上的误差推测最终模型在应对现实场景中的泛化误差。有了测试集,我们可以在本地验证模型的最终的近似效果。

与此同时,我们在模型训练过程中要实时监控模型的指标情况,从而进行模型参数优选操作。验证集就用于模型训练过程中的指标评估。

一般来说,如果当数据量不是很大的情况(万级别以下)可以将训练集、验证集和测试集划分为6:2:2;如果是万级别甚至十万级别的数据量,可以将训练集、验证集和测试集比例调整为98:1:1

(注:在数据集划分时要主要类别的平衡)

【十二】如何找到让F1最高的分类阈值?

首先,这个问题只存在于二分类问题中,对于多分类问题,只需要概率最高的那个预测标签作为输出结果即可。

F1值是综合了精准率和召回率两个指标对模型进行评价:

一般设0.5作为二分类的默认阈值,但一般不是最优阈值。想要精准率高,一般使用高阈值,而想要召回率高,一般使用低阈值。在这种情况下,我们通常可以通过P-R曲线去寻找最优的阈值点或者阈值范围。

#秋招##实习##面经##面试八股文##面霸的自我修养#
全部评论
我觉得能从事这个行业的,都是特聪明的人
点赞
送花
回复
分享
发布于 2022-08-19 19:06 陕西

相关推荐

3 23 评论
分享
牛客网
牛客企业服务