参考转载自https://zhuanlan.zhihu.com/p/458674733
1、基本评价指标
1.1 为什么要用AUC去衡量机器学习模型的好坏
答:一个分类模型的分类结果的好坏取决于以下两个部分:
1.2 AUC含义以及如何计算?ROC
AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1。(y=真阳率、x=伪阳率)把正例正确地分类为正例,表示为TP(true positive),把正例错误地分类为负例,表示为FN(false negative)。把负例正确地分类为负例,表示为TN(true negative), 把负例错误地分类为正例,表示为FP(false positive)。真阳率=TP/(TP+FN)伪阳率=FP/(FP+TN)
【注解】我们都知道AUC是面积,但这样的计算往往不方便,几乎不用
任意给一个正类样本和一个负类样本,正类样本的score大于负类样本的score的概率
公式如下

M 是正样本的个数,N是负样本的个数
值得是第i个样本的序号。对所有的预测样本的score进行从小到大的排序,然后从1进行标号。

原始样本
模型打分 0.8 0.5 0.6 0.3 0.4
按分数排序
分数 0.8 0.6 0.5 0.4 0.3
排序rank 5 4 3 2 1
对于公式的分母:正样本排在负样本的情况,一共有M*N种
分子的左边一项,是正样本的序号之和
对于分子右边一项 ,M是正样本的个数,这个公式也是首项为1,末项为M, 公差为1的等差数列的求和公式,它的序列为
1, 2, 3, 。。。M
————————————————
ROC曲线:
横轴是FPR(负类样本中被判定为正类的比例)
纵轴是TPR(recall)(正类样本中被判定为正类的样本)
1.3 准确率(Accuracy) 精确度(Precision) 召回率(Recall)
准确率就是分类任务中全部分类正确(不论正例负例)的总数与全体总数的比值Accuracy = (TP + TN )/( TP + FP + TN + FN)
precision = TP/(TP + FP)假设模型分类取得了正例和负例的分类结果,那么Precision就是模型所得分类结果中,真正的正例与分类所得正例的比值,也可叫作查准率;
recall = TP/(TP +FN)Recall就是模型所得分类结果中,真正的正例与数据中实际真正正例的比值,也可叫做查全率;
1.4 方差与偏差
偏差: 描述模型输出结果的期望与样本真实结果的差距。
方差: 描述模型对于给定值的输出稳定性。
(缺)1.5 Clustering(聚类算法)
“在聚类任务中,常见的评价指标有:纯度(Purity)、兰德系数(Rand Index, RI)、F值(F-score)和调整兰德系数(Adjusted Rand Index,ARI)。同时,这四种评价指标也是聚类相关论文中出现得最多的评价方法。
1.纯度
聚类纯度的总体思想也用聚类正确的样本数除以总的样本数,因此它也经常被称为聚类的准确率。只是对于聚类后的结果我们并不知道每个簇所对应的真实类别,因此需要取每种情况下的最大值。具体的,纯度的计算公式定义如下:

2.兰德系数与F值
为了说明兰德系数背后的思想,我们还是以图1中的聚类结果为例进行说明(为了方便观察,我们再放一张图在这里):

图 1. 文本聚类结果
现在你想象一下,把这三个簇想象成三个黑色的布袋。那么对于任意一个布袋来说:①如果你从里面任取两个样本出来均是同一个类别,这就表示这个布袋中的所有样本都算作是聚类正确的;②相反,如果取出来发现存在两个样本不是同一类别的情况,则就说明存在着聚类错误的情况。其次,对于任意两个布袋来说:③如果你任意从两个布袋中各取一个样本发现两者均是不同类别,这就表示两个布袋中的样本都被聚类正确了;④相反,如果发现取出来的两个样本存在相同的情况,则说明此时也存在着聚类错误的情况。大家想一想,应该再也找不出第五种情况了。由此,我们可以做出如下定义:
:表示两个同类样本点在同一个簇(布袋)中的情况数量;
:表示两个非同类样本点在同一个簇中的情况数量;
:表示两个非同类样本点分别在两个簇中的情况数量;
:表示两个同类样本点分别在两个簇中的情况数量;
由此,我们便能得到如下所示的对混淆矩阵(Pair Confusion Matrix):


https://zhuanlan.zhihu.com/p/343667804
1.6 mAP (mean average precision)
目标检测中的常用评价指标,计算方法如下。
当预测的包围盒和真实包围盒的交并比大于某一阈值(通常为0.5),则认为该预测正确。对每个类别,我们画出它的查准率-查全率(precision-recall)曲线,平均准确率是曲线下的面积。之后再对所有类别的平均准确率求平均,即可得到mAP,其取值为[0, 100%]。
2、机器学习(ML)
(缺)2.1 Scikit-learn包的使用
API接口
模型建立、训练、保存、加载、参数调节等
不同算法的评价指标的参数,设置
2.2 特征选择有哪些方法?
(介绍项目时涉及到了特征相关性分析,因此问了这个)
https://blog.csdn.net/qq_19446965/article/details/104229910
2.3 写出逻辑回归反向传播的伪代码。
参考: 手推逻辑回归(LR)_weixin_43258017的博客-CSDN博客_手推lr
2.3 决策树
CART树的原理,ID3以及C4.5有什么区别
回归树与分类树有什么区别。
写出信息增益的表达式。
参考: 决策树算法原理(CART分类树) - 做梦当财神 - 博客园
分类树和回归树的区别_bigfacesafdasgfewgf-CSDN博客_分类树和回归树的区别
2.4 AdaBoost
Adaboost算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为一个强分类器。
Adaboost采用迭代的思想,每次迭代只训练一个弱分类器,训练好的弱分类器将参与下一次迭代的使用。也就是说,在第N次迭代中,一共就有N个弱分类器,其中N-1个是以前训练好的,其各种参数都不再改变,本次训练第N个分类器。其中弱分类器的关系是第N个弱分类器更可能分对前N-1个弱分类器没分对的数据,最终分类输出要看这N个分类器的综合效果。
问了adaboost的原理,模型的权重以及数据的权重各自有什么意义,写出adaboost的伪代码?
参考: Adaboost入门教程–最通俗易懂的原理介绍(图文实例)_Max的杂物仓-CSDN博客_adaboost
2.5 GBDT
gbdt 的算法的流程?
gbdt 如何选择特征 ?
gbdt 如何构建特征 ?
gbdt 如何用于分类?
gbdt 通过什么方式减少误差 ?
gbdt的效果相比于传统的LR,SVM效果为什么好一些 ?
gbdt 如何加速训练?
gbdt的参数有哪些,如何调参 ?
gbdt 实战当中遇到的一些问题 ?
gbdt的优缺点 ?
一是效果确实挺不错。
二是即可以用于分类也可以用于回归。
三是可以筛选特征。
GBDT叶节点权重怎么算
参考: 机器学习算法GBDT - Alexander - 博客园
2.6 随机森林(Random Forest)
随机森林中每一次采样的比例是63.2%。
1、分类算法选择的特征越随机越好(相关性低)
2、选择的训练数据越随机越好
优势:
1、它能够处理很高维度(feature很多)的数据,并且不用做特征选择
原因:特征子集是随机选择的,子集大小可以控制。
2、在训练完后,它能够给出feature重要大小
3、训练速度快,容易做成并行化方法
原因:训练时树与树之间是相互独立的
4、如果有很大一部分的特征遗失,仍可以维持准确度。
缺陷:
1、随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合
2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,(跟决策树算法类似,以信息增益划分数据集的特征,都有这个问题,可以用信息增益比校正)所以随机森林在这种数据上产出的属性权值是不可信的。
参考: 随机森林_happy1yao的博客-CSDN博客
2.7 xgboost原理
xgboost在多分类与二分类过程中有什么不同
参考: XGBoost原理
2.8 RF和GBDT的区别是什么?
参考: GBDT与RF的区别_u010398493的专栏-CSDN博客
2.9 GBDT和XgBoost的区别是什么呢?
参考: 机器学习算法中 GBDT 和 XGBOOST 的区别有哪些?
2.10 GBDT可以并行吗?
GBDT为什么不能并行,XGBoost却可以
GBDT的整体是串行运行的,但在每一轮迭代时,以下是可以并行计算的
传统的GBDT是以CART作为基分类器,xgboost还支持线性分类器,这个时候XGBOOST相当于带L1和L2正则化的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。传统的GBDT在优化的hih只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。
xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score是L2模的平方和。使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。
Shrinkage(缩减),相当于学习速率。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了消弱每棵树的影响,让后面有更大的学习空间。在实际应用中,一般把学习率设置的小一点,然后迭代次数设置的大一点(补充:传统GBDT的实现也有学习速率)
列抽样。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。
对缺失值的处理。对于特征的值有缺失的样本,xgboost可以自动学习出她的分裂方向。
xgboost工具支持并行。boosting不是一种串行的结构吗?怎么并行的?
注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完成才能进行下一次迭代的(第t次迭代的代价函数里面包含了前面t-1次迭代的预测值)。xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行排序,然后保存block结构,后面的迭代中重复的使用这个结构,大大减小计算量。这个block结构也使得并行称为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
可并行的近似值方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以xgboost还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点
参考: GBDT为什么不能并行,XGBoost却可以 - 我们都是大好青年 - 博客园
2.11 介绍XGB对GBDT的提升,LGB对XGB的提升,以及既然使用了LGB为什么还要使用XGB
马东什么:gbdt、xgb、lgb、cat面经整理——from牛客
2.12 为什么Bagging降方差,Boosting降偏差
● Bagging是Bootstrap Aggregating 的简称,意思就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的variance. Bagging 比如Random Forest 这种先天并行的算法都有这个效果。
● Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。这种算法无法并行,例子比如Adaptive Boosting.
参考: 为什么说bagging是减少variance,而boosting是减少bias?
2.13 svm
讲了下SVM的推导:hard margin, soft margin, 几何距离、函数距离,最优化,拉格朗日乘子法,对偶问题,KKT条件,损失函数,惩罚系数等。
为什么SVM求解要求解他的对偶问题?
为了使原问题更好求解,因为原问题不好求解,引入对偶问题之后就更好求解了。面试官:哈哈哈,就是因为这个?好吧。其实,是因为对偶问题可以降低原问题的计算复杂度。
2.14 朴素贝叶斯公式、原理
参考: 机器学习 | 算法笔记- 朴素贝叶斯(Naive Bayesian)
(缺)2.15 你知道哪些时间序列预测,举一个例子,写出伪代码
2.16 介绍stacking的模型融合方式,以及模型融合为什么有效
参考: 模型融合:bagging、Boosting、Blending、Stacking_一花一世界 一叶一菩提-CSDN博客_bagging模型融合
stacking模型最后一层用于二分类的LR是用离散型的数据还是连续型的数据,有什么区别
(不懂)2.17 FM是否也能起到自动特征选择的作用,为什么?
参考: FM系列算法解读(FM+FFM+DeepFM)_数据喵的博客-CSDN博客_fm模型
2.18 非线性分类算法有哪些。
NN,在模型中加了非线性激活函数,能增加模型的拟合能力。
决策树、RF、GBDT、多层感知机、SVM(高斯核)等。
参考: 机器学习总结之–线性分类器与非线性分类器_机器学习&数据挖掘-CSDN博客_非线性分类器
2.19 如何判断一个算法是线性的还是非线性的。
1、判断一个模型是线性的,根据是:
影响一个自变量的参数(可能是多个)之间是不是线性关系。
2、线性模型的决策边界不能仅仅是(或者称作)直线,应该称作超平面(直线也是超平面的一个特例)),可以参考svm中的分离超平面。
参考:
机器学习中的线性和非线性判断_Vincent8080的博客-CSDN博客
线性与非线性的区别和关系 - blcblc - 博客园
线性与非线性的区分_有信念,才能走的更远-CSDN博客_非线性表达能力
(不懂)2.20 你知道隐马尔可夫模型(HMM)吗,大概介绍下
问了HMM的几个要素,即:初始概率,状态转移矩阵,发射矩阵,这三个要素,然后我主要讲了下这三个要素的运算过程,提及了一下维特比算法。
维特比算法其实是一种动态规划算法,动态规划算法通常用来解决什么问题,在HMM里是怎么使用的?
HMM和CRF有什么区别?
详细讲了HMM,但是CRF只有大概了解,就没仔细说。HMM的2个假设,正向反向算法(递推式推导),EM算法,维特比算法。CRF打破了两个假设,所以效果更好。(说的比较大概,也和面试官说了这部分不是很了解,只知道个大概)
2.21 sigmoid和softmax的区别和联系?
sigmoid将一个real value映射到(0,1)的区间,用来做二分类。 而 softmax 把一个 k 维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….),其中 bi 是一个 0~1 的常数,输出神经元之和为 1.0,所以相当于概率值,然后可以根据 bi 的概率大小来进行多分类的任务。
二分类问题时 sigmoid 和 softmax 是一样的,求的都是 cross entropy loss(交叉熵损失),而 softmax 可以用于多分类问题。softmax是sigmoid的扩展,因为,当类别数 k=2 时,softmax 回归退化为 logistic 回归。
2.22 分类一般用什么损失函数?交叉熵的公式是什么?
0-1损失函数
Hinge loss
cross-entropy loss(log loss)
指数损失函数(AdaBoost 算法常用的损失函数)
(缺)3、深度学习(DL)
3.1 方向导数和梯度
方向导数和梯度的关系?
为什么梯度在机器学习中的优化方法中有效?
方向导数本质上研究的是函数在某点处沿某特定方向上的变化率问题,梯度反映的是空间变量变化趋势的最大值和方向。
3.2 ResNet的结构特点以及解决的问题是什么?
3.3 BN 与LN
3.4 哪几种normlize的方法?
请着重介绍一种(BatchNormalization).这个方法在深度学习网络中有什么用?为什么可以加速模型收敛?
3.5 同时使用BN和dropout,该如何使用
3.6 分别解释分层采样和蓄水池采样
3.7 卷积操作汇总
普通卷积、DW、PW卷积定义
3.8 检测中能提升速度但不损失性能的操作有哪些
3.9 RPN过程中正类和负类的筛选阈值是什么
3.10 anchor的意义,anchor-free的意义
3.11 熟悉的模型
3.12 RNN如何防止梯度爆炸
3.13 LSTM
原理
大概描述了下它的三个门。
假设输入是维,LSTM的参数量为多少?
3.14 详细解释了弱模型特征的生成方法和思考角度
3.15 GAN模型和多帧模型以及loss设计
3.16 GAN和编解码器都是重建类型的网络,二者有什么区别?
在GAN中,两个网络相互竞争,最终达到一种平衡,即生成网络可以生成数据,而鉴别网络很难将其与实际图像区分开。
参考: CNN、RNN、GAN都是什么?终于有人讲明白了_大数据-CSDN博客
3.17 注意力机制
参考
醒了么:计算机视觉知识点总结
发布于 2022-01-20 22:44