邏輯回歸算法面經


邏輯迴歸算法面經

邏輯迴歸是個看似簡單又在面試中常常被問到的機器學習算法,雖然表面上看起來很簡單,容易掌握,但真正問到細節時卡住,在某些點上還是容易卡住的。

所以,給大家的建議是在面試時,如果面試官讓你說一個自己最精通的機器學習算法,那麼建議大家不要直接說自己精通邏輯迴歸,因為十分容易被問到,從而減分。

邏輯迴歸算法面經

推薦大家將 SVM 算法作為自己的第一個算法去講解,因為 SVM 沒有那麼多小細節,只要掌握了就不容易掉坑裡。下面總結一下面試中邏輯迴歸的常見考點。


1、簡單介紹一下算法

邏輯迴歸是在數據服從伯努利分佈的假設下,通過極大似然的方法,運用梯度下降法來求解參數,從而達到將數據二分類的目的。


2、邏輯迴歸目的

將數據進行二分類


3、邏輯迴歸是如何做分類的

邏輯迴歸作為一個迴歸函數,如何用於分類問題。 邏輯迴歸中,對於每個 x,其條件概率 y 的確是一個連續的變量。而邏輯迴歸中可以設定一個閾值,y 值大於這個閾值的是一類,y 值小於這個閾值的是另外一類。至於閾值的選擇,通常是根據實際情況來確定,一般情況下選取 0.5 作為閾值來劃分。


4、假設條件

(1)數據服從伯努利分佈。 一個簡單的伯努利分佈的例子就是拋硬幣,假設硬幣被拋出正面的概論為 p,被拋出負面的概論為 1-p,則這些硬幣拋出的正負兩面所代表的隨機變量即服從伯努利分佈。

(2)假設樣本為正的概論 p 為一個 Sigmoid 函數。 為什麼要使用 Sigmoid 函數,事實上,設計一個分類模型,首先需要給它設定一個學習目標,即通過優化一個損失函數來求解參數。那麼,在邏輯迴歸中,這個目標就是最大化似然度。

考慮一個二值分類問題,訓練數據是一堆(特徵,標記)組合,(x1, y1),(x2, y2),... 其中 x 是特徵向量,y 是類標記(y = 1 表示正類,y = 0 表示反類)。

LR 首先定義一個條件概率 p(y | x; w)。p(y | x; w) 表示給定特徵 x ,類標記 y 的概率分佈,其中 w 是 LR 的模型參數(一個超平面)。有了這個條件概率,就可以在訓練數據上定義一個似然函數,然後通過最大似然來學習 w,這是 LR 模型的基本原理。

那麼如何定義這個條件概率呢,我們知道,對於大多數線性分類器,response value(響應值)

(w 和 x 的內積) 代表了數據 x 屬於正類(y = 1)的 confidence(置信度)。

越大,這個數據屬於正類的可能性越大; 越小,屬於反類的可能性越大。

在整個實數範圍內取值。現在我們需要用一個函數把 從實數空間映射到條件概率 p(y = 1 | x, w) 上,並且希望 越大,p(y = 1 | x, w) 越大; 越小,p(y = 1 | x, w) 越小,而 Sigmoid 函數恰好能實現這一功能:首先,它的值域是 (0,1),滿足概率的要求;其次,它是一個單調上升函數。最終,p(y = 1 | x, w) = Sigmoid()。


5、邏輯迴歸損失函數

邏輯迴歸的損失函數是其極大似然函數。


6、邏輯迴歸中參數求解方法

極大似然函數無法直接求解,一般是通過對該函數進行梯度下降來不斷逼近其最優解。這裡需要注意的點是要對梯度下降有一定的瞭解,就梯度下降本身來看的話就有隨機梯度下降,批梯度下降,small batch 梯度下降三種方式,面試官可能會問這三種方式的優劣以及如何選擇最合適的梯度下降方式。

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


7、邏輯迴歸中為什麼使用對數損失而不用平方損失

對於邏輯迴歸,這裡所說的對數損失和極大似然是相同的。 不使用平方損失的原因是,在使用 Sigmoid 函數作為正樣本的概率時,同時將平方損失作為損失函數,這時所構造出來的損失函數是非凸的,不容易求解,容易得到其局部最優解。 而如果使用極大似然,其目標函數就是對數似然函數,該損失函數是關於未知參數的高階連續可導的凸函數,便於求其全局最優解。


8、邏輯迴歸的優缺點

優點:

  • 形式簡單,模型的可解釋性非常好。從特徵的權重可以看到不同的特徵對最後結果的影響,某個特徵的權重值比較高,那麼這個特徵最後對結果的影響會比較大。
  • 模型效果不錯。在工程上是可以接受的(作為 baseline),如果特徵工程做的好,效果不會太差,並且特徵工程可以並行開發,大大加快開發的速度。
  • 訓練速度較快。分類的時候,計算量僅僅只和特徵的數目相關。並且邏輯迴歸的分佈式優化 SGD 發展比較成熟。
  • 方便調整輸出結果,通過調整閾值的方式。


缺點:

  • 準確率欠佳。因為形式非常的簡單,而現實中的數據非常複雜,因此,很難達到很高的準確性。
  • 很難處理數據不平衡的問題。舉個例子:如果我們對於一個正負樣本非常不平衡的問題比如正負樣本比 10000:1。我們把所有樣本都預測為正也能使損失函數的值比較小。但是作為一個分類器,它對正負樣本的區分能力不會很好。
  • 無法自動的進行特徵篩選。
  • 只能處理二分類問題。


9、LR 和線性迴歸的區別

損失函數:線性模型是平方損失函數,而邏輯迴歸則是似然函數。


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

如果在損失函數最終收斂的情況下,其實就算有很多特徵高度相關也不會影響分類器的效果。 但是對特徵本身來說的話,假設只有一個特徵,在不考慮採樣的情況下,你現在將它重複 N 遍。訓練以後完以後,數據還是這麼多,但是這個特徵本身重複了 N 遍,實質上將原來的特徵分成了 N 份,每一個特徵都是原來特徵權重值的百分之一。


11、為什麼還是會在訓練的過程當中將高度相關的特徵去掉

  1. 去掉高度相關的特徵會讓模型的可解釋性更好;
  2. 可以大大提高訓練的速度。


分享到:


相關文章: