AI工程师基础知识100题

100道AI基础面试题

1 、协方差和相关性有什么区别?

解析:

相关性是协方差的标准化格式。协方差本身很难比较。例如,如果我们计算工资(美元)和年龄(年)的协方差,因为这两个变量的衡量标准不同,我们将得到无法比较的不同协方差。

[En]

Correlation is the standardized format of covariance. The covariance itself is difficult to compare. For example, if we calculate the covariance of salary ($) and age (years), because the two variables have different measures, we will get different covariances that cannot be compared.

为了解决这个问题,我们计算相关性,得到一个介于-1和1之间的值,我们可以忽略它们的不同度量。

[En]

To solve this problem, we calculate the correlation to get a value between-1 and 1, and we can ignore their different metrics.

2 、xgboost如何寻找最优特征?是有放回还是无放回的呢?

解析:

xgboost在训练的过程中给出各个特征的增益评分,最大增益的特征会被选出来作为分裂依据, 从而记忆了每个特征对在模型训练时的重要性– 从根到叶子中间节点涉及某特征的次数作为该特征重要性排序. xgboost属于boosting集成学习方法, 样本是不放回的, 因而每轮计算样本不重复. 另一方面, xgboost支持子采样,也就是每轮计算可以不使用全部样本, 以减少过拟合. 进一步地, xgboost 还有列采样, 每轮计算按百分比随机采样一部分特征, 既提高计算速度又减少过拟合。

3 、谈谈判别式模型和生成式模型?

解析:

判别方法:由数据直接学习决策函数Y = f(X),或者由条件分布概率P(Y|X)作为预测模型,即判别模型。
生成方法:由数据学习联合概率密度分布函数P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型。
判别模型可以从生成模型中得到,但生成模型不能从判别模型中获得。

[En]

The discriminant model can be obtained from the generating model, but the generating model can not be obtained from the discriminant model.

常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场

常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机

4 、线性分类器与非线性分类器的区别以及优劣

解析:

线性和非线性是针对,模型参数和输入特征来讲的;比如输入x,模型y=ax+ax^2那么就是非线性模型,如果输入是x和X^2则模型是线性的。
线性分类器具有解释能力强、计算复杂度低的优点,但缺点是模型的拟合效果相对较弱。

[En]

The linear classifier has the advantages of good explanation and low computational complexity, but the deficiency is that the fitting effect of the model is relatively weak.

非线性分类器具有很强的拟合能力,但其不足之处在于在数据量不足、计算复杂度高、可解释性差的情况下容易过拟合。

[En]

The nonlinear classifier has strong fitting ability, but its deficiency is that it is easy to over-fit when the amount of data is insufficient, the computational complexity is high and the interpretability is not good.

常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机
SVM两种都有(看线性核还是高斯核)

5 、L1和L2正则先验分别服从什么分布

解析:

面试中遇到的,L1和L2正则先验分别服从什么分布,L1是拉普拉斯分布,L2是高斯分布。引用自:@齐同学

先验是优化的起点,先验的优点是在较小的数据集上可以有很好的泛化性能,当然这是在先验分布接近真实分布时获得的,从信息论的角度来看,在系统中加入正确的先验信息肯定会提高系统的性能。

[En]

A priori is the optimized starting line, and a priori advantage is that it can have good generalization performance in smaller data sets, of course, this is obtained when the prior distribution is close to the real distribution, from the point of view of information theory, adding correct a priori information to the system will certainly improve the performance of the system.

6 、简单介绍下logistics回归?

解析:

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。
例如,在实际工作中,我们可能会遇到以下问题:预测用户是否会点击特定的产品。

[En]

For example, in practical work, we may encounter the following problems: predicting whether a user will click on a specific product.

确定用户的性别

[En]

Determine the gender of the user

预测用户是否会购买给定类别

[En]

Predict whether users will buy a given category

判断一条评论是正面的还是负面的

[En]

Judge whether a comment is positive or negative

7 、说一下Adaboost,权值更新公式。当弱分类器是Gm时,每个样本的的权重是w1,w2…,请写出最终的决策公式。

解析:

给定一个训练数据集T={(x1,y1), (x2,y2)…(xN,yN)},其中实例,而实例空间,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。

8 、经常在网上搜索东西的朋友知道,当你不小心输入一个不存在的单词时,搜索引擎会提示你是不是要输入某一个正确的单词,比如当你在Google中输入”Julw”时,系统会猜测你的意图:是不是要搜索”July”,如下图所示:

这叫做拼写检查。

[En]

It’s called spell checking.

根据谷歌一员工写的文章显示,Google的拼写检查基于贝叶斯方法。请说说的你的理解,具体Google是怎么利用贝叶斯方法,实现”拼写检查”的功能。

解析:

用户输入一个单词时,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么”拼写检查”要做的事情就是:在发生w的情况下,试图推断出c。换言之:已知w,然后在若干个备选方案中,找出可能性最大的那个c,也就是求的最大值。

9 、为什么朴素贝叶斯如此”朴素”?

解析:

因为它假定所有特征在数据集中扮演同样重要和独立的角色。众所周知,这一假设在现实世界中是非常不真实的,所以说朴素贝叶斯真的是太天真了。

[En]

Because it assumes that all features play an equally important and independent role in the dataset. As we know, this assumption is very untrue in the real world, so it is really “naive” to say naive Bayes.

朴素贝叶斯模型(Naive Bayesian Model)的朴素(Naive)的含义是”很简单很天真”地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。

10 、请大致对比下plsa和LDA的区别

解析:

文档d产生主题z的概率,主题z产生单词w的概率都是两个固定的值。

11 、请详细说说EM算法

解析:

了解过EM算法的同学可能知道,EM算法是数据挖掘十大算法,可谓搞机器学习或数据挖掘的基本绕不开,但EM算法又像数据结构里的KMP算法,看似简单但又貌似不是一看就懂,想绕开却绕不开的又爱又恨,可能正在阅读此文的你感同身受。

12 、KNN中的K如何选取的?

解析:

关于什么是KNN,

KNN中的K值选取对K近邻算法的结果会产生重大影响。如李航博士的一书「统计学习方法」上所说:

如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,”学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是”学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;
如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。

K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。

在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选择最优的K值。

13 、防止过拟合的方法

解析:

过拟合的原因是算法的学习能力太强;一些假设(如样本的独立分布和相同分布)可能不成立;训练样本太少无法估计整个空间的分布。

[En]

The reason for over-fitting is that the learning ability of the algorithm is too strong; some assumptions (such as independent and identical distribution of samples) may not be true; too few training samples can not estimate the distribution of the whole space.

处理方法:

1 早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练

2 数据集扩增:原有数据增加、原有数据加随机噪声、重采样

3 正则化,正则化可以限制模型的复杂度

4 交叉验证

5 特征选择/特征降维

6 创建一个验证集是最基本的防止过拟合的方法。我们最终训练得到的模型目标是要在验证集上面有好的表现,而不训练集

14 、机器学习中,为何要经常对数据做归一化

解析:

机器学习模型被互联网行业广泛应用,如排序(参见:排序学习实践http://www.cnblogs.com/LBSer/p/4439542.html)、推荐、反作弊、定位(参见:基于朴素贝叶斯的定位算法http://www.cnblogs.com/LBSer/p/4020370.html)等。

一般来说,在做机器学习应用时,大部分时间都花在了特征处理上,其中关键一步是对特征数据进行归一化处理。

[En]

Generally speaking, when doing machine learning applications, most of the time is spent on feature processing, in which the key step is to normalize the feature data.

为什么要将其正常化?

[En]

Why should it be normalized?

很多学生不理解维基百科给出的解释:

[En]

Many students do not understand the explanation given by Wikipedia:

1)归一化后加快了梯度下降求最优解的速度;

2)归一化有可能提高精度。

让我们简单地扩展一下来解释这两点。

[En]

Let’s briefly expand to explain these two points.

15 、什么最小二乘法?

解析:

我们经常说:一般说来,平均而言。例如,平均而言,非吸烟者的健康状况好于吸烟者,并增加了一个词,因为总会有例外。吸烟总有一个特别的人,但由于经常锻炼,他的健康可能会比不吸烟的朋友更好。最小二乘的一个最简单的例子是算术平均值。

[En]

We often say in words: generally speaking, on average. For example, on average, the health of non-smokers is better than that of smokers, and the word “average” is added because there are always exceptions. There is always a special person who smokes, but his health may be better than that of his non-smoking friends because of regular exercise. One of the simplest examples of least squares is arithmetic mean.

最小二乘法(也称为最小二乘法)是一种数学优化技术。

[En]

The least square method (also known as the least square method) is a mathematical optimization technique.

它通过最小化误差的平方和来找到数据的最佳函数匹配。利用最小二乘法可以方便地获得未知数据,并使获得的数据与实际数据之间的平方和最小。

[En]

It finds the best function match of the data by minimizing the sum of the square of the error. The unknown data can be easily obtained by using the least square method, and the sum of squares between the obtained data and the actual data is minimized.

16 、梯度下降法找到的一定是下降最快的方向么?

解析:

梯度下降法并不一定是全局下降最快的方向,它只是目标函数在当前的点的切平面(当然高维问题不能叫平面)上下降最快的方向。在practical implementation中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到superlinear的收敛速度。梯度下降类的算法的收敛速度一般是linear甚至sublinear的(在某些带复杂约束的问题)。by林小溪(https://www.zhihu.com/question/30672734/answer/139689869)。

一般以下坡为例来解释坡度下降的原因。假设你在山顶,必须到达山脚下的湖(也就是山谷的最低部分)。但令人头疼的是,你的眼睛被蒙住了,你不知道你要去哪里。

[En]

In general, downhill is used as an example to explain the decline of the gradient. Suppose you are at the top of the mountain and must reach the lake at the foot of the mountain (that is, the lowest part of the valley). But the headache is that your eyes are blindfolded and you can’t tell where you’re going.

17 、简单说说贝叶斯定理

解析:

在引出贝叶斯定理之前,先学习几个定义: 条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作”在B条件下A的概率”。

比如,在同一个样本空间Ω中的事件或者子集A与B,如果随机从Ω中选出的一个元素属于B,那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率,所以:P(A|B) = |A∩B|/|B|,接着分子、分母都除以|Ω|得到

18 、怎么理解决策树、xgboost能处理缺失值?而有的模型(svm)对缺失值比较敏感。

解析:

本题解析来源:https://www.zhihu.com/question/58230411

首先,从两个角度解释你的困惑:

[En]

First of all, explain your confusion from two angles:

工具包自动处理数据缺失不代表具体的算法可以处理缺失项 对于有缺失的数据:以决策树为原型的模型优于依赖距离度量的模型 回答中也会介绍树模型,如随机森林(Random Forest)和xgboost如何处理缺失值。文章最后总结了在有缺失值时选择模型的小建议。

19 、标准化与归一化的区别?

解析:

简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。 归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为”单位向量”。

20 、随机森林如何处理缺失值?

解析:

解析一@Yieshah:

众所周知,机器学习中处理缺失值的方法有很多,然而,由题目”随机森林如何处理缺失值”可知,问题关键在于随机森林如何处理,所以先简要介绍下随机森林吧。 随机森林是由很多个决策树组成的,首先要建立Bootstrap数据集,即从原始的数据中有放回地随机选取一些,作为新的数据集,新数据集中会存在重复的数据,然后对每个数据集构造一个决策树,但是不是直接用所有的特征来建造决策树,而是对于每一步,都从中随机的选择一些特征,来构造决策树,这样我们就构建了多个决策树,组成随机森林,把数据输入各个决策树中,看一看每个决策树的判断结果,统计一下所有决策树的预测结果,Bagging整合结果,得到最终输出。 那么,随机森林中如何处理缺失值呢?根据随机森林创建和训练的特点,随机森林对缺失值的处理还是比较特殊的。

首先,给缺失值预设一些估计值,比如数值型特征,选择其余数据的中位数或众数作为当前的估计值,然后,根据估计的数值,建立随机森林,把所有的数据放进随机森林里面跑一遍。记录每一组数据在决策树中一步一步分类的路径,然后来判断哪组数据和缺失数据路径最相似,引入一个相似度矩阵,来记录数据之间的相似度,比如有N组数据,相似度矩阵大小就是N*N,如果缺失值是类别变量,通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值,如此迭代,直到得到稳定的估计值。 其实,该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测,先计算缺失特征与其他特征的相似度,再加权得到缺失值的估计,而随机森林中计算相似度的方法(数据在决策树中一步一步分类的路径)乃其独特之处。

解析二

方法一(na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。

方法二(rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次,这个补缺失值的思想和KNN有些类似12。

21 、随机森林如何评估特征重要性?

解析:

衡量变量重要性的方法有两种,Decrease GINI 和Decrease Accuracy:

1) Decrease GINI: 对于回归问题,直接使用argmax(VarVarLeftVarRight)作为评判标准,即当前节点训练集的方差Var减去左节点的方差VarLeft和右节点的方差VarRight。

2) Decrease Accuracy:对于一棵树Tb(x),我们用OOB样本可以得到测试误差1;然后随机改变OOB样本的第j列:保持其他列不变,对第j列进行随机的上下置换,得到误差2。至此,我们可以用误差1-误差2来刻画变量j的重要性。基本思想就是,如果一个变量j足够重要,那么改变它会极大的增加测试误差;反之,如果改变它测试误差没有增大,则说明该变量不是那么的重要。

22 、优化Kmeans?

解析:

使用kd树或者ball tree 将所有的观测实例构建成一颗kd树,之前每个聚类中心都是需要和每个观测点做依次距离计算,现在这些聚类中心根据kd树只需要计算附近的一个局部区域即可。

23 、KMeans初始类簇中心点的选取。

解析:

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。
1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心
2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
4. 重复2和3直到k个聚类中心被选出来
5. 利用这k个初始的聚类中心来运行标准的k-means算法

24 、解释对偶的概念。

解析:

一个优化问题可以从两个角度进行考察,一个是primal 问题,一个是dual 问题,就是对偶问题,一般情况下对偶问题给出主问题最优值的下界,在强对偶性成立的情况下由对偶问题可以得到主问题的最优下界,对偶问题是凸优化问题,可以进行较好的求解,SVM中就是将primal问题转换为dual问题进行求解,从而进一步引入核函数的思想。

25 、如何进行特征选择?

解析:

  1. 去除方差较小的特征

  2. 正则化。1正则化能够生成稀疏的模型。L2正则化的表现更加稳定,由于有用的特征往往对应系数非零。

  3. 随机森林,对于分类问题,通常采用基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。一般不需要feature engineering、调参等繁琐的步骤。

它的两个主要问题

[En]

Its two main problems

1是重要的特征有可能得分很低(关联特征问题),

2是这种方法对特征变量类别多的特征越有利(偏向问题)。

  1. 稳定性选择。

是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。

26 、衡量分类器的好坏?

解析:

这里首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四种(可以画一个表格)。

几个常用的指标:

[En]

Several commonly used indicators:

精度precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量)

召回率recall = TP/(TP+FN) = TP/ P

F1值:2/F1 = 1/recall + 1/precision

ROC曲线:ROC空间是一个以伪阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true positive rate)为Y轴的二维坐标系所代表的平面。其中真阳率TPR = TP / P = recall, 伪阳率FPR = FP / N

27 、机器学习和统计里面的auc的物理意义是啥?

解析:

auc是评价模型好坏的常见指标之一,本题解析来自:https://www.zhihu.com/question/39840928

分三部分,第一部分是对AUC的基本介绍,包括AUC的定义,解释,以及算法和代码,第二部分用逻辑回归作为例子来说明如何通过直接优化AUC来训练,第三部分,内容完全由@李大猫原创——如何根据auc值来计算真正的类别,换句话说,就是对auc的反向工程。

1、什么是AUC?AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如kaggle,那你会发现AUC和logloss基本是最常见的模型评价指标。

28 、数据预处理。

解析:

1.缺失值,填充缺失值fillna:

i. 离散:None,

ii. 连续:均值。

iii. 缺失值太多,则直接去除该列

  1. 连续值:离散化。有的模型(如决策树)需要离散值

  2. 对定量特征二值化。核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。如图像操作

  3. 皮尔逊相关系数,去除高度相关的列

29 、观察增益gain, alpha和gamma越大,增益越小?

解析:

xgboost寻找分割点的标准是最大化gain. 考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中计算Gain按最大值找出最佳的分割点。

它的计算公式分为四项, 可以由正则化项参数调整(lamda为叶子权重平方和的系数, gama为叶子数量):

第一种是假设被分割的左子节点的权值,第二种是右子节点,第三种是不分割的整体分数,最后一种是引入节点的复杂度损失。

[En]

The first is to assume the weight score of the segmented left child, the second is the right child, the third is the undivided overall score, and the last is the complexity loss of introducing a node.

由公式可知, gama越大gain越小, lamda越大, gain可能小也可能大.

原问题是alpha而不是lambda, 这里paper上没有提到, xgboost实现上有这个参数. 上面是我从paper上理解的答案,下面是搜索到的:
https://zhidao.baidu.com/question/2121727290086699747.html?fr=iks&word=xgboost+lamda&ie=gbk
lambda[默认1]权重的L2正则化项。(和Ridge regression类似)。

这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。

11、alpha[默认1]权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。
gamma[默认0]在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。
引用自@AntZ

30 、什麽造成梯度消失问题?

解析:

Yes you should understand backdrop-Andrej Karpathy

How does the ReLu solve the vanishing gradient problem?

神经网络的训练中,通过改变神经元的权重,使网络的输出值尽可能逼近标签以降低误差值,训练普遍使用BP算法,核心思想是,计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,进行权值的迭代。

梯度的消失会导致权值更新缓慢,增加模型训练的难度。梯度消失的原因之一是,许多激活函数将输出值压缩在一个很小的区间内,在激活函数两端的较大定义域中,梯度为0,导致学习停止。

[En]

The disappearance of gradient will result in slow updating of weights and increase the difficulty of model training. One of the reasons for the disappearance of the gradient is that many activation functions squeeze the output value in a very small interval, and the gradient is 0 in the larger definition domain at both ends of the activation function, resulting in the cessation of learning.

31 、到底什么是特征工程?

解析:

首先,大多数机器学习从业者在公司做什么?不是做数学推导,也不是发明高端算法,而是做特征工程。

[En]

First of all, what do most machine learning practitioners do in the company? Not to do mathematical derivation, nor to invent high-end algorithms, but to do feature engineering.

34 、数据不平衡问题

解析:

这主要是因为数据分布不均。解决方案如下:

[En]

This is mainly due to the uneven distribution of data. The solution is as follows:

采样,对小样本添加噪声采样,对大样本进行下采样

[En]

Sampling, adding noise sampling to small samples and downsampling to large samples

数据生成,使用已知样本生成新样本

[En]

Data generation, using known samples to generate new samples

进行特殊的加权,如在Adaboost中或者SVM中
采用对不平衡数据集不敏感的算法

[En]

Adopt an algorithm that is insensitive to unbalanced data sets

改变评价标准:用AUC/ROC来进行评价
采用Bagging/Boosting/ensemble等方法

在设计模型时考虑数据的先验分布

[En]

Consider the prior distribution of data when designing the model

35 、特征比数据量还大时,选择什么样的分类器?

解析:

线性分类器,因为当维度较高时,数据在维度空间中通常是稀疏的,并且很可能是线性可分的。

[En]

Linear classifier, because when the dimension is high, the data is generally sparse in the dimension space and is likely to be linearly separable.

来源:

http://blog.sina.com.cn/s/blog_178bcad000102x70r.html

36 、常见的分类算法有哪些?他们各自的优缺点是什么?

解析:

贝叶斯分类法

优点:

1)所需估计的参数少,对于缺失数据不敏感。

2)有着坚实的数学基础,以及稳定的分类效率。

缺点:

1)假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。

2)需要知道先验概率。

3)分类决策存在错误率。

决策树

优点:

1)不需要任何领域知识或参数假设。

2)适合高维数据。

3)简单易于理解。

4)短时间内处理大量数据,得到可行且效果较好的结果。

5)能够同时处理数据型和常规性属性。

缺点:

1)对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。

2)易于过拟合。

3)忽略属性之间的相关性。

4)不支持在线学习。

支持向量机

优点:

1)可以解决小样本下机器学习的问题。

2)提高泛化性能。

3)可以解决高维、非线性问题。超高维文本分类仍受欢迎。

4)避免神经网络结构选择和局部极小的问题。

缺点:

1)对缺失数据敏感。

2)内存消耗大,难以解释。

3)运行和调差略烦人。

K近邻

优点:

1)思想简单,理论成熟,既可以用来做分类也可以用来做回归;

2)可用于非线性分类;

3)训练时间复杂度为O(n);

4)准确度高,对数据没有假设,对outlier不敏感;

缺点:

1)计算量太大

2)对于样本分类不均衡的问题,会产生误判。

3)需要大量的内存。

4)输出的可解释性不强。

Logistic回归

优点:

1)速度快。

2)简单易于理解,直接看到各个特征的权重。

3)能容易地更新模型吸收新的数据。

4)如果想要一个概率框架,动态调整分类阀值。

缺点:

特征处理是复杂的。需要标准化和更多的特征工程。

[En]

Feature processing is complex. Normalization and more feature engineering are needed.

神经网络

优点:

1)分类准确率高。

2)并行处理能力强。

3)分布式存储和学习能力强。

4)鲁棒性较强,不易受噪声影响。

缺点:

1)需要大量参数(网络拓扑、阀值、阈值)。

2)结果难以解释。

3)训练时间过长。

Adaboost

优点:

1)adaboost是一种有很高精度的分类器。

2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架。

3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。

4)简单,不用做特征筛选。

5)不用担心overfitting。

缺点:
对outlier比较敏感

37 、常见的监督学习算法有哪些?

解析:

感知机、svm、人工神经网络、决策树、逻辑回归

38 、说说常见的优化算法及其优缺点?

解析:

温馨提示:在回答面试官的问题时,你倾向于大刀阔斧地回答问题,这样你就不会陷入一场小的技术淘汰赛,很容易自杀。简言之

[En]

Warm Tip: when answering the interviewer’s questions, you tend to answer the questions in a big way, so you don’t get stuck in a small technical knockout, and it’s easy to kill yourself. Make a long story short

1)随机梯度下降 优点:可以一定程度上解决局部最优解的问题 缺点:收敛速度较慢

2)批量梯度下降 优点:容易陷入局部最优解 缺点:收敛速度较快

3)mini_batch梯度下降 综合随机梯度下降和批量梯度下降的优缺点,提取的一个中和的方法。

4)牛顿法 牛顿法在迭代的时候,需要计算Hessian矩阵,当维度较高的时候,计算 Hessian矩阵比较困难。

5)拟牛顿法 拟牛顿法是为了改进牛顿法在迭代过程中,计算Hessian矩阵而提取的算法,它采用的方式是通过逼近Hessian的方式来进行求解。

39 、特征向量的归一化方法有哪些?

解析:

线性函数转换,表达式如下:y=(x-MinValue)/(MaxValue-MinValue)

对数函数转换,表达式如下:y=log10 (x)

反余切函数转换 ,表达式如下:y=arctan(x)*2/PI

减去均值,除以方差:y=(x-means)/ variance

40 、RF与GBDT之间的区别与联系?

解析:

1)相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定。

2)不同点:

a 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成

b 组成随机森林的树可以并行生成,而GBDT是串行生成

c 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和

d 随机森林对异常值不敏感,而GBDT对异常值比较敏感

e 随机森林是减少模型的方差,而GBDT是减少模型的偏差f 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化

42 、请比较下EM算法、HMM、CRF

解析:

这三者放在一起是不合适的,但它们是相互关联的,所以我们把它们放在这里。注意算法的思想。

[En]

It is not appropriate to put these three together, but they are related to each other, so we put them here together. Pay attention to the idea of the algorithm.

(1)EM算法

EM算法是用于含有隐变量模型的极大似然估计或者极大后验估计,有两步组成:

E步,求期望(expectation);

M步,求极大(maxmization)。

本质上EM算法还是一个迭代算法,通过不断用上一代参数对隐变量的估计来对当前变量进行计算,直到收敛。

注意:EM算法是对初值敏感的,而且EM是不断求解下界的极大化逼近求解对数似然函数的极大化的算法,也就是说EM算法不能保证找到全局最优值。对于EM的导出方法也应该掌握。

(2)HMM算法

隐马尔可夫模型是用于标注问题的生成模型。有几个参数(π,A,B):初始状态概率向量π,状态转移矩阵A,观测概率矩阵B。称为马尔科夫模型的三要素。

马尔科夫三个基本问题: 概率计算问题:给定模型和观测序列,计算模型下观测序列输出的概率。–》前向后向算法 学习问题:已知观测序列,估计模型参数,即用极大似然估计来估计参数。–》Baum-Welch(也就是EM算法)和极大似然估计。

预测问题:知道模型和观测序列,求出相应的状态序列。近似算法(贪婪算法)和维特比特算法(寻找最优路径的动态规划)

[En]

Prediction problem: know the model and observation sequence, solve the corresponding state sequence. Approximate algorithm (greedy algorithm) and Viterbit algorithm (dynamic programming to find the optimal path)

(3)条件随机场CRF

给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布密度。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。 之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。

(4)HMM和CRF对比

根本原因在于两种基本思想的不同,一是生成模型,二是判别模型,这就导致了不同的求解方法。

[En]

The fundamental reason lies in the different basic ideas, one is the generating model, the other is the discriminant model, which leads to the different ways of solving.

43 、带核的SVM为什么能分类非线性问题?

解析:

核函数的本质是两个函数的內积,通过核函数将其隐射到高维空间,在高维空间非线性问题转化为线性问题, SVM得到超平面是高维空间的线性分类平面, 如图:

其分类结果也视为低维空间的非线性分类结果, 因而带核的SVM就能分类非线性问题。

44 、请说说常用核函数及核函数的条件

解析:

我们通常说的核函数指的是正定和函数,其充要条件是对于任意的x属于X,要求K对应的Gram矩阵要是半正定矩阵。RBF核径向基,这类函数取值依赖于特定点间的距离,所以拉普拉斯核其实也是径向基核。SVM关键是选取核函数的类型,常用核函数主要有线性内核,多项式内核,径向基内核(RBF),sigmoid核。

线性核函数

线性核主要用于线性可分的情况,可以看出从特征空间到输入空间的维度相同,其参数少且速度快,对于线性可分的数据分类效果非常理想。所以我们通常先尝试用线性核函数来做分类,看看效果如何,如果不是,再换一个多项式核函数。

[En]

Linear kernel is mainly used in the case of linear separability, we can see that the dimension from the feature space to the input space is the same, its parameter is less and the speed is fast, and the classification effect is very ideal for linearly separable data. so we usually first try to use the linear kernel function to do the classification, to see what the effect is, if not, then change another polynomial kernel function.

多项式核函数

可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。 高斯(RBF)核函数

高斯径向基函数

[En]

Gaussian radial basis function

它是一种具有强局部性的核函数,可以将样本映射到高维空间。这种核函数是应用最广泛的,无论是大样本还是小样本都有较好的性能。而且,与多项式核函数相比,它的参数更少,所以在大多数情况下,当我们不知道使用什么核函数时,高斯核函数是首选的。

[En]

It is a kind of kernel function with strong locality, which can map a sample to a higher dimensional space. This kernel function is the most widely used, no matter the large sample or the small sample has better performance. Moreover, it has fewer parameters compared with the polynomial kernel function, so in most cases, when we do not know what kernel function to use, the Gaussian kernel function is preferred.

sigmoid核函数

采用sigmoid核函数,支持向量机实现的就是一种多层神经网络。

因此,在选择核函数时,如果我们对自己的数据有先验知识,我们会使用先验知识来选择符合数据分布的核函数;如果不知道,我们通常会使用交叉验证的方法来尝试不同的核函数,误差最小的核函数就是效果最好的核函数,也可以将多个核函数组合成一个混合核函数。

[En]

Therefore, when choosing a kernel function, if we have a priori knowledge of our data, we use a priori to select the kernel function that conforms to the data distribution; if we do not know, we usually use the method of cross-validation to try different kernel functions, and the kernel function with the lowest error is the kernel function with the best effect, or we can combine multiple kernel functions to form a mixed kernel function.

在吴恩达的课上,也曾经给出过一系列的选择核函数的方法: 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM; 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数; 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

45 、请具体说说Boosting和Bagging的区别

解析:

(1)Bagging之随机森林

随机森林改变了决策树容易过拟合的问题,主要通过两种操作进行优化:

[En]

Random forests change the problem that decision trees are easy to over-fit, which is mainly optimized by two operations:

1)Boostrap从袋内有放回的抽取样本值

2)每次随机抽取一定数量的特征(通常为sqr(n))。

分类问题:采用Bagging投票的方式选择类别频次最高的

回归问题:直接取每棵树的结果的平均值。

[En]

Regression problem: take the average of the results of each tree directly.

常见参数 误差分析 优点 缺点

1、树最大深度

2、树的个数

3、节点上的最小样本数

4、特征数(sqr(n)) oob(out-of-bag)
以每棵树的未采样样本为预测样本,统计误差为错误率,可并行计算。

[En]

Taking the unsampled samples of each tree as the prediction sample statistical error as the error rate can be calculated in parallel.

不需要选择功能

[En]

No need for feature selection

功能的重要性可以总结出来。

[En]

The importance of features can be summarized.

可以处理丢失的数据

[En]

Can handle missing data

不需要额外的设计。测试集无法输出连续的回归结果。

[En]

No additional design is required. The test set cannot output continuous results on regression.

(2)Boosting之AdaBoost
Boosting的本质实际上是一个加法模型,通过改变训练样本权重学习多个分类器并进行一些线性组合。而Adaboost就是加法模型+指数损失函数+前项分布算法。Adaboost就是从弱分类器出发反复训练,在其中不断调整数据权重或者是概率分布,同时提高前一轮被弱分类器误分的样本的权值。最后用分类器进行投票表决(但是分类器的重要性不同)。

(3)Boosting之GBDT
将基分类器变成二叉树,回归用二叉回归树,分类用二叉分类树。和上面的Adaboost相比,回归树的损失函数为平方损失,同样可以用指数损失函数定义分类问题。但是对于一般损失函数怎么计算呢?GBDT(梯度提升决策树)是为了解决一般损失函数的优化问题,方法是用损失函数的负梯度在当前模型的值来模拟回归问题中残差的近似值。
注:由于GBDT很容易出现过拟合的问题,所以推荐的GBDT深度不要超过6,而随机森林可以在15以上。

(4)Boosting之Xgboost
该工具具有以下主要功能:

[En]

This tool has the following main features:

支持线性分类器

[En]

Support linear classifier

损失函数可以定制,并且可以使用二阶偏导数。

[En]

The loss function can be customized and the second order partial derivative can be used.

加入了正则化项:叶节点数、每个叶节点输出score的L2-norm
支持特征抽样
在某些情况下支持并行,只在建树阶段使用,每个节点都可以并行寻找分裂的特征。

[En]

Parallelism is supported under certain circumstances, which is only used in the stage of tree building, and each node can look for split features in parallel.

46 、逻辑回归相关问题

解析:

(1)公式推导一定要会

(2)逻辑回归的基本概念

这个最好从广义线性模型的角度分析,逻辑回归是假设y服从Bernoulli分布。

(3)L1-norm和L2-norm

其实稀疏的根本还是在于L0-norm也就是直接统计参数不为0的个数作为规则项,但实际上却不好执行于是引入了L1-norm;而L1norm本质上是假设参数先验是服从Laplace分布的,而L2-norm是假设参数先验为Gaussian分布,我们在网上看到的通常用图像来解答这个问题的原理就在这。

但是L1-norm的求解比较困难,可以用坐标轴下降法或是最小角回归法求解。

(4)LR和SVM对比

首先,LR和SVM最大的区别在于损失函数的选择,LR的损失函数为Log损失(或者说是逻辑损失都可以)、而SVM的损失函数为hinge loss。

其次,两者都是线性模型。

[En]

Secondly, both are linear models.

最后,SVM只考虑支持向量(也就是和分类相关的少数点)

(5)LR和随机森林区别

随机森林等树算法都是非线性的,而LR是线性的。LR更侧重全局优化,而树模型主要是局部的优化。

(6)常用的优化方法

逻辑回归本身是可以用公式求解的,但是因为需要求逆的复杂度太高,所以才引入了梯度下降算法。 一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。

二阶方法:

牛顿法、拟牛顿法:

[En]

Newton method, quasi-Newton method:

这里详细说一下牛顿法的基本原理和牛顿法的应用方式。牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵)。

缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。

拟牛顿法: 不用二阶偏导而是构造出Hessian矩阵的近似正定对称矩阵的方法称为拟牛顿法。拟牛顿法的思路就是用一个特别的表达形式来模拟Hessian矩阵或者是他的逆使得表达式满足拟牛顿条件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、L-BFGS(可以减少BFGS所需的存储空间)。

47 、什么是共线性, 跟过拟合有什么关联?

解析:

共线性:在多元线性回归中,由于变量之间的高度相关性,回归估计不准确。共线性可能会导致冗余和过度匹配。

[En]

Collinearity: in multivariate linear regression, the regression estimation is inaccurate because of the high correlation between variables. Collinearity can lead to redundancy and overfitting.

解决方案:排除变量的相关性/增加权重正则化。

[En]

Solution: exclude the correlation of variables / add weight regularization.

https://www.zhihu.com/question/41233373/answer/145404190

48 、机器学习中,有哪些特征选择的工程方法?

解析:

本题解析来源:@jasonfreak,链接:http://www.cnblogs.com/jasonfreak/p/5448385.html

1 特征工程是什么?

2 数据预处理

2.1 无量纲化

2.1.1 标准化

2.1.2 区间缩放法

2.1.3 标准化与归一化的区别

2.2 对定量特征二值化

2.3 对定性特征哑编码

2.4 缺失值计算

2.5 数据变换

2.6 回顾

3 特征选择

3.1 Filter

3.1.1 方差选择法

3.1.2 相关系数法

3.1.3 卡方检验

3.1.4 互信息法

3.2 Wrapper

3.2.1 递归特征消除法

3.3 Embedded

3.3.1 基于惩罚项的特征选择法

3.3.2 基于树模型的特征选择法

3.4 回顾

4 降维

4.1 主成分分析法(PCA)

4.2 线性判别分析法(LDA)

4.3 回顾5 总结6 参考资料

49 、用贝叶斯机率说明Dropout的原理

解析:

回想一下使用Bagging学习,我们定义k 个不同的模型,从训练集有替换采样 构造k 个不同的数据集,然后在训练集上训练模型i。

Dropout的目标是在指数 级数量的神经网络上近似这个过程。Dropout训练与Bagging训练不太一样。在Bagging的情况下,所有模型是独立 的。

在Dropout的情况下,模型是共享参数的,其中每个模型继承的父神经网络参 数的不同子集。参数共享使得在有限可用的内存下代表指数数量的模型变得可能。 在Bagging的情况下,每一个模型在其相应训练集上训练到收敛。 在Dropout的情况下,通常大部分模型都没有显式地被训练,通常该模型很大,以致到宇宙毁灭都不 能采样所有可能的子网络。取而代之的是,可能的子网络的一小部分训练单个步骤,参数共享导致剩余的子网络能有好的参数设定。

50 、对于维度极低的特征,选择线性还是非线性分类器?

解析:

在非线性分类器中,低维空间可能会有多个特征同时运行,导致线性不可分。

[En]

Nonlinear classifier, low-dimensional space may have many features run together, resulting in linear inseparability.

1.如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM

  1. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel

  2. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况。

51 、请问怎么处理特征向量的缺失值

解析:

一方面,缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。

另一方面,缺失值较少,其余缺失值均在10%以下。我们可以通过许多方式来处理它们:

[En]

On the other hand, there are fewer missing values, and the rest of the missing values are less than 10%. We can deal with them in many ways:

1) 把NaN直接作为一个特征,假设用0表示;

2) 用均值填充;

3) 用随机森林等算法预测填充。

52 、SVM、LR、决策树的对比。

解析:

模型复杂度:SVM支持核函数,可处理线性非线性问题;LR模型简单,训练速度快,适合处理线性问题;决策树容易过拟合,需要进行剪枝

损失函数:SVM hinge loss; LR L2正则化; adaboost 指数损失

数据敏感度:SVM添加容忍度对outlier不敏感,只关心支持向量,且需要先做归一化; LR对远点敏感

数据量:数据量大就用LR,数据量小且特征少就用SVM非线性核

53 、什么是ill-condition病态问题?

解析:

经过模型的训练,对测试样本稍加修改就会得到截然不同的结果,即病态问题,模型对未知数据的预测能力很差,即泛化误差较大。

[En]

After the training of the model, a little modification of the test samples will get very different results, that is, the ill-conditioned problem, the prediction ability of the model to unknown data is very poor, that is, the generalization error is large.

54 、简述KNN最近邻分类算法的过程?

解析:

  1. 计算测试样本和训练样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);

  2. 对上面所有的距离值进行排序;

  3. 选前k 个最小距离的样本;

  4. 根据这k 个样本的标签进行投票,得到最后的分类类别;

55 、常用的聚类划分方式有哪些?列举代表算法。

解析:

  1. 基于划分的聚类:K-means,k-medoids,CLARANS。

  2. 基于层次的聚类:AGNES(自底向上),DIANA(自上向下)。

  3. 基于密度的聚类:DBSACN,OPTICS,BIRCH(CF-Tree),CURE。

  4. 基于网格的方法:STING,WaveCluster。

  5. 基于模型的聚类:EM,SOM,COBWEB。

56 、什么是偏差与方差?

解析:

泛化误差可以分解成偏差的平方加上方差加上噪声。偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力,方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响,噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问题本身的难度。偏差和方差一般称为bias和variance,一般训练程度越强,偏差越小,方差越大,泛化误差一般在中间有一个最小值,如果偏差较大,方差较小,此时一般称为欠拟合,而偏差较小,方差较大称为过拟合。

57 、采用EM 算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?

解析:

用EM算法求解的模型一般有GMM或者协同过滤,k-means其实也属于EM。EM算法一定会收敛,但是可能收敛到局部最优。由于求和的项数将随着隐变量的数目指数上升,会给梯度计算带来麻烦。

58 、xgboost怎么给特征评分?

解析:

在训练的过程中,通过Gini指数选择分离点的特征,一个特征被选中的次数越多,那么该特征评分越高。

[python] # feature importance

print(model.feature_importances_)

plot pyplot.bar(range(len(model.feature_importances_)), model.feature_importances_)

pyplot.show() ==========

plot feature importance

plot_importance(model)

pyplot.show()

59 、什么是OOB?随机森林中OOB是如何计算的,它有什么优缺点?

解析:

bagging方法中Bootstrap每次约有1/3的样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立,把这1/3的数据称为袋外数据oob(out of bag),它可以用于取代测试集误差估计方法。

袋外数据(oob)误差的计算方法如下:

对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为O,用这O个袋外数据作为输入,带进之前已经生成的随机森林分类器,分类器会给出O个数据相应的分类,因为这O条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进行比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小=X/O;这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。

60 、推导朴素贝叶斯分类P(c|d),文档d(由若干word 组成),求该文档属于类别c 的概率, 并说明公式中哪些概率可以利用训练集计算得到

解析:

根据贝叶斯公式P(c|d)=(P(c)P(d|c)/P(d))

这里,分母P(d)不必计算,因为对于每个类都是相等的。 分子中,P(c)是每个类别的先验概率,可以从训练集直接统计,P(d|c)根据独立性假设,可以写成如下P(d|c)=¥P(wi|c)(¥符号表示对d中每个词i在c类下概率的连乘),P(wi|c)也可以从训练集直接统计得到。 至此,对未知类别的d进行分类时,类别为c=argmaxP(c)¥P(wi|c)。

61 、请写出你对VC维的理解和认识

解析:

VC维是模型的复杂程度,模型假设空间越大,VC维越高。某种程度上说,VC维给机器学习可学性提供了理论支撑。

1.测试集合的loss是否和训练集合的loss接近?VC维越小,理论越接近,越不容易overfitting。

2.训练集合的loss是否足够小?VC维越大,loss理论越小,越不容易underfitting。

我们对模型添加的正则项可以对模型复杂度(VC维)进行控制,平衡这两个部分。

62 、kmeans聚类中,如何确定k的大小

解析:

这是一个在面试中经常被问到的老生常谈的问题。

[En]

This is a clich é classic question that is often asked in an interview.

K-均值聚类算法首先会随机确定k个中心位置,然后将各个数据项分配给最临近的中心点。待分配完成之后,聚类中心就会移到分配给该聚类的所有节点的平均位置处,然后整个分配过程重新开始。这一过程会一直重复下去,直到分配过程不再产出变化为止。

63 、请用Python实现下线性回归,并思考下更高效的实现方式

解析:

在数学中,线性规划(Linear Programming,简称LP)问题是目标函数和约束条件都是线性的最优化问题。

线性规划是最优化问题的重要研究领域之一。运筹学中的许多实际问题都可以用线性规划来表示。线性规划的一些特殊情况,如网络流量、多商品流量等,被认为是非常重要的,对其算法也有很多专门的研究。许多其他类型的优化算法都可以分解为线性规划的子问题,然后得到解。

[En]

Linear programming is one of the important fields in optimization problems. Many practical problems in operational research can be expressed by linear programming. Some special cases of linear programming, such as network flow, multi-commodity traffic and so on, are considered to be very important, and there are a lot of special studies on its algorithms. Many other kinds of optimization algorithms can be divided into linear programming subproblems and then get the solution.

在历史上,许多源于线性规划的概念启发了最优化理论的核心概念,如对偶性、分解、凸性等的重要性和泛化。同样,在微观经济学和企业管理领域,线性规划被广泛应用于解决生产过程的收益最大化或成本最小化等问题。

[En]

In history, many concepts derived from linear programming have inspired the core concepts of optimization theory, such as the importance and generalization of “duality”, “decomposition”, “convexity” and so on. Similarly, in the field of microeconomics and business management, linear programming is widely used to solve problems such as income maximization or cost minimization of the production process.

64 、给你一个有1000列和1百万行的训练数据集。这个数据集是基于分类问题的。 经理要求你来降低该数据集的维度以减少模型计算时间。你的机器内存有限。你会怎么做?(你可以自由做各种实际操作假设)

解析:

答:你的面试官应该很清楚,用有限的内存处理高维数据是困难的。以下是您可以使用的处理方法:

[En]

A: your interviewer should be well aware that it is difficult to process high-dimensional data with limited memory. Here are the processing methods you can use:

1.由于我们的RAM很小,首先要关闭机器上正在运行的其他程序,包括网页浏览器,以确保大部分内存可以使用。

2.我们可以随机采样数据集。这意味着,我们可以创建一个较小的数据集,比如有1000个变量和30万行,然后做计算。

3.为了降低维度,我们可以把数值变量和分类变量分开,同时删掉相关联的变量。对于数值变量,我们将使用相关性分析。对于分类变量,我们可以用卡方检验。

4.另外,我们还可以使用PCA(主成分分析),并挑选可以解释在数据集中有最大偏差的成分。

5.利用在线学习算法,如VowpalWabbit(在Python中可用)是一个可能的选择。

6.利用Stochastic GradientDescent(随机梯度下降)法建立线性模型也很有帮助。

7.我们也可以用我们对业务的理解来估计各预测变量对响应变量的影响大小。但是,这是一个主观的方法,如果没有找出有用的预测变量可能会导致信息的显著丢失。

65 、问2:在PCA中有必要做旋转变换吗? 如果有必要,为什么?如果你没有旋转变换那些成分,会发生什么情况?

解析:

答:是的,旋转(正交)是必要的,因为它把由主成分捕获的方差之间的差异最大化。这使得主成分更容易解释。但是不要忘记我们做PCA的目的是选择更少的主成分(与特征变量个数相较而言),那些选上的主成分能够解释数据集中最大方差。

通过做旋转,各主成分的相对位置不发生变化,它只能改变点的实际坐标。如果我们没有旋转主成分,PCA的效果会减弱,那样我们会不得不选择更多个主成分来解释数据集里的方差。

注意:对PCA(主成分分析)需要了解更多。

66 、给你一个数据集,这个数据集有缺失值,且这些缺失值分布在离中值有1个标准偏差的范围内。百分之多少的数据不会受到影响?为什么?

解析:

答:这个问题给了你足够的提示来开始思考!由于数据分布在中值附近,让我们假设这是一个正态分布。

[En]

A: this question gives you enough hints to start thinking! Since the data is distributed near the median, let’s assume that this is a normal distribution.

我们知道,在正态分布中,大约68%的数据在平均值(或模式,中位数)的标准差范围内,因此其余32%的数据不受影响。

[En]

We know that in a normal distribution, about 68% of the data is within the standard deviation of the average (or mode, median), so that the remaining 32% of the data is not affected.

因此,约有32%的数据将不受到缺失值的影响。

67 、给你一个癌症检测的数据集。你已经建好了分类模型,取得了96%的精度。为什么你还是不满意你的模型性能?你可以做些什么呢?

解析:

答:如果你分析了足够多的数据集,你应该能够判断出癌症检测结果是不平衡的。在不平衡的数据集中,准确性不应被用作模型的衡量标准,因为96%(给定)可能只正确预测大多数类别,但我们对少数类别(4%)感兴趣,即那些被诊断为癌症的人。

[En]

A: if you have analyzed enough data sets, you should be able to tell that the cancer test results are unbalanced. In unbalanced data sets, accuracy should not be used as a measure of the model, because 96% (given) may only correctly predict most categories, but we are interested in those few categories (4%), those who have been diagnosed with cancer.

因此,为了评价模型的性能,应该用灵敏度(真阳性率),特异性(真阴性率),F值用来确定这个分类器的”聪明”程度。如果在那4%的数据上表现不好,我们可以采取以下步骤:

1.我们可以使用欠采样、过采样或SMOTE让数据平衡。

2.我们可以通过概率验证和利用AUC-ROC曲线找到最佳阀值来调整预测阀值。

3.我们可以给分类分配权重,那样较少的分类获得较大的权重。

4.我们还可以使用异常检测。

注:了解有关失衡分类的更多信息

[En]

Note: learn more about the classification of imbalances

68 、解释朴素贝叶斯算法里面的先验概率、似然估计和边际似然估计?

解析:

先验概率是因变量(二分法)在数据集中的比例。这是在没有任何进一步信息的情况下,您可以对分类做出的最接近的猜测。

[En]

A priori probability is the proportion of dependent variables (dichotomy) in the data set. This is the closest guess you can make about the classification when you don’t have any further information.

例如,在数据集中,因变量是二进制的(1和0)。例如,1(垃圾邮件)的比例为70%,0(非垃圾邮件)的比例为30%。因此,我们可以估计,任何新的电子邮件都有70%的机会被归类为垃圾邮件。

[En]

For example, in a dataset, dependent variables are binary (1 and 0). For example, the proportion of 1 (spam) is 70% and 0 (non-spam) is 30%. As a result, we can estimate that any new e-mail has a 70% chance of being classified as spam.

似然估计是在其他一些变量的给定的情况下,一个观测值被分类为1的概率。例如,”FREE”这个词在以前的垃圾邮件使用的概率就是似然估计。边际似然估计就是,”FREE”这个词在任何消息中使用的概率

69 、你正在一个时间序列数据集上工作。经理要求你建立一个高精度的模型。你开始用决策树算法,因为你知道它在所有类型数据上的表现都不错。 后来,你尝试了时间序列回归模型,并得到了比决策树模型更高的精度。 这种情况会发生吗?为什么?

解析:

众所周知,时间序列数据具有线性关系。另一方面,决策树算法是最著名的检测非线性相互作用的算法。

[En]

As we all know, time series data has a linear relationship. On the other hand, the decision tree algorithm is the best known algorithm to detect nonlinear interactions.

决策树之所以不能提供良好的预测,是因为它不能像映射回归模型那样映射线性关系。

[En]

The reason why the decision tree does not provide a good prediction is that it can not map the linear relationship as well as the regression model.

因此,我们知道,如果我们有一个满足线性假设的数据集,线性回归模型可以提供很强的预测。

[En]

Therefore, we know that if we have a data set that satisfies the linear hypothesis, a linear regression model can provide a strong prediction.

70 、给你分配了一个新的项目,是关于帮助食品配送公司节省更多的钱。问题是,公司的送餐队伍没办法准时送餐。结果就是他们的客户很不高兴。 最后为了使客户高兴,他们只好以免餐费了事。哪个机器学习算法能拯救他们?

解析:

各种机器学习算法可能已经开始在你的大脑中闪现。但是等等!这种提问方式只是为了测试你的机器学习基础。这不是机器学习的问题,而是路径优化的问题。

[En]

All kinds of machine learning algorithms may have begun to flash in your brain. But wait! This way of asking questions is just to test your machine learning foundation. This is not a problem of machine learning, but a problem of path optimization.

机器学习问题由三个方面组成:

[En]

Machine learning problems consist of three things:

1.模式已经存在。

2.不能用数学方法解决(指数方程都不行)。

3.有相关的数据。

71 、你意识到你的模型受到低偏差和高方差问题的困扰。应该使用哪种算法来解决问题呢?为什么?

解析:

低偏差是指模型的预测值与实际值接近。换言之,该模型足够灵活,可以模拟训练数据的分布。它看起来不错,但不要忘记,灵活的模型没有泛化能力。这意味着当模型被用来测试一个看不见的数据集时,它可能会令人失望。

[En]

Low deviation means that the predicted value of the model is close to the actual value. In other words, the model is flexible enough to simulate the distribution of training data. It looks good, but don’t forget that a flexible model has no generalization ability. This means that when the model is used to test an unseen dataset, it can be disappointing.

在这种情况下,我们可以使用bagging算法(如随机森林),以解决高方差问题。bagging算法把数据集分成重复随机取样形成的子集。然后,这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。

此外,为了应对较大的差异,我们可以:

[En]

In addition, in order to cope with large variance, we can:

1.使用正则化技术,惩罚更高的模型系数,从而降低了模型的复杂性。

2.使用可变重要性图表中的前n个特征。可以用于当一个算法在数据集中的所有变量里很难寻找到有意义信号的时候。

72 、给你一个数据集。该数据集包含很多变量,你知道其中一些是高度相关的。 经理要求你用PCA。你会先去掉相关的变量吗?为什么?

解析:

答:你可能会说不,但是这有可能是不对的。丢弃相关变量会对PCA有实质性的影响,因为有相关变量的存在,由特定成分解释的方差被放大。

例如:在一个数据集有3个变量,其中有2个是相关的。如果在该数据集上用PCA,第一主成分的方差会是与其不相关变量的差异的两倍。此外,加入相关的变量使PCA错误地提高那些变量的重要性,这是有误导性的。

73 、花了几个小时后,现在你急于建一个高精度的模型。结果,你建了5 个GBM(Gradient Boosted Models),想着boosting算法会显示魔力。 不幸的是,没有一个模型比基准模型表现得更好。最后,你决定将这些模型结合到一起。 尽管众所周知,结合模型通常精度高,但你就很不幸运。你到底错在哪里?

解析:

答:据我们所知,组合的学习模型是基于合并弱的学习模型来创造一个强大的学习模型的想法。但是,只有当各模型之间没有相关性的时候组合起来后才比较强大。由于我们已经试了5个GBM,但没有提高精度,表明这些模型是相关的。

具有相关性的模型的问题是,所有的模型提供相同的信息。例如:如果模型1把User1122归类为1,模型2和模型3很有可能会做有同样分类,即使它的实际值应该是0,因此,只有弱相关的模型结合起来才会表现更好。

74 、KNN和KMEANS聚类(kmeans clustering)有什么不同?

解析:

答:不要被它们的名字里的”K”误导。

你应该知道,这两种算法之间的根本区别是,KMEANS本质上是无监督学习而KNN是监督学习。KMEANS是聚类算法。KNN是分类(或回归)算法。

KMEAN算法把一个数据集分割成簇,使得形成的簇是同构的,每个簇里的点相互靠近。该算法试图维持这些簇之间有足够的可分离性。由于无监督的性质,这些簇没有任何标签。NN算法尝试基于其k(可以是任何数目)个周围邻居来对未标记的观察进行分类。它也被称为懒惰学习法,因为它涉及最小的模型训练。因此,它不用训练数据对未看见的数据集进行泛化。

75 、真阳性率和召回有什么关系?写出方程式。

解析:

答:真阳性率=召回。是的,它们有相同的公式(TP / TP + FN)。 注意:要了解更多关于估值矩阵的知识。

76 、你建了一个多元回归模型。你的模型R2为并不如你设想的好。为了改进,你去掉截距项,模型R的平方从0.3变为0.8。 这是否可能?怎样才能达到这个结果?

解析:

答:是的,这有可能。我们需要了解截距项在回归模型里的意义。截距项显示模型预测没有任何自变量,比如平均预测。公式R² = 1 – ∑(y – y´)²/∑(y – ymean)²中的y´是预测值。

当有截距项时,R²值评估的是你的模型基于均值模型的表现。在没有截距项(ymean)时,当分母很大时,该模型就没有这样的估值效果了,∑(y – y´)²/∑(y – ymean)²式的值会变得比实际的小,而R2会比实际值大。

77 、在分析了你的模型后,经理告诉你,你的模型有多重共线性。 你会如何验证他说的是真的?在不丢失任何信息的情况下,你还能建立一个更好的模型吗?

解析:

答:要检查多重共线性,我们可以创建一个相关矩阵,用以识别和除去那些具有75%以上相关性(决定阈值是主观的)的变量。此外,我们可以计算VIF(方差膨胀因子)来检查多重共线性的存在。

VIF值

我们还可以向相关变量添加一些随机噪声,使变量彼此不同。但是,增加噪声可能会影响预测的准确性,因此应谨慎使用此方法。

[En]

We can also add some random noise to the related variables to make the variables different from each other. However, increasing noise may affect the accuracy of the prediction, so this method should be used with caution.

78 、什么时候Ridge回归优于Lasso回归?

解析:

答:你可以引用ISLR的作者Hastie和Tibshirani的话,他们断言在对少量变量有中等或大尺度的影响的时候用lasso回归。在对多个变量只有小或中等尺度影响的时候,使用Ridge回归。

从概念上讲,我们可以说,Lasso回归(L1)同时做变量选择和参数收缩,而ridge回归只做参数收缩,并最终在模型中包含所有的系数。在有相关变量时,ridge回归可能是首选。此外,ridge回归在用最小二乘估计有更高的偏差的情况下效果最好。因此,选择合适的模型取决于我们的模型的目标。

79 、全球平均温度的上升导致世界各地的海盗数量减少。这是否意味着海盗的数量减少引起气候变化?

解析:

答:读完这个问题,你应该知道这是一个典型的因果关系和相关性的案例。我们不能断定海盗数量的减少是气候变化的原因,因为可能还有其他因素(潜在因素或混杂因素)影响这一现象。全球平均气温与海盗数量之间可能存在关联,但根据这些信息,我们不能说海盗的失踪是由全球平均气温上升造成的。

[En]

A: after reading this question, you should know that this is a classic case of causality and correlation. We cannot conclude that the decline in the number of pirates is the cause of climate change, as there may be other factors (latent or confounding factors) that affect this phenomenon. There may be a correlation between the global average temperature and the number of pirates, but based on this information, we cannot say that the disappearance of pirates has been caused by the rise in global average temperatures.

注:了解更多关于因果关系和相关性的知识。

[En]

Note: learn more about causality and correlation.

80 、如何在一个数据集上选择重要的变量?给出解释。

解析:

答:以下是您可以用来选择变量的方法:

[En]

A: here are the methods you can use to select variables:

1.选择重要的变量之前除去相关变量

2.用线性回归然后基于P值选择变量

3.使用前向选择,后向选择,逐步选择

4.使用随机森林和Xgboost,然后画出变量重要性图

5.使用lasso回归

6.测量可用的特征集的的信息增益,并相应地选择前n个特征量。

81 、是否有可能捕获连续变量和分类变量之间的相关性?如果可以的话,怎样做?

解析:

是的,我们可以用ANCOVA(协方差分析)技术来捕获连续型变量和分类变量之间的相关性。

82 、Gradient boosting算法(GBM)和随机森林都是基于树的算法,它们有什么区别?

解析:

答:最根本的区别是,随机森林算法使用bagging技术做出预测。GBM采用boosting技术做预测。在bagging技术中,数据集用随机采样的方法被划分成使n个样本。然后,使用单一的学习算法,在所有样本上建模。接着利用投票或者求平均来组合所得到的预测。

Bagging是平行进行的。而boosting是在第一轮的预测之后,算法将分类出错的预测加高权重,使得它们可以在后续一轮中得到校正。这种给予分类出错的预测高权重的顺序过程持续进行,一直到达到停止标准为止。随机森林通过减少方差(主要方式)提高模型的精度。生成树之间是不相关的,以把方差的减少最大化。在另一方面,GBM提高了精度,同时减少了模型的偏差和方差。

注意:了解有关基于树的建模的更多信息。

[En]

Note: learn more about tree-based modeling.

83 、运行二元分类树算法很容易,但是你知道一个树是如何做分割的吗,即树如何决定把哪些变量分到哪个根节点和后续节点上?

解析:

答:分类树使用基尼系数和节点熵进行决策。简而言之,树算法可以找到最好的可能特征,并且它可以将数据集划分为最纯粹的可能子节点。树算法寻找能够将数据集划分为最纯粹的可能子节点的特征量。基尼系数是指如果总体是完全纯净的,那么我们从总体中随机选择两个样本,这两个样本必须是同一类的,并且它们属于同一类的概率为1。我们可以用以下方法来计算基尼系数:

[En]

A: the classification tree uses Gini coefficient and node entropy to make decisions. In short, the tree algorithm finds the best possible features, and it can divide the data set into the purest possible child nodes. The tree algorithm finds the feature quantity that can divide the data set into the purest possible child nodes. The Gini coefficient is that if the population is completely pure, then we randomly select two samples from the population, and the two samples must be of the same class and the probability that they are of the same kind is 1. We can calculate the Gini coefficient in the following ways:

1.利用成功和失败的概率的平方和(p^2+q^2)计算子节点的基尼系数

2.利用该分割的节点的加权基尼分数计算基尼系数以分割

熵是衡量信息不纯净度的标准(分为两类):

[En]

Entropy is a standard to measure the impurity of information (two categories):

这里的p和q是分别在该节点成功和失败的概率。当一个节点是均匀时熵为零。当2个类同时以50%对50%的概率出现在同一个节点上的时候,它是最大值。熵越低越好。

84 、你已经建了一个有10000棵树的随机森林模型。在得到0.00的训练误差后,你非常高兴。但是,验证错误是34.23。到底是怎么回事?你还没有训练好你的模型吗?

解析:

A:这个型号太合身了。训练误差为0.00表示分类器已经在一定程度上模拟了训练数据,这样的分类器不能用于看不见的数据。

[En]

A: the model is overfitted. A training error of 0.00 means that the classifier has simulated the training data to a certain extent, and such a classifier cannot be used on unseen data.

因此,当分类器用于看不见的样本时,由于找不到现有的模式,返回的预测将具有较高的错误率。在随机森林算法中,当使用的树比所需的树数量多时,就会发生这种情况。因此,为了避免这些情况,我们需要使用交叉验证来调整树的数量。

[En]

Therefore, when the classifier is used on unseen samples, the prediction returned will have a high error rate because the existing pattern cannot be found. In the random forest algorithm, this happens when more trees are used than the required number of trees. Therefore, to avoid these situations, we need to use cross-validation to adjust the number of trees.

85 、你有一个数据集,变量个数p大于观察值个数n。为什么用OLS是一个不好的选择?用什么技术最好?为什么?

解析:

答:在这样的高维数据集中,我们不能用传统的回归技术,因为它们的假设往往不成立。当p>nN,我们不能计算唯一的最小二乘法系数估计,方差变成无穷大,因此OLS无法在此使用的。

为了应对这种情况,我们可以使用惩罚回归方法,如lasso、LARS、ridge,这些可以缩小系数以减少方差。准确地说,当最小二乘估计具有较高方差的时候,ridge回归最有效。

其他方法包括子集回归和前向逐步回归。

[En]

Other methods include subset regression and forward stepwise regression.

86 、什么是凸包?(提示:想一想SVM) 其他方法还包括子集回归、前向逐步回归。

解析:

答:当数据是线性可分的时,凸包表示两组数据点的外边界。

[En]

A: when the data is linearly separable, the convex hull represents the outer boundary of two sets of data points.

一旦凸包建立,我们得到的最大间隔超平面(MMH)作为两个凸包之间的垂直平分线。MMH是能够最大限度地分开两个组的线。

87 、我们知道,一位有效编码会增加数据集的维度。但是,标签编码不会。为什么?

解析:

答:这个问题不用太担心。这只是一个关于两者之间的区别的问题。

[En]

A: don’t worry too much about this problem. It’s just a question about the difference between the two.

用有效位编码后,数据集的维度(即特征)增加,因为它为分类变量中存在的每个级别创建一个变量。例如,假设我们有一个变量“COLOR”。这个变量有三个级别,即红色、蓝色和绿色。

[En]

Encoded with a valid bit, the dimension (that is, the feature) of the dataset increases because it creates a variable for each level that exists in the classification variable. For example, suppose we have a variable “color”. This variable has three levels, namely, red, blue, and green.

对”颜色”变量进行一位有效编码会生成含0和1值的Color.Red,Color.Blue和Color.Green 三个新变量。在标签编码中,分类变量的层级编码为0和1,因此不生成新变量。标签编码主要是用于二进制变量。

88 、你会在时间序列数据集上使用什么交叉验证技术?是用k倍或LOOCV?

解析:

答:都不是。对于时间序列问题,k倍可能会很麻烦,因为第4年或第5年的一些模式有可能跟第3年的不同,而对数据集的重复采样会将分离这些趋势,我们可能最终是对过去几年的验证,这就不对了。

相反,我们可以使用5x前向链路策略,如下所示:

[En]

Instead, we can use the 5x forward link strategy as follows:

fold 1 : training [1], test [2]

fold 2 : training [1 2], test [3]

fold 3 : training [1 2 3], test [4]

fold 4 : training [1 2 3 4], test [5]

fold 5 : training [1 2 3 4 5], test [6]

1,2,3,4,5,6代表的是年份。

89 、给你一个缺失值多于30%的数据集?比方说,在50个变量中,有8个变量的缺失值都多于30%。你对此如何处理?

解析:

答:我们可以通过以下方式处理:

[En]

A: we can deal with it in the following ways:

1.把缺失值分成单独的一类,这些缺失值说不定会包含一些趋势信息。

2.我们可以毫无顾忌地删除它们。

3.或者,我们可以用目标变量来检查它们的分布,如果发现任何模式,我们将保留那些缺失值并给它们一个新的分类,同时删除其他缺失值。

90 、买了这个的客户,也买了……”亚马逊的建议是哪种算法的结果?

解析:

答:这个推荐引擎的基本理念来自协同过滤。

[En]

A: the basic idea of this recommendation engine comes from collaborative filtering.

协同过滤算法考虑了用于推荐项目的“用户行为”。他们利用其他用户的购买行为和商品的交易历史、评级、选择和购买信息。该产品的其他用户的行为和偏好被用来向新用户推荐物品(商品)。在这种情况下,项目(商品)的特征是未知的。

[En]

The collaborative filtering algorithm considers the “user behavior” used to recommend items. They take advantage of the purchase behavior of other users and the transaction history, rating, selection and purchase information for goods. The behavior and preferences of other users of the product are used to recommend items (goods) to new users. In this case, the characteristics of the project (commodity) are unknown.

注:了解有关推荐系统的更多信息。

[En]

Note: learn more about the recommendation system.

91 、你怎么理解第一类和第二类错误?

解析:

答:第一种错误是,当最初的假设为真时,我们就拒绝它,这也被称为“假阳性”。第二种错误是,当最初的假设是假的时候,我们就接受它,也就是我们所说的“假阴性”。

[En]

A: the first kind of error is that when the original hypothesis is true, we reject it, which is also called “false positive”. The second kind of error is that when the original assumption is false, we accept it, also known as “false negative”.

在混淆矩阵中,我们可以说,当我们将一个值归类为正(1)时,第一种错误发生,但它实际上是负(0)。第二种错误发生在我们将一个值归类为负(0)时,但它实际上是正的(1)。

[En]

In the confusion matrix, we can say that the first kind of error occurs when we classify a value as positive (1) but it is actually negative (0). The second kind of error occurs when we classify a value as negative (0) but it is actually positive (1).

92 、当你在解决一个分类问题时,出于验证的目的,你已经将训练集随机抽样地分成训练集和验证集。你对你的模型能在未看见的数据上有好的表现非常有信心,因为你的验证精度高。但是,在得到很差的精度后,你大失所望。什么地方出了错?

解析:

答:在做分类题时,我们应该使用分层抽样,而不是随机抽样。随机抽样没有考虑目标类别的比例。相反,分层抽样有助于保持目标变量在所获得的分布样本中的分布。

[En]

A: when doing classification problems, we should use stratified sampling instead of random sampling. Random sampling does not take into account the proportion of target categories. On the contrary, stratified sampling helps to maintain the distribution of target variables in the obtained distribution samples.

93 、请简单阐述下决策树、回归、SVM、神经网络等算法各自的优缺点?

正则化算法(Regularization Algorithms)

集成算法(Ensemble Algorithms)

决策树算法(Decision Tree Algorithm)

回归(Regression)

人工神经网络(Artificial Neural Network)

深度学习(Deep Learning)

支持向量机(Support Vector Machine)

降维算法(Dimensionality Reduction Algorithms)

聚类算法(Clustering Algorithms)

基于实例的算法(Instance-based Algorithms)

贝叶斯算法(Bayesian Algorithms)

关联规则学习算法(Association Rule Learning Algorithms)

图模型(Graphical Models)

解析:

一、正则化算法(Regularization Algorithms)

它是另一种方法(通常是回归方法)的扩展,该方法根据模型的复杂性对其进行惩罚,它喜欢相对简单且可以更好地推广的模型。

[En]

It is an extension of another method (usually the regression method), which punishes it based on the complexity of the model, and it likes models that are relatively simple and can be better generalized.

例子: 岭回归(Ridge Regression) 最小绝对收缩与选择算子(LASSO)GLASSO 弹性网络(Elastic Net)

最小角回归(Least-Angle Regression)

优点: 其惩罚会减少过拟合 总会有解决方法

缺点: 惩罚会造成欠拟合 很难校准

94 、在应用机器学习算法之前纠正和清理数据的步骤是什么?

解析:

1.将数据导入

2.看数据:重点看元数据,即对字段解释、数据来源等信息;导入数据后,提取部分数据进行查看

3.缺失值清洗

  • 根据需要对缺失值进行处理,可以删除数据或填充数据

  • 重新取数:如果某些非常重要的字段缺失,需要和负责采集数据的人沟通,是否可以再获得

4.数据格式清洗:统一数据的时间、日期、全半角等显示格式

5.逻辑错误的数据

  • 重复的数据

  • 不合理的值

6.不一致错误的处理:指对矛盾内容的修正,最常见的如身份证号和出生年月日不对应 不同业务中数据清洗的任务略有不同,比如数据有不同来源的话,数据格式清洗和不一致错误的处理就尤为突出。数据预处理是数据类岗位工作内容中重要的部分。

95 、什么是K-means聚类算法?

解析:

K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般。最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用。看了Andrew Ng的这个讲义后才有些明白K-means后面包含的EM思想。

聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,比如假设宇宙中的星星可以表示成三维空间中的点集。聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起。比如上面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星星距离就比较远了。

96 、请详细说说文字特征提取

解析:

很多机器学习问题涉及自然语言处理(NLP),必然要处理文字信息。文字必须转换成可以量化的特征向量。下面我们就来介绍最常用的文字表示方法:词库模型(Bag-of-words model)。

词库表示法

词库模型是文字模型化的最常用方法。对于一个文档(document),忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文档中每个词的出现都是独立的,不依赖于其他词是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。词库模型可以看成是独热编码的一种扩展,它为每个单词设值一个特征值。词库模型依据是用类似单词的文章意思也差不多。词库模型可以通过有限的编码信息实现有效的文档分类和检索。

97 、请详细说说图像特征提取

解析:

计算机视觉是一门研究如何让机器“看得见”,从而使计算机学会处理和理解图像的科学。这种知识有时需要机器学习的帮助。

[En]

Computer vision is a science that studies how to make machines “see” so that computers learn to process and understand images. This knowledge sometimes requires the help of machine learning.

这一部分介绍了机器学习在计算机视觉领域的一些基本技术。按像素值提取的特征数字图像通常是栅格图像或像素图像,并将颜色映射到网格坐标。图片可以看作是一个矩阵,其中每个元素都是一个颜色值。图像的基本特征是将矩阵的每一行连接成一个行向量。

[En]

This section introduces some basic techniques of machine learning in the field of computer vision. The feature digital image extracted by pixel value is usually a raster image or pixel image, and the color is mapped to the grid coordinates. A picture can be seen as a matrix in which each element is a color value. The basic feature of the image is to connect each row of the matrix into a row vector.

光学文字识别(Optical character recognition,OCR)是机器学习的经典问题。下面我们用这个技术来识别手写数字。

98 、了解xgboost么,请详细说说它的原理

解析:

前言xgboost一直在竞赛江湖里被传为神器,比如时不时某个kaggle/天池比赛中,某人用xgboost于千军万马中斩获冠军。

而我们的机器学习课程里也必讲xgboost,如寒所说:”RF和GBDT是工业界大爱的模型,Xgboost 是大杀器包裹,Kaggle各种Top排行榜曾一度呈现Xgboost一统江湖的局面,另外某次滴滴比赛第一名的改进也少不了Xgboost的功劳”。

99 、请详细说说梯度提升树(GBDT)的原理

解析:

GBDT主要由三个概念组成:Regression Decistion Tree(即DT),Gradient Boosting(即GB),Shrinkage (算法的一个重要演进分枝,目前大部分源码都按该版本实现)。搞定这三个概念后就能明白GBDT是如何工作的,要继续理解它如何用于搜索排序则需要额外理解RankNet概念,之后便功德圆满。下文将逐个碎片介绍,最终把整张图拼出来。

一、DT:回归树Regression Decision Tree 提起决策树(DT, Decision Tree) 绝大部分人首先想到的就是C4.5分类决策树。但如果一开始就把GBDT中的树想成分类树,那就是一条歪路走到黑,一路各种坑,最终摔得都要咯血了还是一头雾水。但,这说的就是LZ自己啊有木有。咳嗯,所以说千万不要以为GBDT是很多棵分类树。

100 、请说说Adaboost 算法的原理与推导

https://blog.csdn.net/haidao2009/article/details/7514787

Original: https://www.cnblogs.com/Anita9002/p/11218932.html
Author: Anita-ff
Title: AI工程师基础知识100题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7636/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总