2019阿里校招数据挖掘/数据开发一面总结

前两天刚面完一面,明天面二面,趁着印象还算深刻,记录下来,不管个人成功与否,希望对你们有参考意义;

面试7点40开始,是一位小姐姐来电面的(在上海上学),感觉应该是统计学/数学专业的,至于为什么会有这样的猜想,后续会提到;

1、上来就是对第二篇论文进行提问了,围绕这篇论文进行展开;

1.1、层次采样时什么意思,代价敏感是什么意思?

回答:之所以提出这两个方法,是因为目前在做的是倾斜数据集上的建模,如果直接建模,模型无法对少数类进行预测,所以需要在数据层面和算法层面进行改进;数据层面改进的方法就是进行层次采样,即根据数据集上每个类别的数据量的大小,对多数类进行欠采样(为了疏离噪声点,自定义采样半径),少数类进行过采样(在原有数据集上,进行有放回采样,之后SMOTE算法进行一定的合成);再问,采样半径是是什么,如何计算并选择合适的采样半径?答曰:采样半径是多数类样本的一簇,尽管可能存在极其少数的噪声样本(噪声定义为异常且稀少),但是多数类的样本平均值是无法改变的;所以通过限制采样半径R,能够在一定程度上避免采样噪声样本,计算是通过标准化之后的欧式距离;接着马上问了,为什么不是马氏距离?之后补充:马氏距离(通过协方差计算)尽管可以消除特征量纲的影响,数据集的协方差不一定存在或难以计算,更进一步而言,欧式距离通用性更广,对特征进行标准化之后,能够消除量纲影响,因此选择欧式距离计算,至于怎么样选择,是通过实验法。面试官问到我时候做了数据集分布的测试,因为欧式距离适用于球形数据集,而其他分布的数据集是不适用的,这点我觉得没有太理解,也在找资料证实;回到代价敏感问题,是通过对样本类进行加权,使得模型能够有偏侧重于少数类(少数类往往更重要),提高整体性能,权重设置一般是样本数量倒数,再进一步可以通过搜索方法;

1.2、SMOTE算法是一个怎么样算法?

答曰:Smote算法是样本生成方法,通过对任意一个样本,找出其近邻样本,在此基础之上,加上一个高斯白噪声,生成一个新的样本,因为重复采样之后,数据集信息可能无法扩充,通过这个方法,能够进行一定的信息补充,不足之处是需要对新样本进行筛选,因为近邻不可控的性质;

1.3、讲一下随机森林算法原理

答曰:此处省略,可以自行百度

1.4、如何做的特征工程

答曰:对于类别型特征,通过ONE-HOT编码(不宜使用数值编码,数值编码的问题在于本身无序的特征,因为编码之后,就有序了,对原始的数据造成了影响),再进一步,数据集的数值型特征分散并不是很大,所以直接进行了使用,并未进行分块处理;更进一步,做好特征的预处理之后,再通过heat-map热图,观察特征之间的相关性(通过皮尔逊相关性计算【协方差/彼岸准差】),筛选出低相关性特征;目的在于消除部分冗余特征,便于后面的RF OOB贪心搜索;针对论文的东西基本就讲完了

2、如何看模型是否过拟合,如何克服过拟合,稀疏化的作用(我提到了L1,L2稀疏之后补充问的)

答曰:模型表现过拟合,即训练过程偏差bias低,而在测试过程variance高,模型就陷入了过拟合状态,一般采用的方法有:数据集层面:增加样本数量,减少数据集噪声,有些算法对噪声极其敏感,如硬间隔SVM,KNN;在算法层面:通过L1,L2正则限制算法的复杂度,通过early-stop观察拟合过程,出现过拟合时,立马停止;既然谈到L1,L2正则,它们的稀疏有什么不同,稀疏的作用是什么?

L1在限制模型复杂度的时候,使得某些特征权重为0,而L2使得模型特征接近于0,L2相对于L1更加平滑;出现这样的原因在于L1正则在原点附件二阶导数不存在,而L2是可以的,这是背后的理论推导;补充一下:在特别高维度(500W维度)特征下,L1往往表现的更好,稀疏的作用:降低数据存储压力,将特征映射到高维度,使得其更加可分;小姐姐说:还可以减少计算量,这点我们进行了讨论,我也举了一个SVM例子,通过核函数映射到高纬度,但是计算还是在低维进行的,尽管高维很多置0了,但是也是需要计算的,小姐姐也没说什么。整个过程其实涉及到很多数学的东西,尤其是数据分布,假设检验的东西在里面,很受益,之前关注度并不是那么高。

面试是一个相互学习的过程,平静面对,相互讨论和学习,查缺补漏,帮助成长,不要有过大的心理压力!

陆续要二面了,期待ing!

猜你喜欢

转载自blog.csdn.net/zehui6202/article/details/81433139