苏宁算法管培生数据挖掘方向面试汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019秋招初试:在苏宁总部面试的,大约50分钟,一个面试官,面试官很和蔼。(最好带点纸和笔,后面会推公式,我面试时面试官只剩下一张白纸了)
1、数据清洗:
分别是缺失值(missing value),异常值(离群点),去重处理(Duplicate Data)以及噪音数据的处理。
缺失值:1)在缺失率少且属性重要程度低的情况下,若属性为数值型数据则根据数据分布情况简单的填充即可,例如:若数据分布均匀,则连续值使用均值对数据进行填充即可,离散值用众数填充;若数据分布倾斜,使用中位数填充
不高:直接删除。
(Pandas.isnull():元素级别的判断,把对应的所有元素的位置都列出来,元素为空或者NA就显示True,否则就是False、panda.dropna,指定删除某行某列、Pandas.fillna():缺失值填充)。
异常值:1、 pandas的describe方法就可以实现,通过数据集描述性统计,发现是否存在不合理的值,即异常值。2、基于正态分布的离群点检测、3、聚类。
1>删除异常值----明显看出是异常且数量较少可以直接删除
2>不处理---如果算法对异常值不敏感则可以不处理,但如果算法对异常值敏感,则最好不要用这种方法,如基于距离计算的一些算法,包括kmeans,knn
之类的。
3>平均值替代----损失信息小,简单高效。
4>视为缺失值----可以按照处理缺失值的方法来处理
去重处理:一是排序,二是计算相似度。目前在做竞赛过程中主要是用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:描述的是预测值的变化范围,离散程度,也就是离其真实值的距离。用来从总体上衡量预测值与实际值之间的差异。
对于一个非线性分类问题而言(如XOR),简单的线性分类器(无维度空间映射)由于自身特性并不能较好地进行类别划分,model会出现较大的偏差;而决策树模型作为非线性分类器,能较好的拟合训练样本,偏差值较小,但若模型过于拟合训练样本,测试样本出现了训练样本考虑不周的情况,则容易出现预测误差,即方差值较高。对于一个model而言,泛化误差越小越好,可以通过一些方法来减小上述的偏差和方差。例如,常见的random forest通过采样和融合多棵决策树来减小泛化误差。
想象你开着一架黑鹰直升机,得到命令攻击地面上一只敌军部队,于是你连打数十梭子,结果有一下几种情况:
1.子弹基本上都打在队伍经过的一棵树上了,连在那棵树旁边等兔子的人都毫发无损,这就是方差小(子弹打得很集中),偏差大(跟目的相距甚远)。
2.子弹打在了树上,石头上,树旁边等兔子的人身上,花花草草也都中弹,但是敌军安然无恙,这就是方差大(子弹到处都是),偏差大(同1)。
3.子弹打死了一部分敌军,但是也打偏了些打到花花草草了,这就是方差大(子弹不集中),偏差小(已经在目标周围了)。
4.子弹一颗没浪费,每一颗都打死一个敌军,跟抗战剧里的八路军一样,这就是方差小(子弹全部都集中在一个位置),偏差小(子弹集中的位置正是它应该射向的位置)。
方差,是形容数据分散程度的,算是“无监督的”,客观的指标,偏差,形容数据跟我们期望的中心差得有多远,算是“有监督的”,有人的知识参与的指标。