机器学习面试(二)
1.为什么需要对数值型特征做归一化?(
变为一个简单的分布学习在学习一个复杂分布时更加快速,可以使学习收敛更快,
减弱离群点的影响,让模型更加鲁棒降低过拟合的风险。
对树模型无效,分类树和回归树都一样没有作用,只有使用梯度下降类型的模型效果好。
)
2.特征组合?(
可以根据决策树根结点到叶节点的路径来进行构建,可以找到不同划分下的最优特征组合;
可以直接暴力多项式组合;可以基于业务场景进行相应的特征组合;
)
3.tf-idf?(加权的频率;词在文档出现的频率*log下的文章总数/出现该词的文章数加一进行平滑。)
5.神经网络过拟合?(
过拟合的现象就是训练集上表现很好,测试集上误差过大,效果不理想。
数据量上太少,模型太复杂,让模型把这些样本都记住了,使泛化能力很差曲线太过曲折。
解决方法(L1/L2正则,树模型的行列采样,学习步长,xgboost还可以加L1/L2来学习;svm切换核函数,神经网络使用dropout;还可以增强样本,进行上采样啊这种)
)
6.word2vec和lda主题模型区别?(
首先介绍word2vec,再介绍下主题模型。
然后得出他俩都可以进行生成文本特征。
一个是深度学习的神经网络进行学习,一个是利用EM算法进行迭代学习。
)
7.图像分类训练数据不足?(
一定会会产生过拟合。深度学习的模型是很容易就记住这些样本的。
可以生成样本:对一张图像旋转加噪声等来生成更多样本;
可以迁移学习:fine tune训好的模型然后在进行以小的学习率微调;
可以简化模型:加正则项加drop out(bagging思想)。
)
8.P-R曲线与roc曲线的对比?(
P-R曲线:横轴正样本预测对的召回率(TP/P),纵轴精准率(TP/TP+FP)。
roc曲线:横轴预测错正样本的召回率(FP/N),纵轴预测对的正样本的召回率(TP/P)。
roc对正负样本分布变化时更鲁棒,体现了样本的排序能力,更注重值的相对大小。
pr曲线会产生剧烈的震荡影响,更注重值的大小。
补充roc曲线的生成?
ps:auc的第一种计算,直接计算积分值也就是每个小梯形的面积。另一种计算,利用定义(正样本排在负样本前面的能力),找出所有的正负样本对,(正样本大于负样本的数量)/(所有的样本对) = auc值!
PR曲线的计算,利用积分加和的思路,PR曲线的面积的值是AP,多个类别的AP值取平均得到mAP值(可以反映全局的性能)
ps:PR曲线的绘制和ROC曲线相同(只是PR曲线要绘制N个类别个曲线!);
9.余弦距离和欧式距离?(余弦距离体现在相似度上经过归一化的相对差异,而欧式距离体现在数值上未经过归一化的绝对差异。针对不同问题适用不同场景,余弦距离的适合文本,NLP上应用;欧氏距离适合在例如K-MEANS上使用。)
13.pca和lda?(
lda主要是是类内方差最小,类间方差尽可能大,经过有监督学习降维;降维有限制,最大等于类别数-1。
pca主要是方差最大化,去除线性相关性,去除冗余信息,经过无监督学习降维;降维无限制,可以任意降维。
)
14.k均值优缺点?调优?(优缺点:k值和初值选取对结果敏感;引用核函数加强模型的表达能力。)
15.k均值的改进模型?(
k-means++模型就是让k个初始化簇中心尽可能远,这是种假设,认为就是离的越远就越可能成为簇中心,通过这样的思路解决了初始值选取问题。
ISODATA模型(迭代自组织数据分析法)增加了分裂和聚合操作,当簇内样本过少就跟其他簇合并,簇内样本过多且方差很大就把这个簇分成两部分(类比决策树那块)。
Kernel K-means就是通过核映射()来增强算法的非线性能力。
)
16.k均值的收敛性?(属于生成式模型。k均值的收敛姓用em算法解释。隐变量是k个簇。)
17.高斯混合模型?(属于生成式模型,在高斯模型不足以拟合数据的时候,引出高斯混合模型,理论上通过高斯混合模型可以拟合任意复杂的分布。用em算法来进行学习,隐变量是k个簇。)
18.高斯混合模型和k均值的相同和不同?(
非常像的两个模型,都属于聚类模型,都是判别式模型,学习的方式都相同,使用了EM算法来学习。
k均值得到的实际是类别,而GMM的到的实际是类别的概率,这就是最明显的区别。
)
19.写出贝叶斯网络和马尔可夫网络的联合概率?(
贝叶斯网络:
贝叶斯网络的联合概率公式:
马尔可夫网络:引进势函数保证非负,并且应该在概率较大的变量上取得较大的值,用最大团的势函数组成
例如指数函数:
针对上面的马尔可夫网络可得出:
)
20.概率图模型里,说说判别式和生成式模型?(
判别式模型(先对联合概率建模,在求解条件概率):条件随机场,最大熵模型;
生成式模型(直接对判别函数或者条件概率建模):lda,隐马尔可夫模型,plsa(也是对概率分布直接进行建模!),马尔可夫条件随机场,朴素贝叶斯,贝叶斯网络)
ps:
-
判别模型
-
K 近邻、感知机(神经网络)、决策树、逻辑斯蒂回归、最大熵模型、SVM、提升方法、条件随机场、线性回归
-
-
生成模型
-
朴素贝叶斯、隐马尔可夫模型、混合高斯模型、贝叶斯网络、马尔可夫随机场
-
21.LR和最大熵模型的关联?(
逻辑回归是最大熵对应类别为两类时的特殊情况,也就是当逻辑回归类别扩展到多类别时,就是最大熵。
ps:LR的多分类问就是最大熵原理推导出来的最大熵模型softmax函数。
先说经典的LR只能解决二分类问题,而最大熵模型推出了softmax函数可以解决多分类问题,在利用对偶函数进行学习。
)
22.说说几种损失函数?(0-1损失,hign损失(带置信区间),log损失(不满足性),交叉熵损失,平方损失(异常值敏感度大),绝对值损失(对异常值的一种削弱,不是处处可导),指数损失(adaboost使用的),Huber损失(考虑到了可导和异常值的敏感))
24.增量式学习?batch个数?学习率的选取?(
在数据特别多,内存放不下的时候会采用batch_size来实现增量式学习;
学习率的选取一般使用衰减法,一开始选较大的看收敛下界,在逐渐减小比较下界!
)
25.优化方式?(
moment:加上动量的优化来适应步长,
Adagrad:利用了全部的历史信息来进行更新,时间越长学习率会越来越小,
AdaDelta和RMSProp:这两个方法非常类似,可以看作分母只利用了部分历史信息,而解决了随着时间学习率过小的问题。
Adam:利用了一阶矩和二阶矩,期望和方差加上对历史信息的滑窗来进行迭代消息率,
)
KKT好文!https://www.cnblogs.com/liaohuiqiang/p/7805954.html
26.L1和L2正则的稀疏性?(贝叶斯角度说明:L2正则先验分布对应了高斯分布在极值点零点处趋于平缓取不同值的概率接近,L1正则先验分布对应了拉普拉斯分布在极值点处冒尖所以取值为零的概率要大。假设先验分布由最大后验概率估计导出)
好文!https://blog.****.net/m0_38045485/article/details/82147817
32.ReLU系列的**函数相对于Sigmoid和Tanh**函数的优点是什么?局限性?(
优点:对于relu来说左侧为0,右侧为常数,可以增加稀疏性,加快运算速度。
局限性:relu也会让梯度为0,做法太暴力,lrelu不直接置零用,而是用一个小数来代替,还有用指数函数代替的。
)
33.Batch Normalization,BN(批标准化)?不加伽马和贝塔可以吗?(
对全连接层的输出要在进入激励层之前进行标准化处理。
把数据都拉到一个量纲下,变为一个简单的分布,在学习一个复杂的分布就更加容易,可以加快模型的收敛。
BN层有两个参数需要进行学习,自学习的一种归一化操作,还可以缓解其它层的学习压力,也可以加快模型的收敛。
)
35.卷积操作的本质特性包括稀疏交互和参数共享,具体解释这两种特性及其作用?(
稀疏交互:卷积核与特征进行内积运算,其实就是一个特征自学习的过程(避免了全连接层的笛卡尔积运算)。
参数共享:卷积核的大小就是参数量,可以有效的降低参数,
)
36.池化层?(
最大池化:可以降低均值受到误差的偏移可以更好的提取重要信息,均值池化:可以限制估计值方差过大,减少了过拟合。
池化层的主要作用就是进行降维,只关注最有用的那部分信息,而舍弃了其他信息。在一定程度保证了特征不变性。
)
37.梯度消失?梯度爆炸?(
造成的主要原因其实就是:初始化参数的问题,模型的深度过于深入,**函数选取的问题。
模型的改进可以是减少深度来增加宽度。但是深度少了泛化能力会弱,宽度宽了很容易过拟合。DNN!
)
38.推导LSTM?(
加入了输入门it、遗忘门ft以及输出门ot三个门和一个内部记忆单元ct。
输入门控制当前计算的新状态以多大程度更新到记忆单元中;
遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉;
输出门控制当前的输出有多大程度上取决于当前的记忆单元。
ps:通过加入门结构,让记忆信息的能力更加强,同时把梯度的连乘变为了连加,还缓解了梯度弥散的问题。
)
40.seq2seq模型?注意力机制?
ps:seq2seq模型就是一种编码器解码器(encoder-decoder)的模型,一个提取深层次的特征,一个进行分类目标。
41.常用的聚类方法?(K均值、高斯混合模型、DBSCAN、层次聚类,它们都属于非监督学习的范畴)
43.条件概率和似然概率?(条件概率就等价于似然概率)
ps:极大似然估计就是给定样本求解参数,但是可以等价给定参数让样本出现的概率最大。(连乘的形式)
44.极大似然估计和极大后验概率估计?(两者的区别就是一个属于频率学派(认为参数是一个未知的固定的值),一个属于贝叶斯学派(认为参数是不是一个固定的值而是一个未知的分布))
ps:似然概率(对应极大似然估计)乘上一个参数的先验分布就是极大后验估计。
ps:以LR为例对参数用极大后验进行估计就是极大似然估计在加上一个先验概率,这个其实就是著名的L1/L2,当这个先验概率假设为拉普拉斯分布那么对应L1正则,假设为正态分布那么对应L2正则。
45.余弦相似度和欧氏距离?(最根本的区别还是归一化和未归一化,余弦相似度度量是越接近于1越相似有个上界的约束范围,欧氏距离却没有一个上界,很难去衡量因为维度不同没有一个具体的标准,但是归一化后那不就有了嘛。)
46.bagging和boosting中适合使用甚么类型的分类器?
ps:bagging适合使用方差大,不稳定性强的分类器,比如决策树,很适合bagging通过集成取平均来降低模型的方差提高泛化能力。(主要是通过降低方差来提升模型的能力)
ps:boosting适合使用方差小,偏差大的分类器,比如线性分类器,一颗小的决策树也可以,只要就是通过降低偏差来提升模型的能力。
47.**函数使用非线性函数?(为了加强特征的非线性能力(对他进行各种空间变换),有助于模型挖掘出更深层次的特征)
ps:因为深度学习的网络就是一个特征不断组合,进行自学习,映射到不同的空间,来达到最终好的结果。
ps:进行了非线性变换这个网络才会变得更有意义。
ps:这个东西千万别和核函数混淆,核函数是等价于向量内积的,提升特征维度的作用。
ps:线性映射,用线性代数里的话来说,就是线性相关的特征完全可以互相来表示就是在同一空间,没有学习的意义。
48.卷积和全连接和核函数?(卷积是求内积的过程,他是一个通过参数自学习特征的过程;全连接也可看成一个求内积的过程,也是一个通过参数自学习特征的过程。)
ps:全完别把深度学习和核函数混淆,核函数是通过向量之间的内积达到升高维度提升效果(特征之间的内积);深度学习是通过自学习一个特征出来,来提升效果(通过参数矩阵和特征来求内积)。
49.使用更深的模型能够减少所需的单元数,同时增强泛化能力(减少泛化误差)。参数数量相同的情况下,浅层网络比深层网络更容易过拟合。
50.relu和sigmoid的应用?(relu替换sigmoid就是因为梯度弥散的现象,主要原因就是网络层级过深,那么适应范围就显而易见了,relu适合深层次的网络,sigmoid适合浅层次的网络。)
ps:relu梯度一半0一半是1,引进了稀疏性加快计算速度,类似dropout的思路还增强了泛化能力。
51.处理梯度弥散和梯度爆炸?
ps:爆炸(减少深度增加宽度,进行阈值截断,减少初始化值,使用sigmoid/tanh易饱和的函数)
ps:弥散(减少深度增加宽度,增加初始化值,使用relu函数)
52.word2vec的多分类加速?
ps:层次化softmax实际是把一个多分类问题转化为了多个二分类问题。使用huffmam最优二叉树来支撑。
ps:负例采样就是因为正例只有一个负例太多了,所以引出了基于概率权重的负例采样。
ps:fasttext就是对cbow模型的改进,对样本加入了词的额外信息来加强原生的模型。
ps:如果根据经验公式,是不需要这么大的,比如 200W 词表的词向量维度只需要 200W ** 0.25 ≈ 37
53.加入一个噪声特征会有什么影响?
模型可能会尽全力去拟合所有的样本,这样模型可能会变的过拟合;可以通过归一化减弱离群点的影响。
54.gbdt和rf的采样区别?
rf:基于样本采样(使用了bootstrap自助采样,每次有放回采样采集N个样本,计算统计量,再重复T次就给T颗树生成了对应的样本,也就有T个统计量,通过这些统计量取平均值可以估计出来总体的比例。(利用样本来估计总体));基于特征采样(采用无放回随机抽样得到特征子集)
ps:bootstrap采样需要样本足够大,采样次数足够多。
gbdt:使用了无放回采样80%的数据,而且是串行采样每一个模型采样都是根据上一个模型的残差样本进行采样的。特征采样也是一样的,无放回采样。
55.为什么gbdt不适合处理sparse特征?
稀疏特征隐层含义有限还是更适合LR这种简单模型,而连续特征拥有更加复杂的特征拥有更深层的含义适合这种复杂树模型来学习。
56.LSTM对RNN的优化?
LSTM针对RNN记忆力低下的问题,引入了门结构的思想,加强了记忆力的能力,并且截断了梯度的连乘变为了连加,缓解了梯度弥散的问题。
57.为什么gbdt没有正则?
树模型本身无参数,无法使用L1/L2进行正则项的。
gbdt没有正则项是因为没有定义叶子节点的得分变量,而且没有给目标函数加入L1/L2,;
xgboost有正则项是因为定义了叶子节点的得分变量,而且正则项包含树的模型复杂度以及L1/L2正则。
gbdt的正则项:1.加学习步长,放缓学习速度。2.子采样比例(样本和特征进行采样)。3.剪支。
一般通过这种方式来对树模型减弱过拟合问题。
58.RF的特征选择?
基于加入和不加入该特征,计算他的袋外数据误差,看是否差别很大来表示特征的重要程度。
59.SVM和LR的不同点?
svm本身是线性模型,但是可以利用核函数变化为非线性模型;lr是一个线性模型
svm每次只优化支持向量,lr每次需要针对所有的样本
svm是带有一定置信区间的合页损失,lr是带有很强不满足性的交叉熵损失(随着损失的减少让学习速度减少)
60.GBDT和XGBoost实际的区别?
主要在于构建树的准则不同,gbdt的节点分裂准则是均方误差只用了一阶导,而xgboost的节点分裂是对损失函数求二阶导推出来的一个公式。
gbdt和xgboost总体模型上的损失定义是相同的,损失是均方误差时拟合残差,损失是其他函数时拟合负梯度方向。
ps:二阶导上(建树的准则),过拟合上,大数据量上。
61.Boosting和bagging适合的基分类器?
boosting更适合偏差大和方差小的简单模型(通过拟合残差/负梯度来降低偏差);bagging更适合方差大偏差小的复杂模型(通过取平均来降低模型的方差,使用大数定理可以证明);
简单模型普遍是方差小,偏差大,而复杂模型恰好相反。
ps:先介绍思想,在说明适合的分类器。
62类别不平衡会导致什么问题?
负例如果非常少,那么这个样本分布会很难去学习,很难去估计总体的分布,模型会难以收敛。
ps:样本分布难以去学习。