深入贯彻“只要背得多 面试就能说”方针
1.SVM,LR,L1和L2正则化
SVM: https://blog.csdn.net/weixin_42462804/article/details/104674198
LR :https://blog.csdn.net/sinat_33231573/article/details/99709837
L1和L2:
2.树模型
Q:rf , gbdt 的区别;gbdt , xgboost 的区别
https://zhuanlan.zhihu.com/p/148050748 一篇文章搞定GBDT、Xgboost和LightGBM的面试
RF和GBDT区别:
相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定
不同点:
- 集成学习:RF属于bagging思想,每次的样本从数据集形成的,而GBDT属于boosting思想,每次使用全部样本
- 偏差-方差权衡:RF不断降低模型的方差,而GBDT不断降低模型的偏差
- 并行性:RF的树可以并行生成,而GBDT可以顺序生成(需要等上一棵树完成生成)
- 最终结果:RF最终是由多棵树进行多树表决(回归问题是取平均)而GBDT是加权融合
- 数据敏感性:RF对异常值不敏感,GBDT对异常值敏感
- 泛化能力:RF不易过拟合,GBDT容易过拟合
GBDT和XGBOOST区别:
- 基分类器:XGboost不仅支持CART决策树,还支持线性分类器,此时XGboost相当于带L1和L2正则化的logistic回归或者线性回归
- 导数信息:XGboost对损失函数做了二阶泰勒展开,GBDT只用了一阶导数信息,并且XGboost还支持自定义损失函数,只要损失函数一阶、二阶可导
- 正则项:XGBOOST相当于GBDT加了正则项,用于控制模型复杂度。正则项中,包含了叶子结点的个数,每个叶子结点输出的score的L2模的平方和,正则项防止了过拟合,使得学习出来的模型更加简单,这也是XGBOOST优于GBDT的一个特性。
- 注意不是tree维度的并行,而是特征维度的并行。决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为桶结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
关于XGBOOST的一些问答题:
Q: 决策树连续值处理,缺失值处理.
https://blog.csdn.net/u012328159/article/details/79396893
连续属性离散化,常用的离散化策略是二分法,这个技术也是C4.5中采用的策略。CART采用的策略是遍历所有输入变量j 和切分点s,根据最小化平方误差准则选取;
连续值处理:
c4.5:给定训练集和连续属性a,假设a在D上出现了n个连续不同的取值,先把这些值从大到小排序,选取相邻结点中位数作为划分节点,然后计算不同划分节点的信息增益,计算出当分裂点等于某个值的时候的信息增益,选择出信息增益最大的做为分裂特征;

CART决策树:遍历所有输入变量j 和切分点s,根据最小化平方误差准则选取;

缺失值处理:缺失值处理需要注意两个问题:
- 1.如何在属性值缺失的情况下进行划分属性的选择?
- 2.给定划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?
Q:GBDT的boosting体现在哪里?
Q:GBTD的分裂规则以及如何停止分裂
构建CARTA回归树的时候,,采用使得均方误差最小的特征进行分裂,如果这棵树不能拟合好,就通过负梯度计算出新的残差来拟合新的回归树;
停止分裂的条件:1,节点分裂的最小样本数 2.树的最大深度 3.树的最大叶子节点数 4.loss满足约束条件
Q:RF是如何进行分裂的
1.从N个样本中有放回的随机选择N个样本,作为训练一颗决策树的样本
2.当每个样本有m个属性的时候,在决策树的每个节点进行分裂时,随机从这M个属性中选择m个属性,满足条件m<<M,然后从这m个属性中基于某种策略选择最优属性作为分裂节点
3.K-means
Q:k-means 聚类的原理以及缺点及对应的改进;kmeans 算法的优缺点
无监督的聚类算法。对于给定的数据集,根据样本之间的举距离大小,将样本集划分为k个簇,簇内的点尽量近,簇间的距离尽量远
相应的改进:
初始化优化:k-meas++
距离优化:elkan K-means算法
大数据情况下的 mni batch k-means算法
传统k-means的流程:
- 输入:样本 聚类的k 最大迭代次数N
- 输出:簇划分
- 1) 从数据集D中随机选择N个样本作为初始聚类中心
- 2)计算每个样本到聚类中心的距离来划分
- 3)再次计算每个聚类中心
- 4)计算标准测度函数,达到最大迭代次数,则停止,否则,继续操作
初始优化k-means++:
- 1)样本中随机选择一个点当做初始点
- 2)对每一个样本点计算,计算它与已选择的聚类中心中最近聚类中心的距离
- 3)选择一个大的数据点作为新的聚类中心,选择的原则是:较大的点,被选取成为聚类中心的概率较大
- 4)重复12直到选取出k个聚类中心
- 5)利用这k个执行去运行标准的k-means优化算法
距离优化k-means算法:
传统的k-means算法中,每轮迭代要计算所有的点到达质心的距离,这样比较耗时,elkan是从这块入手,目的是减少不必要的距离计算
elkan K-Means利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算。
- 第一种规律是对于一个样本点x和两个质心μj1,μj2。如果我们预先计算出了这两个质心之间的距离D(j1,j2),则如果计算发现2D(x,j1)≤D(j1,j2),就可以知道D(x,j1)≤D(x,j2)。此时我们不需要再计算D(x,j2)。
- 第二种规律是对于一个样本点x和两个质心μj1,μj2。我们可以得到D(x,j2)≥max{0,D(x,j1)−D(j1,j2)}。
- 利用上边的两个规律,elkan K-Means比起传统的K-Means迭代速度有很大的提高。但是如果样本的特征是稀疏的,有缺失值的话,这个方法就不适用了,此时某些距离无法计算,则不能使用该算法。
大样本优化:大样本优化Mini Batch K-Means
- Mini Batch,也就是用样本集中的一部分的样本来做传统的K-Means,这样可以避免样本量太大时的计算难题,算法收敛速度大大加快。当然此时的代价就是我们的聚类的精确度也会有一些降低。一般来说这个降低的幅度在可以接受的范围之内。
-
在Mini Batch K-Means中,我们会选择一个合适的批样本大小batch size,我们仅仅用batch size个样本来做K-Means聚类。那么这batch size个样本怎么来的?一般是通过无放回的随机采样得到的。
-
为了增加算法的准确性,我们一般会多跑几次Mini Batch K-Means算法,用得到不同的随机采样集来得到聚类簇,选择其中最优的聚类簇
优缺点:
优点:
- 1)原理比较简单,实现也是很容易,收敛速度快。
- 2)聚类效果较优。
- 3)算法的可解释度比较强。
- 4)主要需要调参的参数仅仅是簇数k
缺点:
- 1)k值的选取一般需要一定的先验知识
- 2)收敛慢,算法复杂度高
- 3)噪声和离群点敏感
- 4)结果不一定是全局最优,只能保证局部最优
Q:em和k-means的关系
https://www.cnblogs.com/rong86/p/3517573.html
4.贝叶斯
Q:朴素贝叶斯分类器原理以及公式,出现估计概率值为 0 怎么处理(拉普拉斯平滑)
朴素贝叶斯是基于贝叶斯定理和特征条件独立假设的分类方法.对于给定的数据集,基于特征条件独立假设学习输入和输出的联合概率分布,然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大化的输出y;
公式推导
5.神经网络
Q:介绍下CNN (笔记)
Q:为什么CNN要用权值共享?
权值共享的概念:给定一张输入图片,我用一个滤波器去扫,滤波器的数叫权重,途中的每个位置都被相同的滤波器扫的,所以叫权值共享,
局部连接可以保证获取局部信息;
权值共享保证高效-每个卷积核相当于一个特征提取器,它的任务是匹配局部图像中的特征,权值共享后,匹配的特征方式都是一样的,提取若干特征后就知道学习的是啥了
每一个卷积核只能提取到到一个特征。所以,卷积层会有多个卷积核,来提取不同种类的特征
Q:dropout
关于dropout:https://blog.csdn.net/program_developer/article/details/80737724
1.简介:
在每个训练批次中,让某些神经元以一定的概率停止工作,这样使得模型泛化性,更强,不会依赖于某些特定的局部特征。或者说,即使我去掉了某些节点,模型也可以从其他的特征中学习到一个共同的模式。
.
2.dropout流程
正常的神经网络是首先把x通过网络前向传播,然后将误差反向传播决定如何更新参数让网路进行学习。添加dropout之后,过程变成以下:
- 1.随机删除一些节点,输入输出神经元保持不变
- 2.输入x前向传播,然后把得到的损失结果通过修改的网络反向传播,没有删除的结点上按照梯度下降法则更新(w,b)
- 3.恢复删除掉的神经元
- 4.重复1~3步
3.dropout的实现
- 1.训练模型的时候,每个单元添加一道概率流程
- 2.测试模型的时候,每个神经元的权重参数要乘以p
4.为什么能减少过拟合
- dropout导致两个神经元不一定在同一个网络中出现,这样模型不再依赖于固定节点的共同作用,迫使模型在缺失一些节点的情况下从其他的特征中学习到共性的特征,从而降低过拟合,这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。
Q:CNN DNN RNN
全连接DNN的结构里下层神经元和所有上层神经元都能够形成连接,从而导致参数数量膨胀。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重需要训练,这不仅容易过拟合,而且极容易陷入局部最优
由于图像中存在固有的局部模式(如人脸中的眼睛、鼻子、嘴巴等),所以将图像处理和神将网络结合引出卷积神经网络CNN。CNN是通过卷积核将上下层进行链接,同一个卷积核在所有图像中是共享的,图像通过卷积操作后仍然保留原先的位置关系。
DNN无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。为了适应这种需求,就出现了大家所说的另一种神经网络结构——循环神经网络RNN。
Q:梯度消失?
概念:权重更新时,靠近输出层的权重更新相对正常,靠近输入层的权值几乎不变,这时dnn的学习相当于只有后几层的网络在学习。
原因:网络中使用sigmodi函数的时,sigmiod的导数取值范围在(0,1)之间,反向传播时,逐层偏导相乘,当网络的层数很深的时候,最后几层偏导相乘的梯度几乎为0,从而导致很浅的权重没有更新。
CNN和RNN的梯度消失一样吗‘?’CNN因为网络层数太多导致,RNN因为时间迭代次数导致,都是因为链式求导次数太多。
给定一个输入,算输出的feature map大小?

卷积有啥用,padding有啥用?https://www.cnblogs.com/wj-1314/p/9593364.html
- 输入层:预处理操作,去均值,归一化,SVD/PCA降维
- 卷积层:提取特征
- pooling:
- 降维,缩减模型大小,提高计算速度
- 降低过拟合概率,提升特征抽取鲁棒性
- 对平移和旋转不敏感
Q:梯度爆炸?
初始的权重过大,靠近输入层的权值变化相对于靠近输出层的变化要快,就会引起梯度爆炸的问题。在DNN中,误差梯度在更新中累计,造成很大的梯度,导致网络权重的大幅度更新,极端情况下,权重的值会非常大,以至于溢出,网络层之间的梯度(值大于 1.0)重复相乘导致的指数级增长会产生梯度爆炸。
Q:BN层的优点
Q:全连接
全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用
6.聚类算法


被折叠的 条评论
为什么被折叠?



