机器学习面试题(nlp岗)

汇总了面试时遇到的问题,回答都是根据自己理解整理的,如果有不对的地方,欢迎留言指正~

如果你觉得有用,请动动小手点个赞赞叭~拜托啦~

大语言模型!!!一定会问(了解哪些 微调方面)

模型相关问题

机器学习和深度学习的区别

        数据量方面:深度学习需要大量的数据才能达到很好的性能

        硬件依赖方面:深度学习需要进行大量的矩阵运算,而GPU可以高效地进行这些计算,所以GPU逐渐成为深度学习工作的必须硬件。相比于机器学习,深度学习更依赖于安装了GPU的机器。

        特征方面:机器学习需要人为标注并提取特征,大部分机器学习算法的性能依赖于所提取特征的准确度。深度学习的神经网络会提取特征,例如,识别人脸任务中,神经网络前面的层会先学习低等级的特征(线条、边界),然后学习部分人脸(眼睛、鼻子等),最后学习高级的人脸描述。

        参数方面:机器学习需要人工手动调参,深度学习中的反向传播自动调整参数。

        问题解决方式:机器学习会把任务拆分为多个子问题,然后结合各个子问题的预测结果获得最终结果。深度学习是直接进行端到端的问题解决。例如,当识别一张照片中的物体分类时,机器学习会分别执行物体检测和物体识别,先使用将物体扫描出来,再识别该物体属于什么类别;深度学习会直接根据输入数据输出结果。

        可解释性:深度学习的可解释性差

        使用场景方面:深度学习适用于人工不好提取特征的场景;机器学习适用于可解释性要求高的场景,例如,需要结合结果和原始特征进行一些解释的场景。

参考:深度学习和机器学习有什么区别? - 知乎

文本预处理流程

        英文:去除非英文部分、分词、转换大小写、去停用词、词形还原/词干提取、获取词向量

文本词向量获取

        one-hot、bag of words、Word2Vec

        one-hot编码得到的向量是高维稀疏矩阵,且无法体现词语的上下文结构。

        word2vec得到的向量是低维稠密矩阵,非常适用于神经网络模型,高维稀疏的特征向量会导致模型过大,不易收敛。

one-hot编码的使用场景

        one-hot是将特征取值为0或1,所以当做分类任务且特征之间没有大小的含义时,可以使用one-hot编码。例如根据颜色、味道分类出西瓜的品种。

        相关问题:如何做文本分类任务(政治、体育、娱乐)

如何处理数据不平衡的数据集

        ① 过采样/欠采样

        ② 采取合适的评估指标

        ③ 改变算法:

                将少数类样本看作是异常点,将任务转为异常点检测任务

                给少数类样本分配更高的权重

特征选择和特征提取的区别

        特征选择是从特征中映射出一个新的特征子集  

        特征提取是从特征中选择出某些特征,来创建出新特征

在决策树中如何做特征选择

        信息增益--ID3使用:纯度提升值。即根据某特征分类前后的信息熵相减。该值越大,特征越重要

        基尼系数--CART分类使用:经过某特征划分后的数据集的不确定程度,该值越小,特征越可信

        具体实现公式可参考:决策树学习笔记(一):特征选择-阿里云开发者社区 (aliyun.com)

如何做特征提取

        主成分分析(PCA):为了让提取出的样本有更好的发散性。通过某种线性的投影,将高维的数据映射到低维空间中,并使得投影区域的数据分布最散乱(方差最大),以保证在降维的同时保留住较多的数据特征。但方差小的数据可能包含样本的重要信息,所以该方法可能会遗失一些重要信息。PCA是不考虑数据类别的特征提取方法,适用于无标签数据。

        线性判别分析(LDA):为了让提取出的样本有更好的分类性能。在减小维度的同时,保留较多的类区分信息,即实现投影后,类内方差最小,类间方差最大。适用于有标签的数据。因为类别分得太清楚,有可能导致过拟合。

如何避免过拟合

        正则化、数据量和模型复杂度

随机森林的原理

        决策树分类、投票、2个随机性

随机森林的参数

       框架参数:

        n_estimators:决策树的个数

        bootstrap:是否进行有放回采样

        oob_score:是否使用袋外样本评估模型

        决策树参数:

        max_depth:树的最大深度;max_features:树的最大特征数

        min_samples_leaf:叶子节点含有的最少样本。如果叶子节点含有的样本少于该值,就将叶子节点及其兄弟节点剪枝,只留下它们的父节点

        min_samples_split:节点可分的最小样本数

        min_weight_fraction_leaf:叶子节点的最小样本权重和。如果小于该值,则将叶子节点及其兄弟节点剪枝,只保留父节点。当样本缺失值多或偏差较大时,可尝试设置该参数

        max_leaf_nodes:最大叶子节点数

        min_impurity_decrease:节点划分的最小不纯度。如果大于该值,说明该节点还可以继续划分

        criterion:节点的划分标准。不纯度标准--基尼系数、信息增益标准--entrop熵

参考:随机森林算法参数解释及调优 - 知乎 (zhihu.com)

随机森林适用于哪些情况

        适用于处理分类和回归问题,并且能够处理高维数据集,以及对于有特征缺失的数据,能够维持模型的准确度

        神经网络适用于大规模数据集以及处理非线性问题

随机森林中特征重要性评估

        基尼系数/袋外错误率

XGBoost参数 (15)

        booster, gamma, alpha, lambda, eta, n_estimetors, max_depth, min_child_weight, subsample, colsample_bytree, objective, num_class, eval_metirc, silent, random_state

CNN的架构

        输入层、卷积层、激活函数、池化层、全连接层、输出层

CNN中激活函数的作用

        激活函数是非线性的,添加激活函数后,神经网络的输出更复杂,增加神经网络的表达能力,使网络能够解决线性不可分问题。

使用过的数据集都是多大的
如何训练数量非常大(百亿上千亿)的数据集
了解哪些机器学习的框架:做完数据提取、模型评测后直接输出结果
Spark集群
如何判断模型的可信性

        置信度

如何评估模型的准确度和性能

        混淆矩阵

        交叉验证

        Accuracy, Precision, Recall, F1-score

        AUC-ROC曲线

如何做数据清洗

        缺失值处理

python相关问题

栈和队列的区别

        输出顺序

了解哪些python中的数据结构

        元组()、列表[]、集合{}、字典{key:value}

列表和元组的区别

        列表是用方括号[ ],元组是用圆括号( )

        列表中的元素是可变的,元组中的元素不可变,向元组中添加新元素会创新新元组。

        列表和元组中都可以包含任意类型的数据:["one", "two", 23] / ("one", "two", 23)

列表和字典的区别

        列表是以连续的整数为索引,字典是以关键字为索引,其中关键字是不可变的

        遍历列表时,使用enumerate()获取索引值和对应值;遍历字典时,使用.item()获取关键字和值

列表的遍历有哪些函数

        enumerate()获取索引值和对应值

        zip(a, b)同时遍历a和b两个列表

        reversed()反向遍历列表

        sorted()将列表从小到大排序

如何在python中实现一个链表

        链表是由一系列的结点组成,每个结点包含数据域和指针域两部分,数据域储存数据元素,指针域储存指向下一个结点的指针。

        链表不需要连续的内存去存储数据,只要找到起始结点,整个链表的数据都可以被依次访问。当需要在链表中添加数据时,不需要将要插入数据的位置的后续数据向后退位,结点可以在运行过程中动态生成。

        在python3中,创建链表分为三步。首先,定义一个单结点,其中包含一些数据和一个指向下一个结点的指针。然后,创建一个带有头指针的空链表,通过头指针,可以遍历访问链表中所有的数据。最后就可以通过遍历依次给各个结点赋值。

参考:创建一个python链表_陈鲁佳的博客-CSDN博客

用过哪些python中的库和深度学习框架,并举例

        使用过的库:numpy, pandas, sklearn. 框架:pytorch

        sklearn库:preprocessing包,引入OneHotEncoder

                           metrics包,引入f1_score评估指标

        numpy库:数组的转置---arr.T

                          修改数组的维度---arr.reshape(())

                          根据判断表达式决定输出---np.where(a>4, 0, 1)---如果a>4,则输出0,反之输出1

        pytorch框架:torch.untils.data.Dataset 自定义数据集

                               torch.tensor和np.array互换:

                                        tensor--->array: a.numpy()

                                        array--->tensor: ① torch.from_numpy(a) 共享内存,值会一起改变

                                                                  ② torch.tensor(a) 不共享内存

        pandas库和numpy库都可以创建数组:pd.Series和np.array。

                pd创建数组时可以使用index关键字来定义索引,np只能用0, 1, 2...

                pd可以通过DataFrame将字典转为表格

        iloc和loc都可以用来访问pd创建的数组中的值。在iloc中,行号和列号使用的是下标序号([0,1,2]),loc使用的是index索引值(['商品名', '价格']);使用iloc进行切片访问时,不包含end_index,而loc包括。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值