位置 帝国网站管理系统>职场>笔试面试>人工智能

机器学习

机器学习
机器学习
机器学习
机器学习
机器学习

目录

HYPERLINK l _Toc18043 µ9.1 SVM 的原理是什么? PAGEREF _Toc18043 µ37§§

HYPERLINK l _Toc25287 µ9.2 SVM 为什么采用间隔最大化?........... PAGEREF

_Toc25287 µ37§§

HYPERLINK l _Toc26614 µ9.3 为什么 SVM 要引入核函数? PAGEREF _Toc26614

µ37§§

HYPERLINK l _Toc9374 µ9.4 为什么 SVM 对缺失数据敏感? PAGEREF _Toc9374

µ37§§

HYPERLINK l _Toc15033 µ9.5 SVM 核函数之间的区别 PAGEREF _Toc15033 µ37§§

HYPERLINK l _Toc16929 µ9.6 SVM 如何处理多分类问题? PAGEREF _Toc16929

µ38§§

HYPERLINK l _Toc1265 µ9.7 带核的 SVM 为什么能分类非线性问题? PAGEREF

_Toc1265 µ38§§

HYPERLINK l _Toc20182 µ9.8 RBF 核一定是线性可分的吗? PAGEREF _Toc20182

µ38§§

HYPERLINK l _Toc8661 µ9.9 常用核函数及核函数的条件? PAGEREF _Toc8661

µ38§§

HYPERLINK l _Toc8129 µ9.10 为什么要将求解 SVM 的原始问题转换为对偶问题?

.................................................................................. PAGEREF _Toc8129 µ38§§

HYPERLINK l _Toc26231 µ9.11 SVM 怎么输出预测概率? PAGEREF _Toc26231

µ39§§

HYPERLINK l _Toc8536 µ9.12 如何处理数据偏斜?. PAGEREF _Toc8536 µ39§§

HYPERLINK l _Toc4697 µ9.13 LR vs SVM................... PAGEREF _Toc4697 µ39§§

HYPERLINK l _Toc11867 µ9.14 参数说明................ PAGEREF _Toc11867 µ39§§

HYPERLINK l _Toc20859 µ9.15 LinearSVC vs SVC.... PAGEREF _Toc20859 µ40§§

HYPERLINK l _Toc30232 µ10. 集成学习........................ PAGEREF _Toc30232 µ40§§

HYPERLINK l _Toc13860 µ10.1 Boosting(提升法).... PAGEREF _Toc13860 µ41§§

HYPERLINK l _Toc24429 µ10.2 Bagging(套袋法)..... PAGEREF _Toc24429 µ49§§

HYPERLINK l _Toc27285 µ10.3 Bagging vs Boosting PAGEREF _Toc27285 µ51§§

HYPERLINK l _Toc24771 µ10.4 随机森林 vs GBDT. . PAGEREF _Toc24771 µ52§§

HYPERLINK l _Toc28983 µ10.5 AdaBoost vs GBDT. . PAGEREF _Toc28983 µ52§§

HYPERLINK l _Toc30991 µ10.6 XGBoost vs GBDT.... PAGEREF _Toc30991 µ52§§

HYPERLINK l _Toc16222 µ10.7 XGBoost vs LightGBM PAGEREF _Toc16222 µ53§§

HYPERLINK l _Toc30368 µ11.无监督学习..................... PAGEREF _Toc30368 µ53§§

HYPERLINK l _Toc1848 µ11.1 聚类........................... PAGEREF _Toc1848 µ53§§

HYPERLINK l _Toc29572 µ11.2 降维....................... PAGEREF _Toc29572 µ55§§

HYPERLINK l _Toc20693 µ12.概率模型......................... PAGEREF _Toc20693 µ58§§

HYPERLINK l _Toc7416 µ12.1 朴素贝叶斯................ PAGEREF _Toc7416 µ58§§

HYPERLINK l _Toc27704 µ12.2 朴素贝叶斯 vs LR. . . PAGEREF _Toc27704 µ59§§

第 PAGE * MERGEFORMAT 1 页

HYPERLINK l _Toc937 µ13.机器学习................................. PAGEREF _Toc937 µ60§§

HYPERLINK l _Toc3379 µ13.1 你是怎么理解偏差和方差的平衡的?. PAGEREF

_Toc3379 µ60§§

HYPERLINK l _Toc8881 µ13.2 给你一个有 1000 列和 1 百万行的训练数据集,这

个数据集是基于分类问题的。经理要求你来降低该数据集的维度以减少模型计

算时间,但你的机器内存有限。你会怎么做?....... PAGEREF _Toc8881 µ60§§

HYPERLINK l _Toc9945 µ13.3 给你一个数据集,这个数据集有缺失值,且这些缺

失值分布在离中值有 1 个标准偏差的范围内。百分之多少的数据不会受到影响?

为什么?....................................................................... PAGEREF _Toc9945 µ60

HYPERLINK l _Toc31657 µ13.4 模型受到低偏差和高方差问题时,应该使用哪种

算法来解决问题呢?.............................................. PAGEREF _Toc31657 µ61§§

HYPERLINK l _Toc3020 µ13.5 怎么理解偏差方差的平衡的? PAGEREF _Toc3020

µ61§§

HYPERLINK l _Toc16819 µ13.6 协方差和相关性有什么区别?.......... PAGEREF

_Toc16819 µ61§§

HYPERLINK l _Toc1740 µ13.7 把分类变量当成连续型变量会更得到一个更好的

预测模型吗?............................................................ PAGEREF _Toc1740 µ61§§

HYPERLINK l _Toc10645 µ13.8 机器学习中分类器指的是什么?...... PAGEREF

_Toc10645 µ61§§

HYPERLINK l _Toc19119 µ13.10 请简要说说一个完整机器学习项目的流程?

PAGEREF _Toc19119 µ61§§

§

一、机器学习

1.机器学习模型

1.1 有监督学习模型

1.2 无监督学习模型

1.3 概率模型

第 PAGE * MERGEFORMAT 1 页

1.4 什么是监督学习?什么是非监督学习?

所有的回归算法和分类算法都属于监督学习。并且明确的给给出初始值,在训练集

中有特征和标签,并且通过训练获得一个模型,在面对只有特征而没有标签的数据

时,能进行预测。

监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,

将输入映射到合适的输出,例如 分类。

非监督学习:直接对输入数据集进行建模,例如强化学习、K-means 聚类、自编码、受

限波尔兹曼机。

半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。

目前最广泛被使用的分类器有人工神经网络、支持向量机、最近邻居法、高斯混合

模型、朴素贝叶斯方法、决策树和径向基函数分类。

无监督学习里典型的例子就是聚类了。聚类的目的在于把相似的东西聚在一起,一

个聚类算法通常只需要知道如何计算相似度就可以开始工作了。

回归,分类,聚类方法的区别和联系并举例,简要介绍算法思路。

生成模式 vs 判别模式

生成模型:

由数据学得联合概率分布函数 P(X,Y),求出条件概率分布 P(Y|X)的预测模型。

朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔

兹曼机。

判别式模型:

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

K 近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻

辑斯蒂回归、boosting、条件随机场。

2.线性模型

2.1 线性回归

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

MSE 最小的权重。

线性回归的推导

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

指分析因变量和自变量之间关系.

线性回归: 对异常值非常敏感

第 PAGE * MERGEFORMAT 1 页

多项式回归: 如果指数选择不当,容易过拟合。

岭回归

Lasso 回归

弹性网络回归

2.1.2 线性回归的损失函数为什么是均方差?

2.1.3 什么是线性回归?什么时候使用它?

利用最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.

(1)自变量与因变量呈直线关系;

(2)因变量符合正态分布;

(3)因变量数值之间独立;

(4)方差是否齐性。

2.1.4 什么是梯度下降?SGD 的推导?

BGD: 遍历全部数据集计算一次 loss 函数,然后算函数对各个参数的梯度,更新梯度

2.1.5 什么是最小二乘法(最小平方法)?

它通过最小化误差的平方和寻找数据的最佳函数匹配。

2.1.6 常见的损失函数有哪些?

1.0-1 损失

2.均方差损失(MSE)

3.平均绝对误差(MAE)

4.分位数损失(Quantile Loss)

分位数回归可以通过给定不同的分位点,拟合目标值的不同分位数;

实现了分别用不同的系数控制高估和低估的损失,进而实现分位数回归。

5.交叉熵损失

6.合页损失

一种二分类损失函数,SVM 的损失函数本质: Hinge Loss + L2 正则化

合页损失的公式如下:

2.1.7 有哪些评估回归模型的指标?

衡量线性回归法最好的指标: R Squared

2.1.8 什么是正规方程?‍

第 PAGE * MERGEFORMAT 1 页

正规方程组是根据最小二乘法原理得到的关于参数估计值的线性方程组。

正规方程是通过求解 来找出使得代价函数最小的参数

解出:

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

不一定,它只是目标函数在当前的点的切平面上下降最快的方向。

在实际执行期中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,

可以达到超线性的收敛速度。梯度下降类的算法的收敛速度一般是线性甚至次线性

的(在某些带复杂约束的问题)。

2.1.10 MBGD 需要注意什么?

如何选择 m?一般 m 取 2 的幂次方能充分利用矩阵运算操作。

一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代

时按照顺序挑选 m 个训练集数据直至遍历完所有的数据。

什么是正态分布?为什么要重视它?

如何检查变量是否遵循正态分布?‍

如何建立价格预测模型?价格是否正态分布?需要对价格进行预处理吗?‍

2.2 LR

也称为"对数几率回归"。

知识点提炼

1.分类,经典的二分类算法!

2.LR 的过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭

代求解出最优的模型参数,然后测试验证这个求解的模型的好坏。

3.Logistic 回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两

分类问题(即输出只有两种,分别代表两个类别)

4.回归模型中,y 是一个定性变量,比如 y = 0 或 1,logistic 方法主要应用于研究

某些事件发生的概率。

5.LR 的本质:极大似然估计

6.LR 的激活函数:Sigmoid

7.LR 的代价函数:交叉熵

优点:

1.速度快,适合二分类问题

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

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

缺点:

对数据和场景的适应能力有局限性,不如决策树算法适应性那么强。

LR 中最核心的概念是 Sigmoid 函数,Sigmoid 函数可以看成 LR 的激活函数。

Regression 常规步骤:

第 PAGE * MERGEFORMAT 1 页

寻找 h 函数(即预测函数)

构造 J 函数(损失函数)

想办法(迭代)使得 J 函数最小并求得回归参数(θ)

LR 伪代码:

初始化线性函数参数为 1

构造 sigmoid 函数

重复循环 I 次

计算数据集梯度

更新线性函数参数

确定最终的 sigmoid 函数

输入训练(测试)数据集

运用最终 sigmoid 函数求解分类

LR 的推导

2.2.1 为什么 LR 要使用 sigmoid 函数?

1.广义模型推导所得 2.满足统计的最大熵模型 3.性质优秀,方便使用

(Sigmoid 函数是平滑的,而且任意阶可导,一阶二阶导数可以直接由函数值得到不

用进行求导,这在实现中很实用)

2.2.2 为什么常常要做特征组合(特征交叉)?

LR 模型属于线性模型,线性模型不能很好处理非线性特征,特征组合可以引入非线

性特征,提升模型的表达能力。

另外,基本特征可以认为是全局建模,组合特征更加精细,是个性化建模,但对全局

建模会对部分样本有偏,

对每一个样本建模又会导致数据爆炸,过拟合,所以基本特征+特征组合兼顾了全局

和个性化。

2.2.3 为什么 LR 比线性回归要好?

LR 和线性回归首先都是广义的线性回归,

其次经典线性模型的优化目标函数是最小二乘,而 LR 则是似然函数,

另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在

[0,1]。LR 就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于

这类问题来说,LR 的鲁棒性比线性回归的要好

2.2.4 LR 参数求解的优化方法?(机器学习中常用的最优化方法)

梯度下降法,随机梯度下降法,牛顿法,拟牛顿法(LBFGS,BFGS,OWLQN)

目的都是求解某个函数的极小值。

2.2.5 工程上,怎么实现 LR 的并行化?有哪些并行化的工具?

LR 的并行化最主要的就是对目标函数梯度计算的并行化。

无损的并行化:算法天然可以并行,并行只是提高了计算的速度和解决问题的规模,

第 PAGE * MERGEFORMAT 1 页

但和正常执行的结果是一样的。

有损的并行化:算法本身不是天然并行的,需要对算法做一些近似来实现并行化,这

样并行化之后的双方和正常执行的结果并不一致,但是相似的。

基于 Batch 的算法都是可以进行无损的并行化的。而基于 SGD 的算法都只能进行有

损的并行化。

2.2.6 LR 如何解决低维不可分问题?

通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到

高维空间中线性可分的几率会高一些。

具体方法:核函数,如:高斯核,多项式核等等

2.2.7 LR 与最大熵模型 MaxEnt 的关系?

没有本质区别。LR 是最大熵对应类别为二类时的特殊情况,也就是当 LR 类别扩展到

多类别时,就是最大熵模型。

2.2.8 为什么 LR 用交叉熵损失而不是平方损失(MSE)?

如果使用均方差作为损失函数,求得的梯度受到 sigmoid 函数导数的影响;

求导:

如果使用交叉熵作为损失函数,没有受到 sigmoid 函数导数的影响,且真实值与预测

值差别越大,梯度越大,更新的速度也就越快。

求导:

记忆:mse 的导数里面有 sigmoid 函数的导数,而交叉熵导数里面没有 sigmoid 函数

的导数,sigmoid 的导数的最大值为 0.25,更新数据时太慢了。

2.2.9 LR 能否解决非线性分类问题?

可以,只要使用 kernel trick(核技巧)。

不过,通常使用的 kernel 都是隐式的,也就是找不到显式地把数据从低维映射到高

维的函数,而只能计算高维空间中数据点的内积。

2.2.10 用什么来评估 LR 模型?

1.由于 LR 是用来预测概率的,可以用 AUC-ROC 曲线以及混淆矩阵来确定其性能。

2.LR 中类似于校正 R2 的指标是 AIC。AIC 是对模型系数数量惩罚模型的拟合度量。因

此,更偏爱有最小的 AIC 的模型。

2.2.11 LR 如何解决多分类问题?(OvR vs OvO)

2.2.12 在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了

100 遍,会造成怎样的影响?

如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响

分类器的效果。但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况

下,你现在将它重复 100 遍。训练以后完以后,数据还是这么多,但是这个特征本身

重复了 100 遍,实质上将原来的特征分成了 100 份,每一个特征都是原来特征权重值

第 PAGE * MERGEFORMAT 1 页

的百分之一。如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这 100

个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。

2.2.13 为什么在训练的过程当中将高度相关的特征去掉?

去掉高度相关的特征会让模型的可解释性更好。

可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数

本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。

其次是特征多了,本身就会增大训练的时间。

2.3 Lasso

定义:所有参数绝对值之和,即 L1 范数,对应的回归方法。

Lasso(alpha=0.1) # 设置学习率

2.4 Ridge

定义:所有参数平方和,即 L2 范数,对应的回归方法。

通过对系数的大小施加惩罚来解决 普通最小二乘法 的一些问题。

Ridge(alpha=0.1) # 设置惩罚项系数

2.5 Lasso vs Ridge

2.6 线性回归 vs LR

3.验证方式

3.1 什么是过拟合?产生过拟合原因?

指模型在训练集上的效果很好,在测试集上的预测效果很差.

1.数据有噪声

2.训练数据不足,有限的训练数据

3.训练模型过度导致模型非常复杂

3.2 如何避免过拟合问题?

3.3 什么是机器学习的欠拟合?

模型复杂度低或者数据集太小,对模型数据的拟合程度不高,因此模型在训练集上的

效果就不好.

3.4 如何避免欠拟合问题?

1.增加样本的数量

2.增加样本特征的个数

3.可以进行特征维度扩展

4.减少正则化参数

5.使用集成学习方法,如 Bagging

3.5 什么是交叉验证?交叉验证的作用是什么?

第 PAGE * MERGEFORMAT 1 页

将原始 dataset 划分为两个部分.一部分为训练集用来训练模型,另外一部分作为测

试集测试模型效果.

作用: 1)交叉验证是用来评估模型在新的数据集上的预测效果,也可以一定程度上

减小模型的过拟合

2)还可以从有限的数据中获取尽能多的有效信息。

3.6 交叉验证主要有哪几种方法?

① 留出法:简单地将原始数据集划分为训练集,验证集,测试集三个部分.

②k 折交叉验证:(一般取 5 折交叉验证或者 10 折交叉验证)

③LOO 留一法: (只留一个样本作为数据的测试集,其余作为训练集)---只适用于

较少的数据集

④ Bootstrap 方法:(会引入样本偏差)

3.7 什么是 K 折交叉验证?

将原始数据集划分为 k 个子集,将其中一个子集作为验证集,其余 k-1 个子集作

为训练集,如此训练和验证一轮称为一次交叉验证。

交叉验证重复 k 次,每个子集都做一次验证集,得到 k 个模型,加权平均 k 个模

型的结果作为评估整体模型的依据。

3.8 如何在 K 折交叉验证中选择 K?

k 越大,不一定效果越好,而且越大的 k 会加大训练时间;

在选择 k 时,需要考虑最小化数据集之间的方差,比如对于 2 分类任务,采用 2 折交

叉验证,即将原始数据集对半分,若此时训练集中都是 A 类别,验证集中都是 B 类别,

则交叉验证效果会非常差。

3.9 网格搜索(GridSearchCV)

一种调优方法,在参数列表中进行穷举搜索,对每种情况进行训练,找到最优的参数。

已 svm 调参为例:

3.10 随机搜素(RandomizedSearchCV)

4.分类

4.1 什么是准确率,精准率,召回率和 F1 分数?混淆矩阵

准确率 = (TP+TN)/总样本数 = 预测正确的结果占总样本的百分比

4.2 模型常用的评估指标有哪些?

4.2.1 Precision(查准率)

精准率(Precision) = TP/(TP+FP) =所有被预测为正的样本中实际为正的样本的概率

4.2.1 Recall(查全率)

第 PAGE * MERGEFORMAT 1 页

召回率(Recall) = TP/(TP+FN) = 在实际为正的样本中被预测为正样本的概率

查准率和查全率是一对矛盾的度量,一般而言,查准率高时,查全率往往偏低;而查

全率高时,查准率往往偏低。

4.2.3 P-R 曲线

INCLUDEPICTURE d

"https://img-blog.csdnimg.cn/20190319184528841.png?x-oss-process=image/

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNz

ZG4ubmV0L3poYW5odA==,size_16,color_FFFFFF,t_70" * MERGEFORMATINET µ §

横轴为召回率(查全率),纵轴为精准率(查准率);

引入“平衡点”(BEP)来度量,表示“查准率=查全率”时的取值,值越大表明分类器性能

越好。

4.2.4 F1-Score

调和平均:

准确率和召回率的权衡‍: 只有在召回率 Recall 和精确率 Precision 都高的情况下,F1

score 才会很高,比 BEP 更为常用。

4.2.5 ROC 和 AUC

4.2.5.1 什么是 ROC 曲线?如何判断 ROC 曲线的好坏?

INCLUDEPICTURE d

"https://img-blog.csdnimg.cn/20190319184546877.jpg?x-oss-process=image/

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNz

ZG4ubmV0L3poYW5odA==,size_16,color_FFFFFF,t_70" * MERGEFORMATINET µ §

ROC 曲线:横轴为 FPR,纵轴为 TPR

灵敏度 TPR = TP/(TP+FN) 特异度 FPR = TN/(FP+TN)

真正率(TPR) = 灵敏度 = TP/(TP+FN) 真阳性率 = 召回 = TPR

假正率(FPR) = 1- 特异度 = FP/(FP+TN)

FPR 的含义:所有确实为“假”的样本中,被误判真的样本。

TPR 越高,同时 FPR 越低(即 ROC 曲线越陡),那么模型的性能就越好。

4.2.5.2 什么是 AUC?

INCLUDEPICTURE d

"https://img-blog.csdnimg.cn/20190319184102515.png" * MERGEFORMATINET µ §

AUC: ROC 曲线下的面积,AUC 的取值范围在 0.5 和 1 之间。

衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。

4.2.5.3 如何解释 AU ROC 分数?

表示预测准确性,AUC 值越高: 预测准确率越高,反之越小 预测准确率越低。

AUC 如果小于 0.5,说明预测诊断比随机性猜测还差,实际情况中不应该出现这种情

况,可能是设置的状态变量标准有误,需要查看设置。

4.3 多标签分类怎么解决?

问题转换

二元关联(Binary Relevance)

第 PAGE * MERGEFORMAT 1 页

分类器链(Classifier Chains)

标签 Powerset(Label Powerset)

改编算法: kNN 的多标签版本是由 MLkNN 表示

集成方法: Scikit-Multilearn 库提供不同的组合分类功能

5.正则化

手推 L1,L2

5.1 什么是正则化?如何理解正则化?

定义: 在损失函数后加上一个正则化项(惩罚项),其实就是常说的结构风险最小化

策略,即损失函数 加上正则化。一般模型越复杂,正则化值越大。

正则化项是用来对模型中某些参数进行约束,正则化的一般形式:

第一项是损失函数(经验风险),第二项是正则化项

公式可以看出,加上惩罚项后损失函数的值会增大,要想损失函数最小,惩罚项的值

要尽可能的小,模型参数就要尽可能的小,这样就能减小模型参数,使得模型更加简

单。

5.2 L0、L1、L2 正则化?

L0 范数:计算向量中非 0 元素的个数。

L0 范数和 L1 范数目的是使参数稀疏化。

L1 范数比 L0 范数容易优化求解。

5.3 L1 和 L2 正则化有什么区别?‍

5.4 L1 在 0 处不可导是怎么处理的?

1.坐标轴下降法是沿着坐标轴的方向

Eg: lasso 回归的损失函数是不可导的

2.近端梯度下降(Proximal Algorithms)

3.交替方向乘子法(ADMM)

5.5 L1 正则化产生稀疏性的原因?对稀疏矩阵的理解?

INCLUDEPICTURE d "https://img2020.cnblogs.com/blog/1187314/202004/1187314-

20200421224004435-1135947645.png" * MERGEFORMATINET µ §

L1 正则化会使得许多参数的最优值变成 0,这样模型就稀疏了。

稀疏矩阵指有很多元素为 0,少数参数为非零值。只有少部分特征对模型有贡献

大部分特征对模型没有贡献或者贡献很小,稀疏参数的引入,使得一些特征对应的

参数是 0,所以就可以剔除可以将那些没有用的特征,从而实现特征选择,提高模型

的泛化能力,降低过拟合的可能。

第 PAGE * MERGEFORMAT 1 页

5.6 为何要常对数据做归一化?

1.归一化后加快的梯度下降对最优解的速度。

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

5.7 归一化的种类

5.8 归一化和标准化的区别

标准化是依照特征矩阵的列处理数据,其通过求 z-score 的方法,将样本的特征值转

换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点

乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为 “单位向

量”。

归一化的目的是方便比较,可以加快网络的收敛速度;标准化是将数据利用 z-score

(均值、方差)的方法转化为符合特定分布的数据,方便进行下一步处理,不为比较。

5.9 需要归一化的算法有哪些?这些模型需要归一化的主要原因?

线性回归,逻辑回归,KNN,SVM,神经网络。

主要是因为特征值相差很大时,运用梯度下降,损失等高线是椭圆形,需要进行

多次迭代才能达到最优点,如果进行归一化了,那么等高线就是圆形的,促使 SGD 往

原点迭代,从而导致需要迭代次数较少。

5.10 树形结构的不需要归一化的原因?

因为它们不关心变量的值,而是关心变量分布和变量之间的条件概率,如决策

树,随机森林;对于树形结构,树模型的构造是通过寻找最优分裂点构成的,样本点

的数值缩放不影响分裂点的位置,对树模型的结构不造成影响,

而且树模型不能进行梯度下降,因为树模型是阶跃的,阶跃是不可导的,并且求导没

意义,也不需要归一化。

6.特征工程

特征工程分三步: ①数据预处理;②特征选择;③特征提取。

6.1 特征选择

特征选择在于选取对训练数据具有分类能力的特征,可以提高决策树学习的效率。

通常特征选择的准则是信息增益或信息增益率。

特征选择的划分依据:这一特征将训练数据集分割成子集,使得各个子集在当前条

件下有最好的分类,那么就应该选择这个特征。

(将数据集划分为纯度更高,不确定性更小的子集的过程)

6.1.1 什么是特征选择?为什么需要它?特征选择的目标?

指从已有的 M 个特征中选择 N 个特征使得系统的特定指标最优化,是从原始特征中

选择出一些最有效特征以降低数据集维度的过程。

第 PAGE * MERGEFORMAT 1 页

原因: ① 减少特征数量、降维,使模型泛化能力更强,减少过拟合;

②增强对特征和特征值之间的理解。

目标:选择离散程度高且与目标的相关性强的特征。

6.1.2 有哪些特征选择技术?‍

①过滤法

按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,从

而选择特征;

②包装法

根据目标函数(通常是预测效果评分),每次选择若干特征或者排除若干特征;常用

方法主要是递归特征消除法。

③嵌入法

先使用 ML 的算法和模型进行训练,得到各个特征的权重系数,根据系数从大到小选

择特征;常用方法主要 是基于惩罚项的特征选择法。

INCLUDEPICTURE d

"https://mmbiz.qpic.cn/mmbiz_png/UicQ7HgWiaUb1g3O9FVibFeNezV7VM1hrSBvWi

b9WQsvxQMlSPOMZPt1LuFT19wMIb6AaRwp5T3ia6r8IKibRUfqYickA/640?

wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" * MERGEFORMATINET µ §

6.2 特征提取

常见的降维方法除了基于 L1 惩罚项的模型以外,另外还有 PCA 和 LDA,

本质是要将原始的样本映射到维度更低的样本空间中,

但是它们的映射目标不一样:PCA 是为了让映射后的样本具有最大的发散性;

而 LDA 是为了让映射后的样本有最好的分类性能。

6.3 特征选择 vs 特征提取

都是降维的方法。

特征选择:不改变变量的含义,仅仅只是做出筛选,留下对目标影响较大的变量;

特征提取:通过映射(变换)的方法,将高维的特征向量变换为低维特征向量。

6.4 为什么要处理类别特征?怎么处理?

除了决策树等少量模型能直接处理字符串形式的输入,对于 LR,SVM 等模型来说,类

别特征必须经过处理转化成数值特征才能正常工作。方法主要有:

序号编码;独热编码;二进制编码

6.5 什么是组合特征?

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,

构成高级特征。例如,特征 a 有 m 个取值,特别 b 有 n 个取值,将二者组合就有 m*n

个组成情况。这时需要学习的参数个数就是 m×n 个。

6.6 怎么有效地找到组合特征?

可以用基于决策树的方法,首先根据样本的数据和特征构造出一颗决策树。然后从

根节点都叶节点的每一条路径,都可以当作一种组合方式。

第 PAGE * MERGEFORMAT 1 页

6.7 如何处理高维组合特征?

当每个特征都有千万级别,就无法学习 m×n 规模的参数了。

解决:可以将每个特征分别用 k 维的低维向量表示,需要学习的参数变为 m×k+n×k

个,等价于矩阵分解

6.8 如何解决数据不平衡问题?

主要是由于数据分布不平衡造成的。

解决方法如下:

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

2.进行特殊的加权,如在 Adaboost 中或者 SVM 中

3.采用对不平衡数据集不敏感的算法

4.改变评价标准:用 AUC/ROC 来进行评价

5.采用 Bagging/Boosting/ensemble 等方法

6.考虑数据的先验分布

6.9 数据中有噪声如何处理?

噪声检查中比较常见的方法:

(1)通过寻找数据集中与其他观测值及均值差距最大的点作为异常

(2)聚类方法检测:将类似的取值组织成“群”或“簇”,落在“簇”集合之外的值被视为

离群点。

在进行噪声检查后,通常采用分箱、聚类、回归、计算机检查和人工检查结合等方

法“光滑”数据,去掉数据中的噪声。

采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中

的数据进行平滑处理。

分箱的方法:有 4 种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。

数据平滑方法

按平均值平滑 :对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。

按边界值平滑:用距离较小的边界值替代箱中每一数据。

按中值平滑:取箱子的中值,用来替代箱子中的所有数据。

6.10 FM

基于矩阵分解的机器学习算法,用于解决数据稀疏的业务场景(如推荐业务),特征

怎样组合的问题。

如:一个广告分类的问题为例,根据用户与广告位的一些特征,来预测用户是否会点

击广告。

对于 CTR 点击的分类预测中,有些特征是分类变量,一般进行 one-hot 编码。

One-hot 会带来数据的稀疏性,使得特征空间变大。

6.10.1 SVM vs FM

第 PAGE * MERGEFORMAT 1 页

1.SVM 的二元特征交叉参数是独立的,而 FM 的二元特征交叉参数是两个 k 维的向

量 vi、vj,交叉参数就不是独立的,而是相互影响的。

2.FM 可以在原始形式下进行优化学习,而基于 kernel 的非线性 SVM 通常需要在对

偶形式下进行。

3.FM 的模型预测与训练样本独立,而 SVM 则与部分训练样本有关,即支持向量。

6.11 FFM

FM 在 FM 的基础上进一步改进,在模型中引入类别(field)的概念。将同一个 field

的特征单独进行 One-hot,因此在 FFM 中,每一维特征都会针对其他特征的每个

field,分别学习一个隐变量,该隐变量不仅与特征相关,也与 field 相关。

FFM 中每一维特征都归属于一个特定和 field,field 和 feature 是一对多的关系:

实现 FM & FFM 的最流行的 python 库有:LibFM、LibFFM、xlearn 和 tffm

名词解释: 点击率 CTR 转化率 CVR

7.决策树

7.1 ID3 算法

核心是在决策树各个节点上应用 信息增益 准则选择特征,递归的构建决策树。

具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益

最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的

调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择

为止。

ID3 相当于用极大似然法进行概率模型的选择。

使用 二元切分法 则易于对树构建过程中进行调整以处理连续型特征。

具体的处理方法是: 如果特征值大于给定值就走左子树,否则走右子树。另外二元切

分法也节省了树的构建时间。

7.2 C4.5 算法

算法用信息增益率选择特征,在树的构造过程中会进行剪枝操作优化,能够自动完

成对连续属性的离散化处理;在选择分割属性时选择信息增益率最大的属性。

7.2.1 既然信息增益可以计算,为什么 C4.5 还使用信息增益比?

在使用信息增益的时候,如果某个特征有很多取值,使用这个取值多的特征会的大

的信息增益,这个问题是出现很多分支,将数据划分更细,模型复杂度高,出现过拟

合的机率更大。使用信息增益比就是为了解决偏向于选择取值较多的特征的问题.

使用信息增益比对取值多的特征加上的惩罚,对这个问题进行了校正.

7.3 CART 算法

分类与回归树 —— 使用二元切分法来处理连续型数值。

使用 Gini 作为分割属性选择的标准,择 Gini 最大的作为当前数据集的分割属性。

Gini:表示在样本集合中一个随机选中的样本被分错的概率。

第 PAGE * MERGEFORMAT 1 页

Gini 指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越

高,反之,集合越不纯。

即 基尼指数(基尼不纯度)= 样本被选中的概率 * 样本被分错的概率

CART 算法由以下两步组成:

决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;

决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函

数最小作为剪枝的标准。

7.3.1 基尼指数和信息熵都表示数据不确定性,为什么 CART 使用基尼指数?

信息熵 0, logK 都是值越大,数据的不确定性越大. 信息熵需要计算对数,计算量大;信息熵是可

以处理多个类别,基尼指数就是针对两个类计算的,由于 CART 树是一个二叉树,每次都是选择

yes or no 进行划分,从这个角度也是应该选择简单的基尼指数进行计算.

7.3.2 基尼系数(Gini)存在的问题?

基尼指数偏向于多值属性;当类数较大时,基尼指数求解比较困难;基尼指数倾向于支持在两个分

区中生成大小相同的测试。

7.4 ID3 vs C4.5 vs CART

7.5 决策树

定义:决策树就是一棵树,其中跟节点和内部节点是输入特征的判定条件,叶子结点就是最终结

果。

其损失函数通常是 正则化的极大似然函数;

目标是 以损失函数为目标函数的最小化。

算法通常是一个 递归的选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据

集有一个最好的分类过程。

决策树量化纯度:

判断数据集“纯”的指标有三个:Gini 指数、熵、错误率

7.5.1 决策树的数据 split 原理或者流程?

1.将所有样本看做一个节点

2.根据纯度量化指标.计算每一个特征的’纯度’,根据最不’纯’的特征进行数据划分

3.重复上述步骤,知道每一个叶子节点都足够的’纯’或者达到停止条件

背诵:按照基尼指数、信息增益来选择特征,保证划分后纯度尽可能高。

7.5.2 构造决策树的步骤?

1.特征选择

2.决策树的生成(包含预剪枝) ---- 只考虑局部最优

3.决策树的剪枝(后剪枝) ---- 只考虑全局最优

7.5.3 决策树算法中如何避免过拟合和欠拟合?‍

过拟合:选择能够反映业务逻辑的训练集去产生决策树;

剪枝操作(前置剪枝和后置剪枝); K 折交叉验证(K-fold CV)

欠拟合:增加树的深度,RF

7.5.4 决策树怎么剪枝?

第 PAGE * MERGEFORMAT 1 页

分为预剪枝和后剪枝,预剪枝是在决策树的构建过程中加入限制,比如控制叶子节点最少的样

本个数,提前停止;

后剪枝是在决策树构建完成之后,根据加上正则项的结构风险最小化自下向上进行的剪枝操作.

剪枝的目的就是防止过拟合,是模型在测试数据上变现良好,更加鲁棒.

7.5.5 决策树的优缺点?

决策树的优点:

1. 决策树模型可读性好,具有描述性,有助于人工分析;

2. 效率高,决策树只需要一次性构建,反复使用,每一次预测的最大计算次数不超过决策树

的深度。

决策树的缺点:

1.即使做了预剪枝,它也经常会过拟合,泛化性能很差。

2.对中间值的缺失敏感;

3.ID3 算法计算信息增益时结果偏向数值比较多的特征。

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

决策树可以表示成给定条件下类的条件概率分布. 决策树中的每一条路径都对应是划分的一个

条件概率分布. 每一个叶子节点都是通过多个条件之后的划分空间,在叶子节点中计算每个类的

条件概率,必然会倾向于某一个类,即这个类的概率最大.

7.5.7 为什么使用贪心和其发生搜索建立决策树,为什么不直接使用暴力搜索建立最优的决策树?

决策树目的是构建一个与训练数据拟合很好,并且复杂度小的决策树. 因为从所有可能的决策树

中直接选择最优的决策树是 NP 完全问题,在使用中一般使用启发式方法学习相对最优的决策树.

7.5.8 如果特征很多,决策树中最后没有用到的特征一定是无用吗?

不是无用的,从两个角度考虑,一是特征替代性,如果可以已经使用的特征 A 和特征 B 可以提点

特征 C,特征 C 可能就没有被使用,但是如果把特征 C 单独拿出来进行训练,依然有效. 其二,决

策树的每一条路径就是计算条件概率的条件,前面的条件如果包含了后面的条件,只是这个条

件在这棵树中是无用的,如果把这个条件拿出来也是可以帮助分析数据.

7.5.9 决策树怎么做回归?

给回归定义一个损失函数,比如 L2 损失,可以把分叉结果量化;最终的输出值,是分支下的样本

均值。 [切分点选择:最小二乘法]; [输出值:单元内均值].

7.5.10 决策树算法的停止条件?

1.最小节点数

当节点的数据量小于一个指定的数量时,不继续分裂。两个原因:一是数据量较少时,再做分裂

容易强化噪声数据的作用;二是降低树生长的复杂性。提前结束分裂一定程度上有利于降低过

拟合的影响。

2.熵或者基尼值小于阀值。

当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止

分裂。

3.决策树的深度达到指定的条件

决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。

4.所有特征已经使用完毕,不能继续进行分裂。

7.5.11 为什么决策树之前用 PCA 会好一点?

决策树的本质在于选取特征,然后分支。PCA 解除了特征之间的耦合性,并且按照贡献度给特征

排了个序,这样更加方便决策树选取特征。

第 PAGE * MERGEFORMAT 1 页

熵(entropy)

是表示随机变量不确定性的度量,是用来衡量一个随机变量出现的期望值。

如果信息的不确定性越大,熵的值也就越大,出现的各种情况也就越多。

条件熵(H(Y∣X)):表示在已知随机变量 X 的条件下随机变量 Y 的不确定性,其定义为 X 在给定条

件下 Y 的条件概率分布的熵对 X 的数学期望:

二次代价函数

二次代价函数训练 NN,看到的实际效果是,如果误差越大,参数调整的幅度可能更小,训练更缓

慢。

交叉熵

用于度量两个概率分布间的差异性信息。语言模型的性能通常用交叉熵和复杂度来衡量。

交叉熵代价函数带来的训练效果往往比二次代价函数要好。

交叉熵代价函数是如何产生的?

7.6 信息增益

定义:特征 A 对训练数据集 D 的信息增益 g(D,A),定义为集合 D 的经验熵 H(D)与特征 A 给定条件

下 D 的经验条件熵 H(D|A)之差,即:

g(D,A)=H(D)-H(D|A)

信息增益: 表示由于特征 A 使得对数据集 D 的分类的不确定性减少的程度。

信息增益 = entroy(前) - entroy(后)

INCLUDEPICTURE d

"https://img-blog.csd