1特征归一化
1.1为什么需要对数值类型的特征做归一化?
- 线性函数归一化
- 零均值归一化
1.2在对数据进行预处理时,应该怎样处理类别型特征?
- 序号编码
- 独热编码
- 二进制编码
1.3什么是组合特征?如何处理高维组合特征?
- 例如语言和类型,01
该问题容易过拟合等
1.4怎样有效地找到组合特征?
使用决策树进行组合,onehot编码。
1.5有哪些文本表示模型?它们各有什么优缺点?
- 词袋模型
- 主题模型
- 词嵌入与深度学习模型
1.6Word2Vec是如何工作的?它和LDA有什么区别与联系?
CBOW的目标是根据上下文出现的词语来预测当前词的生成概率。
结构:
1.7在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?
- 添加更多的先验信息。先验信息可以作用在模型上,例如让模型采用特定的内在结构、条件假设或添加其他一些约束条件;先验信息也可以直接施加在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据,让其展现出更多的、更有用的信息,以利于后续模型的训练和学习。
- 防止过拟合:简化模型,正则,超参,集成学习
- 数据扩充
2模型评估
知识点:准确率(Accuracy),精确率(Precision),召回率(Recall),均方根误差
2.1准确率的局限性
当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准
确率的最主要因素。存在模型过拟合或欠拟合、测试集和训练集划分不合理、线下评估与线上测试的样本分布存在差异等一系列问题。
2.2精确率与召回率的权衡
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例。
- 根据P-R曲线权衡
- F1,ROC曲线评估
2.3平方根误差的“意外”
RMSE经常被用来衡量回归模型的好坏,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
方法:
- 数据去噪
- 如果非噪音,将离群点产生的机制建模进去
- 换指标,比如:平均绝对百分比误差MAPE,相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
2.4ROC曲线
ROC曲线则有很多优点,经常作为评估二值分类器最重要的指标之一。
- 什么是ROC曲线?ROC曲线的横坐标为假阳性率(False Positive Rate,FPR);纵坐标为真阳性率(True Positive Rate,TPR)
- 如何绘制ROC曲线?
- 需要指定一个阈值,预测概率大于该阈值的样本会被判为正例,小于该阈值的样本则会被判为负例
2.5如何计算AUC?
AUC指的是ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
2.6ROC曲线相比P-R曲线有什么特点?
同样被经常用来评估分类和排序模型的P-R曲线。相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
3相似度
如何评估样本距离也是定义优化目标和训练方法的基础
3.1结合你的学习和研究经历,探讨为什么在一些场景中要使用余弦相似度而不是欧氏距离?
其取值范围是[−1,1]。当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同时为1,正交时为0,相反时为−1”的性质,而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。
欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。
3.2余弦距离是否是一个严格定义的距离?
余弦距离满足正定性和对称性,但是不满足三角不等式,因此它并不是严格
定义的距离。
4A/B测试
在机器学习领域中,A/B 测试是验证模型最终效果的主要手段。
4.1在对模型进行过充分的离线评估之后,为什么还要进行在线A/B测试?
- 离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果。
- 离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。
4.2如何进行线上A/B测试?
进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对
实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的。
4.3如何划分实验组和对照组?
5模型评估的方法
在机器学习中,我们通常把样本分为训练集和测试集,训练集用于训练模
型,测试集用于评估模型。
5.1在模型评估过程中,有哪些主要的验证方法,它们的优缺点是什么?
- 最简单的holdout检验:它将原始的样本集合随机划分成训练集和验证集两部分。在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,研究者们引入了“交叉检验”的思想。
- 交叉检验:将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。在实际实验中,k经常取10。
- 自助法:自助法是基于自助采样法的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集,进行模型验证,这就是自助法的验证过程
5.2在自助法的采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过?
答: 当样本数很大时,大约有36.8%的样本从未被选择过,可作为验证集
6参数调优
6.1超参数有哪些调优方法?
为了进行超参数调优,我们一般会采用网格搜索、随机搜索、贝叶斯优化等
算法。
- 网格搜索:它通过查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。因此,在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。
- 随机搜索:在搜索范围中随机选取样本点。它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。随机搜索一般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也是没法保证的。
- 贝叶斯优化算法:网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。
7过拟合与欠拟合
7.1在模型评估过程中,过拟合和欠拟合具体是指什么现象?
过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是
模型在训练集上的表现很好,但在测试集和新数据上的表现较差。欠拟合指的是模型在训练和预测时表现都不好的情况。
7.2能否说出几种降低过拟合和欠拟合风险的方法?
防止过拟合”的方法:
- 更多的数据,数据清洗,降维等
- 降低模型复杂度:在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
- 正则化方法
- 集成学习:把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。
防止“欠拟合”的方法:
- 添加新特征
- 增加模型复杂度
- 减小正则化系数
8经典算法
8.1支持向量机
支持向量机的原理是什么?
在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?
是否存在一组参数使SVM训练误差为0?
训练误差为0的SVM分类器一定存在吗?
8.2 逻辑回归
工作原理是什么?
逻辑回归相比于线性回归,有何异同?
答:逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者
的最本质的区别。逻辑回归中,因变量取值是一个二元分布,即给定自变量和超参数后,得到因变量的期望,并基于此期望来处理预测分类问题。而线性回归中实际上求解的是y=ax ,是对我们假设的真实关系的一个近似,其中 代表误差项.
当使用逻辑回归处理多标签的分类问题时,有哪些常见做法,分别应用于哪些场景,它们之间又有怎样的关系?
答:当存在样本可能属于多个标签的情况时,我们可以训练k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归为第i类,训练该分类器时,需要把标签重新整理为“第i类标签”与“非第i类标签”两类。通过这样的办法,我们就解决了每个样本可能拥有多个标签的情况。
8.3 决策树
决策树是一种自上而下,对样本数据进行树形分类的过程,由结点和有向边
组成。决策树的生成包含了特征选择、树的构造、树的剪枝三个过程。
决策树有哪些常用的启发函数?
- ID3—— 最大信息增益
- C4.5——最大信息增益比
- CART——最大基尼指数
- ID3和C4.5只能用于分类任务,而CART从名字就可以看出其不仅可以用于分类,也可以应用于回归任务
如何对决策树进行剪枝?
决策树的剪枝通常有两种方法,目的是为了防止过拟合,预剪枝和后剪枝。那么这两种方法是如何进行的呢?它们又各有什么优缺点。
- 预剪枝核心思想是在树中结点进行扩展之前进行修正:当树到达一定深度的时候,停止树的生长。当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继续扩展。
- 后剪枝算法生成一棵完全生长的决策树,然后从最底层向上计算是否剪枝。
9降维
9.1PCA主成成分分析
在机器学习领域中,我们对原始数据进行特征提取,有时会得到比较高维的
特征向量。在这些向量所处的高维空间中,包含很多的冗余和噪声。我们希望通过降维的方式来寻找数据内部的特性,从而提升特征表达能力,降低训练复杂度.
如何定义主成分?从这种定义出发,如何设计目标函数使得降维达到提取主成分的目的?针对这个目标函数,如何对PCA问题进行求解?
PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到
降维的目的。
PCA的求解方法:
- 对样本数据进行中心化处理
- 求样本协方差矩阵
- 对协方差矩阵进行特征值分解,将特征值从大到小排列
- 取特征值前d大对应的特征向量,将n维样本映射到d维
9.2PDA线性判别分析
线性判别分析(LDA)是一种有监督学习算法,同时经常被用来对数据进行降维。
相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考
虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已。
对于具有类别标签的数据,应当如何设计目标函数使得降维的过程中不损失类别信息?在这种目标下,应当如何进行求解?
LDA首先是为了分类服务的,因此只要找到一个投影方向ω,使得投影后的样本尽可能按照原始类别分开。LDA相比PCA更善于对有类别信息的数据进行降维处理,但它对数据的分布做了一些很强的假设。
10非监督学习
给机器输入大量的特征数据,并期望机器通过学习找到数据中存在的某种共性特征或者结构,亦或是数据之间存在的某种关联。例如,视频网站根据用户的观看行为对用户进行分组从而建立不同的推荐策略,或是寻找视频播放是否流畅与用户是否退订之间的关系等。这类问题被称作“非监督学习”问题,它并不是像监督学习那样希望预测某种输出结果。
非监督学习主要包含两大类学习方法:数据聚类和特征变量关联。其中,聚类算法往往是通过多次迭代来找到数据的最优分割,而特征变量关联则是利用各种相关性分析方法来找到变量之间的关系
10.1K均值
简述K均值算法的具体步骤?
K均值聚类的核心目标是将给定的数据集划分成K个簇,并给出每个数据对应
的簇中心点。算法的具体步骤描述如下:
- 数据预处理,如归一化、离群点处理等
- 随机选取K个簇中心,记作a1,a2…
- 定义代价函数
- 令t=0,1,2,… 为迭代步数,重复下面过程直到 J 收敛
1)对于每一个样本xi,将其分配到距离最近的簇
2)对于每一个类簇k,重新计算该类簇的中心
K均值算法的优缺点是什么?如何对其进行调优?
K均值算法有一些缺点,例如受初值和离群点的影响每次的结果不稳定、结果
通常不是全局最优而是局部最优解、无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100倍)、不太适用于离散分类等。但是瑕不掩瑜,K均值聚类的优点也是很明显和突出的,主要体现在:对于大数据集,K均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是数据对象的数目,K是聚类的簇数,t是迭代的轮数。尽管算法经常以局部最优结束,但一般情况下达到的局部最优已经可以满足聚类的需求。
K均值算法的调优:
- 数据归一化和离群点处理
- 合理选择K值,这也是K均值聚类算法的主要缺点。
- 采用核函数:面对非凸的数据分布形状时,可能需要引入核函数来优化,这时算法又称为核K均值算法,思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类.
针对K均值算法的缺点,有哪些改进的模型?
K均值算法的主要缺点如下:
- 需要人工预先确定初始K值,且该值和真实的数据分布未必吻合
- K均值只能收敛到局部最优,效果受到初始值很大
- 易受到噪点的影响
- 样本点只能被划分到单一的类中
改进的算法有:
- K-means++算法
- ISODATA算法
自组织映射神经网络是如何工作的?它与K均值算法有何区别?
自组织映射神经网络与K均值算法的区别如下:
- K均值算法需要事先定下类的个数,也就是K的值。而自组织映射神经网络则不用,隐藏层中的某些节点可以没有任何输入数据属于它,因此聚类结果的实际簇数可能会小于神经元的个数
- 相比较而言,自组织映射神经网络的可视化比较好,而且具有优雅的拓
扑关系图。
11常见面试问题
具体可能会根据你的项目经历来。
软件测试的流程是什么?
项目经理或者PD把项目需求文档提前下发给相关的研发人员,研发人员抽出一定的时间记录文档内需求不明确或者遗漏的点为后面的评审做准备;在需求评审会议上,各研发人员提出自己的疑问并解决,需求评审最终通过之后会出一份最终的需求规格说明书;(需求评审阶段)
需求规格说明书评审通过后,开发经理开始编写开发计划,测试经理开始编写测试计划,计划评审通过后开发人员开始进行程序的开发,测试人员开始测试用例的编写,等程序的第一个版本出来后,开发人员进行第二个版本的迭代,这时测试人员对程序进行测试并记录追踪管理缺陷,直到程序迭代完毕。(产品研发阶段)
程序迭代完毕并修复大部分缺陷后,测试人员开始进行工作的总结,并最终输出一份测试报告书,记录此次的测试工作共,程序存在的相关问题。(产品发布阶段)
Linux下的一些常用命令是什么?
查看文件(cat、tail、more、grep),查看进程(ps),查看内存(top、free)、cpu(top)以及杀掉进程(kill),自动部署crontab 命令,find等。
自我介绍
STAR法则:情境(situation)、任务(task)、行动(action)、结果(result);
自动化测试框架有哪些?
Selenium
unittest
selenium定位元素的方法都有哪些
id、name、class_name、tag_name、link_text、partial_link_text、xpath、css_selector。id是唯一的。
Python垃圾回收机制
Python中,主要通过引用计数(Reference Counting)进行垃圾回收。在Python中每一个对象的核心就是一个结构体PyObject,它的内部有一个引用计数器(ob_refcnt)。程序在运行的过程中会实时的更新ob_refcnt的值,来反映引用当前对象的名称数量。当某对象的引用计数值为0,那么它的内存就会被立即释放掉。
测试工具
抓包工具的使用,比如fiddler
您还有什么想问的吗?
第一种是面试官对你满意,自己也感觉不错的情况下,先表示感谢,然后积极主动的问题,比如,非常感谢您给的这次机会,但是我还是想问,如果我有下一轮面试,我想知道知道是什么时候,我应该再做哪些方面的准备。
第二种情况是面试官和自己感觉都一般般,感觉自己是鸡肋,这个时候说不说很重要,基本的套路是,非常感谢面试官给的这个机会,坦白地说我对自己今天的面试表现不是非常满意,还可以表现得更好,但是如果我还是非常想得到这个机会,您能否给我一些建议。
第三种情况是面试情况非常糟糕,这种情况下,很少有人能说出感谢,但这恰恰体现一个人的风度。
软件测试流程,系统测试流程
熟悉产品/项目,需求评审,测试需求,测试计划,测试方案,测试用例,预测试,第一轮正式测试、第二轮回归测试、第三轮测试,测试报告,测试总结,测试指南。
项目经历
做了什么事?用了什么方法?遇到什么困难?怎么解决的?
sql如何进行优化
SQL的优化从4个方面入手:1.尽量避免返回不必要的数据;2.SQL语句的优化;3.SQL结构的优化;4.读写分离、分库分表。
具体的优化动作包括: 1.尽量使用select 具体字段代替select *; 2.如果知道查询结果只有一条记录或者查询最大值、最小值,建议使用limit 1限定返回结果; 3.尽量不要在where字句中使用or来连接条件; 4.尽量不要在where字句中对null值尽量判断; 5.尽量不要对索引列使用not in、<>、!=; 6.不要对索引列使用数据库内置函数; 7.不要对索引列进行运算; 8.不要有超过5个及以上的join操作; 9.索引不宜过多,一般不超过5个; 10.查询语句中使用where条件限定返回的结果,避免返回冗余数据; 11. 多表连接建议使用表别名,并将别名前缀于每个列上; 12.group by之前先过滤掉不需要的数据; 13.字段尽量使用数值类型,如果字段值只有数值,就不要使用字符串类型; 14.使用explain分析SQL语句; 15.避免隐式转换,where条件中字符串字段一定要使用引号括起来等。
XGBOOST原理介绍一下?
xgboost就是一堆CART树的集合,将每棵树的预测值加在一起得到最后的预测值。xgboost利用了损失函数二阶的导数信息,并且在目标函数之外加入了正则项,避免过拟合。
PCA知道吗
思想: 通过线性变化将特征组合到各个正交的坐标轴,并根据信息量(方差)进行排序,选取信息量最大的前几个线性组合变量作为新特征 作用: PCA主要用于降维与评价(有些文章说不可以用与评价)与指标权重
步骤: 1,计算协方差矩阵 2,计算协方差矩阵的特征值(方差)与特征向量(线性组合变量的数据) 3,根据特征值进行排序,选取前K个(通过累积贡献率或碎石图确定) 4,完成降维
机器学习模型如何调优?
- 比较不同算法比较多个算法是提高模型性能的一个简单的联想,它们适合不同类型的数据集,我们可以训练找到,最好的那个。 …
- 超参数调优超参数调优是一种常用的模型调优方法。 …
- 改进数据
网格化搜索是什么?
网格搜索是一款超级模型参数优化,用于优化三个集技术探索的超常参数。然后,得到这些超参数笛卡尔乘以作为最好的一组超参数。网格搜索使用每个超参数模型,挑选集精度超强的超参数参数
残差网络优点?
随着网络深度增加,会出现一种退化问题,也就是当网络变得越来越深的时候,训练的准确率会趋于平缓,但是训练误差会变大,这明显不是过拟合造成的,因为过拟合是指网络的训练误差会不断变小,但是测试误差会变大。为了解决这种退化现象,ResNet被提出。
SVM原理?
KNN原理?
Selenium原理和功能?
如何体现你的学习能力快?
逻辑回归原理?
介绍一下你的这些项目具体是怎么做的?用到了什么方法?
你的SQL是精通的吧?说说看
残差网络优缺点?为什么用它?
你的实习预期工资是多少?
onehot编码说一下原理?为什么要编码?
机器学习模型如何调优?
如果过拟合,模型如何调优?
内连接与外连接的区别
主要区别是:内连接仅选出两张表中互相匹配的记录,即满足后面where条件的记录。 而外连接会选出其它不匹配的记录,即即使不满足后面的条件也可以显示出记录。