面經
機器學習算法一定要推導!
面試地點:字節跳動-北京
面試官是一個技術部的大牛,基本是半英文交流的。首先給了一張紙去寫一個遞歸,然后開始問算法相關的問題,如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