機器學習面試200題!(101-120)

數據分析那些事
11 min readFeb 24, 2021

来源:CSDN

本篇是機器學習面試200題第六篇,由於篇幅太長,本篇介紹101–120題~

感興趣的話請持續關注唷XD

系列篇1指路

系列篇2指路

系列篇3指路

系列篇4指路

系列篇5指路

101.隨機森林如何處理缺失值。

方法一(na.roughfix)

簡單粗暴,對於訓練集,同一個class下的資料,如果是分類變數缺失,用眾數補上,如果是連續型變數缺失,用中位數補。

方法二(rfImpute)

這個方法計算量大,至於比方法一好壞?不好判斷。先用na.roughfix補上缺失值,然後構建森林並計算proximity matrix,再回頭看缺失值,如果是分類變數,則用沒有陣進行加權平均的方法補缺失值。然後迭代4–6次,這個補缺失值的思想和KNN有些類似1缺失的觀測例項的proximity中的權重進行投票。如果是連續型變數,則用proximity矩2。

102.隨機森林如何評估特徵重要性。

衡量變數重要性的方法有兩種,Decrease GINI 和 Decrease Accuracy:

  1. Decrease GINI:對於迴歸問題,直接使用argmax(VarVarLeftVarRight)作為評判標準,即當前節點訓練集的方差Var減去左節點的方差VarLeft和右節點的方差VarRight。
  2. Decrease Accuracy:對於一棵樹Tb(x),我們用OOB樣本可以得到測試誤差1;然後隨機改變OOB樣本的第j列:保持其他列不變,對第j列進行隨機的上下置換,得到誤差2。至此,我們可以用誤差1-誤差2來刻畫變數j的重要性。基本思想就是,如果一個變數j足夠重要,那麼改變它會極大的增加測試誤差;反之,如果改變它測試誤差沒有增大,則說明該變數不是那麼的重要。

103.優化Kmeans。

使用Kd樹或者Ball Tree 。

將所有的觀測例項構建成一顆kd樹,之前每個聚類中心都是需要和每個觀測點做依次距離計算,現在這些聚類中心根據kd樹只需要計算附近的一個區域性區域即可。

104.KMeans初始類簇中心點的選取。

K-means++演算法選擇初始seeds的基本思想就是:初始的聚類中心之間的相互距離要儘可能的遠。

  1. 從輸入的資料點集合中隨機選擇一個點作為第一個聚類中心
  2. 對於資料集中的每一個點x,計算它與最近聚類中心(指已選擇的聚類中心)的距離D(x)
  3. 選擇一個新的資料點作為新的聚類中心,選擇的原則是:D(x)較大的點,被選取作為聚類中心的概率較大
  4. 重複2和3直到k個聚類中心被選出來
  5. 利用這k個初始的聚類中心來執行標準的k-means演算法

105.解釋對偶的概念。

一個優化問題可以從兩個角度進行考察,一個是primal 問題,一個是dual 問題,就是對偶問題,一般情況下對偶問題給出主問題最優值的下界,在強對偶性成立的情況下由對偶問題可以得到主問題的最優下界,對偶問題是凸優化問題,可以進行較好的求解,SVM中就是將Primal問題轉換為dual問題進行求解,從而進一步引入核函式的思想。

106.如何進行特徵選擇?

特徵選擇是一個重要的資料預處理過程,主要有兩個原因:一是減少特徵數量、降維,使模型泛化能力更強,減少過擬合; 二是增強對特徵和特徵值之間的理解。

常見的特徵選擇方式:

  1. 去除方差較小的特徵。
  2. 正則化。1正則化能夠生成稀疏的模型。L2正則化的表現更加穩定,由於有用的特徵往往對應係數非零。
  3. 隨機森林,對於分類問題,通常採用基尼不純度或者資訊增益,對於迴歸問題,通常採用的是方差或者最小二乘擬合。一般不需要feature engineering、調參等繁瑣的步驟。它的兩個主要問題,1是重要的特徵有可能得分很低(關聯特徵問題),2是這種方法對特徵變數類別多的特徵越有利(偏向問題)。
  4. 穩定性選擇。是一種基於二次抽樣和選擇演算法相結合較新的方法,選擇演算法可以是迴歸、SVM或其他類似的方法。它的主要思想是在不同的資料子集和特徵子集上執行特徵選擇演算法,不斷的重複,最終彙總特徵選擇結果,比如可以統計某個特徵被認為是重要特徵的頻率(被選為重要特徵的次數除以它所在的子集被測試的次數)。理想情況下,重要特徵的得分會接近100%。稍微弱一點的特徵得分會是非0的數,而最無用的特徵得分將會接近於0。

107.資料預處理。

  1. 缺失值,填充缺失值fillna:

i. 離散:None,
ii. 連續:均值。
iii. 缺失值太多,則直接去除該列

2. 連續值:離散化。有的模型(如決策樹)需要離散值

3. 對定量特徵二值化。核心在於設定一個閾值,大於閾值的賦值為1,小於等於閾值的賦值為0。如影象操作

4. 皮爾遜相關係數,去除高度相關的列

108.簡單說說特徵工程。

109.你知道有哪些資料處理和特徵工程的處理?

110.請對比下Sigmoid、Tanh、ReLu這三個啟用函式?

111.Sigmoid、Tanh、ReLu這三個啟用函式有什麼缺點或不足,有沒改進的啟用函式?

@我愛大泡泡,來源:

面試筆試整理3:深度學習機器學習面試問題準備(必會)
http://blog.csdn.net/woaidapaopao/article/details/77806273

112.怎麼理解決策樹、xgboost能處理缺失值?而有的模型(svm)對缺失值比較敏感?

知乎解答
https://www.zhihu.com/question/58230411

113.為什麼引入非線性激勵函式?

@Begin Again,來源:

知乎解答
https://www.zhihu.com/question/29021768

如果不用激勵函式(其實相當於激勵函式是f(x) = x),在這種情況下你每一層輸出都是上層輸入的線性函式,很容易驗證,無論你神經網路有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,這種情況就是最原始的感知機(Perceptron)了。

正因為上面的原因,我們決定引入非線性函式作為激勵函式,這樣深層神經網路就有意義了(不再是輸入的線性組合,可以逼近任意函式)。最早的想法是Sigmoid函式或者Tanh函式,輸出有界,很容易充當下一層輸入(以及一些人的生物解釋)。

114.請問人工神經網路中為什麼ReLu要好過於Tanh和Sigmoid function?

@Begin Again,來源:

知乎解答
https://www.zhihu.com/question/29021768

115.為什麼LSTM模型中既存在Sigmoid又存在Tanh兩種啟用函式?

本題解析來源:知乎解答
https://www.zhihu.com/question/46197687

@beanfrog:二者目的不一樣:sigmoid 用在了各種gate上,產生0~1之間的值,這個一般只有sigmoid最直接了。tanh 用在了狀態和輸出上,是對資料的處理,這個用其他啟用函式或許也可以。

@hhhh:另可參見A Critical Review of Recurrent Neural Networks for Sequence Learning的section4.1,說了那兩個tanh都可以替換成別的。

116.衡量分類器的好壞。

@我愛大泡泡,來源:

答案解析
http://blog.csdn.net/woaidapaopao/article/details/77806273

這裡首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四種(可以畫一個表格)。

幾種常用的指標:

精度precision = TP/(TP+FP) = TP/~P (~p為預測為真的數量)
召回率 recall = TP/(TP+FN) = TP/ P
F1值:2/F1 = 1/recall + 1/precision
ROC曲線:ROC空間是一個以偽陽性率(FPR,false positive rate)為X軸,真陽性率(TPR, true positive rate)為Y軸的二維座標系所代表的平面。其中真陽率TPR = TP / P = recall, 偽陽率FPR = FP / N

117.機器學習和統計裡面的auc的物理意義是什麼?

詳情參見機器學習和統計裡面的auc怎麼理解?
https://www.zhihu.com/question/39840928

128.觀察增益gain, alpha和gamma越大,增益越小?

@AntZ:XGBoost尋找分割點的標準是最大化gain. 考慮傳統的列舉每個特徵的所有可能分割點的貪心法效率太低,XGBoost實現了一種近似的演算法。大致的思想是根據百分位法列舉幾個可能成為分割點的候選者,然後從候選者中計算Gain按最大值找出最佳的分割點。它的計算公式分為四項, 可以由正則化項引數調整(lamda為葉子權重平方和的係數, gama為葉子數量):

第一項是假設分割的左孩子的權重分數, 第二項為右孩子, 第三項為不分割總體分數, 最後一項為引入一個節點的複雜度損失。

由公式可知, gama越大gain越小, lamda越大, gain可能小也可能大。

原問題是alpha而不是lambda, 這裡paper上沒有提到, XGBoost實現上有這個引數. 上面是我從paper上理解的答案,下面是搜尋到的:

如何對XGBoost模型進行引數調優
https://zhidao.baidu.com/question/2121727290086699747.html?fr=iks&word=xgboost%20lamda&ie=gbk

119.什麼造成梯度消失問題? 推導一下。

@許韓,來源:

神經網路的訓練中,通過改變神經元的權重,使網路的輸出值儘可能逼近標籤以降低誤差值,訓練普遍使用BP演算法,核心思想是,計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,進行權值的迭代。

梯度消失會造成權值更新緩慢,模型訓練難度增加。造成梯度消失的一個原因是,許多啟用函式將輸出值擠壓在很小的區間內,在啟用函式兩端較大範圍的定義域內梯度為0,造成學習停止。

120.什麼是梯度消失和梯度爆炸?

@寒小陽,反向傳播中鏈式法則帶來的連乘,如果有數很小趨於0,結果就會特別小(梯度消失);如果數都比較大,可能結果會很大(梯度爆炸)。

@單車

神經網路訓練中的梯度消失與梯度爆炸
https://zhuanlan.zhihu.com/p/25631496

關注數據君的臉書:

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!

數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

--

--

數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/