苏宁算法管培生数据挖掘方向面试汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019秋招初试
简介:在苏宁总部面试的,大约50分钟,一个面试官,面试官很和蔼。(最好带点纸和笔,后面会推公式,我面试时面试官只剩下一张白纸了)
1、数据清洗:
分别是缺失值(missing value),异常值(离群点),去重处理(Duplicate Data)以及噪音数据的处理。
缺失值:
1)在缺失率少且属性重要程度低的情况下,若属性为数值型数据则根据数据分布情况简单的填充即可,例如:若数据分布均匀,则连续值使用均值对数据进行填充即可,离散值用众数填充;若数据分布倾斜,使用中位数填充即可。2)缺失值高,属性重要程度高:主要使用的方法有插补法(热平台插补法,以及拉格朗日插值法与牛顿插值法)与建模法(用回归、贝叶斯、随机森林、决策树等模型对缺失数据进行预测。例如:利用数据集中其他数据的属性,可以构造一棵判定树,来预测缺失值的值)。
3)缺失值高,属性重要程度不高:直接删除。
异常值:
1)pandas的describe方法就可以实现,通过数据集描述性统计,发现是否存在不合理的值,即异常值。
2)基于正态分布的离群点检测。
3)聚类。
去重处理:一是排序,二是计算相似度。目前在做竞赛过程中主要是用duplicated方法进行判断,然后将重复的样本进行简单的删除处理。
噪音数据:分箱法(用“近邻”样本光滑有序数值)和回归法(找出真实值与带有噪声的观测值之间的关系)
2、特征选择
过滤式选择:选择与目标变量相关性强的特征,缺点:没有考虑特征之间的关联作用。
包裹式选择:把特征的选择看做特征的子集,然后用模型进行评估。
嵌入式选择:根据模型选择特征重要性
3、解释什么是降维,在哪里会用到降维,它的好处是什么?
降维是指通过保留一些比较重要的特征,去除一些冗余的特征,减少数据特征的维度。而特征的重要性取决于该特征能够表达多少数据集的信息,也取决于使用什么方法进行降维。降维的好处是:
1)节省存储空间;
2)加速计算速度(比如在机器学习算法中)
3)去除一些冗余的特征,比如降维后使得数据不会既保存平方米和平方英里
的表示地形大小的特征;
4)将数据维度降到2维或者3维使之能可视化,便于观察和挖掘信息。
5)特征太多或者太复杂会使得模型过拟合。
4、列举几个常用的python分析数据包及其作用?
数据处理和分析:NumPy, SciPy, Pandas
NumPy:支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
SciPy:一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。(.mat) Pandas:基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。(.csv)
机器学习:SciKit、TensorFlow、keras、pytorch
可视化: Matplotlib, Seaborn
5、你所了解到的分类算法?(这个面试官主要考察了很基础的机器学习算法,深度学习方面没有问,他比较强调越是简单的算法越是易于用于商业)
有监督:
逻辑回归算法:即可以看做是回归算法,也可以看作是分类算法,通常用来解决分类问题,主要是二分类问题,对于多分类问题并不适合,也可以通过一定的技巧变形来间接解决。面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。
贝叶斯(Bayes)分类算法:是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。
k-近邻(kNN,k-Nearest Neighbors)算法:是一种基于实例的分类方法。该方法就是找出与未知样本x距离最近的k个训练样本,看这k个样本中多数属于哪一类,就把x归为那一类。
支持向量机(Support Vector Machine ,SVM)的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。
神经网络(Artificial Neural Networks,ANN):神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。
无监督:
聚类算法:k-means,DBSCAN
k均值聚类算法:是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。
关联规则:关联分类方法挖掘形如condset→C的规则,其中condset是项(或属性-值对)的集合,而C是类标号,这种形式的规则称为类关联规则(class association rules,CARS)。关联分类方法一般由两步组成:第一步用关联规则
挖掘算法从训练数据集中挖掘出所有满足指定支持度和置信度的类关联规则;
第二步使用启发式方法从挖掘出的类关联规则中挑选出一组高质量的规则用于
分类。(不会就不要提)
6. 如何权衡偏差和方差?
Bias:描述的是预测值与真实值之间的差距。用来衡量模型对特定样本实例预
测的一致性(或说变化)。
Variance:描述的是预测值的变化范围,离散程度,也就是离其真实值的距
离。用来从总体上衡量预测值与实际值之间的差异。
7、Xgboost:集成算法?
Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。(决策树自身有一些惩罚相)(重点考察)
8、Adaboost:(我说了解一点,没多说)
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
9、GBDT 模型(我说不会,他很耐心的给我简单的介绍了下,感动)
GBDT(gradient boosting desicion tree)是由boosting tree 演变过来的,而boosting tree可以认为是Adaboost的一般方法,也就是说二分类问题的Adaboost 模型是损失函数为指数损失函数的boosting tree模型,回归问题的Adaboost模型是损失函数为平方损失函数的boosting tree模型。
GBDT的关键点就是利用损失函数的负梯度去模拟(代替)残差,这样对于
一般的损失函数,只要其一阶可导就行。这里用到了损失函数的一阶导数来得到残差也就是接下来的tree要去拟合的值(记住这里是一阶导数)。
10、推到逻辑回归公式???(损失函数、参数跟新,大概推到了一下)
11、推荐系统(如果想给面试官留下更深印象,多深究一下,多看这方面的书籍,毕竟推荐系统商业价值很大,我只是了解,没有实际操作过)
协同过滤:很好理解,基于用户相似度基于物品相似度(相似度:欧几里得距离、皮尔逊相似度),可使用surprise库中的knnbasic实现
隐语义:不好解释,不知道P、Q值表达什么含义,就像神经网络一样,可解释
性差。SVD
12、协同过滤与隐语义的区别???