大厂常考机器学习面试题
1、熵、条件熵、互信息、相对熵
熵
熵是一个随机变量不确定性的度量。对于一个离散型变量,定义为:
一个随机性变量的熵越大,就表示不确定性越大,也就是说随机变量包含的信息量越大。
熵只依赖于X的分布,与X的取值无关。
条件熵
条件熵 H(Y|X) 表示在已知随机变量 X 的条件下随机变量 Y 的不确定性,H(Y|X) 定义为在给定条件 X 下,Y 的条件概率分布的熵对 X 的数学期望:
公式为:
互信息
互信息表示在得知 Y 后,原来信息量减少了多少。
如果X与Y相互独立,则互信息为0。
KL散度(相对熵)与JS散度
KL散度指的是相对熵,KL散度是两个概率分布P和Q差别的非对称性的度量。KL散度越小表示两个分布越接近。也就是说KL散度是不对称的,且KL散度的值是非负数。
JS散度是基于KL散度的变种,度量了两个概率分布的相似度,解决了KL散度的非对称问题。如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。
三者关系
2、机器学习泛化能力评测指标
泛化能力是模型对未知数据的预测能力。
准确率:分类正确的样本占总样本的比例
准确率的缺陷:当正负样本不平衡比例时,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。
精确率:分类正确的正样本个数占分类器预测为正样本的样本个数的比例;
召回率:分类正确的正样本个数占实际的正样本个数的比例。
F1 score:是精确率和召回率的调和平均数,综合反应模型分类的性能。
Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保 守而漏掉很多“没有把握”的正样本,导致Recall值降低。
ROC曲线的横坐标为假阳性率(False Positive Rate,FPR);纵坐标为真阳性 率(True Positive Rate,TPR)。FPR和TPR的计算方法分别为
精确度(precision)/查准率:TP/(TP+FP)=TP/P 预测为真中,实际为正样本的概率
召回率(recall)/查全率:TP/(TP+FN) 正样本中,被识别为真的概率
假阳率(False positive rate):FPR = FP/(FP+TN) 负样本中,被识别为真的概率
真阳率(True positive rate):TPR = TP/(TP+FN) 正样本中,能被识别为真的概率
准确率(accuracy):ACC =(TP+TN)/(P+N) 所有样本中,能被正确识别的概率
上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。
AUC:AUC是ROC曲线下面的面积,AUC可以解读为从所有正例中随机选取一个样本A,再从所有负例中随机选取一个样本B,分类器将A判为正例的概率比将B判为正例的概率大的可能性。AUC反映的是分类器对样本的排序能力。AUC越大,自然排序能力越好,即分类器将越多的正例排在负例之前。
回归问题
RMSE
RMSE经常被用来衡量回归模型的好坏。
RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点 数量非常少,也会让RMSE指标变得很差。
MAPE
引入别的评价指标,MAPE,平均绝对百分比误差
相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
F1-score
在多分类问题中,如果要计算模型的F1-score,则有两种计算方式,分别为微观micro-F1和宏观macro-F1,这两种计算方式在二分类中与F1-score的计算方式一样,所以在二分类问题中,计算micro-F1=macro-F1=F1-score,micro-F1和macro-F1都是多分类F1-score的两种计算方式。
micro-F1:
计算方法:先计算所有类别的总的Precision和Recall,然后计算出来的F1值即为micro-F1;
使用场景:在计算公式中考虑到了每个类别的数量,所以适用于数据分布不平衡的情况;但同时因为考虑到数据的数量,所以在数据极度不平衡的情况下,数量较多数量的类会较大的影响到F1的值;
marco-F1:
计算方法:将所有类别的Precision和Recall求平均,然后计算F1值作为macro-F1;
使用场景:没有考虑到数据的数量,所以会平等的看待每一类(因为每一类的precision和recall都在0-1之间),会相对受高precision和高recall类的影响较大。
3、过拟合和欠拟合
过拟合:是指训练误差和测试误差之间的差距太大。换句换说,就是模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。
欠拟合:模型不能在训练集上获得足够低的误差。换句换说,就是模型复杂度低,模型在训练集上就表现很差,没法学习到数据背后的规律。
如何解决欠拟合?
欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加特征,这些都是很好解决欠拟合的方法。
如何防止过拟合?
数据的角度:获取和使用更多的数据(数据集增强);
模型角度:降低模型复杂度、L1\\L2\\Dropout正则化、Early stopping(提前终止)
模型融合的角度:使用bagging等模型融合方法。
4、生成式模型和判别式模型
生成模型:学习得到联合概率分布P(x,y),即特征x,共同出现的概率
常见的生成模型:朴素贝叶斯模型,混合高斯模型,HMM模型。
判别模型:学习得到条件概率分布P(y|x),即在特征x出现的情况下标记y出现的概率。
常见的判别模型:感知机,决策树,逻辑回归,SVM,CRF等。
5、L1和L2区别
L1是模型各个参数的绝对值之和。
L2是模型各个参数的平方和的开方值。
L1会趋向于产生少量的特征,而其他的特征都是0。 因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0 ,产生稀疏权重矩阵。
L2会选择更多的特征,这些特征都会接近于0。 最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0。
L1的作用是为了矩阵稀疏化。假设的是模型的参数取值满足拉普拉斯分布。
L2的作用是为了使模型更平滑,得到更好的泛化能力。假设的是参数是满足高斯分布。
6、常见的特征选择方法
参考:【机器学习】特征选择(Feature Selection)方法汇总 - 知乎
三种:过滤法,包装法和嵌入法。
Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
- Pearson相关系数
- 卡方验证
- 互信息和最大信息系数
- 距离相关系数
- 方差选择法
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。(缺点:训练次数多,复杂度高,但效果好)
- 前向搜索:逐渐增加特征
- 后向搜索:逐渐减少特征
- 递归特征消除法:使用基模型多轮训练,每轮训练后根据得到的权值系数或者特征重要性消除系数较低的特征,再基于新的特征集进行下一轮训练。
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。通常会使用sklearn中的feature_selection库来进行特征选择。
- 基于惩罚项的特征选择法 通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性。
基于学习模型的特征排序:使用机器学习算法建立预测模型,得到打分,根据打分选择模型。
7、方差与偏差的区别
偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据.
方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。
8、bagging、boosting、stacking 的异同
Bagging算法(套袋发)
bagging的算法过程如下:
从原始样本集中使用Bootstraping 方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集(k个训练集之间相互独立,元素可以有重复)。
对于n个训练集,我们训练k个模型,(这个模型可根据具体的情况而定,可以是决策树,knn等)
对于分类问题:由投票表决产生的分类结果;对于回归问题,由k个模型预测结果的均值作为最后预测的结果(所有模型的重要性相同)。
Boosting(提升法)
boosting的算法过程如下:
对于训练集中的每个样本建立权值wi,表示对每个样本的权重, 其关键在与对于被错误分类的样本权重会在下一轮的分类中获得更大的权重(错误分类的样本的权重增加)。
同时加大分类 误差概率小的弱分类器的权值,使其在表决中起到更大的作用,减小分类误差率较大弱分类器的权值,使其在表决中起到较小的作用。每一次迭代都得到一个弱分类器,需要使用某种策略将其组合,最为最终模型,(adaboost给每个迭代之后的弱分类器一个权值,将其线性组合作为最终的分类器,误差小的分类器权值越大。)
Bagging和Boosting 的主要区别
样本选择上: Bagging采取Bootstraping的是随机有放回的取样,Boosting的每一轮训练的样本是固定的,改变的是买个样的权重。
样本权重上:Bagging采取的是均匀取样,且每个样本的权重相同,Boosting根据错误率调整样本权重,错误率越大的样本权重会变大
预测函数上:Bagging所以的预测函数权值相同,Boosting中误差越小的预测函数其权值越大。
并行计算: Bagging 的各个预测函数可以并行生成;Boosting的各个预测函数必须按照顺序迭代生成。
9、样本不平衡的解决办法
欠采样:从样本较多的类中再抽取,仅保留这些样本点的一部分;
(先对负样本做一个聚类,然后每个类中按一定的比例做采样。也可以用其他方式或者规则从负样本中筛选区分度高的样本用于模型训练,至于哪种效果好,还是要验证的,很多时候,直接暴力一点,直接按比例负采样效果就很好。)
过采样:复制少数类中的一些点,以增加其基数;
通过数据增强扩增类别少的样本;
Focal loss:针对类别不平衡问题,用预测概率对不同类别的loss进行加权。Focal loss对CE loss增加了一个调制系数来降低容易样本的权重值,使得训练过程更加关注困难样本。
10、余弦相似度、欧式距离与曼哈顿距离
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。
相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
欧式距离,即欧几里得距离,是最常见的两点之间的距离表示法,它定义在欧几里得空间中,
例如x = (x1,x2,...,xn)和y = (y1,y2,...,yn)的欧式距离可表示为:
曼哈顿距离:是欧几里得空间中两点之间的线段在坐标轴上的投影的距离的和,
例如x = (x1,x2) y = (y1,y2)则两点的曼哈顿距离可表示为:
大厂常考机器学习面试题相关推荐
- 大厂常考机器学习面试题分享(下)
问题6:常见的特征选择方法 三种:过滤法,包装法和嵌入法. Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征. Pearson相关系数 卡方验证 互 ...
- 「 最新大厂常考架构技术面试题 + 详细解答」
很多没有收到offer的朋友一直在 后台问我,怎么梳理面试要考的知识点.这里必须要和大家再强调一下要准备的7大方面!总结起来包括:JAVA编程语言+数据结构和算法题+计网+操作系统+设计模式+数据库+ ...
- 每日一练 | 20道常考Python面试题大总结
每日一练 如果要对数据分析面试题进行归纳总结,基本可以分为三大类,分别是技术题.逻辑思维题.业务场景题. 本栏目旨在为小伙伴们分享常考/经典的数据分析面试题,大家在学习之余也可以进行自测,巩固学习成果 ...
- 分享10道常考Java面试题及答案
转载自 分享10道常考Java面试题及答案 Hi,大家好,今天给大家分享10道常考的Java面试题及答案,涉及到Java中的10个方面.每个领域一道题.希望你能有收获. <面向对象>什 ...
- 20道常考Python面试题大总结
一般来说,面试官会根据求职者在简历中填写的技术及相关细节来出面试题.一位拿了大厂技术岗Special Offer的网友分享了他总结的面试经验.当时,面试官根据他在简历中所写的技术,面试题出的范围大致如 ...
- 阿里前端常考vue面试题汇总
Vuex中actions和mutations有什么区别 题目分析 mutations和actions是vuex带来的两个独特的概念.新手程序员容易混淆,所以面试官喜欢问. 我们只需记住修改状态只能是m ...
- 2020Android面试心得:斩获3个大厂offer后,大厂常考知识点 面试技巧出炉
复习计划的制定和进度的把控也很重要,可以参考别人的学习计划去学习,再根据自己的实际情况去做适当的调整. 复习技巧 我一直认为学习没有捷径可言.我信奉"好记性不如烂笔头",也信奉&q ...
- 解读在校园招聘中人工智能常考的笔试题
来源:机器学习算法工程师 本文约3100字,建议阅读9分钟 本文作者与你分享人工智能校招经验. 疫情下,感觉要爆发金融危机了啊,工作都可能找不到了,赶紧梳理下之前的笔试题,给大家个参考. 想了想当初, ...
- c语言常考的笔试题1
最近答了7次笔试题,稍有些心得,企业再面试c语言不会像过去的那种读程序题写结果或者简单的函数编写,再或者考你一些简单的逻辑,c的精华是内存和指针的运用,围绕这些我想写一些东西供自己总结和给同事们.同学 ...
最新文章
- 211高校副校长:我发了170多篇论文,最满意的一篇不到2分
- Asp.net 后台添加CSS、JS、Meta标签
- 快速学习AJAX之三 Ajax实现登陆
- windows update更新失败 安全模式进不去
- 更换session保存的路径
- 如何有效的为Windows XP减肥
- MongoDB学习总结(五) —— 安全认证
- Linux中echo 返回值的意思
- 不到 20 人的互联网公司该去吗?
- ThinkPad E430光驱面板拆卸方法
- keil警告提示: last line of file ends without a newline
- 【iOS】Plist-XML-JSON数据解析
- mysql 切分_Mysql字符串切分
- Echodyne为其行业领先的CUAS雷达EchoGuard拓展市场
- vue中el-radio-group点击事件,双击取消
- C#求解一元二次方程的根
- 数字水印(DWT算法Python实现)
- 因子分析累计贡献率_[2018年最新整理]多元统计分析之因子分析.doc
- 技术债务研究综述X4
- 现实世界的Windows Azure:与迈阿密市的信息科技助理署长,James Osteen 的访谈 (转)...