1. 程式人生 > >數據挖掘筆試面試(7)

數據挖掘筆試面試(7)

tails 優缺點 oos learning 的區別 問題 tracking 同時 感知器

【校招面經】機器學習與數據挖掘常見面試題整理 part2

2018年07月25日 12:36:40 稻蛙 閱讀數:150

三十、隨機森林如何評估特征重要性

衡量變量重要性的方法有兩種,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足夠重要,那麽改變它會極大的增加測試誤差;反之,如果改變它測試誤差沒有增大,則說明該變量不是那麽的重要

三十一、常見的損失函數

對於給定的輸入X,由f(X)給出相應的輸出Y,這個輸出的預測值f(X)與真實值Y可能一致也可能不一致(要知道,有時損失或誤差是不可避免的),用一個損失函數來度量預測錯誤的程度。損失函數記為L(Y, f(X))。 常用的損失函數有以下幾種(基本引用自《統計學習方法》):

技術分享圖片

技術分享圖片

如此,SVM有第二種理解,即最優化+損失最小,或如@夏粉_百度所說“可從損失函數和優化算法角度看SVM,boosting,LR等算法,可能會有不同收獲”。 關於SVM的更多理解請參考:支持向量機通俗導論(理解SVM的三層境界),鏈接:http://blog.csdn.net/v_july_v/article/details/7624837

三十二、什麽是OOB?隨機森林中OOB是如何計算的,它有什麽優缺點?

bagging方法中Bootstrap每次約有1/3的樣本不會出現在Bootstrap所采集的樣本集合中,當然也就沒有參加決策樹的建立,把這1/3的數據稱為袋外數據oob(out of bag),它可以用於取代測試集誤差估計方法。 袋外數據(oob)誤差的計算方法如下: 對於已經生成的隨機森林,用袋外數據測試其性能,假設袋外數據總數為O,用這O個袋外數據作為輸入,帶進之前已經生成的隨機森林分類器,分類器會給出O個數據相應的分類,因為這O條數據的類型是已知的,則用正確的分類與隨機森林分類器的結果進行比較,統計隨機森林分類器分類錯誤的數目,設為X,則袋外數據誤差大小=X/O;這已經經過證明是無偏估計的,所以在隨機森林算法中不需要再進行交叉驗證或者單獨的測試集來獲取測試集誤差的無偏估計。

三十三、什麽樣的模型對缺失值更敏感

技術分享圖片

三十四、生成模型與判別模型的區別是什麽

生成模型可以產生數據,判別模型只能根據數據做判斷。

常見的判別式模型有: Logistic regression(logistical 回歸) Linear discriminant analysis(線性判別分析) Supportvector machines(支持向量機) Boosting(集成學習) Conditional random fields(條件隨機場) Linear regression(線性回歸) Neural networks(神經網絡) 常見的生成式模型有: Gaussian mixture model and othertypes of mixture model(高斯混合及其他類型混合模型) Hidden Markov model(隱馬爾可夫) NaiveBayes(樸素貝葉斯) AODE(平均單依賴估計) Latent Dirichlet allocation(LDA主題模型) Restricted Boltzmann Machine(限制波茲曼機) 生成式模型是根據概率乘出結果,而判別式模型是給出輸入,計算出結果。

三十五、SMOTE過采樣算法

  JAIR‘2002的文章《SMOTE: Synthetic Minority Over-sampling Technique》提出了一種過采樣算法SMOTE。概括來說,本算法基於“插值”來為少數類合成新的樣本。下面介紹如何合成新的樣本。

設訓練集的一個少數類的樣本數為 T ,那麽SMOTE算法將為這個少數類合成 NT 個新樣本。這裏要求 N 必須是正整數,如果給定的 N<1 那麽算法將“認為”少數類的樣本數T=NT ,並將強制 N=1 。

考慮該少數類的一個樣本 i ,其特征向量為 xi,i∈{1,...,T} :

1. 首先從該少數類的全部 T 個樣本中找到樣本 xi 的 k 個近鄰(例如用歐氏距離),記為 xi(near),near∈{1,...,k} ;

2. 然後從這 k 個近鄰中隨機選擇一個樣本 xi(nn) ,再生成一個 0 到 1 之間的隨機數ζ1 ,從而合成一個新樣本 xi1 :

xi1=xi+ζ1⋅(xi(nn)−xi)

3. 將步驟2重復進行 N 次,從而可以合成 N 個新樣本:xinew,new∈1,...,N。

那麽,對全部的 T 個少數類樣本進行上述操作,便可為該少數類合成 NT 個新樣本。

技術分享圖片

如果樣本的特征維數是 2 維,那麽每個樣本都可以用二維平面上的一個點來表示。SMOTE算法所合成出的一個新樣本 xi1 相當於是表示樣本 xi 的點和表示樣本 xi(nn) 的點之間所連線段上的一個點。所以說該算法是基於“插值”來合成新樣本。

三十六、流形學習是什麽

流形學習(manifold learning)是機器學習、模式識別中的一種方法,在維數約簡方面具有廣泛的應用。它的主要思想是將高維的數據映射到低維,使該低維的數據能夠反映原高維數據的某些本質結構特征。流形學習的前提是有一種假設,即某些高維數據,實際是一種低維的流形結構嵌入在高維空間中。流形學習的目的是將其映射回低維空間中,揭示其本質。

以下圖為例[1],左邊是一個三維數據的分布,右邊是降低到二維後的結果。我們可以發現二維的數據更能直觀地表示其流形結構。

技術分享圖片

通過流形學習來實現降維的方法有很多,其基本思想也類似:假設數據在高維具有某種結構特征,希望降到低維後,仍能保持該結構。

比較常見的有

1. 局部改線嵌入(Local Linear Embedding, LLE)[1]

假設數據中每個點可以由其近鄰的幾個點重構出來。降到低維,使樣本仍能保持原來的重構關系,且重構系數也一樣。

2. 拉普拉斯特征映射(Laplacian Eigenmaps, LE)[2]

將數據映射到低維,且保持點之間的(相似度)距離關系。即在原空間中相距較遠的點,投影到低維空間中,希望它們之間仍相距較遠。反之亦然。

3. 局部保持投影(LPP)[3]

4. 等距映射(Isomap)[4]

等等。。。

浙江大學何曉飛老師有個關於流形學習的報告,有興趣可以看下。

http://www.cad.zju.edu.cn/reports/%C1%F7%D0%CE%D1%A7%CF%B0.pdf

[1] Roweis, Sam T and Saul, Lawrence K. Nonlinear dimensionality reduction by locally linear embedding. Science, 290(5500). 2000: 2323-2326.

[2] Belkin, Mikhail and Niyogi, Partha. Laplacian eigenmaps for dimensionality reduction and data representation. Neural computation. 15(6). 2003:1373-1396.

[3] He, Xiaofei and Niyogi, Partha. Locality preserving projections. NIPS. 2003:234-241.

[4] Tenenbaum, Joshua B and De Silva, Vin and Langford, John C. A global geometric framework for nonlinear dimensionality reduction. Science, 290(5500). 2000: 2319-2323.

三十七、深度學習SparseAutoEncoder

AutoEncoder:AutoEncoder的結構與神經網絡的隱含層相同,由輸入L1,輸出 L2組成,中間則是權重連接。Autoencoder通過L2得到輸入的重構L3,最小化L3與L1的差別 進行訓練得到權重。在這樣的權重參數下,得到的L2可以盡可能的保存L1的信息。 Autoencoder的輸出L2的維度由輸出的神經元個數決定。當輸出維度大於L1時,則需要在訓練目標函數中加入sparse 懲罰項,避免L2直接復制L1(權重全為1)。所以稱為sparseAutoencoder( Andrew Ng提出的)。

三十八、線性分類器最佳準則

線性分類器有三大類:感知器準則函數、SVM、Fisher準則。

1. 感知器準則函數:代價函數J=-(W*X+w0),分類的準則是最小化代價函數。感知器是神經網絡(NN)的基礎,網上有很多介紹。

2. SVM:支持向量機也是很經典的算法,優化目標是最大化間隔(margin),又稱最大間隔分類器,是一種典型的線性分類器。(使用核函數可解決非線性問題)

3. Fisher準則:更廣泛的稱呼是線性判別分析(LDA),將所有樣本投影到一條遠點出發的直線,使得同類樣本距離盡可能小,不同類樣本距離盡可能大,具體為最大化“廣義瑞利商”。

三十九、數據清理中,處理缺失值的方法是

由於調查、編碼和錄入誤差,數據中可能存在一些無效值和缺失值,需要給予適當的處理。常用的處理方法有:估算,整例刪除,變量刪除和成對刪除。

1. 估算(estimation)。最簡單的辦法就是用某個變量的樣本均值、中位數或眾數代替無效值和缺失值。這種辦法簡單,但沒有充分考慮數據中已有的信息,誤差可能較大。另一種辦法就是根據調查對象對其他問題的答案,通過變量之間的相關分析或邏輯推論進行估計。例如,某一產品的擁有情況可能與家庭收入有關,可以根據調查對象的家庭收入推算擁有這一產品的可能性。

2. 整例刪除(casewise deletion)是剔除含有缺失值的樣本。由於很多問卷都可能存在缺失值,這種做法的結果可能導致有效樣本量大大減少,無法充分利用已經收集到的數據。因此,只適合關鍵變量缺失,或者含有無效值或缺失值的樣本比重很小的情況。

3. 變量刪除(variable deletion)。如果某一變量的無效值和缺失值很多,而且該變量對於所研究的問題不是特別重要,則可以考慮將該變量刪除。這種做法減少了供分析用的變量數目,但沒有改變樣本量。

4. 成對刪除(pairwise deletion)是用一個特殊碼(通常是9、99、999等)代表無效值和缺失值,同時保留數據集中的全部變量和樣本。但是,在具體計算時只采用有完整答案的樣本,因而不同的分析因涉及的變量不同,其有效樣本量也會有所不同。這是一種保守的處理方法,最大限度地保留了數據集中的可用信息。

采用不同的處理方法可能對分析結果產生影響,尤其是當缺失值的出現並非隨機且變量之間明顯相關時。因此,在調查中應當盡量避免出現無效值和缺失值,保證數據的完整性。

四十、神經網絡之損失函數

來源:https://blog.csdn.net/xmdxcsj/article/details/50210451

1. quadratic+sigmoid (平方損失函數)

2. cross entropy + sigmoid (交叉熵損失函數)

3. softmax + log-likelihood

一、quadratic+sigmoid (平方損失函數)

(1)定義

平方和損失函數定義 C=0.5*(y−a)^2,其中y是期望輸出,a是實際輸出。

(2)收斂特性

不幸的是,使用平方和作為損失函數的神經單元不具備這種性質,即當誤差越大的時候,收斂(學習)速度應該越快。你可以按照下面的列子驗證一下。

z=wx+b a=δ(z)

  • 1
  • 2

根據鏈式法則,求C對於w的偏導數

∂C/∂w=(δ(z)−y)δ′(z)x ∂C/∂b=(δ(z)−y)δ′(z)

  • 1
  • 2

如果激活函數使用的是sigmoid函數的話,根據激活函數的形狀和特性可知,當δ(z)趨近於0或者趨近於1的時候,δ′(z)會趨近於0,當δ(z)趨近於0.5的時候,δ′(z)會最大。

比如說,取y=0,當δ(z)=1的時候,期望值和實際值的誤差δ(z)−y達到最大,此時,δ′(z)會趨近於0,所以就會發生收斂速度慢的問題。

二、cross entropy + sigmoid (交叉熵損失函數)

(1)定義

為了解決當誤差大時,收斂速度大的問題,引入交叉熵損失函數。

C=−(ylna+(1−y)ln(1−a))

  • 1

(2)特點

要想成為loss function,需要滿足兩點要求:

1. 非負性

2. 預測值和期望值接近時,函數值趨於0

顯然,quadratic cost function滿足以上兩點。cross entropy同樣也滿足以上兩點,所以其可以成為一個合格的cost function。

(3)收斂特性

z=wx+b a=δ(z)

  • 1
  • 2

依舊根據鏈式法則,可以求得對應的偏導數

∂C/∂w={(δ(z)−y)/δ(z)((1−δ(z))}δ′(z)x

  • 1

對於sigmoid函數,有δ′(z)=δ(z)(1−δ(z))對上式子進行替換和約分有∂C/∂w=(δ(z)−y)x

∂C/∂b同理,∂C/∂b=(δ(z)−y)x。

可以看到梯度(∂C/∂w)正比與誤差(δ(z)−y),滿足我們最初的目標!

(4)含義

交叉熵是用來衡量兩個概率分布之間的差異。交叉熵越大即信息量越大,兩個分布之間的差異越大,越對實驗結果感到意外,反之,交叉熵越小,兩個分布越相似,越符合預期。如拋擲兩枚硬幣,如果確定出現某一面其信息量不大,而正反面都是以1/2的概率出現,這個時候信息熵最大。下面以離散分布為例討論。

q(x)表示估計x的概率分布,p(x)表示真實x的概率分布,交叉熵定義如下:

H(p(x),q(x))=H(p(x))+D(p(x)||q(x))

  • 1

其中,H(p(x))表示p(x)的熵,定義如下:

H(p(x))=−∑p(x)logp(x)

  • 1

D(p(x)||q(x))表示p(x)和q(x)的KL距離(Kullback-Leibler divergence),也叫作相對熵,定義如下:

D(p(x)||q(x))=∑p(x)log(p(x)/q(x))

  • 1

由H(p(x))和D(p(x)||q(x))可得H(p,q)=−∑p(x)logq(x)

對於神經網絡的二值輸出(0或者1),假設神經網絡輸出a表示是輸出1的概率(此時對應的y=1),那麽1−a表示輸出0的概率(此時對應的1−y=0),所以交叉熵可以定義成如下形式:

C=−(ylna+(1−y)ln(1−a))

三、softmax + log-likelihood

(1)softmax多分類器定義

zj=∑wx+b aj=ej/∑ek (原來此處是sigmoid函數)

  • 1
  • 2

(2)loss的計算公式

C=−lnay

  • 1

ay表示類別y對應的預測概率,如果預測好的話,ay會趨近於1,C會趨近於0,反之,ay趨近於0,C趨近於極大。

(3)梯度計算

∂C/∂w=(a−1)∗x ∂C/∂b=a−1

  • 1
  • 2

當aj預測不好時,誤差會很大,收斂會變快。

四、結論

(一)sigmoid

在激活函數使用sigmoid的前提之下,相比於quadratic cost function, cross entropy cost function具有收斂速度快和更容易獲得全局最優(至於為什麽更容易獲得全局最優,個人感覺有點類似於動量的物理意義,增加收斂的步長,加快收斂的速度,更容易跳過局部最優)的特點。

因為我們一般使用隨機值來初始化權重,這就可能導致一部分期望值和預測值相差甚遠。所以選擇sigmoid作為激活函數的時候,推薦使用cross entropy。如果激活函數不是sigmoid,quadratic cost function就不會存在收斂速度慢的問題。

(二)softmax

對於分類問題,如果希望輸出是類別的概率,那麽激活函數選擇使用softmax,同時使用log-likelihood作為損失函數。

數據挖掘筆試面試(7)