推薦系統算法面試題


原文鏈接:https://blog.csdn.net/weixin_38664232/article/details/89948373

1、模型產生過擬合的原因及解決方案

什么是過擬合:

模型在訓練集上效果較好,在測試集上表現較差。

產生過擬合原因:

  1. 參數太多,模型復雜度高
  2. 樣本中噪音數據較大,模型學習到了噪音中的特征
  3. 對於決策樹模型。對決策樹的生長沒有合理的限制和修建
  4. 對於神經網絡模型。權值學習迭代次數足夠多(overtraining),擬合了訓練數據中的噪聲和訓練樣例中沒有代表性的特征。

解決方案:

  1. 降低模型復雜度
  2. 增大訓練集,訓練集增加之后就能學習到更多具有代表性的特征
  3. 增加正則項,減少參數,進一步降低模型復雜度
  4. 對於神經網絡,采用dropout
  5. 對於決策樹,采用earlystopping,模型對訓練數據集迭代收斂之前停止,防止過擬合
  6. 采用ensemble。集成學習可以有效的減輕過擬合。bagging通過平均多個模型的結果,來降低模型的方差。boosting不僅可以減小偏差,還可以減小方差。

2、Logistic回歸的損失函數,為什么要用sigmoid函數?sigmoid函數有何優缺點?

目標函數:

sigmoid優缺點:

logistic是基於Bernoulli分布的假設,也就是y|x~Bernoulli分布,而Bernoulli分布的指數族的形式就是1/(1+exp(-z))。

優點:

  1. 數據壓縮能力,將數據規約在[0,1]之間
  2. 導數計算方便

缺點:

  1. 存在梯度消失問題,當x稍大的情況就接近於一條水平線
  2. zigzag問題,非0中心化,在神經網絡算法等情況下,造成反向傳播時權重的全正全負的情況。

3、Logistic回歸為什么用交叉熵而不用歐式距離做損失函數?

歐式距離不是凸函數;交叉熵是凸函數;凸函數問題求解方便。

4、Logistic回歸是生成模型還是判別模型?

判別模型,直接輸出類后驗概率p(y|x),沒有對類條件概率p(x|y)或聯合概率p(x,y)建模。

5、為什么L1正則會把feature壓縮到0而L2正則做不到?

  1. L1正則只要不是特殊情況下與正方形的邊相切,一定是與某個定點優先相交,那么必然存在橫縱坐標中的一個系數為0,起到對變量篩選的作用。
  2. L2正則在圓的限制下,點可以是圓上的任意一點,對嶺回歸來說,是起不到壓縮變量作用的。

6、分類模型如何選擇?如何判別效果?如何計算auc?描述一個集成分類模型?

整體上:

數據量越大,神經網絡越好;維度越多,bagging算法越優越;訓練數量不多不少的情況下,SVM效果最好。

常用判斷:

accuracy,recall,ROC,auc,ks,f1值

auc的計算方法:roc曲線下的面積,FP(假陽率)、TP(真陽率)

一個集成分類模型:randomforest

  1. rf是由若干cart樹構成的,每棵樹盡情生長不剪枝,最后采用加權投票或者取均值的方式確定輸出值
  2. 每棵樹的數據采用bagging方式隨機抽取特征及樣本數目(決策樹生長和隨機性,這是RF的兩個特性),每棵樹之間的數據可能重復。
  3. 一般先以sqrt(feature_number)作為每次輸入的特征數,采取grid_search的方法觀察tree的數量(0-500),oob的變化(out-of-bag,袋外誤差,每次抽取到的數據進行訓練,沒有被抽到的數據作為校驗樣本,校驗樣本的誤差就是oob)
  4. 根據實際要求的精度后期可以進行調整:每次輸入的特征個數、每棵樹的最大深度、每個節點的分裂方式 (信息增益率/Gini指數)

7、信息增益、信息增益率、Gini指數

Gini指數:

8、LightGBM細節技術

 1.直方圖優化(Histogram算法)

先把連續的浮點特征值離散化成k個整數,同時構造一個寬度為k的直方圖。遍歷數據時,根據離散化后的值作為索引在直方圖中累積統計量,當遍歷一次數據后,直方圖累積了需要的統計量,然后根據直方圖的離散值,遍歷尋找最優分割點。

2.帶深度限制的Leaf-wise的葉子生長策略

Level-wise過一次數據可以同時分裂同一層的葉子,容易進行多線程優化,也好控制模型復雜度,不容易過擬合。但實際上Level-wise是一種低效算法,因為它不加區分的對待同一層葉子,帶來了很多沒必要的開銷,因為實際上很多葉子的分裂增益較低,沒有必要進行搜索和分裂。

Leaf-wise則是一種更為高效的策略:每次從當前所有葉子中,找到分裂增益最大的一個葉子,然后分裂,如此循環。因此同Level-wise相比,在分裂次數相同的情況下,Leaf-wise可以降低更多的誤差,得到更好的精度。

Leaf-wise的缺點:

可能會生長出較深的決策樹,產生過擬合。因此LightGBM在Leaf-wise之上增加了一個最大深度限制,在保證高效率的同時防止過擬合。

3.直方圖做差

直方圖做差可以達到兩倍的加速,可以觀察到一個葉子節點上的直方圖,可以由它的父節點直方圖減去它兄弟節點的直方圖來得到。根據這一點,可以構造出數據量較小的葉子節點上的直方圖,然后用直方圖做差得到數據量較大的葉子節點上的直方圖,從而達到加速的效果。

4.存儲記憶優化

當我們使用數據的bin描述特征的時候帶來的變化:首先它不是像與排序算法那樣去存儲每一個排序后數據的序列;一般bin會控制在一個比較小的范圍,所以我們可以用更小的內存來存儲。

5.支持類別型特征

傳統的機器學習一般不能直接輸入類別特征,需要先轉化為多維的0-1特征,這樣無論在空間上海市時間上效率都不高。LightGBM通過更改決策樹算法的決策規則,直接原生支持類別特征,不需要轉化,提高了近8倍的速度。

如圖所示:

6.支持並行學習

搜索計算每個葉子的分裂增益時,可以並行計算;但是基學習器之間是串行計算。

9、XGBoost原理

10、one-hot為什么會導致維度爆炸?

用法示例:

  1.  
    enc=OneHotEncoder()
  2.  
    enc_fe=enc.fit_transform(df['feature']).toArray()
  3.  
    result=pd.concat([df,enc_fe],axis=1)

獨熱碼,在英文文獻中稱作one-hot,又稱獨熱編碼,一位有效編碼,直觀來說有多少個狀態就有多少比特,而且只有一個比特為1,其他都為0的一種碼制。特征取值較多的時候,映射到歐式空間表現為維度特別高。某一維中只有一位為1,其他位都是0.

使用獨熱編碼,將離散特征的取值擴展到了歐式空間,離散特征的某個取值就對應歐式空間的某個點。將離散特征使用one-hot編碼,會讓特征之間的距離計算更加合理。

11、為什么隨機森林能降低方差?

隨機森林的預測輸出值是多棵決策樹的均值,如果有n個獨立同分布的隨機變量xi,它們的方差都為sigma^2,則它們的均值為:

,取多個模型輸出結果的均值的方差降低為原來的n分之一。

12、GBDT的核心思想?

用加法模擬,更准確的說,是多棵決策樹來擬合一個目標函數。每一棵決策樹擬合的是之前迭代得到的模型的殘差。求解時,對目標函數使用一階泰勒展開,用梯度下降法訓練決策樹。

13、XGBoost的核心思想?

在GBDT的基礎上,目標函數增加了正則化項,並且在求解時做了二階泰勒展開。

14、PCA(主成分分析)優化的目標是什么?

最小化重構誤差/最大化投影后的方差


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM