机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因此将机器学习中常见的原理性问题记录下来,保持对各个机器学习算法原理和特点的熟练度。
https://www.cnblogs.com/zuochongyan/p/5407053.html
这篇博文开篇说的很对,昨天一场电话面试,很多脑子里明白怎么回事就是说不出来,这也是我为什么整理这篇博文的原因。
机器学习,深度学习面试题 持续更新。。。
机器学习
L1和L2正则化的区别
- L1是模型各个参数的绝对值之和。
L2是模型各个参数的平方和的开方值。 - L1会趋向于产生少量的特征,而其他的特征都是0.
因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0 ,产生稀疏权重矩阵
L2会选择更多的特征,这些特征都会接近于0。
最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0
关于 Bagging 和 Boosting
Bagging
bagging
又称为bootstrap aggreagation
,通过在训练样本集中进行有放回的采样得到k
个采样集(在采样集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中,且k
个训练集之间是相互独立的),基于每个采样集训练出一个基学习器,再将基学习器结合,是并行化方法
注
:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
对分类
问题:将上步得到的k个模型采用投票的方式得到分类结果;
对回归
问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
随机森林
采用的是bagging的思想。随机森林在对决策树进行bagging的基础上,在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性的时候是在当前节点属性集合中选择最优属性,而随机森林则是对结点先随机选择包含k个属性的子集,再选择最有属性,k作为一个参数控制了随机性的引入程度。
Boosting
Boosting
会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大),因此是串行生成的序列化方法
-
AdaBoosting
方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。 -
梯度提升的Boosting方式
是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。 -
GBDT
训练是基于Boosting思想,每一迭代中根据错误更新样本权重
为什么说bagging是减少方差,而boosting是减少偏差
bagging
每次训练都是从全部样本中有放回抽样,每个学习器都是独立的,这些学习器的效果有好有坏(模型的方差),但是通过对所有学习器求平均(分类时可以简单投票法),就相当于减少了模型预测结果的波动程度,即减少方差。
boosting
每次训练都是对上一次训练的错误样本的纠正(当前训练会增大选取错误样本的权重),模型更容易逼近真实值,模型更准确了,即减少偏差。
SVM,LR,DT对比
小数据中SVM比LR更优一点
SVM,支撑向量机
SVM
既可以用于分类问题,也可以用于回归问题- 可以通过核函数快速的计算
- soft margin的
SVM
用的是hinge loss
- 对离群点(噪音)不敏感,只关心支撑向量
- 可以将特征映射到无穷维空间
- 依赖于数据测度,需要先做归一化
LR,Logistic回归
LR
实现简单,训练速度非常快,但是模型较为简单。- 带L2正则化的
LR
对应的是cross entropy loss
- 对离群点(噪音)敏感
LR
可以预测概率
DT,决策树
- 决策树可以处理缺失值
- 容易过拟合,需要进行剪枝等。
adaboost
对应的是exponential loss
实现参数的稀疏有什么好处?
因为参数的稀疏,在一定程度上实现了特征的选择。
一般而言,大部分特征对模型是没有贡献的。这些没有用的特征虽然可以减少训练集上的误差,
但是对测试集的样本,反而会产生干扰。稀疏参数的引入,可以将那些无用的特征的权重置为0.
L1范数和L2范数为什么可以避免过拟合?
加入正则化项就是在原来目标函数的基础上加入了约束。当目标函数的等高线和L1,L2范数函数第一次相交时,得到最优解。
L1范数:
L1范数符合拉普拉斯分布,是不完全可微的。表现在图像上会有很多角出现。
这些角和目标函数的接触机会远大于其他部分。就会造成最优值出现在坐标轴上,
因此就会导致某一维的权重为0 ,产生稀疏权重矩阵,进而防止过拟合。
L2范数:
L2范数符合高斯分布,是完全可微的。和L1相比,图像上的棱角被圆滑了很多。
一般最优值不会在坐标轴上出现。在最小化正则项时,可以是参数不断趋向于0.最后活的很小的参数。
LR 逻辑斯蒂回归
SVM 支持向量机
线性SVM
硬间隔
软间隔
核函数
过拟合的解决办法
- 机器学习
- L1
- L2
- 深度
- dorpout
- 数据增广
- 调整模型
https://blog.csdn.net/kuaizi_sophia/article/details/85259452
深度学习
梯度消失和梯度爆炸是什么?什么原因,怎么解决?
激活函数的导数绝对值总小于1,层数深了就会出现梯度消失,反之梯度爆炸
Sigmoid会出现梯度消失
解决办法: 使用RELU激活;
介绍一下深度学习里常见的概念?
卷积:卷积核每个单元内有权重,卷积核内的9个权重在卷积核移动的过程中将图片上的像素和卷积核的对应权重相乘,最后将所有乘积相加得到一个输出
局部感知
参数共享
池化:池化也叫下采样,其具体操作与卷积的操作基本相同,只不过下采样的卷积核为只取对应位置的最大值、平均值等(最大池化、平均池化),并且不经过反向传播的修改。
为什么参数越小代表模型越简单?
越是复杂的模型,越是尝试对所有样本进行拟合,包括异常点。
这就会造成在较小的区间中产生较大的波动,这个较大的波动也会反映在这个区间的导数比较大。
只有越大的参数才可能产生较大的导数。因此参数越小,模型就越简单。
ROC 和 AUC
ROC 不同阈值下 (y=真正例率,x=假正例率)组成的点的轨迹
更重视“查准率”,则可以把阈值设置的大一些,让分类器的预测结果更有把握;
若我们更重视“查全率”,则可以把阈值设置的小一些,让分类器预测出更多的正例。
-
ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。
-
有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。
最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。 -
可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,
直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。
如果两条ROC曲线没有相交,我们可以根据哪条曲线最靠近左上角哪条曲线代表的学习器性能就最好。
但是,实际任务中,情况很复杂,如果两条ROC曲线发生了交叉,则很难一般性地断言谁优谁劣。
在很多实际应用中,我们往往希望把学习器性能分出个高低来。在此引入AUC面积。