推薦系統(tǒng) 百面百搭 —— 1~11
作者簡(jiǎn)介
作者:Rulcy
原文:https://zhuanlan.zhihu.com/p/422464069
轉(zhuǎn)載者:楊夕
推薦系統(tǒng) 百面百搭地址:
https://github.com/km1994/RES-Interview-Notes
NLP 百面百搭地址:
https://github.com/km1994/NLP-Interview-Notes
個(gè)人筆記:
https://github.com/km1994/nlp_paper_study
前言
本文是對(duì)之前總結(jié)的48個(gè)面試題做一個(gè)歸類與總結(jié),方便后續(xù)的大佬們自行學(xué)習(xí)與查漏補(bǔ)缺。主要包括五個(gè)部分:機(jī)器學(xué)習(xí)/深度學(xué)習(xí)基礎(chǔ);深度學(xué)習(xí)/機(jī)器學(xué)習(xí)進(jìn)階;推薦系統(tǒng)(模型相關(guān));推薦系統(tǒng)(業(yè)務(wù)相關(guān));其它。
文末給出總結(jié)的面試題鏈接,方便大家查找。
喜歡作者可以點(diǎn)個(gè)關(guān)注,之后還會(huì)發(fā)布有質(zhì)量的文章!

Q1: 線下提升線上效果不好。
A: 原因是多樣的,主要原因在于樣本與評(píng)估指標(biāo)、環(huán)境。
在樣本上,線下樣本為歷史數(shù)據(jù),而線上樣本難免出現(xiàn)新數(shù)據(jù),同理還有新特征等,如線上時(shí)間特征在線下是無法訓(xùn)練的。
在評(píng)估指標(biāo)上表現(xiàn)為評(píng)估指標(biāo)不對(duì)等,線下評(píng)估指標(biāo)需要更貼近業(yè)務(wù)才能更好地表示真實(shí)推薦結(jié)果(或線上指標(biāo))。例如AUC表示的是所有user對(duì)所有item的評(píng)估指標(biāo),而線上更多需要單個(gè)user對(duì)其所有item的評(píng)估作為推薦結(jié)果,這時(shí)可以采用GAUC,即對(duì)每個(gè)user的AUC做量權(quán)求和作為評(píng)估指標(biāo)。
另外即是線下訓(xùn)練很難還原線上環(huán)境。可以理解為線下訓(xùn)練無法捕獲到全部的線上特征。
Q2: XGBoost和GBDT是什么?有什么區(qū)別?
A: GBDT:關(guān)鍵點(diǎn)在于Gradient和Boosting和DT(回歸樹)。在BDT中:Boosting——階梯狀訓(xùn)練,每棵樹學(xué)習(xí)的是之前的樹學(xué)習(xí)結(jié)果的殘差。通過多棵樹的預(yù)測(cè)結(jié)果求和,作為最終預(yù)測(cè)結(jié)果。而在GBDT中,采用損失函數(shù)梯度作為每棵樹需要學(xué)習(xí)的預(yù)測(cè)結(jié)果(y)。
為什么使用損失函數(shù)的梯度?——基于殘差的模型無法處理分類模型(類別數(shù)據(jù)無法取殘差);基于損失函數(shù)梯度的模型,由于梯度是優(yōu)化方向,那么就具備和殘差同樣的性質(zhì)(使模型輸出結(jié)果向著正確方向靠近),且損失函數(shù)類型多,可以根據(jù)模型業(yè)務(wù)選擇合適的損失函數(shù)。實(shí)際上,BDT是GBDT的特例。
GBDT容易過擬合,故在推薦中采用GBDT+LR的模型,使GBDT的輸出結(jié)果作為L(zhǎng)R的特征輸入。
關(guān)于回歸樹:葉子節(jié)點(diǎn)輸出值常見采用的是當(dāng)前葉子節(jié)點(diǎn)劃分領(lǐng)域的值的均值,劃分方式同分類樹一樣,根據(jù)特征劃分計(jì)算當(dāng)前指標(biāo)(決策樹的劃分指標(biāo)),選擇最佳的特征作為當(dāng)前劃分。在推薦的GBDT+LR模型中,訓(xùn)練的是回歸樹,輸出的是表示每棵回歸樹落到的節(jié)點(diǎn)的特征向量([1,0,0,...,0,1,0,0])。
GBDT是一種機(jī)器學(xué)習(xí)算法,而XGBoost是GBDT最廣為人知的工程實(shí)現(xiàn)。XGB相對(duì)于GBDT,對(duì)實(shí)現(xiàn)方式更為詳盡,能夠得到更準(zhǔn)確的結(jié)果。在實(shí)現(xiàn)方式上,相對(duì)于GBDT在損失函數(shù)構(gòu)造上添加了二階泰勒展開和正則項(xiàng),并根據(jù)最小化損失函數(shù)構(gòu)造了決策樹的劃分標(biāo)準(zhǔn)。
XGB相對(duì)于GBDT有以下優(yōu)化:加入正則項(xiàng)(與葉子節(jié)點(diǎn)個(gè)數(shù)與節(jié)點(diǎn)輸出權(quán)值有關(guān))防止過擬合;采用二階泰勒展開,相對(duì)于GBDT的一階導(dǎo)數(shù)(梯度)更為準(zhǔn)確;支持多種基分類器,不限于GBDT的CART決策樹;XGB有缺失值處理方案,能夠自動(dòng)學(xué)習(xí)缺失值處理策略;Shrinkage(衰減)策略,每次迭代的新模型乘以一個(gè)衰減率降低優(yōu)化速度,避免過擬合;借鑒了隨機(jī)森林(RF)的兩種抽樣策略;并行處理。
Q3: 偏差與方差。延伸知識(shí)(集成學(xué)習(xí)的三種方式: Bagging、Boosting、Stacking)。
A: 偏差表示模型預(yù)測(cè)結(jié)果的期望與真實(shí)結(jié)果的區(qū)別。方差表示模型預(yù)測(cè)結(jié)果偏離真實(shí)預(yù)測(cè)結(jié)果的程度。
偏差小方差大的模型為強(qiáng)模型;偏差大方差小的模型為弱模型。強(qiáng)模型和弱模型是集成學(xué)習(xí)模型的基模型。
Bagging的基模型是強(qiáng)模型,常用投票法基于所有基模型預(yù)測(cè)結(jié)果輸出最終結(jié)果,比較常見是的對(duì)每個(gè)基模型預(yù)測(cè)賦予相同的權(quán)重。Bagging能有效降低模型方差。
Boosting訓(xùn)練過程為階梯狀,基模型訓(xùn)練時(shí)有序的,每個(gè)基模型都會(huì)基于前一個(gè)基模型進(jìn)行訓(xùn)練,使用的是弱模型。
Stacking將基模型的輸出結(jié)果作為新的特征進(jìn)行預(yù)測(cè)。使用的是強(qiáng)模型。
Q4: 隨機(jī)森林是什么?
A: 隨機(jī)森林是一種Bagging集成模型,基模型是決策樹。隨機(jī)森林的隨機(jī)體現(xiàn)在:隨機(jī)選擇樣本(Bootstrap自助法,有放回抽樣),隨機(jī)選擇特征(每顆樹使用不同的特征子集)。相當(dāng)于綜合了一群有偏見的分析師做決策。
隨機(jī)森林的優(yōu)點(diǎn)在于:算法表現(xiàn)優(yōu)秀,易于并行,且在處理高維度數(shù)據(jù)上不需要做特征篩選。
Q5: Word2Vec常見的加速訓(xùn)練的方式有哪些?
A: 對(duì)高頻詞抽樣,對(duì)于部分高頻詞(如“the”),很難對(duì)語義貢獻(xiàn)有針對(duì)意義的信息,而學(xué)習(xí)高頻詞的樣本又遠(yuǎn)遠(yuǎn)超過了訓(xùn)練該高頻詞emb所需的樣本數(shù)。故通過“抽樣”的方式,對(duì)于每個(gè)詞都有一定概率被刪除掉,而刪除的概率與該詞的詞頻有關(guān)。
負(fù)采樣提高訓(xùn)練效率。在Word2Vec訓(xùn)練中,word詞表(ont-hot向量)中每個(gè)訓(xùn)練樣本會(huì)更新所有權(quán)重,如輸出樣本數(shù)據(jù)為[0,0,...,0,1,...,0,0],其中1代表正樣本,而0代表其他的所有的負(fù)樣本。此時(shí)對(duì)負(fù)樣本的0進(jìn)行篩選再反向傳播。假設(shè)詞表大小為1W,而負(fù)樣本集合為10,則計(jì)算復(fù)雜度至少縮減到千分之一。出現(xiàn)頻次高的樣本更容易被選為負(fù)樣本。
Hierarchical(層級(jí)) SoftMax。預(yù)測(cè)的輸出詞采用哈夫曼樹編碼表示(從[0,0,..,1,..0,0]轉(zhuǎn)化為00..1的形式),詞頻高的位于哈夫曼樹淺層,詞頻低的位于深層。此時(shí)輸出層由原來的V分類(V代表詞典大小,V分類指將隱層輸出的值通過Softmax轉(zhuǎn)化為預(yù)測(cè)的one-hot詞向量結(jié)果)轉(zhuǎn)為了logV次的二分類。該方法沒有明顯優(yōu)于負(fù)采樣方法,故較少采用。
Q6: LightGBM是什么?
A: LightGBM是一個(gè)基于決策樹的Boosting(實(shí)現(xiàn)GBDT算法)的框架,對(duì)比于XGBoost具有更快的訓(xùn)練效率與更低的內(nèi)存消耗。
Q7: AdaBoost思想?
A: Adaboost思想是對(duì)分類錯(cuò)誤的樣本提高權(quán)重,且在模型融合時(shí),錯(cuò)誤率低的模型具有更高權(quán)重。
Q8: 損失函數(shù)無法求導(dǎo)該怎么樣進(jìn)行優(yōu)化?
A: 使用次梯度。
Q9: 召回模型中,評(píng)價(jià)指標(biāo)怎么設(shè)定?
A: 召回的好壞決定模型的上限,召回的指標(biāo)主要分為兩部分:?jiǎn)温氛倩氐男Ч?;單路召回?duì)剩余整體的影響。評(píng)價(jià)指標(biāo)有:
1. 對(duì)召回集的直接評(píng)價(jià)指標(biāo):召回率、精確率和綜合兩者的F1。
2. 熵:Entropy=∑pi*log(pi)。pi表示類別i在召回集出現(xiàn)的次數(shù),熵越大,代表該路召回的類別越多(多樣性)。
3. 召回集和精確率這類指標(biāo)會(huì)受到user-item交互的頻數(shù)影響,可以使用F1 score作為替代(主要為了解決Recall和Precision受到N(TopN)的影響),另一方面,可以在評(píng)價(jià)召回模型時(shí),對(duì)于不同的用戶設(shè)置根據(jù)交互頻數(shù)設(shè)置不同的N。
4. 另外,可以對(duì)于不同位置的召回集與未召回集,取少量數(shù)據(jù)進(jìn)行排序模型的訓(xùn)練,使用精排評(píng)價(jià)指標(biāo)判斷該召回是否有明顯優(yōu)勢(shì)。
Q10: 多路召回的作用?
A: 交叉與互補(bǔ),滿足用戶興趣多元化。
Q11: Skip-grim和Cbow的區(qū)別?Skip-grim優(yōu)勢(shì)在哪?
A: 使用中心詞預(yù)測(cè)上下文與使用上下文預(yù)測(cè)中心詞的區(qū)別。使用Sg的訓(xùn)練更為細(xì)致,從BP的角度看待,Sg的輸出節(jié)點(diǎn)為Cbow的K倍,則在反向傳播時(shí)的計(jì)算次數(shù)時(shí)Cbow的K倍(Cbow原理上對(duì)上下文向量做了Average)。對(duì)于數(shù)據(jù)量較少或生僻詞較多的時(shí)候,Sg能展現(xiàn)出明顯優(yōu)勢(shì)。簡(jiǎn)單而言,Cbow訓(xùn)練速度更快,但Skip-grim更為準(zhǔn)確,實(shí)際上論文中也指出了Sg效果更好。
