面经
机器学习算法一定要推导!
面试地点:字节跳动-北京
面试官是一个技术部的大牛,基本是半英文交流的。首先给了一张纸去写一个递归,然后开始问算法相关的问题,如Xgboost和GBDT、以及欠拟合和过拟合的解决方法。当然截止目前,其实都还算是简单的,最后,最伤心的事情来了,推导算法!从最简单的决策树C4.5开始,能推导出几个,加几分。心态直接崩了,好像只成功推导了C4.5,CART,HMM,LR,SVM,其他的都不成功。
面试官笑了笑,也没问其他问题,也没让我问问题,心很忐忑。过了一周左右,我终于放心了,是真的凉了
面试官的问题:
问对于logistic regession问题:prob(t|x)=1/(1+exp(w*x+b))且label y=0或1,请给出loss function和权重w的更新公式及推导。
答这个题其实是BAT1000题中的一道,w的更新公式可以由最小化loss function得到,也可以用极大似然函数方法求解,过程略...大家可以直接搜BAT面试1000题。
面试知识点掌握
- 知识点梳理
https://github.com/shunliz/Machine-Learning
- 算法推导
https://shunliz.gitbooks.io/machine-learning/content/
附: 机器学习十大算法
- 如何选择算法
微软如何选择 Azure 机器学习工作室算法:
https://docs.microsoft.com/zh-cn/azure/machine-learning/studio/algorithm-choice#algorithm-notes
机器学习算法优缺点对比及选择(汇总篇):
https://ask.hellobi.com/blog/shuzhiwuyu/19008
盘点最实用的机器学习算法优缺点分析,没有比这篇说得更好了:
https://cloud.tencent.com/developer/article/1111064
面试中常见问题
softmax loss在遇到样本不均衡的情况下,能够做出那些改进?
答focal loss, 加上temperature 或者 label smooth
算法相关的简单问题(GBDT、Xgboost等
Logistic Regression优化方程的证明。
两道算法题,手写代码。一道基于线性数据结构,一道基于树形数据结构
gbdt:
- gbdt原理
- gbdt推导
- 公式分布推导
- 残差如何计算
- 损失函数形式
- 基于常见损失函数的公式推导
- boosting体现在哪里
- 非mse损失时作为残差近似值的数学意义
- gbdt的weak learner是什么,为什么用CART回归树而不是分类树(分类树残差相减没有意义)
- CART回归树
- 节点分裂规则,写出公式
- 公式中每个值在实际训练中是怎么计算出来的,举例子说明
- 连续变量节点如何划分
- 离散变量节点如何划分
- gbdt的训练过程
- 做分类预测时如何训练
- 做回归预测时怎么训练
- gbdt分类输出
- 输出概率如何计算
- 能否计算多分类, 是互斥多分类还是非互斥的?
- 如果做互斥多分类,在哪一步改进?
- gbdt调参
- 调过哪些参数, 各有哪些作用
- 重要参数为什么有这些作用?从原理出发讲一下
- gbdt里的subsample作用,为何可以提高泛化,和rf的采样是否相同
- rf里行采样,列采样解释,作用
- rf为什么要使得每棵树不一样,数学解释
- shrinkage作用
- gbdt学习速率设置
- 为什么设置学习速率可防止过拟合?
- 深度学习中常见的学习速率设置方式有哪些? 数学公式
- gbdt中学习速率是如何使用的?数学解释
- 通常合理设置学习速率模型会变好,原理是什么
- gbdt+lr过程
lr:
- 数学推导, 求导
- sigmoid why?
svm:
- svm原理
- 对偶作用
- 推导公式
dnn, cnn:
- 画网络结构
- 用到的激活函数, relu好处
- 优化方法, 每种优化的过程, 参数更新公式
- 动量
- 可走出局部最小值原因? 数学解释
- 动量为啥比mini-batch好: 数学解释
正则:
- l1, l2的作用
- 为什么l1稀疏,l2权重衰减? 不能画图, 数学解释
不均衡样本:
- 上采样, 下采样
- easy-enesmble
多模型对比:
- gbdt, xgboost, rf
- lr, 线性模型
特征工程及模型评估:
- 模型效果评估方式, ROC
- 模型性能下降的改进
- 过拟合原因及改善
- 特征筛选方式
关于GBDT重点关注一下:
- Boosting算法Bagging算法介绍
- GBDT基本原理
- GBDT如何正则化
- GBDT分裂规则
- GBDT的“梯度提升”体现在那个阶段
- GBDT如何做特征选择
- GBDT为什么使用cart回归树而不是使用分类树
- 为什么GBDT的树深度较RF通常都比较浅
- GBDT那些部分可以并行
- GBDT与RF的区别
- GBDT与XGBoost的区别
- xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
工程算法:
- 斐波那契数列非递归编程
- 二叉树遍历
- 中位数查找,不能对数组排序
- 合并k个有序数组
- 假设全球所有人都在一个矩形方格中,每个人有坐标(xi,yi),距离每个人半径为r的范围中的总人数为Ci,现在要求max(Ci),应当使用什么方法进行处理?
- 如果一个国家发行的钞票面值都是斐波那契里的数字,给s定一个物品价值n,问购买这个物品总共有多少种钞票组合方式。
- 这里重点关注回答里的算法问题: 如何准备机器学习工程师的面试 ? - 姚凯飞的文章 - 知乎
https://zhuanlan.zhihu.com/p/29969587
网友评论