3 大华股份
数据挖掘工程师
3.1 单择题(10个)
1、数据仓库的作用
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
反映历史变化的数据集合,是用于支持决策、面向分析型数据处理
2、什么函数是统计连续发生时间的间隔
选项忘记了,答案也没有找到
3、L1范数的计算公式
4、[0 0 0 1 0 1],[0 0 1 1 0 0],[0 1 0 0 0 0],[1 1 0 0 1 1],[0 0 0 1 0 0],[1 0 0 1 0 0 ]邻接矩阵,第一节点是序号是0,从序号为4的节点开始遍历,广度遍历的结果。
4、3、2、5、1、0
5、随机森林是否需要剪枝的相关概念和优缺点
**随机森林不需要后剪枝。**剪枝的意义是:防止决策树生成过于庞大的子叶,避免实验预测结果过拟合,在实际生产中效果很差。随机森林是一种模型组合(常见的Boosting,Bagging等,衍生的有gbdt),已经通过随机选择样本和特征,保证了随机性,不用后剪枝应该也能避免过拟合。
6、不属于交叉验证的的是(D)
A. 简单交叉验证
B. S 折交叉验证
C. 留一交叉验证
D. 二分交叉验证
交叉验证主要包括:简单交叉验证、S折交叉验证、留一交叉验证
7、以下两种描述分别对应哪两种对分类算法的评价标准? (A)
(a)警察抓小偷,描述警察抓的人中有多少个是小偷的标准。
(b)描述有多少比例的小偷给警察抓了的标准。
A. Precision, Recall
B. Recall, Precision
C. Precision, ROC
D. Recall, ROC
8-10、忘了题目
3.2 多选题(20个)
7、(多选)下列关于探索数据分析常用图表的说法,正确的有(A,B )
A.探索型数据分析常用的图表包括条形图,直方图,饼图,折线图,散点图,箱型图等
B.箱型图可以用于异常数据的展示
C.绝大部分情况下使用饼图代昔条形图能更加直观的展示数据之间的特征和比对
D.在任何情况下都应该避免使用饼图
8、(多选)ABC 进栈,出栈的排序可以有(A,B,C,D)
A. ABC
B.BAC
C.ACB
D.BCA
9、(多选)SPRK RDD的特点有(A,C,D)
A.可分区
B.可修改
C.可序列化
D.可持久化
RDD,全称弹式分布数据集。Spark 支持重分区,数据通过Spark默认的或者用户自定义的分区器决定数据块分布在哪些节点。RDD具有不可修改的特性。
Spark RDD七大特性
(1)内存计算速度快
Spark RDD运算数据是在内存中进行的,在内存足够的情况下,不会把中间结果存储在磁盘,所以计算速度非常高效。
(2)惰性求值
所有的转换操作都是惰性的,也就是说不会立即执行任务,只是把对数据的转换操作记录下来而已。只有碰到action操作需要返回数据给驱动程序(driver program)的时候,他们才会被真正的执行。
(2)容错性
Spark RDD具备容错特性,在RDD失效或者数据丢失的时候,可以根据DAG从父RDD重新把数据集计算出来,以达到数据容错的效果。
(3)不变性,不可修改
RDD是进程安全的,因为RDD是不可修改的。它可以在任何时间点被创建和查询,使得缓存,共享,备份都非常简单。在计算过程中,是RDD的不可修改特性保证了数据的一致性。
(4)可分区
分区是Spark RDD并行计算的基础。每个分区是对数据集的逻辑划分。可以对已存在的分区做某些转换操作创建新分区。
(5)持久化
可以调用cache或者persist函数,把RDD缓存在内存、磁盘,下次使用的时候不需要重新计算而是直接使用。
(6)粗粒度操作
通过使用map、filter、groupby等操作对RDD数据集进行集体操作。而不是只操作其中某些数据集元素。
(7)数据本地化
Spark会把计算程序调度到尽可能离数据近的地方运行,即移动计算而不是移动数据。
10、(多选)Hadoop的核心组件
A. AHDFS
B. YARN
C.RDD
D. Mapreduce
解析:
三大核心组件,HDFS 分布式文件存储架构,MapReduce 大数据计算架构,Yarn 资源调度框架
11、(多选)簇有效性的监督度量(A,B )
A. 熵
B. F度量
C. 轮廓系数
D. 共线分类相关系数
12、(多选)以下正确是是(A,B )
A. 梯度是有方向,有大小的
B. 对梯度向量求偏导(忘了原话是什么了)
C. 梯度只有大小,没有方向
D.梯度只有方向,没有大小
13、(多选)防止过拟合的方法(A,B,C)
A. 增加样本量
B. 交叉验证
C.正则化
D.增加特征维度
解决过拟合的方法有很多
(1)正则化
(2)Batch Normalization:有两个功能,一个是可以加快训练和收敛速度,另外一个是可以防止过拟合。
(3)集成学习
(4)Dropout
(5)提前终止训练,早停
(6)梯度下降
(7)降低特征维度
(8)增加样本数量
(9)降低模型复杂度
(10)增加参数惩罚
(11)重新清洗数据:把明显异常的数据剔除
注意:增加模型复杂度,添加新特征是解决欠拟合的方法。
14、预训练的词向量有(A,C ,D)
A. glove
B. gensim
C. elmo
D. Bert
NLP中预训练的词向量有:word2vec、glove、fastText、elmo、bert
15、以下正确的是(A,B)
A. Dropout可以处理过拟合
B. 训练CNN,可以平移、旋转等方法提升模型泛化能力
C. 提高卷积核大小,可以提高CNN性能
D. 以上都对
卷积核的大小是一个超参数(hyperparameter),也就意味着改变它既有可能提高亦有可能降低模型的表现。
16、缓解梯度消失的措施有哪些
梯度消失和梯度爆炸问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑一下以下方案解决:
(1)用ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等替代sigmoid函数。
思想也很简单,如果激活函数的导数为1,那么就不存在梯度消失爆炸的问题了,每层的网络都可以得到相同的更新速度。
(2)用Batch Normalization。
那么反向传播过程中权重的大小影响了梯度消失和爆炸,BN就是通过对每一层的输出规范为均值和方差一致的方法,消除了 权重带来的放大缩小的影响,进而解决梯度消失和爆炸的问题,或者可以理解为BN将输出从饱和区拉到了非饱和区(比如Sigmoid函数)。
(3)LSTM的结构设计也可以改善RNN中的梯度消失问题。
在RNN网络结构中,由于使用Logistic或者Tanh函数,所以很容易导致梯度消失的问题,即在相隔很远的时刻时,前者对后者的影响几乎不存在了,LSTM的机制正是为了解决这种长期依赖问题。
(4)ResNet残差网络
相比较以往的网络结构只是简单的堆叠,残差中有很多跨层连接结构,这样的结构在反向传播时具有很大的好处。
(5)预训练加微调
此方法来自Hinton在2006年发表的一篇论文,Hinton为了解决梯度的问题,提出采取无监督逐层训练方法,其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程是逐层预训练;
在预训练完成后,再对整个网络进行“微调”(fine-tunning)。此思想相当于是先寻找局部最优,然后整合起来寻找全局最优。
解决梯度爆炸
(1)梯度剪切
梯度剪切这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。
(2)权重正则化
权重正则化(weithts regularization)是一种解决梯度爆炸的方式。正则化是通过对网络权重做正则限制过拟合。
17、以下值得布尔值为False的是(A,B,C,D)
A .None
B.列表或字典为空时
C. 任何类型数字0(包括整数0,浮点0.0,复数0j (0+0j),十进制数Decimal(0),分数Fraction(0, 1))
D. 空的字符串、序列(sequence)或映射类(mapping)型对象
18、BatchNorm的作用
是通过对每一层的输出规范为均值为0和方差1的方法.
(1)减轻了对参数初始化的依赖,有利于调参。
(2)训练更快,可以使用更高的学习率。
(3)一定程度上增加了泛化能力
(4)缓解梯度消失
3.3 问答题(3个)
1、SQL查询优化(具体例子太复杂)
2、卷积网络如何应用到文本分类
文本分类的关键在于准确提炼文档或者句子的中心思想,而提炼中心思想的方法是抽取文档或句子的关键词作为特征,基于这些特征去训练分类器并分类。因为CNN的卷积和池化过程就是一个抽取特征的过程,当我们可以准确抽取关键词的特征时,就能准确的提炼出文档或句子的中心思想。
TextCNN使用的模型主要包括五层,第一层是embedding layer,第二层是convolutional layer,第三层是max-pooling layer,第四层是fully connected layer,最后一层是softmax layer.
(1)输入层
首先输入一个一维的由7个单词构成的句子,为了使其可以进行卷积,首先需要将其转化为二维矩阵表示,通常使用word2vec、glove等word embedding实现。
(2)卷积层和池化层
CNN的卷积和池化过程就是一个抽取特征的过程。池化的特点之一就是它输出一个固定大小的矩阵,还能降低输出结果的维度,却能保留显著的特征。
(3)全连接层
第一层可以加上relu作为激活函数,对于多分类来说,第二层则使用softmax激活函数得到属于每个类的概率。
3、一个有序集合如何去重复值
LeetCode 26题
使用快慢指针。慢指针来指向有序不重复序列的最后一个位置,fast来遍历整个集合。一旦慢指针的元素与快指针的不一致时,将快指针的元素插入到满指针的后一个位置,慢指针往后移动一个位置。
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if not nums:
return 0
n = len(nums)
fast = slow = 1
while fast < n:
if nums[fast] != nums[fast - 1]:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow