机器学习问答题

1. 生成模型 VS 判别模型

生成模型:
由数据学得联合概率分布函数 P ( X , Y ) P(X,Y) P(X,Y),求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)的预测模型。
朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机。
判别式模型:
由数据直接学习决策函数 Y = f ( X ) Y=f(X) Y=f(X),或由条件分布概率 P ( Y ∣ X ) P(Y|X) P(YX)作为预测模型。
K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场。

2. 线性回归

原理:用线性函数拟合数据,用 MSE 计算损失,然后用梯度下降法(GD)找到一组使 MSE 最小的权重。

3. 什么是回归?哪些模型可用于解决回归问题?

指分析因变量和自变量之间关系。
线性回归: 对异常值非常敏感;
多项式回归: 如果指数选择不当,容易过拟合;
岭回归:加入L2正则项,等价于对参数 w w w引入协方差为 α \alpha α的零均值高斯先验,不能做variable selection;
Lasso回归:加入L1正则项,等价于对参数 w w w引入拉普拉斯先验,可以做variable selection;弹性网络回归。

4. 梯度下降法找到的一定是下降最快的方向吗?

不一定,它只是目标函数在当前的点的切平面上下降最快的方向。
在实际执行期中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到超线性的收敛速度。梯度下降类的算法的收敛速度一般是线性甚至次线性的(在某些带复杂约束的问题)。

5. 逻辑回归

是一中常见的用于分类的模型,本质上还是一个线性回归,先把特征线性组合,然后使用sigmoid函数(单调可微)将结果约束到0~1之间,结果用于二分类或者回归预测。

6. 逻辑回归和最大似然有什么关系?

通过极大似然法可以求解逻辑回归模型中的参数。最大似然估计就是通过已知结果去反推最大概率导致该结果的参数。极大似然估计是概率论在统计学中的应用,它提供了一种给定观察数据来评估模型参数的方法,即 “模型已定,参数未知”,通过若干次试验,观察其结果,利用实验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。逻辑回归是一种监督式学习,是有训练标签的,就是有已知结果的,从这个已知结果入手,去推导能获得最大概率的结果参数 β \beta β,只要我们得出了这个参数,那我们的模型就自然可以很准确的预测未知的数据了。

7. 逻辑回归的损失函数;为什么不用MSE作为损失函数?

L o s s = − y log ⁡ ( y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) Loss =-y\log(\hat{y})-(1-y)\log(1-\hat{y}) Loss=ylog(y^)(1y)log(1y^)
原因:

  • 损失函数的角度:逻辑回归预测函数是非线性的,采用MSE得到的损失函数是非凸函数,会存在很多局部极小值,梯度下降法可能无法获得全局最优解。
  • 极大似然的角度:采用极大似然法估计逻辑回归模型的参数,最终得到的对数似然函数形式与对数损失函数一致。

8. 逻辑回归中样本不均衡我们怎么处理?

  • 调整分类阈值,不统一使用0.5,根据样本中类别的比值进行调整。
  • 多类样本负采样。进一步也可将多类样本负采样构建多个训练集,最后聚合多个模型的结果。
  • 少类样本过采样:随机复制、基于聚类的过采样、SMOTE。
  • 改变性能指标,推荐采用ROC、AUC、F1-Score。
  • 模型训练增加正负样本惩罚权重,少类样本权重加大,增大损失项。

9. 逻辑回归模型是线性模型还是非线性,为什么?能推导它的原理吗?

逻辑回归模型是广义线性模型,但其原始形式是非线性的,决定这个复合函数是否是线性的,要看 g ( x ) g(x) g(x)的形式,假如阈值为 0.5,那么 g ( x ) > = 0 g(x)>=0 g(x)>=0时,预测为 1,否则预测为 0.因此,这里的$ g(x)$,实际是一个决策面,这个决策面的两侧分别是正例和负例。逻辑回归的作用是把决策面两侧的点映射到逻辑回归曲线阈值的两侧。

10. 逻辑回归如何解决非线性分类问题?

加核函数或特征变换,显式地把特征映射到高维空间。

11. 逻辑回归使用注意事项,相比别的分类模型为什么使用它?

注意,建模数据量不能太少,目标变量中每个类别所对应的样本数量要足够充分,才能支持建模排除共线性问题(自变量间相关性很大);异常值会给模型带来很大干扰,要剔除;逻辑回归不能处理缺失值,所以之前应对缺失值进行适当处理。
相对于别的模型用逻辑回归的好处是在于在数据量比较大的情况下越复杂的模型可能会越慢,逻辑回归就显得会快上很多了。

12. LR 和 DNN 联系和区别是什么?

二者都是用于二分类问题,且无法学习比较复杂的非线性模型,区别在于DNN 是神经网络,输出结果为 ( 1 , − 1 ) (1,-1) (1,1),lr 输出结果为 (0,1);DNN 的激活函数为sign,lr 的激活函数为 sigmoid。

13. LR逻辑回归为什么对特征进行离散化?

  • 离散特征的增加和减少都很容易,易于模型的快速迭代;

  • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

  • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

  • 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;

  • 离散化后可以进行特征交叉,由 M + N M+N M+N个变量变为 M × N M\times N M×N个变量,进一步引入非线性,提升表达能力;

  • 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;

  • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

14. 谈谈牛顿法

收敛速度快,指数级收敛,但是不保证线性收敛,只保证二阶导收敛。
牛顿法比梯度下降法收敛的要快,这是因为牛顿法是二阶收敛,梯度下降是一阶收敛。事实上,梯度下降法每次只从当前位置选一个上升速度最大的方向走一步,牛顿法在选择方向时,不仅会考虑上升速度是否够大,还会考虑你走了一步之后,上升速度是否会变得更大。所以所需要的迭代次数更少。从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

15. 牛顿法优化过程

牛顿法的基本思想是用迭代点的梯度信息和二阶导数对目标函数进行二次函数逼近,然后把二次函数的极小值作为新的迭代点,并不断重复这一过程,直到求出极小点。
假设 f ( x ) f(x) f(x)的二阶导数 ∇ 2 f ( x ) \nabla^2f(x) 2f(x)连续,函数 f ( x ) f(x) f(x) x k x_k xk处的二阶泰勒展开为
f ( x ) ≈ f k + ∇ f ( x k ) ( x − x k ) + 1 2 ( x − x k ) T ∇ 2 f ( x k ) ( x − x k ) f(x) \approx f_k +\nabla f(x_k)(x- x_k)+\frac 12 (x-x_k)^T\nabla ^2f(x_k)(x-x_k) f(x)fk+f(xk)(xxk)+21(xxk)T2f(xk)(xxk)
其中 f k : = f ( x k ) f_k:=f(x_k) fk:=f(xk),求函数的驻点那就是求导并令导数为0,即
∇ f ( x ) = ∇ f ( x k ) + ∇ 2 f ( x k ) ( x − x k ) = 0 \nabla f(x)=\nabla f(x_k)+\nabla ^2f(x_k)(x-x_k)=0 f(x)=f(xk)+2f(xk)(xxk)=0
如果二阶导数为非奇异,可以得到下一个迭代点(上式求出来的 x x x就是 x k + 1 x_{k+1} xk+1
x k + 1 = x k − ∇ 2 f ( x k ) ∇ f ( x k ) x_{k+1}=x_k-\nabla^2f(x_k)\nabla f(x_k) xk+1=xk2f(xk)f(xk)
如果二阶导数奇异,那么可以求解下面线性方程确定搜索方向 d k d_k dk
∇ 2 f ( x k ) d k = − ∇ f ( x k ) \nabla^2f(x_k)d_k=-\nabla f(x_k) 2f(xk)dk=f(xk)
后计算下一个迭代点 x k + 1 = x k + d k x_{k+1}=x_k +d_k xk+1=xk+dk

16. 交叉熵的物理含义

交叉熵是由相对熵导出的,相对熵的含义是衡量两个概率分布 p p p q q q 之间的差异。相对熵的前半部分是交叉熵,后半部分是常数,相对熵达到最小值的时候,交叉熵也达到了最小值,所以交叉熵也可以衡量计算之后的概率分布 q q q 与真实概率分布 p p p 之间的差异。交叉熵最小值等同于最大似然估计。

17. SVM

机器学习之SVM
SVM 是一种二分类模型,学习的目标是在特征空间中找到一个分离超平面,且此超平面是间隔最大化的最优分离超平面,最终可转化为一个凸二次规划问题求解。(间隔最大是它有别于感知机)
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)—学习的对偶问题—软间隔最大化(引入松弛变量)— 非线性支持向量机(核技巧)

18. SVM,LR 的区别联系,重点介绍下 SVM 算法。

  • 相同之处:如果不考虑核函数,LR和SVM都是线性分类器,都是监督算法,都是判别模型。
  • 不同之处:1.损失函数不同,LR使用logistical loss(交叉熵),SVM使用hingeloss,SVM的损失函数自带正则项,而LR则需要自己添加正则项;2.解决非线性问题时,SVM采用核函数机制,而LR一般不用,因为复杂核函数需要很大计算量,SVM中只有支持向量参与计算,而LR是全部样本都需要参与计算,若使用核函数计算量太大。3.对异常值的敏感度不一样。SVM算法对于异常值的敏感度相对较低。这是因为,在SVM中将数据间隔最大化的过程是通过选择支持向量来实现的,而支持向量是距离超平面最近的样本点,因此SVM算法的分类决策非常依赖于这些支持向量,而不太受其他数据点的影响。如果数据集中存在一些异常值,这些异常值往往远离超平面,不会对支持向量的选取产生影响,因此SVM算法对于异常值的敏感度相对较低。v而LR算法对于异常值的敏感度相对较高。这是因为,LR是一种概率生成模型,其分类决策是基于样本的概率模型进行计算的,而异常值可能会对概率模型产生显著影响,从而对LR算法的分类结果产生较大影响。4.在高维空间LR的表现比SVM更稳定,因为SVM是要最大化间隔,这个间隔依赖与距离测度,在高维空间时这个距离测度往往不太好。(所以需要做归一化)

假设:特征数量为 n n n,训练样本数量为 m m m
1)如果 n n n相对于 m m m更大,比如 n = 10000 n=10000 n=10000 m = 1000 m=1000 m=1000,则使用LR或线性SVM
理由:特征数相对于训练样本数已经够大了,使用线性模型就能取得不错的效果,不需要过于复杂的模型。

2)如果 n n n 较小, m m m比较大,比如 n = 10 n = 10 n=10 m = 10 , 000 m = 10,000 m=10,000,则使用 SVM(高斯核函数)
理由:在训练样本数量足够大而特征数较小的情况下,可以通过使用复杂核函数的 SVM 来获得更好的预测性能,而且因为训练样本数量并没有达到百万级,使用复杂核函数的 SVM 也不会导致运算过慢。

3)如果 n n n 较小, m m m 非常大,比如 n = 100 n = 100 n=100, m = 500 , 000 m = 500,000 m=500,000,则应该引入/创造更多的特征,然后使用LR 或者线性核函数的 SVM。
理由::因为训练样本数量特别大,使用复杂核函数的 SVM 会导致运算很慢,因此应该考虑通过引入更多特征,然后使用线性核函数的 SVM 或者 LR来构建预测性更好的模型。

19. SVM 为什么采用间隔最大化?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

20. 为什么 SVM 要引入核函数?

原始样本空间可能会线性不可分,这样需要将原始空间映射到一个更高维的特征空间,使得样本在这个特征空间线性可分。样本映射到高维空间后的内积求解通常是困难的,引入核函数可简化内积的计算。

21. 为什么SVM对缺失数据敏感?

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

22. 核函数要满足什么性质,常见的核函数有哪些?

核函数的性质:核函数必须是连续的,对称的,并且最优选地应该具有正(半)定 Gram 矩阵。据说满足 Mercer 定理的核是正半定数,意味着它们的核矩阵只有非负特征值。使用肯定的内核确保优化问题将是凸的和解决方案将是唯一的。
然而,许多并非严格定义的核函数在实践中表现得很好。一个例子是 Sigmoid内核,尽管它广泛使用,但它对于其参数的某些值不是正半定的。 Boughorbel(2005)也实验证明,只有条件正定的内核在某些应用中可能胜过大多数经典内核。
内核还可以分为各向异性静止,各向同性静止,紧凑支撑,局部静止,非稳定或可分离非平稳。此外,内核也可以标记为 scale-invariant(规模不变)或scale-dependent(规模依赖),这是一个有趣的属性,因为尺度不变内核驱动训练过程不变的数据的缩放。

补充:Mercer定理:任何半正定的函数都可以作为核函数。所谓半正定的函数 f ( x i , x j ) f(x_i,x_j) f(xi,xj),是指拥有训练数据集合 ( x 1 , x 2 , … , x n ) (x_1,x_2,\dots,x_n) (x1,x2,,xn),我们定义一个矩阵的元素 a i j = f ( x i , x j ) a_{ij}=f(x_i,x_j) aij=f(xi,xj),这个矩阵是 n × n n\times n n×n,如果这个矩阵式半正定的,那么 f ( x i , x j ) f(x_i,x_j) f(xi,xj)就称为半正定函数。这个 Mercer 定理不是核函数必要条件,只是一个充分条件,即还有不满足 mercer 定理的函数也可以是核函数。

几种常用的核:

  • 线性核:线性内核是最简单的内核函数。它由内积 < x , y > <x,y> <xy>加上可选的常数 c c c给出。使用线性内核的内核算法通常等于它们的非内核对应物,即具有线性内核的 KPCA与标准 PCA 相同。
  • 多项式核函数:多项式核是非固定内核。 多项式内核非常适合于所有训练数据都归一化的问题。
  • 高斯核:高斯核是径向基函数核的一个例子。可调参数 σ \sigma σ在内核的性能中起着主要作用,并且应该仔细地调整到手头的问题。 如果过高估计,指数将几乎呈线性,高维投影将开始失去其非线性功率。 另一方面,如果低估,该函数将缺乏正则化,并且决策边界将对训练数据中的噪声高度敏感。
  • 指数的内核:指数核与高斯核密切相关,只有正态的平方被忽略。 它也是一个径向基函数内核。
  • 拉普拉斯算子核:拉普拉斯核心完全等同于指数内核,除了对 σ \sigma σ参数的变化不那么敏感。作为等价的,它也是一个径向基函数内核。

23. SVM的高斯核为什么会把原始维度映射到无穷多维?

首先我们要清楚,SVM中,对于维度的计算,我们可以用内积的形式,假设函数 K ( x 1 , x 2 ) = ( 1 , x 1 x 2 , x 2 ) K(x_1,x_2)=(1,x_1x_2,x^2) K(x1,x2)=(1,x1x2,x2)表示一个简单的从二维映射到三维。则在SVM的计算中,可以表示为 K ( x 1 , x 2 ) = 1 + x 1 x 2 + x 2 K(x_1,x_2)=1+x_1x_2+x^2 K(x1,x2)=1+x1x2+x2.再来看 e x e^x ex泰勒展开式: e x ≈ 1 + x + x 2 2 ! + x 3 3 ! + ⋯ + x n n ! e^x \approx 1 + x + \frac{x^2}{2!} +\frac{x^3}{3!}+\dots+ \frac{x^n}{n!} ex1+x+2!x2+3!x3++n!xn 所以这个无穷多项的式子正是对于 e x e^x ex的近似, e x e^x ex所对应的映射: K ( x ) = ( 1 , x , x 2 2 ! , x 3 3 ! , … , x n n ! ) K(x)=(1,x, \frac{x^2}{2!}, \frac{x^3}{3!},\dots, \frac{x^n}{n!}) K(x)=(1,x,2!x2,3!x3,,n!xn) 再来看高斯核: K ( x 1 , x 2 ) = e ( − ∥ x 1 − x 2 ∥ 2 2 σ 2 ) K(x_1,x_2)=e^{(-\frac{\lVert x_1-x_2\rVert^2}{2\sigma^2})} K(x1,x2)=e(2σ2x1x22) 将泰勒展开式带入高斯核,我们得到了一个无穷维度的映射: K ( x 1 , x 2 ) = 1 + ( − ∥ x 1 − x 2 ∥ 2 2 σ 2 ) + ( − ∥ x 1 − x 2 ∥ 2 2 σ 2 ) 2 2 ! + ( − ∥ x 1 − x 2 ∥ 2 2 σ 2 ) 3 3 ! + ⋯ + ( − ∥ x 1 − x 2 ∥ 2 2 σ 2 ) n n ! K(x_1,x_2) = 1+(-\frac{\lVert x_1-x_2\rVert^2}{2\sigma^2}) +\frac{(-\frac{\lVert x_1-x_2\rVert^2}{2\sigma^2})^2}{2!}+\frac{(-\frac{\lVert x_1-x_2\rVert^2}{2\sigma^2})^3}{3!}+\dots+\frac{(-\frac{\lVert x_1-x_2\rVert^2}{2\sigma^2})^n}{n!} K(x1,x2)=1+(2σ2x1x22)+2!(2σ2x1x22)2+3!(2σ2x1x22)3++n!(2σ2x1x22)n
那么,对于 x 1 x_1 x1 x 2 x_2 x2的内积形式符合在SVM中无穷维度下的内积计算,即高斯核将数据映射到无穷高的维度。
核函数的本质简要概括下:

  • 实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间去(映射到高维空间后,相关特征便被分开了,也就达到了分类的目的);
  • 但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕(如19维乃至无穷维);
  • 此时,核函数就隆重登场了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。

24. 为什么要将求解SVM的原始问题转换为对偶问题?

  • 对偶问题将原始问题中的约束转为了对偶问题中的等式约束;
  • 方便核函数的引入;
  • 改变了问题的复杂度。由求特征向量 w w w 转为求比例系数 α \alpha α ,在原始问题下,求解的复杂度与样本的维度有关,即 w w w 的维度。在对偶问题下,只与样本数量有关。对偶问题是凸优化问题,可以进行较好的求解,SVM中就是将原问题转换为对偶问题进行求解。

25. 解释一下决策树的建模过程?

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶节点表示一个类。用决策树分类,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;每一个子节点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点。最后将实例分到叶节点的类中。
决策树学习算法包含特征选择、决策树的生成和决策树的剪枝过程。

26. 有几种不同的决策树,区别在哪?

ID3决策树的输入训练数据是一组带有类别标记的样本,构造的结果是一棵多叉树。树的分支节点一般表示为一个逻辑判断,如形式为 a = a j a=a_j a=aj 的逻辑判断,其中 a a a 是属性, a j a_j aj 是该属性的所有取值。如果选择在某一节点上用哪个特征呢?标准是在该节点上选取能对该节点处的训练数据进行最优划分的属性。划分的标准是信息增益(Information Gain),即划分前后数据集的熵的差异。取能带来最大信息增益的那个 feature 作为当前划分标准。

  • ID3:离散特征(标称型数据)、贪心算法、信息增益、特征所有取值切分(非二切分)。缺点:无剪枝策略,容易过拟合;信息熵的设定使得高基数类别特征的条件熵会很大。因为高基数类别代表了树要分裂非常非常多的叶子节点,并且每个叶子节点上的样本树很少,越小的数据子集其“纯度”显然越容易高,导致了条件熵会趋向于0,信息增益会很大;只能用于处理离散分布的特征并且只能处理分类问题;没有考虑缺失值。
  • C4.5:离散/连续特征(对连续属性扫描排序,设定阈值,二分样本)、信息增益比(引入分裂信息Split information的项来惩罚值较多的feature、可剪枝(合并叶节点)、可处理缺失值。
  • CART:CART包含的基本过程有分裂,剪枝和树选择。分裂:分裂过程是一个二叉递归划分过程,其输入和预测特征即可以是连续型也可以是离散型的,CART没有停止准则,会一直生长下去;剪枝:采用代价复杂度剪枝,从最大树开始,每次选择训练数据熵对整体性能贡献最小的那个分裂节点作为下个剪枝对象,直到只剩下根节点。CART会产生一系列嵌套的剪枝树,需要从中选出一颗最优的决策树;树选择:用单独的测试集评估每棵剪枝树的预测性能(也可以用交叉验证)。CART在C4.5的基础上进行了很多提升。C4.5 为多叉树,运算速度慢,CART 为二叉树,运算速度快;C4.5 只能分类,CART 既可以分类也可以回归;CART 使用 Gini 系数作为变量的不纯度量,减少了大量的对数运算;CART 采用代理测试来估计缺失值,而 C4.5 以不同概率划分到不同节点中;CART 采用“基于代价复杂度剪枝”方法进行剪枝,而 C4.5采用悲观剪枝方法。

27. 决策树怎么剪枝?

包括预剪枝和后剪枝。预剪枝是在决策树的构建过程中加入限制,比如控制叶子节点最少的样本个数,提前停止;后剪枝是在决策树构建完成之后,根据加上正则项的结构风险最小化自下向上进行的剪枝操作。剪枝的目的就是防止过拟合,是模型在测试数据上变现良好,更加鲁棒。

28. 决策树的缺失值和数值型特征分别是怎么处理的?

数值型特征:采用二分法对连续属性进行处理。给定样本集 D \mathbf{D} D 和连续属性 a a a ,假定 a a a D \mathbf{D} D 上出现了 n n n 个不同的取值,将这些值从小到大排序,记为 ( a 1 , a 2 , … , a n ) (a^1,a^2,\dots,a^n) a1,a2,,an)。对连续属性 a a a,我们可以考察包含 n − 1 n-1 n1 个元素的候选划分点集合。
缺失值:

  • 在选择分裂属性的时候,训练样本存在缺失值,如何处理?假如你使用ID3算法,那么选择分类属性时,就要计算所有属性的熵值。假设10个样本,属性是 a , b , c a,b,c a,b,c 。在计算 a a a 属性熵时发现,第10个样本的 a a a 属性缺失,那么就把第10个样本去掉,前9个样本组成新的样本集,在新样本集上按正常方法计算 a a a 属性的熵增。然后结果乘 0.9(新样本占 raw 样本的比例),就是 a a a 属性最终的熵。
  • 分类属性选择完成,对训练样本分类,发现属性缺失怎么办?比如该节点是根据 a a a 属性划分,但是待分类样本 a a a 属性缺失,怎么办呢?假如 a a a 属性离散,有1,2两种取值,那么就把该样本分配到两个子节点中去,但是权重由1变为相应离散值个数占样本的比例,然后计算错误率的时候,注意,不是每个样本都是权重为 1,存在分数。
  • 训练完成,给测试样本分类,有缺失值怎么办?这时候,就不能按比例分配了,因为你必须给该样本一个确定的 label,而不是薛定谔的 label。这时候根据投票来确定,或者填充缺失值。

29. 决策树和条件概率分布的关系?

决策树可以表示成给定条件下类的条件概率分布。决策树中的每一条路径都对应是划分的一个条件概率分布,每一个叶子节点都是通过多个条件之后的划分空间,在叶子节点中计算每个类的条件概率,必然会倾向于某一个类,即这个类的概率最大。

30. 树形结构为什么不需要归⼀化?

因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且,树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。

31. Bagging 与 Boosting 的区别是什么?

Bagging:对原数据有放回抽取,构建出多个样本数据集,训练出多个分类器。
Boosting:使用全部样本(可调权重)依次训练每个学习器,迭代集成(平滑加权)。通过改变样本分布,对容易错分的数据加强学习,增加错分样本数据的权重。

  • 样本选择不同。Bagging是有放回地抽取数据集,每轮数据集是独立的。而Boosting每一轮的训练集不变,但是训练集中每个样本的权重会发生变化,根据上一轮分类结果调整。
  • 样本权重不同。Bagging每个样本权重相等,Boosting根据错误率不断地调整样本的权重,被错分的样本权重会增加。
  • 生成方式不同。Bagging各个分类器可以并行生成,而Boosting只能顺序生成。
  • 优化目标有差异。Bagging减小的是方差,Boosting减小的是偏差。Bagging减小方差是因为对多个用不同训练集得到的分类器取了平均(取平均比单一的方差要小)。Boosting减小偏差是因为每次迭代都在之前误差的基础上进一步降低错误率,对于训练集的拟合程度好。

32. 随机森林如何处理缺失值?

  1. 对于训练集,同一个类下的数据:如果是分类变量缺失,用众数补上;如果是连续变量缺失,用中位数补上。
  2. 先用方法1补上缺失值,然后构建森林并计算相似矩阵,再回头看缺失值,如果是分类变量,则用没有阵进行加权平均的方法补缺失值。然后迭代4-6次。

33. 介绍一下 RandomForest、Adaboost、GBDT、XGBoost?

  • RandomForest:随机森林是一种集成学习算法,它由多个决策树组成。每个决策树通过对数据集进行随机采样和随机特征选择而构建。随机森林的核心思想是“集思广益”,即通过汇集多个独立而准确的决策树的预测结果来获得最终的分类或回归结果。在分类问题中,随机森林通过投票选出最终的类别;在回归问题中,它通过平均多个决策树的预测值来得到最终结果。随机森林具有良好的泛化能力,能够有效地处理高维数据和大量样本。
  • Adaboost:Adaboost是一种迭代的集成学习算法,它通过反复训练弱分类器并动态调整样本权重来构建一个强分类器。在每一轮迭代中,Adaboost会根据前一轮分类器的表现来更新样本权重,使得被错误分类的样本权重增加,被正确分类的样本权重减少。这样,后续的弱分类器更关注于错误分类的样本,从而逐渐提升整体分类性能。Adaboost对弱分类器有较少的假设要求,而且在处理特征维度较高的数据时表现良好。
  • GBDT:GBDT是一种迭代的集成学习算法,它也是通过反复构建决策树来达到提升效果。与Adaboost不同的是,GBDT以梯度下降的思想逐步优化前一轮模型的残差。每个决策树都试图拟合之前模型预测结果与真实值之间的误差,然后将多个决策树的预测结果进行加和,得到最终的预测结果。GBDT通常用于解决回归和分类问题,并且在处理非线性问题和特征交互时表现出色。
  • XGBoost是GBDT的一种改进算法,它在速度和准确性上都有显著提升。XGBoost使用了二阶导数来优化目标函数,并在每个节点的分裂过程中使用一阶导数和二阶导数来做特征选择。这种优化策略大大加速了模型的训练过程,并提高了预测准确性。XGBoost还支持并行计算和正则化方法,可以处理高维稀疏数据,广泛应用于机器学习竞赛和实际应用中。

34. XGBoost 为什么要泰勒展开?

二阶导数有利于梯度下降更快更准,使用泰勒展开取得函数做自变量的二阶导数形式,可以在不选定损失函数具体形式的情况下,仅仅依靠输入数据的值就可以进行叶子分裂优化计算。简短来说,就是为了统一损失函数求导的形式以支持自定义损失函数。

35. RF 和 GBDT 的区别?

  • 组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组成;
  • 组成随机森林的树可以并行生成,而GBDT是串行生成;
  • 随机森林的结果是多数表决的,而GBDT则是多棵树累加之和;
  • 随机森林对异常值不敏感,而GBDT对异常值比较敏感;
  • 随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能;
  • 随机森林不需要进行数据预处理,即特征归一化,而GBDT需要进行特征归一化。

36. GBDT 和 XGBoost 的区别?

  • GBDT以CART作为基分类器,XGBoost还支持线性分类器;
  • GBDT在优化时只用到一阶导数信息,XGBoost则对损失函数进行了二阶泰勒展开,同时用到了一阶和二阶(XGBoost支持自定义一阶和二阶导数,即自定义损失函数)。
  • XGBoost在代价函数里加入了正则项(对每棵树的叶子节点个数和权重都做了惩罚),用于控制模型的复杂度。
  • XGBoost可以为缺失值或者指定的值指定分支的默认方向,对特征值有缺失的样本可以自动学习出他的分裂方向。
  • XGBoost-可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或在分布式情况下,贪心算法效率就会变得很低,所以XGBoost提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。

37. XGBoost 为了控制过拟合做了什么优化?

  • 在损失函数里加入了正则项。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。
  • 增加Shrinkage(缩减),相当于学习速率 η \eta η。主要是为了削弱每棵树的影响,让后面有更大的学习空间。
  • 列抽样(column subsampling)。

38. 写一下贝叶斯公式?

P ( A ∣ B ) = P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B)=\frac{P(B|A)*P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
P ( A ∣ B ) P(A|B) P(AB):A事件的后验概率
P ( A ) P(A) P(A):A事件的先验概率
P ( B ) P(B) P(B):B事件的先验概率
P ( B ∣ A ) P(B|A) P(BA):B事件的后验概率

39. 朴素贝叶斯是一个什么算法?

朴素贝叶斯是基于贝叶斯定理和特征条件独立假设的分类方法。对于给定的待分类项 X X X,通过学习到的模型计算后验概率分布,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为 X X X 所属的类别。

40. 介绍一下EM算法?

EM(Expectation maximization)算法,即期望最大化算法,在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观察的隐性变量(属性变量不可知)。
EM算法经过两个步骤交替进行计算:第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。

41. 简述一下KNN算法的原理?

利用训练数据集对特征向量空间进行划分。KNN算法的核心思想是在一个含未知样本的空间,可以根据样本最近的 K K K 个样本的数据类型来确定未知样本的数据类型。该算法涉及的3个主要因素是: K K K 值选择,距离度量,分类决策。

42. 简述一下K-means算法流程,其优缺点?

  1. 首先确定一个 K K K 值,即我们希望将数据集经过聚类得到 K K K 个集合。
  2. 从数据集中随机选择 K K K 个数据点作为质心。
  3. 对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到那个质心所属的集合。
  4. 把所有数据归好集合后,一共有 K K K 个集合。然后重新计算每个集合质心。
  5. 如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。
  6. 如果新质心和原质心距离变化很大,需要迭代3~5步骤。

算法优点:算法简单;只需要调 K K K
算法缺点:结果受初值影响不稳定,解决方法多次初始取最优,kmeans++;受异常点影响大,可以使用k-medias算法;数据如果不是凸集效果较差,因为假设数据服从正态分布,是GMM模型的特殊形式。

43. 聚类的方法都有什么?

聚类分析的算法可以分为划分法、层次法、基于密度的方法、基于网格的方法、基于模型的方法。

  • 划分法。给定一个有 N N N 个元组或者记录的数据集,分裂法将构造 K K K 个分组,每一个分组就代表一个聚类, K < N K < N K<N
  • 层次法。这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。
  • 基于密度的方法。基于密度的方法与其他方法的一个根本区别是:它不是基于各种各种的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。
  • 基于网格的方法。这种方法首先将数据空间划分成为有限个单元的网格结构,所有的处理都是以单个的单元为对象。
  • 基于模型的方法。基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。

44. 距离度量方法有哪些?

  • 欧式距离: d 12 = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d_{12}=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} d12=(x1x2)2+(y1y2)2
  • 曼哈顿距离: d 12 = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d_{12}=|x_1-x_2|+|y_1-y_2| d12=x1x2+y1y2
  • 切比雪夫距离: d 12 = max ⁡ ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) d_{12}=\max(|x_1-x_2|,|y_1-y_2|) d12=max(x1x2,y1y2)
  • 余弦距离: cos ⁡ θ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 \cos \theta = \frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}} cosθ=x12+y12 x22+y22 x1x2+y1y2
  • Jaccard相似系数: J ( A , B ) = ∣ A ⋂ B ∣ ∣ A ⋃ B ∣ J(A,B)=\frac{|A\bigcap B|}{|A\bigcup B|} J(A,B)=ABAB
  • 相关系数: ρ X Y = C o v ( X , Y ) D ( X ) D ( Y ) = E ( ( X − E X ) ( Y − E Y ) ) D ( X ) D ( Y ) \rho_{XY}=\frac{Cov(X,Y)}{\sqrt{D(X)}\sqrt{D(Y)}}=\frac{E((X-EX)(Y-EY))}{\sqrt{D(X)}\sqrt{D(Y)}} ρXY=D(X) D(Y) Cov(X,Y)=D(X) D(Y) E((XEX)(YEY))

45. 简述一下PCA算法?

PCA属于一种线性、非监督、全局的降维算法,旨在找到数据的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。选择方差大的方向投影,
算法步骤:1.样本归一化;2.求解协方差矩阵; 3.求解特征值和特征向量;4.选择主要成分;5.转换特征降维的数据。
降维的优化目标:将一组 N N N 维向量降为 K K K 维( 0 < K < N 0<K<N 0<K<N),其目的是选择 K K K 个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的 K K K 个方差)。

PCA的两面性:

  • 优点是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
  • 上边同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

46. 什么是SVD?

定义:有一个 m × n m \times n m×n 的实数矩阵 A A A。我们想要把它分解成如下的形式 A = U Σ V T A=U\Sigma V^T A=UΣVT,其中 U U U V V V 均为单位正交阵,即有 U U T = I UU^T= I UUT=I V V T = I VV^T=I VVT=I U U U 称为左奇异矩阵, V V V 称为右奇异矩阵, Σ \Sigma Σ 仅在主对角线上有值,称它为奇异值,其他元素均为0。

47. 简述一下LDA?

LDA:一种监督的降维算法,它是将高维数据投影到低维上,并且要求投影后的数据具有较好的分类(也就是说同一类的数据要取尽量的投影到同一个簇中去)。投影后的类别内的方差较小,类别间的方差较大。

48. 降维的作用是什么?

  • 降维可以缓解维度灾难问题。
  • 降维可以在压缩数据的同时让信息损失最小化。
  • 理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解。

49. 矩阵的特征值和特征向量的物理意义是什么?

对于一个非方阵的矩阵 A A A,它代表一个多维空间里的多个数据。求这个矩阵 A A A 的协方差阵 C o v ( A , A ′ ) Cov(A,A') Cov(A,A),得到一个方阵 B B B,求的特征值就是求 B B B 的特征值,它就是代表矩阵 A A A 的那些数据,在那个多维空间中,各个方向上分散的一个度量(即理解为它们在各个方向上的特征是否明显,特征值越大,则越分散,也就是特征越明显),而对应的特征向量是它们对应的各个方向。

50. 特征工程有什么用?

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。通过特征工程获得重要和有效的特征,机器学习才能有更好的效果。

51. 请简述有哪些你知道的特征工程和他们的操作?

特征工程包括三方面:

  • 数据获取及清洗。数据需考虑数据对任务是否有帮助及数据是否能够被采集。数据清洗主要是去除脏数据,需结合业务对数据进行过滤,例如去除爬虫、作弊等数据,同时对数据异常点进行检测。
  • 特征处理。特征处理主要是通过以下一些方法:缺失值补充、幅度调整/归一化、离散化、one-hot/哑编码、Hash与聚类、统计计算、数据变换(多项式、指数、对数)、特征组合。
  • 特征选择。特征选择主要考虑两方面:特征是否发散(方差太小),特征与目标的相关性(与目标相关性高的特征,应当优先选择)。

52. 有哪些特征选择的方法?

特征选择方法有三类:过滤式、包裹式和嵌入式。

  • 过滤式:先对数据集进行特征选择,再训练学习器,特征选择过程与后续学习无关。主要有方差选择法、相关系数法、卡方检验、互信息法。
  • 包裹式:给学习器选择最有利于其性能的特征子集。常用RFE算法。
  • 嵌入式:特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成。通常用L1正则化。

53. 样本不均衡怎么处理?

收集更多的数据;改变模型评估方法;数据集重采样;合成样本;尝试不同的算法;使用罚分模型;尝试以更多不同的视角来看待样本不均衡问题。
其实,样本不均衡就是不同类别的数据数量不同使得模型学习时偏向各个类别的权重不同,而我们要做的,其实就是如何均衡各个类别的权重,无论是上采样,下采样,亦或式更改loss,给数据量少的类别的loss多给权重。更直接的,在某些库的分类器中我们可以看到某些样本直接赋予权重。

54. 有哪些异常值检测的方法?

  • 数字异常值(Numeric outlier),使用IQR,适用于1维空间,一般k取1.5。
  • Z-score,适用于1维或者低维,假定数据服从高斯分布,对数据做归一化,判断异常点方法⼀般设置为 2.5/3/3.5。
  • DBSCAN,基于 DBSCAN 聚类⽅法,适⽤于 1 维多维,基于数据密度的离群值的检验方法,主要将数据点分为核心点,边界点,除此之外的都是噪声点。
  • Isolation Forest,⼀维或多维特征空间中⼤数据集的⾮参数⽅法,基于孤⽴数进⾏判断数据点是否是异常点,孤⽴数越⼩越可能是异常点。

55. 数据中有噪声如何处理?

在进行噪声检查后,通常采用分箱、聚类、回归、计算机检查和人工检查结合等方法“光滑”数据,去掉数据中的噪声。采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。
分箱的方法有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。

数据平滑方法:

  • 按平均值平滑 :对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。
  • 按边界值平滑:用距离较小的边界值替代箱中每一数据。
  • 按中值平滑:取箱子的中值,用来替代箱子中的所有数据。

56. 什么是过拟合、欠拟合,防止它们的方法有哪些?

overfiting指的是在训练集效果极好,在测试集上效果一般;underfiting指的是在训练集测试集上效果都不好。
overfiting缓解方法:1.增加数据;2.增加正则化系数;3.调节模型参数,使之更加简单;4.对于树模型,可以对叶节点、树深度、节点分类最小值、shrinkage等进行调节;5.对数据进行随机采样提高随机性;6.对于深度学习:可以对数据进行一系列变换平移旋转调节锐化等等增加样本,earlystopping,增加噪声,dropout,bagging/boosting,贝叶斯方法(说白了就是平均化/平滑)。

underfiting缓解方法:1.增加可用特征;2.使用更加复杂的模型;3.减少正则化参数。

57. L1 正则化和 L2 正则化的区别是什么?

L1 正则化和 L2 正则化可以看作是损失函数的惩罚项。所谓惩罚是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用 L1 正则化的模型叫做 Lasso 回归,使用 L2 正则化的模型叫做 Ridge 回归(岭回归)。

  • L1 正则化:项目标函数中增加所有权重 w w w 参数的绝对值之和,逼迫更多 w w w 为0(也就是变稀疏。L2 因为其导数也趋为0,奔向0的速度不如L1给力),倾向于使参数稀疏化。
  • L2 正则化:倾向于使参数稠密地接近于0,目标函数中增加所有权重 w w w 参数的平方之和,逼迫所有 w w w 尽可能趋向于0但不为0。

58. 正则化为什么可以防止过拟合?

L1会趋向于产生少量的特征,而其他的特征都是0;L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时非常有用,而Ridge就只是一种规则化而已。在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而起的作用很平均,那么使用Ridge也许更合适。

59. 了解凸优化吗?

不严格的说,凸优化就是在标准优化问题的范畴内,要求目标函数和约束函数是凸函数的一类优化问题。

60. 简单介绍一下归一化和标准化?

Min-Max 归一化:也称离差标准化,是对原始数据的线性变换,使结果映射到[0,1]之间。转换函数如下: x ′ = x − x min ⁡ x max ⁡ − x min ⁡ x'=\frac{x-x_{\min}}{x_{\max}-x_{\min}} x=xmaxxminxxmin
这种归一化方法比较适用在数值比较集中的情况。但是,如果 max ⁡ \max max min ⁡ \min min 不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定,实际使用中可以用经验常量值来替代 max ⁡ \max max min ⁡ \min min 。而且当有新数据加入时,可能导致 max ⁡ \max max min ⁡ \min min 的变化,需要重新定义。

Z-Score 标准化:这种方法给予原始数据的均值和标准差进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转换函数为:
x ′ = x − μ σ x'=\frac{x-\mu}{\sigma} x=σxμ
此外,标准化后的数据保持异常值中的有用信息,使得算法对异常值不太敏感,这一点归一化就无法保证。

两者的异同:

  • 区别:归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种;标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。
  • 相同:它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

61. 模型评价指标有哪些?

TP:正类预测为正类。
FN:正类预测为负类。
FP:负类预测为正类。
TN:负类预测为负类。
精确率:预测为正类的样本中有多少预测正确, P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
召回率:真正为正类的样本当中有多少预测正确, R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
F1值:它被定义为精确率和召回率的调和平均数, 2 F 1 = 1 P + 1 R \frac{2}{F_1}=\frac{1}{P}+\frac{1}{R} F12=P1+R1
ROC:横轴是假阳性, F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP,真实的反例中,预测为正例的比例;纵轴是真阳性, T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP,真实的正例中,预测为正例的比例;绘制方法:假设已有一系列样本被分为正类的概率,按概率值从大到小排序,依次将该概率值作为阈值来预测分类,每个阈值都对应一对FPR、TPR,这样一来就能绘制出曲线。
AUC:ROC曲线的面积,AUC大的分类器效果更好。

62. 给你一个有1000列和1百万行的训练数据集,这个数据集是基于分类问题的。经理要求你来降低该数据集的维度以减少模型计算时间,但你的机器内存有限。你会怎么做?

处理方法:

  • 由于我们的RAM很小,首先要关闭机器上正在运行的其他程序,包括网页浏览器等,以确保大部分内存可以使用。
  • 随机采样数据集:可以创建一个较小的数据集,然后计算。
  • 为了降低维度,可以把数值变量和分类变量分开,同时删掉相关联的变量。对于数值变量,将使用相关性分析;对于分类变量,可以用卡方检验(统计学)。
  • 另外,还可以使用PCA,并挑选可以解释在数据集中有最大偏差的成分。
  • 利用在线学习方法,online learning

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

约有32%的数据将不受缺失值的影响。由于数据分布在中位数附近,先假设这是一个正态分布。在一个正态分布中,约有68%的数据位于跟平均数(或众数、中位数)1个标准差范围内,那么剩下的约32%的数据是不受影响的。

64. 模型受到低偏差和高方差问题时,应该使用哪种算法来解决问题呢?

可以使用bagging算法(随机森林)。低偏差意味着模型的预测值接近实际值,即该模型有足够的灵活性,以模仿训练数据的分布。bagging算法把数据集分成重复随机取样形成的子集。然后这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。

另外,为了应对大方差,我们可以:1.使用正则化技术,惩罚更高的模型系数,从而降低了模型的复杂性;2.使用可变重要性图表中的前n个特征。可以用于当一个算法在数据集中的所有变量里很难寻找到有意义信号的时候。

65. XGBoost和LightGBM的区别?

  • XGBoost采用的是level-wise的分裂策略,而lightGBM采用了leaf-wise的策略,区别是XGBoost对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是XGBoost也进行了分裂,带来了无必要的开销。 leaf-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。
  • LightGBM使用了基于histogram的决策树算法,这一点不同与XGBoost中的exact算法,histogram算法在内存和计算代价上都有不小优势。

66. FM、DeepFM?

FM(Factorization Machines)是一种用于解决稀疏数据中特征交互问题的机器学习模型,通过特征向量的分解来表示特征之间的交互。
DeepFM是在FM模型的基础上结合了深度神经网络的模型,用于更好地学习特征交互,并在推荐系统等领域取得了显著的性能提升。

猜你喜欢

转载自blog.csdn.net/weixin_48320163/article/details/133365011