1. 前言
本次小面试开始于2021/05/27,第一场面试,记录面试过程中各题目的感想和反思。
由于脑袋宕机,导致面试过程中有的回答表述不清,逻辑不明,以下描述的原回答与面试中的回答不是很一致。(第一次面试的惨烈经历,以后不能这么紧张了懂吗!)
2. 决策树相关
2.1 一句话概括决策树
原回答:决策树是根据信息增益判断熵值的变化情况选择局部最优特征进行分解,从而逐渐拆解为一颗最优树
反思:原回答过于繁琐,根据面试官导师的指导,只需"信息增益"一词便可以概括决策树
现回答:信息增益
2.2 解释一下熵以及熵的公式是什么
原回答:熵是指在已有数据集的情况下,该数据集标签的混乱程度,熵值越大越混乱。举个例子,我们现有一个数据集(x1,x2,...,xn,y)在y标签的数据如果是均匀分布,熵是最大的,假设标签一共16条数据,共有4个类别,每个类别都有4条数据,那么所有类别的概率是1/4,这时候会熵是最大的。熵的公式是:
反思:原本的知识体系过于分散,没有仔细思考过概率统计和频率的区别,在面试官导师的指导下,该例子中各类数据的占比情况应该用频率来表示
2.3 使用信息增益的决策树有什么缺点
原回答:1. 由于信息增益采用的是局部最优的思想,因此最后可能产生过拟合 2. 单纯的信息增益并不能完全代表某个特征能最大程度降低熵的大小,比如有一个id特征,按顺序编号的数据集,如果根据id特征来计算信息增益,它必然是最大的,但是如果考虑信息增益比率,其实它并不一定是最大的,因此可能导致选择了一个无意义的特征进行决策树拆分。
反思:本题在向面试官导师口述的过程中,由于表达确实不够明确,导致面试官导师对于第二个点并不是很理解,由此产生了下面的另一道题(虽然说即使表达清楚也会产生下一道题,但是对于我自身在面试过程中的表意不明,还是很严重的一件事)。
2.4 如何解决这些缺点
原回答:其实我刚才已经提到了,针对于信息增益无法保证解决特征筛选的准确性,可以根据信息增益比去解决......
反思:其实这里更应该直接和面试官导师说的是ID3和C4.5,导师会更清晰的了解要说的内容,另外,由于有些紧张,忘了回答第一个缺点的解决方式,这个解决方式主要是剪枝。
现回答:
- 针对于第一个过拟合的缺点,我们可以采用预剪枝和后剪枝的方式解决这一缺点,就我目前还记得的,后剪枝是在一颗完整决策树建成后,通过以下损失函数来控制树的复杂程度。其中,C(T)为损失函数的定义,|T|代表叶节点数目,Nt表示叶节点上的样本数,Ht(T)为叶节点的经验熵,Ntk代表该叶节点上第k类的样本点数目。α为惩罚系数,它越大惩罚力度越大。
- 针对于第二个缺点,可以使用C4.5解决ID3的信息增益不一定准确的问题。因为比率更容易看出熵值的下降程度,而不只是熵的下降大小。
关于叶节点为何会有多个类别,可参考资料:
3. 统计学相关
3.1 解释下大数定律
原回答:大数定律是指在样本数量足够多的情况下,我们所观测到的采样结果会逐渐趋向于一个概率分布。举个例子,摇骰子,1~6,如果我们采样的数量过少,那么这个观测结果会有明显的波动情况。但如果样本数量足够多,我们会观察到的结果是各观测结果都是1/6的这类概率分布。
反思:面试过程中的回答较为啰嗦,没有第一时间理清状况,与上述原回答有少许差异,实际面试过程中我认为我有上述回答的话会有不错的效果。
3.2 大数定律有什么需要注意的吗
原回答:不知道,没有。(确实基础不够,没学那么细,没去仔细理解)
反思:经面试官导师的提示,大数定律要注意每个观测结果需要独立同分布,不能有其他因素的影响,比如我刚才说的摇骰子的例子,这个骰子不能有磕磕碰碰有损坏。
3.3 频率派和贝叶斯派在样本量足够多的情况下,有区别吗
原回答:不太理解,应该没区别。样本量足够多的情况下,频率派会向贝叶斯派转化。
反思:经点醒,事实应该是在样本量足够多的情况下,贝叶斯派需要考虑的先验概率已被频率派样本的增加而抹掉,此时贝叶斯派会和频率派一致。
可参考链接:
- https://blog.csdn.net/u011508640/article/details/72815981
- https://www.zhihu.com/question/20587681/answer/41436978
- https://www.zhihu.com/question/25391960/answer/39780528
3.4 说下贝叶斯公式,先验,后验,似然分别是什么,解释下似然
原回答:贝叶斯公式为: ,先验为P(A),后验为P(A|B),似然不了解。接着把似然理解为极大似然估计,说了一堆废话。
反思:过于紧张把公式的分子说错,同时没有了解过P(B|A)就是似然。
现回答:对它的理解为:,先验为P(A),后验为P(A|B),似然为P(B|A)。在这里似然主要是指在已知Bi分布的情况下,反推A的情况。
可参考链接:
3.5 还了解点估计,一阶矩,二阶矩吗
原回答:了解过,但是目前不记得了
反思:正式面试前一定要准备到位,把统计学知识再好好过一遍!
现回答:
- 点估计即已知总体X的概率分布函数的形式,但它的一个参数或多个参数未知,借助于总体的一个样本来估计总体的未知的参数。另外,如果是中心矩,一阶中心矩即各样本和样本均值间距的平均值,为0。二阶中心矩即各样本与样本均值间距的平方和,可以视为方差。如果是原点矩,我们称为样本k阶原点矩。样本k阶原点矩是k阶总体矩的无偏估计量,也就是说,在需要根据总体X的分布推断它的k个参数的时候,可以通过原点矩的方式建立k个方程,从而得到k个参数的估计值。
可参考链接:
- https://zhuanlan.zhihu.com/p/55780975
- https://zhuanlan.zhihu.com/p/57802400
- https://www.jianshu.com/p/b570b1ba92bb
4. Python相关
4.1 知道"颗粒度"吗(划引号是因为老师纠正了两遍这个词的发音,我以为不是这个词就放弃了)
原回答:不知道
反思:如果可以应该向面试官导师确认一下到底是哪个词,如果不是颗粒度这个词那么确实不会。这里猜测是"颗粒度"这个词的原因在于,下个问题面试官导师问了层次索引的相关知识,所以推测是颗粒度相关问题,但由于确认问题时没理解,没答上该题。
现回答:颗粒度其实是指对一个维度的细化程度,颗粒度越小,意味着维度细化的越细。比如第一个维度是男生,第二个维度是地域,依次往内细分颗粒度。
4.2 知道层次索引吗,说一下都怎么用的
原回答:
- 不知道。(太紧张第一时间没想起来,出了大丑,这都不会!)
- 知道的,层次索引其实就是多个维度的拆分,具体使用场景中,我们可以通过stack和unstack函数来实现行列维度的转换,如果仅是列的多层次数据提取,可以通过header参数调节,取到我们所需的那一层次的数据。
反思:这里属于典型的自己做还会,面试就拉跨,解决方式是多面几场,加强应变能力和心理能力。
4.3 层次索引的作用(印象中是这道题)
原回答:通常在以下场景能使用到,比如按列的第一个维度是男,第二个维度是跑步时长,跑步评分,这代表在第一个维度下的两个维度的对应关系(面试过程中的回答比较凌乱,嗯,风中凌乱的那种,以后要慢慢思考慢慢说才行,不能为了速度一直赶)
反思:其实面试官导师的本意是想知道多层索引的用处,经导师点醒,其实很概括的说就是“流转”,就比如第一个维度是男,第二个维度地域,职业等,如果把两个维度互换,其实就是信息的流转方向变了。
4.4 括号匹配问题,用的什么数据结构
原回答:我通常用列表的方式去做,每遇到一对括号,就近匹配,然后弹出,若最后列表的长度不为0,则代表需要匹配的括号有错误。
反思:面试官导师想听到的是栈,然而我只说了实现过程。甚至最后导师点醒的时候我还稀里糊涂的说了个队列,这么简单问题都不会,罪过罪过。。。
现回答:括号匹配运用栈先进后出的思想,就近匹配括号并弹出,从而验证括号是否完整匹配。
5. 总结
5.1 缺点
1. 自我介绍未提及项目,该打
2. 忘了重点介绍项目和自己的思考过程,该打
3. 准备了业务数分相关知识却把面试官引导到机器学习的问题,该打
4. 思维混乱,给面试官留下较差印象,该打
5.2 改进
1. 应提炼自我介绍精华:自身背景 → 擅长技能 → 所做项目 → 项目反思
2. 在讲解项目过程中,多讲解如何指标拆解,如何分析数据,学会引导面试官思考方向到自己擅长的方向。
3. 多面试几家,适应适应。
4. 面试前一定要做好足够准备,不得太仓促。