机器学习面试


链接: AI算法工程师手册

链接: 深度学习面试(NLP)
机器学习三要素:模型、策略、算法。

一、机器学习基础知识

1.1LR线性回归

1.1.1线性回归/广义线性回归

回归分析的目标就是要拟合一条曲线,让图中红色线段加起来的和最小。
线性回归是回归分析的一种。

1.假设目标值(因变量)与特征值(自变量)之间线性相关.
(即满足一个多元一次方程f(x)=w1x1+…+wnxn+b.)。

有n组数据,i代表n组数据中的第i组。自变量x(x1,x2,…,xn),因变量y(y1,y2,…,yn),然后我们假设它们之间的关系是:f(x)=ax+b。那么线性回归的目标就是如何让f(x)和y之间的差异最小,换句话说就是a,b取什么值的时候f(x)和y最接近。
2.然后构建损失函数。
这里我们得先解决另一个问题,就是如何衡量f(x)和y之间的差异。在回归问题中,均方误差是回归任务中最常用的性能度量(均方误差)。记J(a,b)为f(x)和y之间的差异。
3.最后通过令损失函数最小来确定参数。(最关键的一步)
这里称J(a,b)为损失函数,明显可以看出它是个二次函数,即凸函数,所以有最小值。当J(a,b)取最小值的时候,f(x)和y的差异最小,然后我们可以通过J(a,b)取最小值来确定a和b的值。

三种方法来确定a和b的值:
最小二乘法(会解释)
最小二乘法(又称最小平方法)是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和最小,该方法还可以用于曲线拟合。
链接: 一文让你彻底搞懂最小二乘法(超详细推导)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

梯度下降法(会解释)
(梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。)
我们注意到最小二乘法最后一步要求p个方程组,是非常大的计算量,其实计算起来很难,因此我们就有了一种新的计算方法,就是梯度下降法,梯度下降法可以看作是 更简单的一种 求最小二乘法最后一步解方程 的方法
在这里插入图片描述

1.1.2logistics regression对数几率回归

在这里插入图片描述
请添加图片描述
在这里插入图片描述

1.1.3感知机

感知机是一种二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,+1代表正类,-1代表负类。感知机属于判别模型,它的目标是要将输入实例通过分离超平面将正负二类分离。
在这里插入图片描述

1.2 SVM

1.2.1SVM 支持向量机

(选择距离最大的超平面是因为距离最大的超平面具有最好的泛化性能)
训练数据清晰线性可分,硬间隔支持向量机;
支持向量机(Support Vector Machine,简称SVM)是一种用来解决二分类问题的机器学习算法,它通过在样本空间中找到一个划分超平面,将不同类别的样本分开,同时使得两个点集到此平面的最小距离最大,两个点集中的边缘点到此平面的距离最大。之所以选择距离最大的超平面是因为距离最大的超平面具有最好的泛化性能。
训练数据近似线性可分,软间隔支持向量机;
由于我们实际获取的真实样本往往会存在噪声,使得训练数据不是清晰线性可分的硬间隔支持向量机要求所有的样本均被最佳超平面正确划分,而软间隔支持向量机允许某些样本点不满足间隔大于等于1的条件,当然在最大化间隔的时候也要限制不满足间隔大于等于1的样本的个数使之尽可能的少。于是我们引入一个惩罚系数C>0,并对每个样本点(xi,yi)引入一个松弛变量(slack variables)ξ≥0
训练数据线性不可分,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例和实例之间的内积,所以不需要显式地指定非线性变换,而是用核函数替换当中的内积核函数*表示,通过一个非线性转换后的两个实例间的内积。

优点
有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;能找出对任务至关重要的关键样本(即:支持向量);
采用核技巧之后,可以处理非线性分类/回归任务
最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

缺点
训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 ,其中 N 为训练样本的数量;
当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 0(n2);
模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

1.2.2 SVR

最大化间隔带的宽度+最小化总的损失函数
在这里插入图片描述
在这里插入图片描述

1.3朴素贝叶斯

链接: 带你理解朴素贝叶斯分类算法
需要假设特征之间相互独立
在这里插入图片描述
在这里插入图片描述
优点:
(1) 算法逻辑简单,易于实现
(2)分类过程中时空开销小
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

1.4 聚类

训练样本的标记信息是未知的。
无监督学习的目标:通过对无标记训练样本的学习来揭露数据的内在性质以及规律。分类是事先知道类标的,而聚类事先不知道类标。

1.4.1 KNN

一个样本与数据集中的k个样本最相似, 如果这k个样本中的大多数属于某一个类别, 则该样本也属于这个类别。也就是说,该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。KNN方法在类别决策时,只与极少量的相邻样本有关。

**优点:**简单有效,重新训练代价低,算法复杂度低,适合类域交叉样本,适用大样本自动分类
**缺点:**惰性学习,类别分类不标准化,输出可解释性不强,不均衡性,计算量较大

有哪些聚类方法?

1.4.2原型聚类

k-means 算法
k-means++
在这里插入图片描述
在这里插入图片描述

1.4.3性能聚类
1.4.4密度聚类
1.4.5层次聚类
1.4.6 半监督学习?

1.5决策树

一、什么是信息熵
熵在信息论中被用来度量信息量,熵越大,所含的有用信息越多,其不确定性就越大;而熵越小,有用信息越少,确定性越大。
例如“太阳东升西落”这句话非常确定,是常识,其含有的信息量很少,所以熵的值就很小。
在决策树中,用熵来表示样本集的不纯度,如果某个样本集合中只有一个类别,其确定性最高,熵为0;反之,熵越大,越不确定,表示样本集中的分类越多样。
所以信息量的大小,并不是数据量的大小,而是不确定性(不纯度)的大小。

信息,指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。
人通过获得、识别自然界和社会的不同信息来区别不同事物,得以认识和改造世界。
在一切通讯和控制系统中,信息是一种普遍联系的形式。
1948年,数学家香农在题为“通讯的数学理论”的论文中指出:“信息是用来消除随机不定性的东西”。
创建一切宇宙万物的最基本。单位是信息。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因为有c4.5偏好类别少的属性的缺点,
所有 用c4.5的模型 不是直接选信息增益率最大的类别,而是先把信息增益低于平均水平的属性剔除掉,在选取信息增益率最大的类别(两方面兼顾)

1.5.1原理

决策树学习的算法通常递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类。这一过程对应着特征空间的划分,也对应着决策树的构建。

最优化的策略是:损失函数最小化。决策树的损失函数通常是正则化的极大似然函数。
决策树的生成对应着模型的局部最优,决策树的剪枝则考虑全局最优。

1.5.2特征选择

特征选择的关键是:选取对训练数据有较强分类能力的特征。
若一个特征的分类结果与随机分类的结果没有什么差别,则称这个特征是没有分类能力的。
通常特征选择的指标是:信息增益或者信息增益比。这两个指标刻画了特征的分类能力。

1.5.3决策树生成

决策树有两种常用的生成算法:
ID3 生成算法
生成算法核心是,在决策树的每个结点上应用信息增益准则选择特征,递归地构建决策树。
从根结点开始,计算结点所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征划分出子结点。再对子结点递归地调用以上方法,构建决策树。
直到所有特征的信息增益均很小或者没有特征可以选择为止,最后得到一个决策树 。
如果不设置特征信息增益的下限,则可能会使得每个叶子都只有一个样本点,从而划分得太细。
在这里插入图片描述
C4.5 生成算法
C4.5 生成算法与 ID3 算法相似,但是 C4.5 算法在生成过程中用信息增益比来选择特征。

1.5.4决策树剪枝

生成的决策树可能对训练数据有很好的分类能力,但是对于未知的测试数据却未必有很好要的分类能力,即可能发生过拟合的现象。
解决的方法是:对生成的决策树进行剪枝,从而使得决策树具有更好的泛化能力。剪枝是去掉过于细分的叶结点,使得该叶结点中的子集回退到父结点或更高层次的结点并让其成为叶结点。
在这里插入图片描述

预剪枝:
1、预剪枝就是边建立决策时边进行剪枝的操作
2、在决策树生成的过程中,每个节点划分前,首先进行估计
3、若当前节点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶子节点

预剪枝可以:限制树的深度,叶子节点个数,叶子节点的样本数,信息增益量等。
预剪枝会使得决策树的很多分支没有展开,也就是没有继续分类下去,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。但是另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但是在其基础上进行的后续划分有可能导致性能显著提升。预剪枝基于’贪心’本质,也就是能多剪枝就多剪枝,使得预剪枝策略给决策树带来了欠拟合的风险

后减枝:
1、当建立完决策树后再进行剪枝操作
2、后剪枝是先从训练集生成一棵完整的决策树,然后自底向上地对非叶子节点进行考察
3、若将该节点对应的子树替换为叶子节点能够带来决策树泛化性能的提升,将该子树替换为叶子节点

通过一定的衡量标准。这里讲的是CART算法的后剪枝方法——代价复杂度算法,即CCP算法。
后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往由于预剪枝决策树,但是后剪枝过程是在生成完全决策树后进行的,并且要自下往上地对树中的非叶子节点逐一进行考察计算,因此训练时间的开销比为剪枝和预剪枝决策树都要大得多

1.6集成学习

随机森林

1、bagging思想:防止过拟合。(5折交叉融合)

作为集成学习的二个方法,其实bagging和boosting。所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升分类方法效果。严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。
1.bagging
bagging算是很基础的集成学习的方法,他的提出是为了增强分类器效果,但是在处理不平衡问题上却有很好的效果。
在这里插入图片描述
如上图,原始数据集通过T次随机采样,得到T个与原始数据集相同大小的子数据集,分别训练得到T个弱分类器Classifier,然后结合为一个强分类器。

2.boosting
类似于bagging集成学习,boosting也是通过重采样得到多个弱分类器,最后得到一个强分类器。区别是boosting是基于权值的弱分类器集成。
在这里插入图片描述
如上图为boosting的流程图,主要为两个部分,更新采样权值D和计算分类器权重α,前者使得原来分错的样本再下一个分类器中能够有较大的几率出现,从而提高原来分错样本之后分对的概率;后者根据分类器的表现,赋予不同弱分类器不同权值,最后得到一个加权的强分类器。

1.6.1Boosting(提升算法)

在这里插入图片描述
在这里插入图片描述
加大分类误差率较小的弱分类器的权值,使得它在表决中起较大作用。
减小分类误差率较大的弱分类器的权值,使得它在表决中起较小的作用。

1.6.2Bagging(装袋算法)

它采用了一种有放回的抽样方法来生成训练数据。通过多轮有放回的对初始训练集进行随机采样,多个训练集被并行化生成,对应可训练出多个基学习器(基学习器间不存在强依赖关系),再将这些基学习器结合,构建出强学习器。其本质是引入了样本扰动,通过增加样本随机性,达到降低方差的效果。
在这里插入图片描述

1.6.3stacking集成算法

在这里插入图片描述

1.7梯度提升树

1.7.1提升树

提升树boostring tree是以决策树为基本学习器的提升方法。它被认为是统计学习中性能最好的方法之一。
对分类问题,提升树中的决策树是二叉决策树;对回归问题,提升树中的决策树是二叉回归树。
在这里插入图片描述
在这里插入图片描述

1.7.2xgboost(下面)

1.7.3LightGBM(下面)

1.8特征工程

1.8.1缺失值处理

删除。
补全:均值插补,同类均值插补,建模预测,高维映射。

1.8.2特征编码

特征二元化、one-hot、离散化、分桶

1.8.3数据标准化、正则化

标准化

数据标准化是将样本的属性取值缩放到某个指定的范围。
数据标准化的两个原因:1.某些算法要求样本数据的属性取值具有零均值和单位方差。2.样本不同属性具有不同量级时,消除数量级的影响。如下图所示为两个属性的目标函数的等高线。(数量级的差异将导致量级较大的属性占据主导地位。数量级的差异将导致迭代收敛速度减慢。所有依赖于样本距离的算法对于数据的数量级都非常敏感。)
归一化(Normalization)
最常见的标准化方法:Z-Score 标准化。
在这里插入图片描述

正则化

L1和L2正则化
在使用神经网络时,为了增加模型的泛化能力,防止模型只在训练集上有效、在测试集上不够有效,我们使用正则化。正则化是为了防止过拟合, 进而增强泛化能力。用白话文转义,泛化误差(generalization error)= 测试误差(test error)。也可以说是为了使得训练数据训练的模型在测试集上的表现(或说性能 performance)好不好
L1(lasso回归)、L2(Ridge回归(岭回归))正则化是通过修改损失函数来实现的,而Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trick)。
在这里插入图片描述
在这里插入图片描述

1.8.4特征选择

过滤式、包裹式、嵌入式。

1.8.5降维

主成分分析 PCA
核化线性降维 KPCA

1.8.6类别不平衡问题

链接: 机器学习之9——类别不平衡问题
在这里插入图片描述
在这里插入图片描述

1.9 模型评估

1.9.0方差与偏差

偏差:整体的角度上,预测值与真实值之间的误差。
度量了模型的表达能力、拟合能力。一般是系统性错误、算法错误导致的。(欠拟合)

方差:预测值之间的离散程度。
度量了模型的稳定性。模型对数据的敏感程度。(过拟合)

偏差方差窘境
泛化误差:分类器的错误:方差与偏差的和
boosting 减小偏差
bagging 减小方差

1.9.0噪声

在这里插入图片描述
在这里插入图片描述

1.9.1 精确率(Precision)召回率(Recall)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
链接: 准确率、精确率、召回率、F1值、ROC/AUC整理笔记.

1.9.2 AUC

真阳性率(TPR, True positive rate)
TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。
假阳性概率(FPR, False positive rate)
FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。
ROC曲线其实就是以FPR为横坐标,TPR为纵坐标绘制出来的曲线。
请添加图片描述

语言文字形容:
ROC曲线的绘制步骤如下:
1
假设已经得出一系列样本被划分为正类的概率Score值,按照大小排序。
2
从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于某个样本,其“Score”值为0.6,那么“Score”值大于等于0.6的样本都被认为是正样本,而其他样本则都认为是负样本。
3
每次选取一个不同的threshold,得到一组FPR和TPR,以FPR值为横坐标和TPR值为纵坐标,即ROC曲线上的一点。
4
根据3中的每个坐标点,画图。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
请添加图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请添加图片描述
请添加图片描述
请添加图片描述

1.9.3f1score

在这里插入图片描述

过拟合和欠拟合
如何处理过拟合和欠拟合?
l1、l2正则化
交叉验证
早停
降低学习率

1.9.4 泛化能力评估(验证)

k折交叉验证

1.9.5 过拟合

一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据。
过拟合产生的原因:出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。

解决方法:
1、 增大数据量
2、 减少feature个数(人工定义留多少个feature或者算法选取这些feature)
3、 正则化(留下所有的feature,但对于部分feature定义其parameter非常小)
4、 交叉验证,重采样评价模型效能,K折交叉验证
5、 保留一个验证数据集检验
几乎所有集成模型都是为了防止过拟合的。

L1正则化:
范数也称叫“稀疏规则算子”(Lasso Regularization)。为什么能稀疏呢?关键原因在于它能实现特征的自动选择。一般来说,训练集中的某些特征和输出 yiyi 之间并没有多大关系。在训练时引入这些特征,当然能获得更小的训练误差,但其泛化能力比较差,即造成过拟合!L1范数的引入就是为了实现特征自动选择,它会将没有信息的特征对应的权重置为0。

L2正则化:
在回归里面中又称岭回归”(Ridge Regression),也有的叫法为“权值衰减”(Weight Decay)。同样是为了解决过拟合问题,但与 L1 范数不同的是L2是使得特征对应的权重尽量的小,接近于0(但不会等于0)。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。为什么呢?这里给出一个说法:参数越小,表示模型不会过分地学习训练集的某个特征,也即更不容易造成过拟合。

二、机器学习建模(原理、优缺点、应用)


链接: AI算法工程师手册

链接: 终于有人把XGBoost 和 LightGBM 讲明白了,项目中最主流的集成算法
链接: 一篇文章搞定GBDT、Xgboost和LightGBM的面试
链接: lightgbm,xgboost,gbdt的区别与联系
链接: GDBT模型、XGBoost和LightGBM之间的区别与联系
链接: GBDT、XGBoost、LightGBM的区别和联系

链接: 珍藏版 | 20道XGBoost面试题
链接: 算法岗面试问题总结
链接: 通俗理解信息熵

2.1svm

介绍一下SVM,遇到线性不可分怎么办,核函数有什么特点
SVM的优缺点
SVM非线性分类,核函数的作用
SVM详细过程,支持向量,几何间隔概念,拉格朗日函数如何求取超平面,非线性分类
在这里插入图片描述

2.2GBDT

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.3xgboost

2.3.1XGBoost的优缺点

4.1 优点

剪枝:XGBoost 先从顶到底建立所有可以建立的子树,再从底到顶反向进行剪枝。比起 GBM,这样不容易陷入局部最优解。

XGBoost工具支持并行: boosting不是一种串行的结构吗?怎么并行的?注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第 次迭代的代价函数里包含了前面 次迭代的预测值)。XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

可并行的近似算法: 树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以XGBoost还提出了一种可并行的近似算法,用于高效地生成候选的分割点。

精度更高: GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数;

正则化: XGBoost 在目标函数中加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、叶子节点权重的 范式。正则项降低了模型的方差,使学习出来的模型更加简单,有助于防止过拟合,这也是XGBoost优于传统GBDT的一个特性。

缺失值处理: 对于特征的值有缺失的样本,XGBoost 采用的稀疏感知算法可以自动学习出它的分裂方向;

Shrinkage(缩减): 相当于学习速率。XGBoost 在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。传统GBDT的实现也有学习速率;

列抽样: XGBoost 借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算。这也是XGBoost异于传统GBDT的一个特性;

灵活性更强: GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART 还支持线性分类器,使用线性分类器的 XGBoost 相当于带 和 正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。此外,XGBoost 工具支持自定义损失函数,只需函数支持一阶和二阶求导;

4.2 缺点
虽然利用预排序和近似算法可以降低寻找最佳分裂点的计算量,但在节点分裂过程中仍需要遍历数据集;

预排序过程的空间复杂度过高,不仅需要存储特征值,还需要存储特征对应样本的梯度统计值的索引,相当于消耗了两倍的内存。
在这里插入图片描述

2.3.2 XGBoost与GBDT的联系和区别有哪些?

(1)GBDT是机器学习算法,XGBoost是该算法的工程实现。
(2)正则项: 在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
(3)导数信息: GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
(4)基分类器: 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
(5)子采样: 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样。
(6)缺失值处理: 传统GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略。
(7)并行化: 传统GBDT没有进行并行化设计,注意不是tree维度的并行,而是特征维度的并行。XGBoost预先将每个特征按特征值排好序,存储为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点,极大提升训练速度。

2.3.3 为什么XGBoost泰勒二阶展开后效果就比较好呢?

(1)从为什么会想到引入泰勒二阶的角度来说(可扩展性): XGBoost官网上有说,当目标函数是MSE时,展开是一阶项(残差)+二阶项的形式,而其它目标函数,如logistic loss的展开式就没有这样的形式。为了能有个统一的形式,所以采用泰勒展开来得到二阶项,这样就能把MSE推导的那套直接复用到其它自定义损失函数上。简短来说,就是为了统一损失函数求导的形式以支持自定义损失函数。至于为什么要在形式上与MSE统一?是因为MSE是最普遍且常用的损失函数,而且求导最容易,求导后的形式也十分简单。所以理论上只要损失函数形式与MSE统一了,那就只用推导MSE就好了。

(2)从二阶导本身的性质,也就是从为什么要用泰勒二阶展开的角度来说(精准性): 二阶信息本身就能让梯度收敛更快更准确。这一点在优化算法里的牛顿法中已经证实。可以简单认为一阶导指引梯度方向,二阶导指引梯度方向如何变化。简单来说,相对于GBDT的一阶泰勒展开,XGBoost采用二阶泰勒展开,可以更为精准的逼近真实的损失函数。

2.3.4 XGBoost对缺失值是怎么处理的?

在普通的GBDT策略中,对于缺失值的方法是先手动对缺失值进行填充,然后当做有值的特征进行处理,但是这样人工填充不一定准确,而且没有什么理论依据。而XGBoost采取的策略是先不处理那些值缺失的样本,采用那些有值的样本搞出分裂点,在遍历每个有值特征的时候,尝试将缺失样本划入左子树和右子树,选择使损失最优的值作为分裂点。

2.3.5 XGBoost为什么可以并行训练?

(1)XGBoost的并行,并不是说每棵树可以并行训练,XGBoost本质上仍然采用boosting思想,每棵树训练前需要等前面的树训练完成才能开始训练。

(2)XGBoost的并行,指的是特征维度的并行:在训练之前,每个特征按特征值对样本进行预排序,并存储为Block结构,在后面查找特征分割点时可以重复使用,而且特征已经被存储为一个个block结构,那么在寻找每个特征的最佳分割点时,可以利用多线程对每个block并行计算。

2.3.6 XGBoost如何评价特征重要性?

在这里插入图片描述

2.4lightgbm

链接: 机器学习之12—Lightgbm

2.4.1 LightGBM主要改进点:

  1. Histogram算法
  2. 带深度限制的Leaf-wise的叶子生长策略
  3. 直方图差加速
    在这里插入图片描述
    在这里插入图片描述
    3.直方图差加速
    在树中,一个叶子的直方图可以由它的父亲节点的直方图与它兄弟的直方图做差得到。利用这个方法,LightGBM可以在构造一个叶子的直方图后,可以用非常微小的代价得到它兄弟叶子的直方图,在速度上可以提升一倍。

4.直接支持类别特征
一般算法,需要把类别特征转化到多维的0/1特征,然而会降低了空间和时间的效率。 LightGBM优化了对类别特征的支持,可以直接输入类别特征,不需要额外的0/1展开

2.4.2 LIghtGBM的优缺点:

优点:
1)速度较快,是XGBoost速度的16倍,内存占用率为XGBoost的1/6
2)采用了直方图算法,将连续的浮点型特征值离散化成K个整数
3)使用带有深度限制的leaf-wise的叶子生长策略。
在这里插入图片描述
在这里插入图片描述
缺点:
1)可能会长出比较深的决策树,产生过拟合。因此LightGBM在Leaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合
2)基于偏差的算法,会对噪点较为敏感
3)在寻找最优解时,依据的最优切分变量,没有将最优解是全部特征的综合这一理念来考虑

叙述xgboost和lightgbm的区别
介绍一下xgb
xgb的boosting如何体现,有什么特殊含义
xgb能否处理离散特征,为什么,如果要用怎么处理
lgb能否处理,模型做了哪些操作

三、问题总结

1、机器学习里面的聚类和分类模型有哪些?
分类:LR、SVM、KNN、决策树、RandomForest、GBDT

回归:non-Linear regression、SVR(支持向量回归–>可用线性或高斯核(RBF))、随机森林

聚类:Kmeans、层次聚类、GMM(高斯混合模型)、谱聚类
聚类算法(可以作为监督学习中稀疏特征的处理):
Kmeans、层次聚类、GMM(高斯混合模型)聚类算法唯一用到的信息是样本和样本之间的相似度。相似度与距离负相关。
评判聚类效果准则:高类间距,低类内距;高类内相似度,低类间相似度。

2、正则化为什么能防止过拟合?
过拟合表现在训练数据上的误差非常小,而在测试数据上误差反而增大。其原因一般是模型过于复杂,过分得去拟合数据的噪声. 正则化则是对模型参数添加先验,使得模型复杂度较小,对于噪声的输入扰动相对较小。

正则化时,相当于是给模型参数w 添加了一个协方差为1/lambda 的零均值高斯分布先验。对于lambda =0,也就是不添加正则化约束,则相当于参数的高斯先验分布有着无穷大的协方差,那么这个先验约束则会非常弱,模型为了拟合所有的训练数据,w可以变得任意大不稳定。lambda越大,表明先验的高斯协方差越小,模型约稳定,相对的variance(方差)也越小。

4、tree-base模型是否了解,决策树和随机森林区别是什么,树节点的分裂都有哪些策略?
随机森林是很多棵决策树组成的,一定程度上能避免过拟合问题。
树节点分裂:
ID3 : 以信息增益大小来建立。
C4.5 :以信息增益率大小来建立。
CART:以基尼系数大小来建立。
ID3和C4.5是分类型决策树,只处理离散型的,CART是分类回归都可以做的决策树,支持所有类型。

5、样本不平衡处理方法?(好多次)
a、负样本少,就复制到一定比例
b、或者把正样本删除一部分
c、分段逐一训练(举例:正样本10000,负样本1000,将正样本随机分成10份,每份1000,然后拿着负样本的1000与正样本的每一份进行训练,最后进行融合选择)
d、模型参数调权重(模型里面有个参数可以调整样本权重)
e、交叉验证
f、根据样本随机构造新的样本

6、连续值转换为离散值,有什么办法,比如年龄?(好多次)
根据业务知识区分
根据pandas下面qcut和cut方法进行等频或等宽处理
风控中 可以根据woe和iv 或者卡方检验
用聚类来做最优化尺度

7、你在建模过程中遇到过什么困难?(很多次)
样本不平衡问题(然后回答解决办法),样本过拟合问题(然后回答解决办法),准确率不高(结合更换特征,模型调参,换模型等思路回答)

8、xgboost怎么处理缺失值
xgboost处理缺失值的方法和其他树模型不同,xgboost把缺失值当做稀疏矩阵来对待,本身的在节点分裂时不考虑的缺失值的数值。缺失值数据会被分到左子树和右子树分别计算损失,选择较优的那一个。如果训练中没有数据缺失,预测时出现了数据缺失,那么默认被分类到右子树。

9、xgb和lgb的区别
1、xgboost采用的是level-wise的分裂策略,而lightGBM采用了leaf-wise的策略,区别是xgboost对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是xgboost也进行了分裂,带来了务必要的开销。 leaft-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。
2、lightgbm使用了基于histogram的决策树算法,这一点不同与xgboost中的 exact 算法,histogram算法在内存和计算代价上都有不小优势。
3、内存上优势:很明显,直方图算法的内存消耗为(#data* #features * 1Bytes)(因为对特征分桶后只需保存特征离散化之后的值),而xgboost的exact算法内存消耗为:(2 * #data * #features* 4Bytes),因为xgboost既要保存原始feature的值,也要保存这个值的顺序索引,这些值需要32位的浮点数来保存。
4、计算上的优势,预排序算法在选择好分裂特征计算分裂收益时需要遍历所有样本的特征值,时间为(#data),而直方图算法只需要遍历桶就行了,时间为(#bin)
5、直方图做差加速
6、一个子节点的直方图可以通过父节点的直方图减去兄弟节点的直方图得到,从而加速计算。
7、lightgbm支持直接输入categorical的feature
8、feature parallel:一般的feature parallel就是对数据做垂直分割(partiion data vertically,就是对属性分割),然后将分割后的数据分散到各个workder上,各个workers计算其拥有的数据的best splits point, 之后再汇总得到全局最优分割点。但是lightgbm说这种方法通讯开销比较大,lightgbm的做法是每个worker都拥有所有数据,再分割?(没懂,既然每个worker都有所有数据了,再汇总有什么意义?这个并行体现在哪里??)
9、data parallel:传统的data parallel是将对数据集进行划分,也叫 平行分割(partion data horizontally), 分散到各个workers上之后,workers对得到的数据做直方图,汇总各个workers的直方图得到全局的直方图。 lightgbm也claim这个操作的通讯开销较大,lightgbm的做法是使用”Reduce Scatter“机制,不汇总所有直方图,只汇总不同worker的不同feature的直方图(原理?),在这个汇总的直方图上做split,最后同步。
10、lightgbm做了cache优化

10、熵与gini,既然这两个都可以表示数据的不确定性,不纯度。那么这两个有什么区别那?
Gini 指数的计算不需要对数运算,更加高效;
Gini 指数更偏向于连续属性,熵更偏向于离散属性。

11、为什么lr用sigmoid

  1. 因为是二分类问题,认为分类满足伯努利分布
  2. 求导快
  3. 值域[0-1],单调递增

12、随机森林如何评估特征重要性
衡量变量重要性的方法有两种,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足够重要,那么改变它会极大的增加测试误差;反之,如果改变它测试误差没有增大,则说明该变量不是那么的重要

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习面试题pdf是一份包含机器学习相关问题的文档,通常用于准备机器学习职位的面试。这类面试题包括理论和实践两方面的内容。 在理论方面,机器学习面试题可能会涉及基本概念、模型选择与评估、特征工程、模型调参等方面的问题。例如,常见的问题包括机器学习的基本定义、监督学习与无监督学习的区别、过拟合与欠拟合问题的解决方法等等。这些问题考察了应聘者对于机器学习算法和模型的理解程度。 在实践方面,机器学习面试题可能会要求应聘者运用机器学习算法来解决实际问题。这种类型的问题可能涉及数据预处理、特征选择与提取、建模、模型评估等多个步骤。应聘者需要运用所学的机器学习知识,选择适当的算法和工具,处理和分析给定的数据,并给出合理的解决方案。 对于准备机器学习面试的应聘者来说,机器学习面试题pdf是一个宝贵的资源。应聘者可以通过研究和解答这些问题,巩固和扩展自己的机器学习知识,并了解常见的面试考点和答题思路。此外,应聘者还可以利用机器学习面试题pdf进行自我评估和练习,提高应对面试问题的能力。 总的来说,机器学习面试题pdf对于机器学习职位的应聘者来说是一份重要的学习和准备资料。通过认真研究和解答这些问题,应聘者可以提高自己的机器学习理论水平和实践能力,增加面试成功的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值