1. 程式人生 > >邏輯迴歸面試題

邏輯迴歸面試題

Q1:邏輯迴歸的損失函式,為什麼要用這個損失函式

邏輯迴歸的損失函式是它的極大似然函式。損失函式一般有四種,平方損失函式,對數損失函式,HingeLoss0-1損失函式,絕對值損失函式。將極大似然函式取對數以後等同於對數損失函式。在邏輯迴歸這個模型下,對數損失函式的訓練求解引數的速度是比較快的。

Q2:為什麼不選平方損失函式的呢?

其一是因為如果你使用平方損失函式,你會發現梯度更新的速度和sigmod函式本身的梯度是很相關的。sigmod函式在它在定義域內的梯度都不大於0.25。這樣訓練會非常的慢。

Q3:邏輯迴歸的求解方法

由於該極大似然函式無法直接求解,我們一般通過對該函式進行梯度下降來不斷逼急最優解。在這個地方其實會有個加分的項,考察你對其他優化方法的瞭解。因為就梯度下降本身來看的話就有隨機梯度下降,批梯度下降,small batch 梯度下降三種方式,面試官可能會問這三種方式的優劣以及如何選擇最合適的梯度下降方式。

  • 簡單來說 批梯度下降會獲得全域性最優解,缺點是在更新每個引數的時候需要遍歷所有的資料,計算量會很大,並且會有很多的冗餘計算,導致的結果是當資料量大的時候,每個引數的更新都會很慢。
  • 隨機梯度下降是以高方差頻繁更新,優點是使得sgd會跳到新的和潛在更好的區域性最優解,缺點是使得收斂到區域性最優解的過程更加的複雜。
  • 小批量梯度下降結合了sgd和batch gd的優點,每次更新的時候使用n個樣本。減少了引數更新的次數,可以達到更加穩定收斂結果,一般在深度學習當中我們採用這種方法。

Q4:邏輯迴歸的目的 ?邏輯迴歸如何分類?

該函式的目的便是將資料二分類,提高準確率。

邏輯迴歸作為一個迴歸(也就是y值是連續的),如何應用到分類上去呢。y值確實是一個連續的變數。邏輯迴歸的做法是劃定一個閾值,y值大於這個閾值的是一類,y值小於這個閾值的是另外一類。閾值具體如何調整根據實際情況選擇。一般會選擇0.5做為閾值來劃分。

Q5: 介紹一下邏輯迴歸演算法

邏輯迴歸假設資料服從伯努利分佈,通過極大化似然函式的方法,運用梯度下降來求解引數,來達到將資料二分類的目的。

Q6:邏輯迴歸在訓練的過程當中,如果有很多的特徵高度相關或者說有一個特徵重複了100遍,會造成怎樣的影響?

  • 先說結論,如果在損失函式最終收斂的情況下,其實就算有很多特徵高度相關也不會影響分類器的效果。
  • 但是對特徵本身來說的話,假設只有一個特徵,在不考慮取樣的情況下,你現在將它重複100遍。訓練以後完以後,資料還是這麼多,但是這個特徵本身重複了100遍,實質上將原來的特徵分成了100份,每一個特徵都是原來特徵權重值的百分之一。
  • 如果在隨機取樣的情況下,其實訓練收斂完以後,還是可以認為這100個特徵和原來那一個特徵扮演的效果一樣,只是可能中間很多特徵的值正負相消了。

Q7為什麼我們還是會在訓練的過程當中將高度相關的特徵去掉?

  • 去掉高度相關的特徵會讓模型的可解釋性更好
  • 可以大大提高訓練的速度。如果模型當中有很多特徵高度相關的話,就算損失函式本身收斂了,但實際上引數是沒有收斂的,這樣會拉低訓練的速度。其次是特徵多了,本身就會增大訓練的時間。

Q8:邏輯迴歸的優缺點總結

優點

  • 形式簡單,模型的可解釋性非常好。從特徵的權重可以看到不同的特徵對最後結果的影響,某個特徵的權重值比較高,那麼這個特徵最後對結果的影響會比較大。
  • 模型效果不錯。在工程上是可以接受的(作為baseline),如果特徵工程做的好,效果不會太差,並且特徵工程可以大家並行開發,大大加快開發的速度。
  • 訓練速度較快。分類的時候,計算量僅僅只和特徵的數目相關。並且邏輯迴歸的分散式優化sgd發展比較成熟,訓練的速度可以通過堆機器進一步提高,這樣我們可以在短時間內迭代好幾個版本的模型。
  • 資源佔用小,尤其是記憶體。因為只需要儲存各個維度的特徵值,。
  • 方便輸出結果調整。邏輯迴歸可以很方便的得到最後的分類結果,因為輸出的是每個樣本的概率分數,我們可以很容易的對這些概率分數進行cutoff,也就是劃分閾值(大於某個閾值的是一類,小於某個閾值的是一類)。

缺點:

  • 準確率並不是很高。因為形式非常的簡單(非常類似線性模型),很難去擬合數據的真實分佈。
  • 很難處理資料不平衡的問題。舉個例子:如果我們對於一個正負樣本非常不平衡的問題比如正負樣本比 10000:1.我們把所有樣本都預測為正也能使損失函式的值比較小。但是作為一個分類器,它對正負樣本的區分能力不會很好。
  • 處理非線性資料較麻煩。邏輯迴歸在不引入其他方法的情況下,只能處理線性可分的資料,或者進一步說,處理二分類的問題 。
  • 邏輯迴歸本身無法篩選特徵。有時候,我們會用gbdt來篩選特徵,然後再上邏輯迴歸。

面試問題