社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

收藏 | 最全的深度学习面经总结

小白学视觉 • 2 年前 • 203 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

仅作学术分享,不代表本公众号立场,侵权联系删除
转载于:作者丨马东什么@知乎(已授权)
来源丨https://zhuanlan.zhihu.com/p/391954665
编辑丨极市平台

为什么K折交叉验证能防止过拟合?

问:一般怎么做交叉验证.

缺失值怎么处理?验证集怎么划分?哪些指标说明你的模型调优了?调节过模型的哪些参数

异常值的影响,如何消除

  • 连续特征分桶都有哪些方法(没说够) 卡方分箱那些的几个分箱策略的使用场景和优缺点

  • 如何做数据预处理

  • 你了解哪些归一化方式(没说够)

  • 零均值归一化是线性的么

为什么要离散化,离散化的参数如何确定

训练集和测试集分布不一致的问题是怎么发现的,怎么诊断定位,除了可视化还有没有其他直观的指标

1.类别特征编码方式有哪些?如何解决 target encoding 的 target leakage?count encoding 有个缺点:测试集和训练集分布不同,导致特征频率不一样。怎么解决?

为什么需要计算特征重要性,计算特征重要性的方法有哪些

连续特征怎么分箱,如何判断分箱的结果是好是坏

特征平滑方法有哪些

什么样的 ID 经过 Embedding 后可能有效,如何筛选有效的 ID。有些 ID 数量级很大,怎么处理

1. 哪些算法需要对特征先进行归一化,这类算法有什么特点,不进行归一化的缺点是?

5. #### 常见的筛选特征的方法有哪些?⭐⭐⭐⭐⭐

6. #### 数据怎么清洗,缺失值怎么填充⭐⭐⭐⭐⭐

7. #### 出现Nan的原因⭐⭐⭐⭐⭐

8. #### 特征筛选,怎么找出相似性高的特征并去掉⭐⭐⭐⭐⭐

11. #### 类别型数据你是如何处理的?比如游戏品类,地域,设备⭐⭐⭐⭐

12. #### 计算特征之间的相关性方法有哪些?⭐⭐⭐⭐

卡方检验的原理?

问:如何判断一个模型是处于高方差还是高偏差?高方差如何调节模型,高偏差如何调节模型?过拟合产生的原因有哪些?如何防止过拟合?

特征选择的方法有哪些?

过滤式,包裹式,嵌入式特征选择,过滤式特征选择主要采用独立于模型的评估指标来评估特征的好坏,计算快,能够方便迅速的对特征进行粗筛,缺陷在于 评估指标的计算与模型解耦,很多时候精度都不好,

问:那请你解释一下什么是偏差和方差和泛化误差,过拟合和欠拟合,怎么衡量一般?

问题1 在模型评估过程中,过拟合和欠拟合具体是指什么现象?

一般我们解释模型的泛化性能会用到偏差-方差分解,模型在训练阶段的预测和训练标签的偏离程度为偏差,刻画模型的拟合能力,模型在样本数相同的不同训练数据集下偏差的期望为方差,刻画数据变化对模型噪声的影响,泛化误差=偏差+方差+噪声,噪声是模型所能达到的期望泛化误差的下界,刻画了模型在学习当前问题本身的难度。

当然,这只是一种用于解释模型泛化误差的很理论的说法,我们在应用的过程中更常提到的是过拟合和欠拟合,过拟合意味着模型在训练集上的预测误差和模型在验证集上的预测误差存在较大差异,欠拟合则意味着模型在训练集上的预测误差本身就比较大,在验证集上的预测误差往往也会比较大。而所谓泛化误差,我们也称之为泛化能力等,在实际应用的时候一般指的是模型对未知数据的预测能力,这个能力是根据预测的误差决定的。

问:在模型评估过程中,过拟合和欠拟合具体是指什么现象?

过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是

模型在训练集上的表现很好,但在测试集和新数据上的表现较差。欠拟合指的是

模型在训练和预测时表现都不好的情况。

决绝nfa解决方法:

数据,特征,模型

问:有没有遇到过模型在训练集上预测误差大,在测试集上预测误差小的情况?为什么会发生这种情况?

答:有,模型恰好在验证数据上的泛化性能好,例如二分类问题中,测试集数据恰好是和分界超平面距离很远的样本或者是回归问题中,验证数据在模型的拟合曲面上;

问:为什么会发生过拟合和欠拟合,怎么解决模型的过拟合和欠拟合的问题?

这是一道很好回答又很难回答的面试题,之所以很好回答是因为有很多直观的思路可以解释过拟合和欠拟合,很难回答是因为很多的答案都无法回到过拟合和欠拟合的本质上导致了不同场景下不能自洽的问题;

在实际应用的过程中,实际上没有什么绝对的准则:

过拟合:

样本层面:大部分情况下增加样本可以缓解过拟合,少部分情况下减少样本可以缓解过拟合;

特征层面:大部分情况下减少特征可以缓解过拟合,少部分情况下增加特征可以缓解过拟合;

模型层面:约束模型的复杂程度;不同模型有不同的约束方式,lr 有l1,l2或l1+l2,树模型有增大行列采样比例,限制树深,学习率放缩,早停等等,nn有dropout,bn等等,这是模型本身的处理,除此之外对模型进行集成也可在一定程度上缓解过拟合;

欠拟合:

同上,倒过来即可

问:为什么增加或减少样本会影响过拟合问题?为什么对特征的增减会影响过拟合问题?为什么约束模型的复杂程度会缓解过拟合问题?

首先,上述所提到的三种方法都是一种经验性的解决方法,并不一定奏效,存在前提条件.

过拟合分为两种过拟合的情况:

1 在当前数据集上的过拟合;

2 在未来未知的数据集上的过拟合

在当前的数据集上的过拟合的评估涉及到train和valid数据集,一般我们判定过拟合是否发生,就是计算model在train数据,即X_train和y_train上的metrics和在valid数据,即X_valid和y_valid上的metrics的差异从而衡量过拟合的程度;

在未来的数据集上的过拟合的评估则涉及到模型构建调整完毕之后,对未来的test数据集的评估,即X_test和y_test,当然y_test不一定是可获得的,很多时候通过实际的业务目标的达成情况来评估模型是否过拟合;

潜在的全量数据(这样的数据一般是不可获取的,这里面有两个原因,

1.样本的获取是具有代价的,很难全面的采集所有相关的数据,即使采集全面,如此巨量数据的存储和处理也是一个难以解决的问题;

2.样本是具有时间属性的,我们无法采集到未来的数据,而我们要预测的恰好也是未来的数据)

这里我们假设潜在的全量数据为X,潜在的真实标签为y

需要明确三点:

  1. 存在假设:建模的前提之一是建设X和y存在某种映射关系,我们使用有限的train和test来训练模型逼近这个隐式的映射关系,使用train上拟合的模型预测test来有偏的检验模型的泛化能力;
  2. 稳定假设:我们假设真实的 X-->y的映射关系是静态不变的,即所谓 独立同分布;
  3. 乐观假设:我们假设用于模型训练的数据train具有足够的代表性,能够代表未来的所有样本

回到问题上,现在假设我们在train和test上的预测的metrics差异很大,即出现了当前数据集上的过拟合问题,则我们需要这么分析(注意,下面是对当前过拟合问题的分析):

1 当X-->y的映射关系不存在的时候,无论使用什么方法,我们都无法解决当前过拟合问题或未来过拟合问题,,模型的预测结果是无意义的,例如使用淘宝商品的价格预测华盛顿的温度,这种情况一般在使用train和valid数据进行模型构建和验证的阶段就会发现;

2.当X-->y 的映射关系存在且稳定,则

在当前的train和test的数据集上出现过拟合的原因在于train和test数据集不相似,或者说train数据集相对于test数据集是有偏的,这个时候增加数据有可能缓解模型的过拟合问题,例如我们引入的数据恰好和test相似甚至和test完全一样的样本,则此时在test上的metrics评估结果会大大改善,例如对图像做翻转可以作为cv中的一种基本的数据增强的方式主要原因在于test数据集中也会存在翻转的图像;

但是如果引入的数据完全和test不同,则对于模型在test上的评估是没有帮助甚至可能起到负效果,这种情况下引入的样本我们常常称之为噪声样本,例如通过上采样的方式对结构化数据进行样本生成很容易产生这种噪声样本,;

这个时候增加或者减少特征也是可能缓解过拟合问题的,

问:为何模型总是难以拟合真实情况

问:为什么你认为增加样本、减少特征,约束模型复杂度,能够解决过拟合问题?

答:因为我主要接触的是表格数据,所以,就表格数据来谈这个问题吧,在表格数据里增加样本的方式无非是通过一些代价获得更多的真实数据和标签,另一种方式就是通过一些上采样的方式来做数据增强,增加的是伪数据。

首先,过拟合的本质是数据分布的变化,而所谓的数据分布的本质是特征的分布,而我们所关注的“分布”是相对于模型而言的,例如对于gbdt来说,特征重要性最高的特征群的分布才是我们主要关注的,特征重要性很低甚至为0的特征我们基本不怎么考虑他们的分布是否发生变化,因此,“分布”和"模型"是紧密相关的,即使是无监督的背景下,我们也会根据业务经验重点关注一些认为比较重要的特征的分布进行follow,跳回来说,理想状态下如果数据的分布是完全一致的,则我们其实根本不用考虑模型的复杂度或者降低特征维度的问题,比如说二分类问题吧,如果正负样本是完全线性可分的,并且未来的新样本的分布完全一致,则gbdt拟合1亿棵树都不会有过拟合的问题;

所以,之所以模型会发生过拟合,是因为未来的数据的部分特征的分布或者是部分特征的联合分布发生了变化从而导致模型的预测出错,有两种情况:

1、肉眼可见的特征的取值发生变化了,例如训练集的特征的取值范围在0~1之间,预测数据的特征的取值范围为0~10之间;

2、特征的取值可能没有明显变化,但是特征的联合分布发生变化了,一个简单例子,两列类别特征,f1和f2,f1的取值为a,b,f2的取值为A,训练集中f1和f2的组合为aA,aB,测试集中出现了bA.

增加数据能够缓解过拟合的情况在于我们增加的数据引入了更多会未来将出现的样本相似或完全相同的样本,但是如果引入的数据和未来的样本完全不相似,例如不均衡学习中的许多上采样的方法,纯粹基于训练数据的一些加减计算,难以扩充和未来相似的样本,自然是不能缓解过拟合问题了;

回到问题,增加样本可能可以缓解过拟合问题但并不绝对,之所以有时候能够缓解过拟合问题

问:为什么需要对数值类型的特征做归一化?

1.通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、基于梯度下降法视角下的支持向量机、神经网络等模型,主要原因在于归一化能够大大加快梯度下降法收敛的速度,




-------------------

END

--------------------

我是王博Kings,985AI博士,华为云专家、CSDN博客专家(人工智能领域优质作者)。单个AI开源项目现在已经获得了2100+标星。现在在做AI相关内容,欢迎一起交流学习、生活各方面的问题,一起加油进步!


我们微信交流群涵盖以下方向(但并不局限于以下内容):人工智能,计算机视觉,自然语言处理,目标检测,语义分割,自动驾驶,GAN,强化学习,SLAM,人脸检测,最新算法,最新论文,OpenCV,TensorFlow,PyTorch,开源框架,学习方法...


这是我的私人微信,位置有限,一起进步!

王博的公众号,欢迎关注,干货多多
手推笔记:
思维导图  |  “模型评估与选择”  |  “线性模型”  |  “决策树”  |  “神经网络”  |  支持向量机(上)  |  支持向量机(下)  |  贝叶斯分类(上)  |  贝叶斯分类(下)  |   集成学习(上)  |  集成学习(下)  |  聚类  |  降维与度量学习  |  稀疏学习  |  计算学习理论  |  半监督学习  |  概率图模型  |  规则学习

增长见识:
博士毕业去高校难度大吗?  |  研读论文有哪些经验之谈?  |  聊聊跳槽这件事儿  |  聊聊互联网工资收入的组成  |  机器学习硕士、博士如何自救?  |  聊聊Top2计算机博士2021年就业选择  |  非科班出身怎么转行计算机?  |   有哪些相见恨晚的科研经验?  |  经验 | 计算机专业科班出身如何提高自己编程能力?  |  博士如何高效率阅读文献  |  有哪些越早知道越好的人生经验?  |  

其他学习笔记:
PyTorch张量Tensor  |  卷积神经网络CNN的架构  |  深度学习语义分割  |  深入理解Transformer  |  Scaled-YOLOv4!  |  PyTorch安装及入门  |  PyTorch神经网络箱  |  Numpy基础  |  10篇图像分类  |  CVPR 2020目标检测  |  神经网络的可视化解释  |  YOLOv4全文解读与翻译总结  | 

点分享

点收藏

点点赞

点在看


当p=1时,就是曼哈顿距离;

当p=2时,就是欧氏距离;

当p→∞时,就是切比雪夫距离。

余弦距离:

当向量的模长归一化为1时候,余弦距离和欧式距离可以相互转换。余弦距离不是

2.离散数据的距离计算:

杰卡尔德距离:A,B集合的交集/A,B集合的并集

汉明距离:表示两个等长字符串在对应位置上不同字符的数目

关于距离计算,遇到了我在单独研究,因为也是非常大的一块内容。上述的距离计算公式都是基于样本-样本 之间的简单距离计算,当引入了核方法进行映射之后还会有一些相应的更复杂的距离计算方法,除此之外,迁移学习中的样本群体,即不同数据集之间的分布的距离的计算也是一大块儿内容,面试的时候应该不会问的太复杂,这里就暂时不深入展开了。

问:你了解哪些常见的聚类算法?对聚类了解多少?

https://zhuanlan.zhihu.com/p/394909171

简单回答,基于划分,基于密度,基于网格,层次聚类,除此之外聚类和其它领域也有很多的结合形成的交叉领域比如半监督聚类,深度聚类,集成聚类等等;

问:kmeans的原理是什么?

kmeans是一种基于划分的聚类,中心思想很简单,类内距离尽量小,类间距离尽量大,算法过程为:

1.初始化k个质心,作为初始的k个簇的中心点,k为人工设定的超参数;

2.所有样本点n分别计算和k个质心的距离,这里的距离也是人工定义的可以是不同的距离计算方法,每个样本点和k个质心中最近的质心划分为1类簇;

3.重新计算质心,方法是针对簇进行聚合计算,kmeans中使用简单平均的方法进行聚合计算,也可以使用中位数等方式进行计算;

4.重复上述过程直到达到预定的迭代次数或质心不再发生明显变化

问:kmeans的损失函数是什么?

其中,K是聚类数量,p是样本,是第k个聚类的中心点。SSE越小,说明样本聚合程度越高。

问:kmeans的初始点怎么选择?不同的初始点选择策略有哪些缺陷?怎么解决?

1.随机初始化:随机选择k个样本点作为初始质心,缺陷在于如果选择到的质心距离很接近落在同一个簇内,则迭代的结果可能会比较差,因为最终迭代出来的质心点会落在簇间,

最理想的状态是k个质心恰好对应k个簇,由于随机初始化的随机性,可以考虑多次进行随机初始化,选择聚合结果最优的一次(这里涉及到聚类的评估方法);

2.随机分取初始化:即将所有样本点随机赋予1个簇的编号,则所有样本点最后会有k个编号,然后进行组平均,即对于同一个簇的样本进行平均得到初始化质心。相对于随机初始化,初始的质心会更鲁棒一些,但是仍旧存在随机初始化的缺陷,仅仅是缓解;

3.kmeans++

kmeans++是一种启发式的初始化策略:

Kmeans++聚类算法原理与实现:https://zhuanlan.zhihu.com/p/152286357

①从数据集中随机(均匀分布)选取一个样本点作为第一个初始聚类中心;

②接着计算每个样本与当前已有聚类中心之间的最短距离,用表示;然后计算每个样本点被选为下一个聚类中心的概率,最后选择最大概率值所对应的样本点作为下一个簇中心;

其实就是选择最短距离最大的样本点作为下一个初始化聚类中心点

③重复第②步,直到选择出个聚类中心;

kmeans++是一种启发式的初始化策略,并没有严格的理论证明,是sklearn中kmeans的默认的初始化策略;

4.其它聚类算法初始化策略:

使用其它聚类算法计算得到k个质心点作为kmeans的初始质心,我挺懵的,这样好像有亿点麻烦。。。

4.kmeans聚的是特征还是样本?特征的距离如何计算?

一般情况下是对样本聚类,如果对特征聚类则处理方式也简单,对原始的输入进行.T ,即转置即可。其目的其实和做相关系数类似,如果两个特征高度相关,例如收入和资产水平,则两个特征的距离相对较小,但是一般不可行,因为转置之后,维度往往是非常高的,例如有100万个样本则有100万的维度,计算上不现实,高维数据的距离度量也是无效的,不如直接计算相关系数;

5.为什么在高维空间中,欧式距离的度量逐渐失效?

《When Is “Nearest Neighbor” Meaningful?》

维度d趋于无穷大时,高维空间中任意两个样本点的最大距离和最小距离趋于相等,距离度量失效;

问.怎么确定聚类数量K(聚类如果不清楚有多少类,有什么方法?)

和评估分类或回归的方式一样,选择某个metric或某些metrics下最好的k,例如sse(其实就是kmeans的损失函数了),轮廓系数,兰德指数,互信息等;

如果聚类本身是为了有监督任务服务的(例如聚类产生features用于下游任务),则可以直接根据下游任务的metrics进行评估更好;

问:k-means如何调优

1.初始化策略调参;

2.k的大小调参,手工方法,手肘法为代表;

3.数据归一化和异常样本的处理;

问:介绍一下手肘法(gap statistic的计算很麻烦,这里就不写了)?

手肘法其实没什么特别的,纵轴是聚类效果的评估指标,根据具体的问题而定,如果聚类是作为单独的任务存在则使用sse或轮廓系数这类无监督的metric作为纵坐标,然后找到metric最好并且k最小的结果对应的k为最终的选择;

手肘法其实也很容易做成自动化,我们计算metric变化的斜率就可以了,具体方法就是计算k=n和k=n+1之间的斜率,当 斜率n和斜率n-1,斜率n+1和斜率n,斜率n+2和斜率n+1的差值均小于固定阈值时即可停止,代码实现上的思路和早停基本是一致的;

问:k-means的缺点,怎么解决?

1.对异常样本很敏感,簇心会因为异常样本被拉得很远

注意,这里的异常样本指的仅仅是在某些特征维度上取值特别大或者特别小的样本,是异常检测中定义的异常样本的一个子集,因为欧式距离的计算不考虑不同变量之间的联合分布,默认所有特征是相互独立的,所以kmeans中会对结果产生影响的异常样本特指简单的异常样本,即某些特征维度存在异常值的样本,这类异常样本通过简单的统计就可以得到;

解决方法即做好预处理,将异常样本剔除或修正;

2.k值需要事先指定,有时候难以确定;

解决方法即针对k调参;

3.只能拟合球形簇,对于流形簇等不规则的簇或是存在簇重叠问题的复杂情况等,效果较差

解决方法,换算法;

4.无法处理离散特征,缺失特征,

5.无法保证全局最优

解决方法:矮子里面挑高个,跑多次,取不同的局部最优里最优的

问:dbscan和optics是怎么解决这些缺点的?

dbscan和optics是基于密度的聚类

1.kmeans对异常样本很敏感,簇心会因为异常样本被拉得很远

dbscan和optics定义了密度的计算方式,不涉及到任何的平均这种鲁棒性较差的计算方式,对异常样本不敏感,还能检测异常样本呢;

2.k值需要事先指定,有时候难以确定;

dbscan和optics不需要指定簇的数量;算法迭代过程中自然而然产生最优的k个聚类簇;

3.只能拟合球形簇,对于流形簇等不规则的簇或是存在簇重叠问题的复杂情况等,效果较差

基于密度的聚类可以拟合任意形状的簇,这也归功于密度的计算方式,基于密度的聚类本身不对聚类簇的形状有任何的假设;

4.无法处理离散特征,缺失特征:缺失特征要插补,离散特征可以换离散特征的距离度量方法,基于密度的聚类算法可以灵活搭配各种不同的distance的度量方式;

5.无法保证全局最优:未解决

问:讲一下dbscan和optics的大致思路?

dbscan:单个超球体,病毒式扩散;

optics:两个嵌套的超球体一大一小,先映射为直方图,然后从直方图上生成聚类结果

dbscan和optics:https://zhuanlan.zhihu.com/p/395088759

问:kmeans是否一定可以收敛,为什么?kmeans为什么无法保证全局最优?

收敛性证明就算了吧。。.这也太超纲了。.。

kmeans的损失函数是一个非凸函数,所以无法保证全局最优;

from K Means为什么不能收敛到全局最优点?-SofaSofa:http://sofasofa.io/forum_main_post.php?postid=1002942

kmeans的损失函数,需要记忆一下

这里μk是第k个簇的质心,

为了方便描述,假设x是2维的,取k=1,则我们令:

uk是待求解变量,画出:z=

的函数图像:

可以看到,优化目标z存在(1,1),(-1,1)两个最优解,所以kmeans的损失函数不是一个凸函数而是一个非凸函数,难以保证收敛到全局最优。

问:为什么在一些场景中要使用余弦相似度而不是欧氏距离?

如果A,B两个向量e 的模场均为1,则欧式距离和余弦距离之间满足:

总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为 (1,0);此时二者的余弦距离很大,而欧氏距离很小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃度,以登陆次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离会认为(1,10)、(10,100)两个用户距离很近;但显然这两个用户活跃度是有着极大差异的。

因此,我们关注向量数值绝对差异,应当使用欧氏距离,如果关心的是向量方向上的相对差异,则应当使用余弦距离。

问:余弦距离是否是一个严格定义的距离? (一个度量标准要满足什么要求才能算是距离)

该题主要考察面试者对距离的定义的理解,以及简单的反证和推导。首先看 距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。

余弦距离满足正定性和对称性,但是不满足三角不等式,因此它并不是严格定义的距离。

问:K-means 中我想聚成100类 结果发现只能聚成98类,为什么?

迭代的过程中出现空簇,原因在于k太大,实际的簇数量小于k;

初始化策略不会导致空簇的问题,因为即使最简单的随机初始化也是从原始的样本点里选择部分样本作为质心,如果初始质心中存在异常样本,则最终聚类的结果,这个异常点会自成一个簇而不会出现空簇的问题;

https://datascience.stackexchange.com/questions/44897/k-means-clustering-what-to-do-if-a-cluster-has-0-elements

空簇对应的中心点和任意一个样本点的距离都不是该样本点距离其它质心点的距离的最小值。

问:kmeans,GMM,EM之间有什么关系?

kmeans是基于划分的聚类算法,GMM是基于模型的聚类算法,EM是估计GMM的参数使用的优化算法;

1. kmeans可以看作是GMM的一种特例,于协方差为单位矩阵,故kmeans聚类的形状是球形的,而GMM是椭球型的;

2. kmeans使用hard EM求解,GMM使用soft EM求解(kmeans感觉还是从直观上的计算过程上理解比较舒服,通过hard em也是一个解释就是了);

关于上述的原因,在下一个问题里说明

问:高斯混合模型的核心思想是什么?(GMM和多元高斯有什么区别?,多元高斯函数的期望是什么)

GMM就是多个相关多元高斯分布的加权求和;

理解GMM之前,先回归基本概念:

1.一元高斯分布:


现在我们将高斯分布扩展到多维空间,简单说就是有x1,x2,x3。。。xn等多个维度。当我们假设多维空间的每一个空间之间完全独立,则独立的n元高斯分布为:


可以看到,是非常类似的,根号2pi部分取n次方,方差用协方差矩阵代替,代数的乘法转化为矩阵乘法;多元高斯分布的期望就是观测样本的(样本向量-所有特征向量的均值构成的均值向量)进行和自身的向量乘计算

协方差矩阵:

协方差矩阵是一个nXn的矩阵,n代表了多元的大小,对于协方差矩阵中的每一个元素,计算公式如下:

具体展开来看就是:

协方差矩阵和相关系数的关系:

可以看到,相关系数的计算过程中,已经对变量做了均值方差的标准化处理了,所以对两个特征计算相关系数不需要考虑量纲大小的问题;

现实世界中,不同的特征(多个特征=多元)很难完全独立,因此我们也会使用非独立的多元高斯分布,公式写作:


可以看到,公式层面上,独立多元高斯分布和非独立(相关)多元高斯分布的形式是一样的,只不过协方差矩阵不同:

独立多元高斯分布除对角线之外其它元素的值均为0,相关多元高斯分布则其它元素的值为特征之间的协方差的计算结果;

高斯混合模型:

高斯混合模型GMM是多元高斯分布之上的概念,他认为现实世界的数据是由多个不同参数的相关多元高斯模型以不同的权重累积求和构成的(单元,独立多元高斯模型可以看作相关多元高斯模型的特例);

其中:

是第个子模型的相关多元高斯分布,是观测数据属于第个子模型的概率;因此对于GMM而言,其参数,即每个子模型的均值向量、协方差矩阵以及在GMM中该子模型的权重;

对于相关多元高斯混合模型,其参数仅包含均值向量和协方差矩阵,可以直接通过极大似然法写出极大似然函数,然后通过求导进行参数估计,具体的通过极大似然法可以直接推导出均值向量和协方差矩阵关于输入向量X的计算公式,带入数据集X可以直接求解;

而GMM的极大似然函数较为复杂:

由于存在(观测数据属于第个子模型的概率)这个隐变量,无法直接求导得到参数的估计结果,因此通过EM算法来进行迭代式的求解

问:GMM是如何迭代计算的?为什么kmeans,GMM,EM满足上面描述的方式?(EM算法数学原理)

首先需要了解em算法,em算法和梯度下降法一样,都可以用来优化极大似然函数,当极大似然函数中存在隐变量时,EM算法是一种常用的优化算法;

EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以EM算法被称为EM算法(Expectation-Maximization Algorithm)

jensen不等式:

如果f是凸函数,X是随机变量,那么:。当且仅当X是常量时,该式取等号。其中,E(X)表示X的数学期望。Jensen不等式应用于凹函数时,不等号方向反向。当且仅当x是常量时,该不等式取等号。

如上图,实线f表示凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。X的期望值就是a和b的中值,从图中可以看到成立。

问:GMM的损失函数?增大数据量是否会更好?

问:层次聚类原理

问:为什么选择孤立森林?介绍一下iforest?

优点:基于集成异常检测的思路,鲁棒性强;不涉及距离和密度计算,计算速度很快;每棵树独立生成可并行或分布式

iforest的算法流程:

(1)底层是极限随机树,随机选择一个特征,随机选择部分样本(bagging),每次分裂随机选择一个分裂节点,最大深度是 log2(bagging的样本数量)

(2)整合所有极限随机树的结果,使用score function打分:

h(x) 为 样本x 在每棵树的高度(其实就是x在这棵树上分裂了几次),对样本x在所有树上的分裂次数进行平均得到分子项目,c(Ψ) 为给定样本数 Ψ 时路径长度的平均值,用来对样本 x 的路径长度 h(x) 进行标准化处理。

(3)score function的计算结果在0~1之间,

如果异常得分接近 1,那么一定是异常点;

如果异常得分远小于 0.5,那么一定不是异常点;

如果异常得分所有点的得分都在 0.5 左右,那么样本中很可能不存在异常点。

详细的可见:

isolation forest:https://zhuanlan.zhihu.com/p/181378482

isolation forest的score function公式到底是个啥?:https://zhuanlan.zhihu.com/p/181650438

追问:为什么高度为log2(bagging的样本数量)?为什么每次随机仅选择一小部分的样本(默认是min(bagging的样本数量,256))?

直观上来看,m个特征,我们用m个极限随机树分别进行完全分裂,分裂到叶子节点的样本特征值完全相同,得到n个样本在m个极限随机树上的分裂次数,即得到n个样本在m个特征上的分裂次数,然后取平均就可以满足我们的预测目标了。本质上通过分裂次数代替聚类或密度的计算,分裂越少,则样本在这个特征上的异常程度越高,然后综合考虑样本在多个特征上的异常程度;

但是这么做的问题有:

1.计算复杂度太高了,树的完全分裂的时间复杂度为O(n),上述做法的总的时间复杂度为O(mn);

2.本质上做的是基于集成学习的无监督学习,鲁棒性强,但是单纯用1个极限随机树分裂1个特征,随机因素影响太大,重新训练的结果差异可能会很大。解决的方法是每个特征用多个极限随机树来拟合,则计算复杂度进一步扩大为O(mnk),k为树的数量;

3.无监督的核心缺陷,无法自动特征选择,所有特征的重要性一视同仁,则如果存在大量无用特征或者噪声特征,会严重影响计算结果;

iforest针对上述问题做了改进:

1.针对问题1,树的最大深度限制为log2(bagging的样本数量),之所以对树的高度做限制,是因为我们只关心路径长度较短的点,它们更可能是异常点,而并不关心那些路径很长的正常点。之所以使用log2的底数,是为了和score function的公式对应起来,为了计算score fuction上的便利性

2-log2(2)=1/2,2log2(2)=2(指数和log计算公式)

总结一下, log2(bagging的样本数量)和服务于score function的设计的,计算上提供了便利性,;

2.仍旧是针对问题1,树每次使用的样本默认为 min(采样的样本数,256),这么做主要避免了太大数量的样本上分裂次数过多计算复杂度高的问题,然后通过集成提高整个模型的鲁棒性。(精度和效率之间的一种折衷,根据论文和实际的应用结果,效果还ok);

3.针对问题2,仍旧是精度和效率上的折衷,k个极限随机树通过采样,最终一共使用k个特征,每一轮随机选择一个特征生成一棵树;

4.针对问题1和2的不精确分裂的问题(实质上也没有办法做精确分裂),tree分裂上的不精确在实践中可以被认为提高了算法的鲁棒性,类似于lgb直方图;

5.针对问题3,特征的随机采样某些情况下缓解了无效特征的问题(大部分特征有效少部分特征无效的情况),但是本质上没有解决(大部分特征无效,少部分特征有效的情况),最终的特征工程还是要基于业务经验来进行;

具有相似尺度的特征可以帮助梯度下降更好更快地收敛;

具有不同程度的幅度和范围的特征将导致每个特征的步长不同。因此,为了确保梯度下降更平滑、更快速地收敛,我们需要缩放我们的特征,使它们共享相似的尺度;

(逻辑回归的梯度公式对比一下就造了)

2.基于距离计算的模型例如典型的knn,kmeans等对于不同量纲下的特征的距离计算非常敏感,这个原因很简单不多解释了;

问 在对数据进行预处理时,应该怎样处理类别型特征?

特征编码,onehot,woe,target encoding等(具体编码方法可以参考category encoding),lgb内部其实做的是梯度编码也算是一种编码的方法,深度学习里可以使用embedding等;

问:什么是组合特征?如何处理高维组合特征?

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征

广义线性模型

问:什么是广义线性模型?

问:推导一下线性回归和l逻辑回归?

逻辑回归:

y_pred=sigmoid(w*x) ,x的增加一个维度为1,这样截距项直接包含到w里,形式上更简洁和记忆。

损失函数:二元交叉熵,


其中:


合并同类项,y_pred带入,就可以得到简化的二元交叉熵:


对W求导可得:


=

推导完毕。

线性回归:

懒得推了,很简单的,最终的梯度的形式是一样的:


追问:为什么做线性回归,逻辑回归之前要做归一化?

从上面的梯度计算公式可以看出来了,特征两个不一样,则W权重中的每一个wi的梯度更新量差异很大,量纲大的特征对应的权重w的梯度更新的量纲也大。导致梯度中的偏导差异极大,使得模型收敛很慢甚至无法收敛。

问:逻辑回归的损失是怎样的,逻辑回归损失为什么这么设计

问:逻辑回归损失函数中为啥要加1/N

1/N(N表示样本数量)可以融合到learning rate里去理解,torch的损失函数里面也设计了 对loss进行平均和对loss进行求和,平均不求和的差异就在于每一个step对参数w的梯度更新量的差异为N(样本数量)倍,数据量很大时,会导致梯度更新量非常大,权重的变化会非常的剧烈,收敛困难,所以用1/N,不过其实learning rate缩小n倍达到的效果是一样的。

梯度表达式前面的以乘数的形式存在的常数项对梯度下降法的收敛没有任何的影响,本质上可以理解为learning rate的变化。

问:逻辑回归使用梯度下降法的时候的停止条件是什么?

1、达到最大迭代次数

2、所有的权重的梯度更新量的值都小于预先设定的阈值

3、早停等.

问:逻辑回归是线性模型还是非线性模型?

这个地方很有意思,这涉及到我们怎么去定义线性还是非线性(1.根据模型的决策超平面来定义模型的线性和非线性,一般比较难,很难画出高维超平面;2.模型的参数是否是线性组合的,tree和nn的参数都是非线性组合的形式),如果从输出的角度来看,逻辑回归输出的是非线性的数据,经过sigmoid映射之后的输出值是非线性的:

但是如果我们从他的决策面来说,它又是超平面而不是曲面:

上述现象的原因是:

sigmoid函数就是一个纯粹的数学变换没有任何的可学习参数,我们的决策是直接根据右边的式子得到的,sigmoid只是负责映射成非线性的输出罢了,直观的说就是我们的逻辑回归的输出在进入sigmoid函数之前是图2这样的线性的值,经过sigmoid之后称为非线性的值,所以从决策平面的来说逻辑回归是线性模型,从输出来看逻辑回归是非线性模型,不过一般是从决策平面来定义线性和非线性的,所以我们还是将逻辑回归视为线性模型

严格的定义:模型的参数是否是线性组合的

问:试着从3个角度来解释逻辑回归?(1、概率角度分析逻辑回归;2、GLM角度分析线性回归和逻辑回归;3、最大熵模型和逻辑回归的关联;)

lr之所以能衍生出很多面试的问题,主要在于逻辑回归这个模型可以从很多角度解释,每个角度所代表的领域知识各不相同,是一个非常好的考察面试者的机器学习基础的问题,所以这种题目基本上不会断。

问:为什么逻辑回归要用极大似然法来进行参数估计?

极大似然估计是一种参数估计的方法,它是频率学派最经典的方法之一,认为真实发生的结果的概率应该是最大的,那么相应的参数,也应该是能让这个状态发生的概率最大的参数。简单说就是如果事件发生了被我们观测到了,那么这个事件对应发生的概率一定是最大的才能被我们观测到否则就不会被我们观测到,所以当前的状态是这个事件发生概率最大的结果。

逻辑回归假设数据服从伯努利分布,则P(y|X)——在已知x的情况下y服从伯努利分布,通过极大化似然函数的方法,运用梯度下降或者拟牛顿法等最优化方法来求解参数,以达到将数据二分类的目的。

逻辑回归与线性回归的区别(因为项目中有用到逻辑回归)、p值、假设检验、参数估计、方差和标准差的区别(自己平时如何使用他们)

LR为什么用sigmoid函数。这个函数有什么优点和缺点?为什么不用其他函数?sigmoid函数由那个指数族分布,加上二项分布导出来的。损失函数是由最大似然估计求出的。

naive bayes和logistic regression的区别


为什么LR需要归一化或者取对数,为什么LR把特征离散化后效果更好,、

逻辑回归为啥使用sigmoid函数,有何优缺点

逻辑回归中为啥用对数,并且为啥不用log而用ln

(1) 为什么可以用 Sigmoid 函数定义了逻辑回归的条件概率,的内积代表数据属于正类(y=1)的确信度。越大则x属于正类的确信度越大。由于建模需求,需要将从整个实数空间映射到条件概率P(y=1|w,x),Sigmoid 函数单调递增能反映确信度,并且能够将实数空间(-无穷,+无穷)映射到(0,1)区间内,能表示概率意义,更加直观。

(2) 为什么要用:指数分布具有最大熵的性质,即在满足前提假设下的分布,分布越均匀越好.在逻辑回归中认为P(Y|x)服从伯努利二分布,并且P(y|x)=f(wx),可根据最大熵的性质推出sigmoid函数。

如果逻辑回归的所有样本的都是正样本, 那么它学出来的超平面是怎样的?

LR推导(伯努利过程,极大似然,损失函数,梯度下降)有没有最优解?

LR可以用核么?可以怎么用?l1和l2正则项是啥?lr加l1还是l2好?加哪个可以用核(加l2正则项,和svm类似,加l2正则项可以用核方便处理)

LR可以用来处理非线性问题么?(还是lr啊 只不过是加了核的lr 这里加核是显式地把特征映射到高维 然后再做lr)怎么做?可以像SVM那样么?为什么?

SVM和logistic回归分别在什么情况下使用?https://www.zhihu.com/question/21704547

逻辑斯蒂回归能否解决非线性分类问题?https://www.zhihu.com/question/29385169

逻辑回归估计参数时的目标函数逻辑回归的值表示概率吗?(值越大可能性越高,但不能说是概率)

为什么把特征组合之后还能提升,反正这些基本都是增强了特征的表达能力,或者说更容易线性可分吧

逻辑回归对特征有什么要求,是否需要做离散化,离散化的好处与坏处。

L1 和 L2 正则化的区别

L0 范数:向量中非0元素的个数。

L1 范数 (Lasso Regularization):向量中各个元素绝对值的和。

L2 范数(Ridge Regression):向量中各元素平方和再求平方根。

L0 范数和 L1 范数都能够达到使参数稀疏的目的,但 L0 范数更难优化求解,L1 范数是 L0 范数的最优凸近似,而且它比 L0 范数要容易优化求解。

L2 范数不但可以防止过拟合,提高模型的泛化能力,还可以让我们的优化求解变得稳定和快速。L2 范数对大数和 outlier 更敏感!

· LR(5星):损失函数、交叉熵、权重更新的推导(建议每次面试之前推一遍);从权重更新的公式中,明白交叉熵相对于MSE损失函数的优点(大部分CNN网络结构用的损失函数都是交叉熵);多个角度解释逻辑回归与SVM之间的关系;标签是-1/1时损失函数形式推导。

线性回归(4星):权重更新方式的推导,包括矩阵形式的和非矩阵形式的(西瓜书上有);包含L1或者L2正则化的权重更新的推导;L1/L2正则化包含的贝叶斯先验假设(或者从多个角度解释L1/L2对特征选择的作用);在包含重复特征情况下,线性回归存在的问题,L1正则化是否能解决等细节问题。

为什么交叉熵损失函数有log项?

.lr的基本原理,为什么要用sigmoid的函数,最大熵模型是否了解过

LR模型里面有共线性的问题怎么解决?

逻辑回归采用的是交叉熵,那你 知道相对熵(KL)吗?

问:手写一下逻辑回归的损失函数,推导

逻辑回归为什么不用最小二乘?基于mse来进行模型求解的称之为最小二乘法

l1 l2正则区别

LR的基本假设(当时没回答出来,应该是满足伯努利分布)

LR的缺点

lr中特征相关性较高会怎样(多重共线性)(10个相关性很高的特征)

什么时候lr比xgb好

对于LR来说,LR如果多了一维冗余特征,其权重和AUC会怎样变化(权重变为1/2, AUC不会变化)

什么情况下需要将连续变量分桶

为什么LR模型又可称最大熵模型?

逻辑回归怎么分类非线性数据?

逻辑回归引入核方法后损失函数如何求导?

LR可以处理非线性问题吗

L1 L2的作用,为什么有这样的作用?一般求L1的优化方法(坐标下降,LARS角回归)

L1为什么能让参数稀疏,L2为什么会让参数趋于较小值,L1优化方法

LR模型中为何使用交叉熵而不使用MSE作为损失函数(从损失函数建立的目标和效果上谈)

Logistic Regression的原理及其推导;

8、 L2正则的本质?限制解空间范围,缩小解空间,控制模型复杂度

svm怎么用于多分类

svm的推导,什么是凸函数,为什么拉格朗日对偶方程成立

svm与lr的对比与区别

svm系列,参考一下书

问题1 在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在

超平面上的投影仍然是线性可分的吗?

Q:线性模型和决策树模型对特征选择特征利用有哪些区别

Q:决策树和线性模型哪个更好在线更新

写线性回归的解析解,矩阵不可逆怎么办?

4)SVM的对偶问题(我没想起来)

什么样的函数是核函数

如何去选择核函数,线性,高斯核函数。

讲了下SVM的推导:hard margin, soft margin, 几何距离、函数距离,最优化,拉格朗日乘子法,对偶问题,KKT条件,损失函数,惩罚系数等。

为什么SVM求解要求解他的对偶问题?

为了使原问题更好求解,因为原问题不好求解,引入对偶问题之后就更好求解了。

其实,是因为对偶问题可以降低原问题的计算复杂度。

问题2 是否存在一组参数使SVM训练误差为0?

问题3 训练误差为0的SVM分类器一定存在吗?

问题4 加入松弛变量的SVM的训练误差可以为0吗?

1. 问SVM算法原理,如果数据分布是同心圆怎么办?答核函数,然后就是讲述过程;

SVM的支持向量是什么?

梯度下降法是一阶导,牛顿法是二阶导?为什么还会有牛顿法的出现?说明数学原理

SVM可以处理非线性问题吗

问了svm的推导,问的非常细,问距离到底如何定义的,不可分的svm中松弛变量怎么理解,如果有个点特别异常,是否还能找到分割面

svm的原理,smo算法,

svm的核函数的作用,lr能不能用核函数,为什么

SVM的原理及其推导

手推svm

svm推导,核函数的体现,常用的核函数有哪些

为什么svm可以使用和函数,LR不可以使用

SVM原理,支撑向量越多越好还是越少越好

svm推导,为什么要用拉格朗日乘数法,对偶问题是什么

KKT条件都有什么,如何求解svm的最优化问题

2、特征工程做的有哪些?非线性可分的情况怎么处理的?

9、 SVM引入核函数本质?提高维度,增加模型复杂度

Q:这样啊,那我手推一下SVM吧

Q:为什么必须满足KKT条件?

· SVM(5星):理解SVM目标函数的由来;理解SVM中核技巧的使用;将目标函数转化成对偶问题的推导(软间隔、硬间隔);为什么要转换成对偶问题求解,求解的权重个数(一系列相关的细节问题);多个角度解释逻辑回归与SVM之间的关系。

继续问有了P,R为什么要有AUC和F1-score(说AUC是真阳性,与假阳性之间的平衡,面积越大越好,然后F1-score,是平衡p和R)

说说SVM损失函数

10. #### 最小二乘法在什么条件下与极大似然估计等价?⭐⭐⭐⭐⭐

如果特征比较多,用LR还是SVM?

SVM是否可以用随机梯度下降

为什么要将求解 SVM 的原始问题转换为其对偶问题

为什么SVM对缺失数据敏感

SVM怎么防止过拟合 ?

【机器学习】

【机器学习】SVM的高斯核函数公式是什么?为什么解决非线性问题一定要用核函数?各种核函数的公式

贝叶斯和统计:

1.有一个场景,想用朴素贝叶斯,但效果不好,怎么优化?

2.朴素贝叶斯公式是怎么得到的,推导一下

3.常见分布 + 常见假设检验 + p-value计算

4.偏度和峰度

5.先验概率、条件概率

6.写一下贝叶斯公式

7.贝叶斯公式,实际如何计算,如何解决精度问题。

8.朴素贝叶斯的证明(不懂)

9.朴素贝叶斯适用哪些场景

人觉得很少有面试官会直接问贝叶斯决策,最多就问一个先验概率和后验概率的联系,但是朴素贝叶斯的思想会在很多算法中体现,比如L1、L2正则化的贝叶斯先验假设,期望最大化算法与最小二乘法的联系,k-means包含的贝叶斯先验假设等。所以理解贝叶斯的思想是核心。

马尔科夫模型(1星,提问概率极低):3个基本问题以及对应求解算法,要理解(前向后向算法、B-W算法、维特比算法)

贝叶斯定理,全概率公式

1.朴素贝叶斯优缺点⭐⭐⭐⭐⭐

2.贝叶斯公式⭐⭐⭐⭐⭐

3.朴素贝叶斯中的“朴素”怎么理解?⭐⭐⭐⭐⭐

4.什么是拉普拉斯平滑法?⭐⭐⭐⭐⭐

5.朴素贝叶斯中有没有超参数可以调?⭐⭐⭐⭐⭐

6.你知道朴素贝叶斯有哪些应用吗?⭐⭐⭐⭐⭐

7.朴素贝叶斯对异常值敏不敏感?⭐⭐⭐⭐⭐

8.频率学派与贝叶斯学派的差别⭐⭐⭐

9.概率与期望的公式⭐⭐⭐⭐

10.先验概率与后验概率⭐⭐⭐⭐

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/157497
 
203 次点击