logo资料库

机器学习面试题.pdf

第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
资料共46页,剩余部分请下载后查看
有监督学习和无监督学习的区别 有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预 测。(LR,SVM,BP,RF,GBDT) 无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL) 正则化 正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在 该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个 rate 比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会 越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降 低过拟合的风险。奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是最好的模型。 过拟合 如果一味的去提高训练数据的预测能力,所选模型的复杂度往往会很高,这种现象称为过拟 合。所表现的就是模型训练时候的误差很小,但在测试的时候误差很大。 产生的原因 过拟合原因 1. 样本数据的问题。 样本数量太少 抽样方法错误,抽出的样本数据不能有效足够代表业务逻辑或业务场景。比如样本符合正态 分布,却按均分分布抽样,或者样本数据不能代表整体数据的分布 样本里的噪音数据干扰过大 2. 模型问题 模型复杂度高 、参数太多 决策树模型没有剪枝 权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性 的特征. 解决方法 1. 样本数据方面。 增加样本数量,对样本进行降维,添加验证数据 抽样方法要符合业务场景 清洗噪声数据 2. 模型或训练问题 控制模型复杂度,优先选择简单的模型,或者用模型融合技术。 1
利用先验知识,添加正则项。L1 正则更加容易产生稀疏解、L2 正则倾向于让参数 w 趋向于 0. 交叉验证 不要过度训练,最优化求解时,收敛之前停止迭代。 决策树模型没有剪枝 权值衰 线性分类器与非线性分类器的区别以及优劣 如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。 常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归 常见的非线性分类器:决策树、RF、GBDT、多层感知机 SVM 两种都有(看线性核还是高斯 核) 线性分类器速度快、编程方便,但是可能拟合效果不会很好 非线性分类器编程复杂,但是效果拟合能力强 为什么 LR 要使用 Sigmod 函数? 说到底源于 sigmoid,或者说 exponential family 所具有的最佳性质,即 maximum entropy 的性质。虽然不清楚历史上孰先孰后,但这并不妨碍 maximum entropy 给了 logistic regression 一个很好的数学解释。为什么 maximum entropy 好呢?entropy 翻译过来就是熵, 所以 maximum entropy 也就是最大熵。熵原本是 information theory 中的概念,用在概率分 布上可以表示这个分布中所包含的不确定度,熵越大不确定度越大。所以大家可以想象到, 均匀分布熵最大,因为基本新数据是任何值的概率都均等。而我们现在关心的是,给定某些 假设之后,熵最大的分布。也就是说这个分布应该在满足我假设的前提下越均匀越好。比如 大家熟知的正态分布,正是假设已知 mean 和 variance 后熵最大的分布。回过来看 logistic regression,这里假设了什么呢?首先,我们在建模预测 Y|X,并认为 Y|X 服从 bernoulli distribution,所以我们只需要知道 P(Y|X);其次我们需要一个线性模型,所以 P(Y|X) = f(wx)。 接下来我们就只需要知道 f 是什么就行了。而我们可以通过最大熵原则推出的这个 f,就是 sigmoid。其实前面也有人剧透了 bernoulli 的 exponential family 形式,也即是 1/ (1 + e^- z) LR 与 Liner SVM 区别 Linear SVM 和 LR 都是线性分类器 Linear SVM 不直接依赖数据分布,分类平面不受一类点影响;LR 则受所有数据点的影 响,如果数据不同类别 strongly unbalance 一般需要先对数据做 balancing。 Linear SVM 依赖数据表达的距离测度,所以需要对数据先做 normalization(归一化);LR 不受其影响 Linear SVM 依赖 penalty 的系数,实验中需要做 validation Linear SVM 和 LR 的 performance 都会收到 outlier 的影响,其敏感程度而言,谁更好很 2    
难下明确结论。 EM 算法的基本概念和应用场景? 最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计或者最大后验 估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。假设我们估计 知道 A 和 B 两个参数,在开始状态下二者都是未知的,并且知道了 A 的信息就可以得到 B 的信息,反过来知道了 B 也就得到了 A。可以考虑首先赋予 A 某种初值,以此得到 B 的估 计值,然后从 B 的当前值出发,重新估计 A 的取值,这个过程一直持续到收敛为止。 参考链接:http://www.tuicool.com/articles/Av6NVzy 最大期望经常用在机器学习和计算机视觉的数据聚类领域。 常见的分类算法有哪些? SVM、神经网络、随机森林、逻辑回归、KNN、贝叶斯 请描述极大似然估计 MLE 和最大后验估计 MAP 之间的区别。 请解释为什么 MLE 比 MAP 更容易过拟合。 最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。 简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该 分布的均值与方差未知。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样, 获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。最 大后验估计是根据经验数据获得对难以观察的量的点估计。与最大似然估计类似,但是最大 的不同时,最大后验估计的融入了要估计量的先验分布在其中。故最大后验估计可以看做规 则化的最大似然估计。 SVM 为什么引入对偶问题?什么是对偶?  对偶问题往往更加容易求解(结合拉格朗日和 kkt 条件) 可以很自然的引用核函数(拉格朗日表达式里面有内积,而核函数也是通过内积进行映射的) 3
 在优化理论中,目标函数 f(x) 会有多种形式:如果目标函数和约束条件都为变量 x 的 线性函数, 称该问题为线性规划; 如果目标函数为二次函数, 约束条件为线性函数, 称 该最优化问题为二次规划; 如果目标函数或者约束条件均为非线性函数, 称该最优化问 题为非线性规划。每个线性规划问题都有一个与之对应的对偶问题,对偶问题有非常良 好的性质,以下列举几个: 对偶问题的对偶是原问题; 无论原始问题是否是凸的,对偶问题都是凸优化问题; 对偶问题可以给出原始问题一个下界; 当满足一定条件时,原始问题与对偶问题的解是完全等价的 判别式模型和生成式模型 判别方法:由数据直接学习决策函数 Y = f(X),或者由条件分布概率 P(Y|X)作为预测 模型,即判别模型。 生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布 P(Y|X)作为 预测的模型,即生成模型。 由生成模型可以得到判别模型,但由判别模型得不到生成模型。 常见的判别模型有:K 近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、 传统的神经网络、逻辑斯蒂回归、boosting、条件随机场 常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、 限制玻尔兹曼机 SVM 如何实现,SMO 算法如何实现? SMO 是用于快速求解 SVM 的。 它选择凸二次规划的两个变量,其他的变量保持不变,然后根据这两个变量构建一个二次规 划问题,这个二次规划关于这两个变量解会更加的接近原始二次规划的解,通过这样的子问 题划分可以大大增加整个算法的计算速度,关于这两个变量: 其中一个是严重违反 KKT 条件的一个变量 另一个变量是根据自由约束确定,好像是求剩余变量的最大化来确定的。 如果训练样本数量少于特征数量,怎么办? 如果训练集很小,那么高偏差/低方差分类器(如朴素贝叶斯分类器)要优于低偏差/高方差 分类器(如 k 近邻分类器),因为后者容易过拟合。然而,随着训练集的增大,低偏差/高 方差分类器将开始胜出(它们具有较低的渐近误差),因为高偏差分类器不足以提供准确的 模型。你也可以认为这是生成模型与判别模型的区别。维度高用非线性分类器,维度低用线 性分类器。 4
Xgboost 是如何调参的? XGBoost 的参数 ● General Parameters: ○ booster:所使用的模型,gbtree 或 gblinear ○ silent:1 则不打印提示信息,0 则打印,默认为 0 ○ nthread:所使用的线程数量,默认为最大可用数量 ● Booster Parameters(gbtree): ○ eta:学习率,默认初始化为 0.3,经多轮迭代后一般衰减到 0.01 至 0.2 ○ min_child_weight:每个子节点所需的最小权重和,默认为 1 ○ max_depth:树的最大深度,默认为 6,一般为 3 至 10 ○ max_leaf_nodes:叶结点最大数量,默认为 2^6 ○ gamma:拆分节点时所需的最小损失衰减,默认为 0 ○ max_delta_step:默认为 0 ○ subsample:每棵树采样的样本数量比例,默认为 1,一般取 0.5 至 1 ○ colsample_bytree:每棵树采样的特征数量比例,默认为 1,一般取 0.5 至 1 ○ colsample_bylevel:默认为 1 ○ lambda:L2 正则化项,默认为 1 ○ alpha:L1 正则化项,默认为 1 ○ scale_pos_weight:加快收敛速度,默认为 1 ● Learning Task Parameters: ○ objective:目标函数,默认为 reg:linear,还可取 binary:logistic、multi:softmax、 multi:softprob ○ eval_metric:误差函数,回归默认为 rmse,分类默认为 error,其他可取值包括 rmse、mae、logloss、merror、mlogloss、auc ○ seed:随机数种子,默认为 0 解释一下 LDA? 主题模型是一个比较广的领域。Spark 1.3 加入了隐含狄利克雷分布(LDA),差不多是现今 最成功的主题模型。最初被开发用于文本分析和群体遗传学,LDA 之后被不断拓展,应用到 从时间序列分析到图片分析等问题。首先,我们从文本分析的角度描述 LDA。 什么是主题?主题不是 LDA 的输入,所以 LDA 必须要从纯文本中推断主题。LDA 将主题定 义为词的分布。例如,当我们在一个 20 个新闻组的文章数据集上运行 MLlib 的 LDA,开始 的几个主题是: 5
Adaboost、GBDT 和 Xgboost 的区别? 1. 传统 GBDT 以 CART 作为基分类器,xgboost 还支持线性分类器,这个时候 xgboost 相 当于带 L1 和 L2 正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。 2. 2 传统 GBDT 在优化时只用到一阶导数信息,xgboost 则对代价函数进行了二阶泰勒展 开,同时用到了一阶和二阶导数。顺便提一下,xgboost 工具支持自定义代价函数,只 要函数可一阶和二阶求导。 3. xgboost 在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶 子节点个数、每个叶子节点上输出的 score 的 L2 模的平方和。从 Bias-variance tradeoff 角 度来讲,正则项降低了模型的 variance,使学习出来的模型更加简单,防止过拟合,这也是 xgboost 优于传统 GBDT 的一个特性。 4. Shrinkage(缩减),相当于学习速率(xgboost 中的 eta)。xgboost 在进行完一次迭代 后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习 空间。实际应用中,一般把 eta 设置得小一点,然后迭代次数设置得大一点。(补充:传统 GBDT 的实现也有学习速率) 5. 列抽样(column subsampling)。xgboost 借鉴了随机森林的做法,支持列抽样,不仅 能降低过拟合,还能减少计算,这也是 xgboost 异于传统 gbdt 的一个特性。 6. 对缺失值的处理。对于特征的值有缺失的样本,xgboost 可以自动学习出它的分裂方向。 7. xgboost 工具支持并行。boosting 不是一种串行的结构吗?怎么并行的?注意 xgboost 的 并行不是 tree 粒度的并行,xgboost 也是一次迭代完才能进行下一次迭代的(第 t 次迭代的 代价函数里包含了前面 t-1 次迭代的预测值)。xgboost 的并行是在特征粒度上的。我们知 道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点), xgboost 在训练之前,预先对数据进行了排序,然后保存为 block 结构,后面的迭代中重复 地使用这个结构,大大减小计算量。这个 block 结构也使得并行成为了可能,在进行节点的 分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的 增益计算就可以开多线程进行。 8. 可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点 对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情 况下,贪心算法效率就会变得很低,所以 xgboost 还提出了一种可并行的近似直方图算法, 用于高效地生成候选的分割点。 Adaboost 和 gbdt 的区别是 adaboost 对于每个样本有一个权重,样本预估误差越大,权重 越大。gradient boosting 则是直接用梯度拟合残差,没有样本权重的概念。 无监督和有监督算法的区别? 有监督学习:对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数 据进行标记(分类)预测。这里,所有的标记(分类)是已知的。因此,训练样本的岐义性 低。 无监督学习:对没有概念标记(分类)的训练样本进行学习,以发现训练样本集中的结构性 知识。这里,所有的标记(分类)是未知的。因此,训练样本的岐义性高。聚类就是典型的 无监督学习。 6
SVM 的推导,特性?多分类怎么处理? SVM 是最大间隔分类器,几何间隔和样本的误分次数之间存在关系。 从线性可分情况下,原问题,特征转换后的 dual 问题,引入 kernel(线性 kernel,多项式,高 斯),最后是 soft margin。 线性:简单,速度快,但是需要线性可分 多项式:比线性核拟合程度更强,知道具体的维度,但是高次容易出现数值不稳定,参数选 择比较多。 高斯:拟合能力最强,但是要注意过拟合问题。不过只有一个参数需要调整。 多分类问题,一般将二分类推广到多分类的方式有三种,一对一,一对多,多对多。 一对一:将 N 个类别两两配对,产生 N(N-1)/2 个二分类任务,测试阶段新样本同时交给所 有的分类器,最终结果通过投票产生。 一对多:每一次将一个例作为正例,其他的作为反例,训练 N 个分类器,测试时如果只有一 个分类器预测为正类,则对应类别为最终结果,如果有多个,则一般选择置信度最大的。从 分类器角度一对一更多,但是每一次都只用了 2 个类别,因此当类别数很多的时候一对一开 销通常更小(只要训练复杂度高于 O(N)即可得到此结果)。 多对多:若干各类作为正类,若干个类作为反类。注意正反类必须特殊的设计 LR 的推导,特性? 决策树的特性? 决策树基于树结构进行决策,与人类在面临问题的时候处理机制十分类似。其特点在于需要 选择一个属性进行分支,在分支的过程中选择信息增益最大的属性,在划分中我们希望决策 树的分支节点所包含的样本属于同一类别,即节点的纯度越来越高。决策树计算量简单,可 解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征,但是容易过拟合, 需要使用剪枝或者随机森林。信息增益是熵减去条件熵,代表信息不确定性较少的程度,信 息增益越大,说明不确定性降低的越大,因此说明该特征对分类来说很重要。由于信息增益 准则会对数目较多的属性有所偏好,因此一般用信息增益率(c4.5) 其中分母可以看作为属 性自身的熵。取值可能性越多,属性的熵越大。Cart 决策树使用基尼指数来选择划分属性, 直观的来说,Gini(D)反映了从数据集 D 中随机抽取两个样本,其类别标记不一致的概率,因 此基尼指数越小数据集 D 的纯度越高,一般为了防止过拟合要进行剪枝,有预剪枝和后剪 枝,一般用 cross validation 集进行剪枝。连续值和缺失值的处理,对于连续属性 a,将 a 在 D 上出现的不同的取值进行排序,基于划分点 t 将 D 分为两个子集。一般对每一个连续的两个 取值的中点作为划分点,然后根据信息增益选择最大的。与离散属性不同,若当前节点划分 属性为连续属性,该属性还可以作为其后代的划分属性。 7
SVM、LR、决策树的对比? SVM 既可以用于分类问题,也可以用于回归问题,并且可以通过核函数快速的计算,LR 实 现简单,训练速度非常快,但是模型较为简单,决策树容易过拟合,需要进行剪枝等。从优 化函数上看,soft margin 的 SVM 用的是 hinge loss,而带 L2 正则化的 LR 对应的是 cross entropy loss,另外 adaboost 对应的是 exponential loss。所以 LR 对远点敏感,但是 SVM 对 outlier 不太敏感,因为只关心 support vector,SVM 可以将特征映射到无穷维空间,但是 LR 不可以,一般小数据中 SVM 比 LR 更优一点,但是 LR 可以预测概率,而 SVM 不可以,SVM 依赖于数据测度,需要先做归一化,LR 一般不需要,对于大量的数据 LR 使用更加广泛,LR 向多分类的扩展更加直接,对于类别不平衡 SVM 一般用权重解决,即目标函数中对正负样 本代价函数不同,LR 可以用一般的方法,也可以直接对最后结果调整(通过阈值),一般小数 据下样本维度比较高的时候 SVM 效果要更优一些。SVM 通过映射到高维在做回归使用的。 GBDT 和 决策森林的区别? 随机森林采用的是 bagging 的思想,bagging 又称为 bootstrap aggreagation,通过在训练 样本集中进行有放回的采样得到多个采样集,基于每个采样集训练出一个基学习器,再将基 学习器结合。随机森林在对决策树进行 bagging 的基础上,在决策树的训练过程中引入了随 机属性选择。传统决策树在选择划分属性的时候是在当前节点属性集合中选择最优属性,而 随机森林则是对结点先随机选择包含 k 个属性的子集,再选择最有属性,k 作为一个参数控 制了随机性的引入程度。 另外,GBDT 训练是基于 Boosting 思想,每一迭代中根据错误更新样本权重,因此是串行生 成的序列化方法,而随机森林是 bagging 的思想,因此是并行化方法。 如何判断函数凸或非凸? 首先定义凸集,如果 x,y 属于某个集合 C,并且所有的 也属于 c,那么 c 为一个 凸集,进一步,如果一个函数其定义域是凸集,并且 则该函数为凸函数。上述条件还能推出更一般的结果, 如果函数有二阶导数,那么如果函数二阶导数为正,或者对于多元函数,Hessian 矩阵半正 定则为凸函数。 8
分享到:
收藏