福利網站!程序員面試——算法工程師面試大全第三部分

1.L1 和 L2 正則化的區別

L1 是模型各個參數的絕對值之和,L2 爲各個參數平方和的開方值.L1 更趨向於產生少量的特徵,其它特徵爲 0,最優的參數值很大概率出現在座標軸上,從而導致產生稀疏的權重矩陣,而 L2 會選擇更多的矩陣,但是這些矩陣趨向於 0.

 

2.Loss Function 有哪些,怎麼用?

平方損失(預測問題),交叉熵(分類問題),hinge 損失(SVM 支持向量機),CART 迴歸樹的殘差損失

 

聚類:

3.什麼是 DBSCAN

DBSCAN 是一種基於密度的空間聚類算法,它不需要定義簇的個數,而是將具有足夠高密度的 區域劃分爲簇,並在有噪聲的數據中發現任意形狀的簇,在此算法中將簇定義爲密度相連的點的 最大集合.

 

4.k-means 算法流程

從數據集中隨機選擇 k 個聚類樣本作爲初始的聚類中心,然後計算數據集中每個樣本到這 k 個聚類中心的距離,並將此樣本分到距離最小的聚類中心所對應的類中.將所有樣本歸類後,對於 每個類別重新計算每個類別的聚類中心即每個類中所有樣本的質心,重複以上操作直到聚類中心不變爲止.

 

5.LDA 的原理

LDA 是一種基於有監督學習的降維方式,將數據集在低維度的空間進行投影,要使得投影后的同類別的數據點間的距離儘可能的靠近,而不同類別間的數據點的距離儘可能的遠.

 

6.協同過濾的 itemCF,userCF 區別適用場景

Item CF 和 User CF 兩個方法都能很好的給出推薦,並可以達到不錯的效果.但是他們之 間還是有不同之處的,而且適用性也有區別.下面進行一下對比

計算複雜度:

Item CF 和 User CF 是基於協同過濾推薦的兩個最基本的算法,User CF 是很早以前就提 出來了,Item CF 是從 Amazon 的論文和專利發表之後(2001 年左右)開始流行,大家都覺得 Item CF從性能和複雜度上比 User CF 更優,其中的一個主要原因就是對於一個在線網站,用戶的數量往往大大超過物品的數量,同時物品的數據相對穩定,因此計算物品的相似度不但計算量較小,同時也不必頻繁更新.但我們往往忽略了這種情況只適應於提供商品的電子商務網站, 對於新聞,博客或者微內容的推薦系統,情況往往是相反的,物品的數量是海量的,同時也是更新頻繁的,所以單從複雜度的角度,這兩個算法在不同的系統中各有優勢,推薦引擎的設計者需要根據自己應用的特點選擇更加合適的算法.

適用場景:

在非社交網絡的網站中,內容內在的聯繫是很重要的推薦原則,它比基於相似用戶的推薦原則更加有效.比如在購書網站上,當你看一本書的時候,推薦引擎會給你推薦相關的書籍,這個推薦的重要性遠遠超過了網站首頁對該用戶的綜合推薦.可以看到,在這種情況下,Item CF 的 推薦成爲了引導用戶瀏覽的重要手段.同時 Item CF 便於爲推薦做出解釋,在一個非社交網絡的網站中,給某個用戶推薦一本書,同時給出的解釋是某某和你有相似興趣的人也看了這本書, 這很難讓用戶信服,因爲用戶可能根本不認識那個人;但如果解釋說是因爲這本書和你以前看的某本書相似,用戶可能就覺得合理而採納了此推薦.

相反的,在現今很流行的社交網絡站點中,User CF 是一個更不錯的選擇,User CF 加上社會網絡信息,可以增加用戶對推薦解釋的信服程度.

 

7.協同過濾中的算法怎麼細分

協同過濾算法通過對用戶歷史行爲數據挖掘發現用戶的偏好,基於不同的偏好對用戶進行羣組劃分並推薦相似的商品.協同過的算法分爲兩類分爲基於用戶的協同過濾算法和基於物品的協 同過濾的算法.基於用戶的協同過濾是基於用戶對物品的偏好找到相鄰鄰居用戶然後將鄰居用戶喜歡的推薦給當前的用戶.基於物品的協同過濾是計算鄰居時採用物品本身,基於用戶對物品的偏好找到相似的物品,然後根據用戶的歷史偏好推薦相似的物品給他.

 

8.FM 公式

 

9.bagging 和 boosting 的區別

Bagging 是從訓練集中進行子抽樣組成每個基模型所需要的子訓練集,然後對所有基模型預 測的結果進行綜合操作產生最終的預測結果.

Boosting 中基模型按次序進行訓練,而基模型的訓練集按照某種策略每次都進行一定的轉化,最後以一定的方式將基分類器組合成一個強分類器.

Bagging 的訓練集是在原始集中有放回的選取,而 Boosting 每輪的訓練集不變,只是訓練集 中的每個樣本在分類器中的權重都會發生變化,此權值會根據上一輪的結果進行調整.

Bagging 的各個預測函數可以並行生成,Boosting 的各預測函數只能順序生成.

Bagging 中整體模型的期望近似於基模型的期望,所以整體模型的偏差相似於基模型的偏差, 因此 Bagging 中的基模型爲強模型(強模型擁有低偏差高方差).

Boosting 中的基模型爲弱模型,若不是弱模型會導致整體模型的方差很大.

 

10.XGBOOST 和 GDBT 的區別

GDBT 在函數空間中利用梯度下降法進行優化而 XGB 在函數空間中使用了牛頓法進行優化. 即 GDBT 在優化中使用了一階導數信息,而 XGB 對損失函數進行了二階泰勒展開,用到了一階和二 階倒數信息.XGB 在損失函數中加入了正則項(樹葉子節點個數,每個葉子節點上輸出 score 的 L2 模平方和.對於缺失的樣本,XGB 可以自動學習出它的分裂方向.GDBT 的節點分裂方式使用的是 gini 係數,XGB 通過優化推導出分裂前後的增益來選擇分裂節點.XGB 在處理每個特徵列時可以做到並行。

 

11.GDBT 的原理,以及常用的調參參數、

先用一個初始值去學習一棵樹,然後在葉子處得到預測值以及預測後的殘差,之後的樹則基於之前樹的殘差不斷的擬合得到,從而訓練出一系列的樹作爲模型.

n_estimators 基學習器的最大迭代次數,learning_rate 學習率,max_lead_nodes 最大葉子節點數,max_depth 樹的最大深度,min_samples_leaf 葉子節點上最少樣本數.

 

12.stacking 和 blending 的區別?

Stacking和blending的區別在於數據的劃分,blending用不相交的數據訓練不同的基模型, 並將其輸出取加權平均.而 stacking 是將數據集劃分爲兩個不相交的集合,在第一個集合的數據集中訓練多個模型,在第二個數據集中測試這些模型,將預測結果作爲輸入,將正確的標籤作爲輸 出,再訓練一個高層的模型.

 

13.AdaBoost 和 GBDT 的區別

AdaBoost 通過調整錯分的數據點的權重來改進模型,而 GBDT 是從負梯度的方向去擬合改進 模型.AdaBoost 改變了訓練數據的權值,即樣本的概率分佈,減少上一輪被正確分類的樣本權值, 提高被錯誤分類的樣本權值,而隨機森林在訓練每棵樹的時候,隨機挑選部分訓練集進行訓練.在 對新數據進行預測時,AdaBoost 中所有樹加權投票進行預測,每棵樹的權重和錯誤率有關,而隨機森林對所有樹的結果按照少數服從多數的原則進行預測。

 

14.隨機森林和 GBDT 的區別

1)隨機森林採用的 bagging 思想,而 GBDT 採用的 boosting 思想.這兩種方法都是 Bootstrap 思想的應用,Bootstrap 是一種有放回的抽樣方法思想.雖然都是有放回的抽樣,但二者的區別 在於:Bagging 採用有放回的均勻取樣,而 Boosting 根據錯誤率來取樣(Boosting 初始化時對 每一個訓練樣例賦相等的權重 1/n,然後用該算法對訓練集訓練 t輪,每次訓練後,對訓練失敗的樣例賦以較大的權重),因此 Boosting 的分類精度要優於 Bagging.Bagging 的訓練集的選擇是隨機的,各訓練集之間相互獨立,弱分類器可並行,而 Boosting 的訓練集的選擇與前一輪 的學習結果有關,是串行的.

2)組成隨機森林的樹可以是分類樹,也可以是迴歸樹;而 GBDT 只能由迴歸樹組成.3)組成隨機森林的樹可以並行生成;而 GBDT 只能是串行生成.4)對於最 終的輸出結果而言,隨機森林採用多數投票等;而 GBDT 則是將所有結果累加起來,或者加權累 加起來.5)隨機森林對異常值不敏感;GBDT 對異常值非常敏感.6)隨機森林對訓練集一視同仁;GBDT 是基於權值的弱分類器的集成.7)隨機森林是通過減少模型方差提高性能;GBDT 是通過減少模型偏差提高性能.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章