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

来源: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:

103.優化Kmeans。

使用Kd樹或者Ball Tree 。

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

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

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

105.解釋對偶的概念。

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

106.如何進行特徵選擇?

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

常見的特徵選擇方式:

107.資料預處理。

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/

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