追根溯源,算法崗面試「完整脈絡(luò)」梳理:手推公式、通用問(wèn)題、常見(jiàn)算法

極市導(dǎo)讀
?正值2021秋招季,本文梳理了常見(jiàn)的機(jī)器學(xué)習(xí)面試題的完整脈絡(luò),包括手推公式、機(jī)器學(xué)習(xí)通用問(wèn)題以及常見(jiàn)機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法等。內(nèi)容非常詳盡,可為正在準(zhǔn)備面試的同學(xué)提供有效參考。
一.常見(jiàn)手推公式部分
1.1 LR手推、求導(dǎo)、梯度更新

1.2 SVM原形式、對(duì)偶形式

1.3 FM公式推導(dǎo)

1.4 GBDT手推

1.5 XGB推導(dǎo)

1.6 AUC計(jì)算


1.7 神經(jīng)網(wǎng)絡(luò)的反向傳播

pytorch寫(xiě)簡(jiǎn)單DNN

二.常見(jiàn)機(jī)器學(xué)習(xí)通用問(wèn)題
2.1評(píng)價(jià)指標(biāo)
2.1.1 分類問(wèn)題指標(biāo):
分類問(wèn)題的評(píng)價(jià)指標(biāo)大多基于混淆矩陣計(jì)算所得

缺點(diǎn):類別比例不均衡時(shí)影響評(píng)價(jià)效果。






特點(diǎn):AUC的評(píng)價(jià)效果不受正負(fù)樣本比例的影響。因?yàn)楦淖冋?fù)樣本比例,橫縱坐標(biāo)大小同時(shí)變化。整體不變。
2.1.2回歸問(wèn)題評(píng)價(jià)指標(biāo):




2.2.1 梯度下降法(gradient descent)
選擇最陡峭的地方下山——這是梯度下降法的核心思想:它通過(guò)每次在當(dāng)前梯度方向(最陡峭的方向)向前“邁”一步,來(lái)逐漸逼近函數(shù)的最小值。


梯度下降法根據(jù)每次求解損失函數(shù)LL帶入的樣本數(shù),可以分為:全量梯度下降(計(jì)算所有樣本的損失),批量梯度下降(每次計(jì)算一個(gè)batch樣本的損失)和隨機(jī)梯度下降(每次隨機(jī)選取一個(gè)樣本計(jì)算損失)。
缺點(diǎn):
2.2.2 Momentum
為了解決隨體梯度下降上下波動(dòng),收斂速度慢的問(wèn)題,提出了Momentum優(yōu)化算法,這個(gè)是基于SGD的,簡(jiǎn)單理解,就是為了防止波動(dòng),取前幾次波動(dòng)的平均值當(dāng)做這次的W。

beta為新引入的超參,代表之前的dW的權(quán)重。

缺點(diǎn):
依舊使用同一學(xué)習(xí)率alpha,比較難學(xué)習(xí)一個(gè)較好的學(xué)習(xí)率。
2.2.3 Adagrad
在前面介紹的算法中,每個(gè)模型參數(shù)θi使用相同的學(xué)習(xí)速率η,而Adagrad在每一個(gè)更新步驟中對(duì)于每一個(gè)模型參數(shù)θi使用不同的學(xué)習(xí)速率ηi。其更新方程為:

其中,Gt∈Rd×d是一個(gè)對(duì)角矩陣,其中第i行的對(duì)角元素eii為過(guò)去到當(dāng)前第i個(gè)參數(shù)θi的梯度的平方和,epsilon是一個(gè)平滑參數(shù),為了使得分母不為0。
缺點(diǎn):
梯度衰減問(wèn)題,Gt是不斷增加的,導(dǎo)致學(xué)習(xí)率不斷衰減,最終變得非常小。
2.2.4 RMSprop
RMSprop使用指數(shù)加權(quán)平均來(lái)代替歷史梯度的平方和:


RMSprop對(duì)梯度較大的方向減小其學(xué)習(xí)速率,相反的,在梯度較小的方向上增加其學(xué)習(xí)速率。
缺點(diǎn):
仍然需要全局學(xué)習(xí)率:n
2.2.5 Adam
Adam是Momentum 和 RMSprop的結(jié)合,被證明能有效適用于不同神經(jīng)網(wǎng)絡(luò),適用于廣泛的結(jié)構(gòu)。是目前最常用的優(yōu)化方法,優(yōu)勢(shì)明顯。

簡(jiǎn)單選擇方法:
數(shù)據(jù)量小可以用SGD。
稀疏數(shù)據(jù)則選擇自適應(yīng)學(xué)習(xí)率的算法;而且,只需設(shè)定初始學(xué)習(xí)率而不用再調(diào)整即很可能實(shí)現(xiàn)最好效果。
Adagrad, Adadelta, RMSprop, Adam可以視為一類算法。RMSprop 與 Adadelta本質(zhì)相同,都是為了解決Adagrad的學(xué)習(xí)率消失問(wèn)題。
目前來(lái)看,無(wú)腦用 Adam 似乎已經(jīng)是最佳選擇。
2.3 過(guò)擬合問(wèn)題
1.解空間形狀:加入正則化項(xiàng)即為約束條件:形成不同形狀的約束解空間。
2 導(dǎo)數(shù):L2的導(dǎo)數(shù)為2X,平滑。L1導(dǎo)數(shù)為X,-X,存在突變的極值點(diǎn)
3.先驗(yàn):加入正則化項(xiàng)相當(dāng)于引入?yún)?shù)的先驗(yàn)知識(shí):L1引入拉普拉斯,L2引入高斯分布
L1可以做到特征篩選和得到稀疏解。L2加速訓(xùn)練
減小參數(shù)規(guī)模
隨機(jī)丟棄產(chǎn)生不同網(wǎng)絡(luò),形成集成,解決過(guò)擬合,加速訓(xùn)練
加快訓(xùn)練、消除梯度消失(爆炸)、防止過(guò)擬合 不適用太小batch、CNN
常見(jiàn)激活函數(shù)
sigmoid只做值非線性變化映射到(0,1),用于二分類。
softMax變化過(guò)程計(jì)算所有結(jié)果的權(quán)重,使得多值輸出的概率和為1。用于多分類。指數(shù)運(yùn)算速度慢。梯度飽和消失。
雙曲正切函數(shù)。以0為中心,有歸一化的作用。
大于0為1,小于0為0,計(jì)算速度快。
leaky輸入為負(fù)時(shí),梯度仍有值,避免死掉。
樣本不平衡
模型評(píng)估指標(biāo)
距離衡量與相似度
損失函數(shù)
MAE、MSE、Huber loss

通過(guò)極大似然估計(jì)生成似然函數(shù),取對(duì)數(shù)求極大值--損失函數(shù)

用一個(gè)猜測(cè)的分布的編碼去編碼真實(shí)的分布,得到的信息量
交叉熵p(x)對(duì)應(yīng)真實(shí)標(biāo)記y,q(x)對(duì)應(yīng)預(yù)測(cè)值。
特征選擇的方法
覆蓋率、皮爾遜相關(guān)系數(shù)、Fisher、最大方差閾值、卡方檢驗(yàn)
決策樹(shù)剪枝
WOE/IV值計(jì)算公式



常見(jiàn)的數(shù)據(jù)分箱方法
處理海量數(shù)據(jù)方法
Kmean缺陷與改進(jìn)
隨機(jī)森林
criterion:度量分裂質(zhì)量,信息熵或者基尼指數(shù)
max_features:特征數(shù)達(dá)到多大時(shí)進(jìn)行分割
max_depth:樹(shù)的最大深度
min_samples_split:分割內(nèi)部節(jié)點(diǎn)所需的最少樣本數(shù)量
bootstrap:是否采用有放回式的抽樣方式
min_impurity_split:樹(shù)增長(zhǎng)停止的閥值
XGB

max_depth、min_child_weigh:樹(shù)深,孩子節(jié)點(diǎn)最小樣本權(quán)重和
gamma、alpha、lambda:后剪枝比例,L1,L2正則化系數(shù)
subsample、colsample_bytree:樣本采樣、列采樣
eta:削減已學(xué)樹(shù)的影響,為后面學(xué)習(xí)騰空間
tree_method:gpu_histGPU 加速
LGB
-常用調(diào)參:
num_iterations、learning_rate:迭代次數(shù),學(xué)習(xí)率
max_depth、min_data_in_leaf、num_leaves:控制樹(shù)的大小
lambda_l1、lambda_l2、min_split_gain:L1、L2、最小切分
feature_fraction、bagging_fraction:隨機(jī)采樣特征和數(shù)據(jù)
device:GPU
GBDT、XGB、LGB比較
1.損失函數(shù):加入正則化項(xiàng):L1葉子節(jié)點(diǎn)數(shù),L2葉子節(jié)點(diǎn)輸出Score
2.導(dǎo)數(shù):使用代價(jià)函數(shù)的二階展開(kāi)式來(lái)近似表達(dá)殘差
3.基分類器:XGB支持線性分類器做基分類器
4.處理缺失值:尋找分割點(diǎn)時(shí)不考慮缺失值。分別計(jì)算缺失值在左右的增益。測(cè)試首出現(xiàn)缺失,默認(rèn)在右。
5.近似直方圖算法:采用加權(quán)分位數(shù)法來(lái)搜索近似最優(yōu)分裂點(diǎn) 6.Shrinkage(縮減):將學(xué)習(xí)到的模型*系數(shù),削減已學(xué)模型的權(quán)重
7.列采樣:特征采樣。
8.并行計(jì)算:特征預(yù)排序,特征分裂增益計(jì)算(均在特征粒度上)
1.節(jié)點(diǎn)分裂準(zhǔn)則:XGB一次分裂一層節(jié)點(diǎn)(浪費(fèi)),LGB深度優(yōu)先分裂(過(guò)擬合)
2.決策樹(shù)算法:基于histogram直方圖分箱操作。減存加速
3.直接支持類別特征,無(wú)需獨(dú)熱操作
4.特征并行,數(shù)據(jù)并行
5.GOSS:?jiǎn)芜叢蓸樱罕A舸筇荻葮颖荆S機(jī)采樣小梯度樣本
6EFB:歸并很少出現(xiàn)的特征為同一類
Stacking和Blending
LDA、PCA與SVD
線性判別分析 Linear Discriminate Analysis(監(jiān)督)
PCA用于方陣矩陣分解
SVD用于一般矩陣分解 - LDA(類別區(qū)分最大化方向投影)
在標(biāo)簽監(jiān)督下,進(jìn)行類似PCA的主成分分析
構(gòu)造類間的散布矩陣 SB 以及 類內(nèi)散布矩陣 SW - PCA(方差最大化方向投影) 構(gòu)建協(xié)方差矩陣 最大化投影方差:信號(hào)具有較大方差,讓數(shù)據(jù)在主軸方向投影方差最大 最小平方誤差:方差最大,即樣本點(diǎn)到直線距離最小(最小平方誤差)
- SVD
左右為正交矩陣:用于壓縮行、列 中間為對(duì)角陣:奇異值
SVM
方便核函數(shù)的引入(轉(zhuǎn)化后為支持向量?jī)?nèi)積計(jì)算,核函數(shù)可以在低緯中計(jì)算高維的內(nèi)積),改變復(fù)雜度(求W變成求a(支持向量數(shù)量))
有效性:核函數(shù)矩陣KK是對(duì)稱半正定矩陣
常見(jiàn)核函數(shù):線性核函數(shù),多項(xiàng)式核函數(shù),高斯核函數(shù),指數(shù)核函數(shù)
區(qū)別:線性簡(jiǎn)單,可解釋性強(qiáng),只用于線性可分問(wèn)題。多項(xiàng)式可解決非線性,參數(shù)太多。高斯只需要一個(gè)參數(shù),計(jì)算慢,容易過(guò)擬合。
特征維數(shù)高選擇線性核
樣本數(shù)量可觀、特征少選擇高斯核(非線性核)
樣本數(shù)量非常多選擇線性核(避免造成龐大的計(jì)算量)
EM
用于含有隱變量的概率模型參數(shù)的極大似然估計(jì)
推薦閱讀

