梳理常见的机器学习面试题,你知道几个?

添加微信:julyedukefu14,回复【11】领取最新升级版【名企 AI 面试 100 题】

26、说说常见的损失函数?

对于给定的输入 X,由 f(X)给出相应的输出 Y,这个输出的预测值 f(X)与真实值 Y 可能一致也可能不一致(要知道,有时损失或误差是不可避免的),用一个损失函数来度量预测错误的程度。损失函数记为 L(Y, f(X)),用来估量你模型的预测值 f(x)与真实值 Y 的不一致程度。

27、为什么 xgboost 要用泰勒展开,优势在哪里?

xgboost 使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了 xgboost 的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。

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

相关性是协方差的标准化格式。协方差本身很难做比较。例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们会得到不能做比较的不同的协方差。

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

xgboost 在训练的过程中给出各个特征的增益评分,最大增益的特征会被选出来作为分裂依据, 从而记忆了每个特征对在模型训练时的重要性 -- 从根到叶子中间节点涉及某特征的次数作为该特征重要性排序.

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

判别方法:由数据直接学习决策函数 Y = f(X),或者由条件分布概率 P(Y|X)作为预测模型,即判别模型。

生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布 P(Y|X)作为预测的模型,即生成模型。

由生成模型可以得到判别模型,但由判别模型得不到生成模型。

常见的判别模型有:K 近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场
常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机

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

线性和非线性是针对,模型参数和输入特征来讲的;比如输入 x,模型 y=ax+ax^2 那么就是非线性模型,如果输入是 x 和 X^2 则模型是线性的。
线性分类器可解释性好,计算复杂度较低,不足之处是模型的拟合效果相对弱些。
非线性分类器效果拟合能力较强,不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机
SVM 两种都有(看线性核还是高斯核)

32、L1 和 L2 的区别

L1 范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。
比如 向量 A=[1,-1,3], 那么 A 的 L1 范数为 |1|+|-1|+|3|.
简单总结一下就是:
L1 范数: 为 x 向量各个元素绝对值之和。
L2 范数: 为 x 向量各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数
Lp 范数: 为 x 向量各个元素绝对值 p 次方和的 1/p 次方

33、L1 和 L2 正则先验分别服从什么分布
面试中遇到的,L1 和 L2 正则先验分别服从什么分布,L1 是拉普拉斯分布,L2 是高斯分布。

34、简单介绍下 logistics 回归?

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。
比如在实际工作中,我们可能会遇到如下问题:
预测一个用户是否点击特定的商品
判断用户的性别
预测用户是否会购买给定的品类
判断一条评论是正面的还是负面的
这些都可以看做是分类问题,更准确地,都可以看做是二分类问题。要解决这些问题,通常会用到一些已有的分类算法,比如逻辑回归,或者支持向量机。它们都属于有监督的学习,因此在使用这些算法之前,必须要先收集一批标注好的数据作为训练集。有些标注可以从 log 中拿到(用户的点击,购买),有些可以从用户填写的信息中获得(性别),也有一些可能需要人工标注(评论情感极性)。

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

给定一个训练数据集 T={(x1,y1), (x2,y2)…(xN,yN)}

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

梳理常见的机器学习面试题,你知道几个?梳理常见的机器学习面试题,你知道几个?

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

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

因为它假定所有的特征在数据集中的作用是同样重要和独立的。正如我们所知,这个假设在现实世界中是很不真实的,因此,说朴素贝叶斯真的很“朴素”。
朴素贝叶斯模型(Naive Bayesian Model)的朴素(Naive)的含义是"很简单很天真"地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。

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

梳理常见的机器学习面试题,你知道几个?梳理常见的机器学习面试题,你知道几个?

39、请详细说说 EM 算法

到底什么是 EM 算法呢?Wikipedia 给的解释是:
最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。

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

关于什么是 KNN,可以查看此文:《从 K 近邻算法、距离度量谈到 KD 树、SIFT+BBF 算法》(链接:
http://blog.csdn.net/v_july_v/article/details/8203674)。KNN 中的 K 值选取对 K 近邻算法的结果会产生重大影响。如李航博士的一书「统计学习方法」上所说:如果选择较小的 K 值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K 值的减小就意味着整体模型变得复杂,容易发生过拟合;
如果选择较大的 K 值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且 K 值的增大就意味着整体的模型变得简单。
K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。
在实际应用中,K 值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选择最优的 K 值。

41、防止过拟合的方法

过拟合的原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。
处理方法:
1 早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练
2 数据集扩增:原有数据增加、原有数据加随机噪声、重采样
3 正则化,正则化可以限制模型的复杂度
4 交叉验证
5 特征选择/特征降维
6 创建一个验证集是最基本的防止过拟合的方法。我们最终训练得到的模型目标是要在验证集上面有好的表现,而不训练集。

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

机器学习模型被互联网行业广泛应用,如排序(参见:排序学习实践
http://www.cnblogs.com/LBSer/p/4439542.html)、推荐、反作弊、定位(参见:基于朴素贝叶斯的定位算法 http://www.cnblogs.com/LBSer/p/4020370.html)等。
一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化。
为什么要归一化呢?很多同学并未搞清楚,维基百科给出的解释:1)归一化后加快了梯度下降求最优解的速度;2)归一化有可能提高精度。

43、什么最小二乘法?

我们口头中经常说:一般来说,平均来说。如平均来说,不吸烟的健康优于吸烟者,之所以要加“平均”二字,是因为凡事皆有例外,总存在某个特别的人他吸烟但由于经常锻炼所以他的健康状况可能会优于他身边不吸烟的朋友。而最小二乘法的一个最简单的例子便是算术平均。
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

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

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

45、简单说说贝叶斯定理的

梳理常见的机器学习面试题,你知道几个?梳理常见的机器学习面试题,你知道几个?

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

本题解析来源:
https://www.zhihu.com/question/58230411
首先从两个角度解释你的困惑:
工具包自动处理数据缺失不代表具体的算法可以处理缺失项
对于有缺失的数据:以决策树为原型的模型优于依赖距离度量的模型
回答中也会介绍树模型,如随机森林(Random Forest)和 xgboost 如何处理缺失值。文章最后总结了在有缺失值时选择模型的小建议。

47、请举例说明什么是标准化、归一化

一、标准化(standardization)
简单来说,标准化是依照特征矩阵的列处理数据,其通过求 z-score 的方法,将样本的特征值转换到同一量纲下。
公式一般为:(X-mean)/std,其中 mean 是平均值,std 是方差。
从公式我们可以看出,标准化操作(standardization)是将数据按其属性(按列)减去平均值,然后再除以方差。
这个过程从几何上理解就是,先将坐标轴零轴平移到均值这条线上,然后再进行一个缩放,涉及到的就是平移和缩放两个动作。这样处理以后的结果就是,对于每个属性(每列)来说,所有数据都聚集在 0 附近,方差为 1。计算时对每个属性/每列分别进行。

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

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

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

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

  1. Decrease GINI:

对于分类问题(将某个样本划分到某一类),也就是离散变量问题,CART 使用 Gini 值作为评判标准。定义为 Gini=1-∑(P(i)*P(i)),P(i)为当前节点上数据集中第 i 类样本的比例。例如:分为 2 类,当前节点上有 100 个样本,属于第一类的样本有 70 个,属于第二类的样本有 30 个,则 Gini=1-0.7×07-0.3×03=0.42,可以看出,类别分布越平均,Gini 值越大,类分布越不均匀,Gini 值越小。在寻找最佳的分类特征和阈值时,评判标准为:argmax(Gini-GiniLeft-GiniRight),即寻找最佳的特征 f 和阈值 th,使得当前节点的 Gini 值减去左子节点的 Gini 和右子节点的 Gini 值最大。

对于回归问题,相对更加简单,直接使用 argmax(Var-VarLeft-VarRight)作为评判标准,即当前节点训练集的方差 Var 减去减去左子节点的方差 VarLeft 和右子节点的方差 VarRight 值最大。

  1. Decrease Accuracy:

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

50、请说说 Kmeans 的优化?

解析一
k-means:在大数据的条件下,会耗费大量的时间和内存。
优化 k-means 的建议:
1、减少聚类的数目 K。因为,每个样本都要跟类中心计算距离。
2、减少样本的特征维度。比如说,通过 PCA 等进行降维。
3、考察其他的聚类算法,通过选取 toy 数据,去测试不同聚类算法的性能。
4、hadoop 集群,K-means 算法是很容易进行并行计算的。

添加微信:julyedukefu14,回复【11】领取最新升级版【名企 AI 面试 100 题】

  • 推广
    117 引用 • 469 回帖 • 6 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...