机器学习面试八股5




71 方差偏差的分解公式
链接
sklearn)是针对 Python 编程语言的免费软件机器学习库 [1] 。它具有各种分类,回归和聚
类算法,包括支持向量机,随机森林,梯度提升,k 均值和 DBSCAN,
72 对应时间序列的数据集如何进行交叉验证(两种嵌套交叉验证)
传统的交叉验证由于假定样本独立同分布,因此随机打乱分为训练集和验证集。
但是对于时间序列来讲,需要考虑序列间的时间依赖。1.预测后一半;2.日向前链
73 正负样本不平衡的解决办法?评价指标的参考价值?
1 重新采样数据集:上下采样法。
2 使用正确的评估标准,当数据不平衡时可以采用精度,调用度,F1 得分,MCC,AUC 等评估指标
好的指标:ROC 和 AUC、F 值、G-Mean;不好的指标:Precision、Recall
74 迁移学习
迁移学习就是把之前训练好的模型直接拿来用,可以充分利用之前数据信息,而且能够避
免自己实验数据量较小等问题。简单来讲就是给模型做初始化,初始化的数据来自于训练
好的模型。
75AUC 的理解
Auc 体现出容忍样本倾斜的能力,只反应模型对正负样本排序能力的强弱,而其直观含以上是
任意取一个正样本和负样本,正样本的得分大于负样本的概率。
AUC 最普遍的定义是 ROC 曲线下的面积。但其实另一种定义更常用,分别随机从正负样本
集中抽取一个正样本,一个负样本,正样本的预测值大于负样本的概率。
AUC 的全称是 AreaUnderRoc 即 Roc 曲线与坐标轴形成的面积,取值范围 [0, 1].
它也是首先对 score 从大到小排序,然后令最大 score 对应的 sample 的 rank 为 n,第二大
score 对应 sample 的 rank 为 n-1,以此类推。然后把所有的正类样本的 rank 相加,
76 生成模型和判别模型的区别
生成模型是先从数据中学习联合概率分布,然后利用贝叶斯公式求得特征和标签对应的条件
概率分布。判别模型直接学习条件概率分布,直观的输入什么特征就预测可能的类别。
77L1 和 L2 正则
L 范数(L1 norm)L1 范数可以使权值稀疏,方便特征提取。 L2 范数可以防止过拟合,提升
模型的泛化能力。L1 和 L2 的差别,一个让绝对值最小,一个让平方最小,
78ID3 树用什么指标选择特征
基于信息增益最大的作为最优特征,以此为决策树的根节点
79 特征工程的问题
特征工程包括数据与特征处理、特征选择和降维三部分。
数据与特征处理包括:
1.数据选择、清洗、采样
数据格式化;
数据清洗,填充缺失值、去掉脏数据,将不可信的样本丢掉,缺省值极多的字段考虑不用;
采样:针对正负样本不平衡的情况,当正样本远大于负样本时,且量都很大时,使用下采
样,量不大时,可采集更多的数据或 oversampling 或修改损失函数;采样过程中可利用分
层抽样保持不同类别数据的比例。
2.不同类型数据的特征处理
数值型:幅度调整/归一化、log 等变化、统计值(例如 max、min、mean、std)、离散化、
分桶等
类别型:one-hot 编码等
时间型:提取出连续值的持续时间和间隔时间;提取出离散值的“年”、“月”、“日”
“一年中哪个星期/季度”、“一周中的星期几”、“工作日/周末”等信息
文本型:使用 If-idf 特征
统计型:加减平均、分位线、次序、比例
意义:
对数据进行预处理,可提高数据质量;对数据进行清洗可填充缺失值、光滑噪声数据,识
别和删除离群点数据,保证数据的一致性;
使用正确的采样方法可解决因数据不平衡带来的预测偏差;
对不同的数据类型进行不同的特征处理有助于提高特征的可用性,例如对数值型数据进行
归一化可将数据转化到统一量纲下;对类别型数据,可用 one-hot 编码方法将类别数据数
字化,数字化特征之后可更用来计算距离、相似性等;可从时间型数据当中提取中更多的
时间特征
特征选择包括:
1.Filter:使用方差、Pearson 相关系数、互信息等方法过滤特征,评估单个特征和结果值之
间的相关程度,留下 Top 相关的特征部分。
2.Wrapper:可利用“递归特征删除算法”,把特征选择看做一个特征子集搜索问题,筛选
各种特征子集,用模型评估效果。
3.Embedded:可利用正则化方式选择特征,使用带惩罚项的基模型,除了选择出特征外,
同时也进行了降纬。
意义:
-剔除对结果预测不大的特征,减小冗余,选择有意义的特征输入模型,提高计算性能。
降维:
方法:主成分分析法(PCA)和线性判别分析(LDA)
意义:通过 PCA 或 LDA 方法,将较高纬度样本空间映射到较低维度的样本空间,从而达到
降纬的目的,减少模型的训练时间,提高模型的计算性能
80 softmax 公式
81lightgbm 优势
1)更快的训练速度和更高的效率:LightGBM 使用基于直方图的算法。
2)更低的内存占用:使用离散的箱子(bins)保存并替换连续值导致更少的内存占用。
3)更高的准确率(相比于其他任何提升算法):它通过 leaf-wise 分裂方法产生比 level-wise 分
裂方法更复杂的树,这就是实现更高准确率的主要因素。然而,它有时候或导致过拟合,
但是我们可以通过设置|max-depth|参数来防止过拟合的发生。
4)大数据处理能力:相比于 XGBoost,由于它在训练时间上的缩减,它同样能够具有处理
大数据的能力。
5)支持并行学习。
Libsvm:svm 的工具包
82MXNet 和 Tensorflow 的区别
MXNet 有两个主要的进程 server 和 worker, server 负责分布式存储模型参数,worker 负责计
算,且 worker 之间不能直接通信,只能通过 server 互相影响,mxnet 常用来做数据并行,
每个 GPU 设备上都训练完整的 DL 模型
Tensorflow 有 worker,server,client 三种进程,worker 是可以相互通信的,可以根据 op 的依赖关
系主动收发数据。
MXNet 常用来做数据并行,每个 GPU 设备上包含了计算图中所有的 op,而 Tensorflow 可以由
用户指定 op 的放置,一般情况下一个 GPU 设备负责某个和几个 op 的训练任务。
83Tensorflow 的工作原理
Tensorflow 是用数据流图来进行数值计算的,而数据流图是描述有向图的数值计算过程。在
有向图中,节点表示为数学运算,边表示传输多维数据,节点也可以被分配到计算设备上从而
并行的执行操作
84Tensorflow 中 interactivesession 和 session 的区别
Tf. Interactivesession()默认自己就是用户要操作的会话 ,而 tf.Session()没有这个默认,所以
eval()启动计算时需要指明使用的是哪个会话。
85Keras
是一个由 Python 编写的开源人工神经网络库
86BatchNormalization 的作用,为什么要在后面加伽马和贝塔,不加可以吗
神经网络在训练的时候随着网络层数的加深,激活函数的输入值的整体分布逐渐往激活函的
取 值 区 间 上 下 限 靠 近 , 从 而 导 致 在 反 向 传 播 时 低 层 的 神 经 网 络 的 梯 度 消 失 。 而 Batch
Normalization 的作用是把一个 batch 内的所有数据,通过规范化的手段,将越来越偏的分布
拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯
度变大,加快学习收敛速度,避免梯度消失的问题。
加入缩放平移变量 γ 和 β 的原因是: 不一定每次都是标准正态分布,也许需要偏移或者拉
伸。直白的说就是为了保证每一次数据经过归一化后还保留原有学习来的特征,同时又能
完成归一化操作,加速训练。 这两个参数是用来学习的参数。
1.保留网络各层在训练过程中的学习成果;
2. 保证激活单元的非线性表达能力;
3. 使批归一化具有自我关闭能力。
87 梯度消失
在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目
的增加,分类准确率反而下降了。这种现象叫做消失的梯度问题
88 循环神经网络,为什么好?
循环神经网络模型(RNN)是一种节点定向连接成环的人工神经网络,是一种反馈神经网
络,RNN 利用内部的记忆来处理任意时序的输入序列,并且在其处理单元之间既有内部的
反馈连接又有前馈连接,,在 RNN 网络结构中中,隐藏层的输入不仅包括输入层的输出还包
含上一时刻隐藏层的输出,网络会对之前的信息进行记忆并应用于当前的输入计算中。
89 什么是 Group Convolution
若卷积神将网络的上一层有 N 个卷积核,则对应的通道数也为 N。设群数目为 M,在进行卷积
操作的时候,将通道分成 M 份,每个 group 对应 N/M 个通道,然后每个 group 卷积完成后输出
叠在一起,作为当前层的输出通道。
90 训练过程中,若一个模型不收敛,那么是否说明这个模型无效?导致模型不收敛的原因有哪
些?
并不能说明这个模型无效,
导致模型不收敛的原因可能有 数据分类的标注不准确,样本的信息量太大导致模型不足以 fit
整个样本空间。学习率设置的太大容易产生震荡,太小会导致不收敛。可能复杂的分类任务
用了简单的模型。数据没有进行归一化的操作。