以前整理過一篇關於邏輯迴歸的帖子,可是隻是簡單介紹了一下了LR的基本思想,面試的時候基本用不上,那麼這篇帖子就深刻理解一下LR的一些知識,但願可以對面試有必定的幫助。git
介紹邏輯斯諦迴歸模型以前,首先看一個並不常見的機率分佈,即邏輯斯諦分佈。設X是連續隨機變量,X服從邏輯斯諦分佈是指X具備以下的累積分佈函數和機率密度函數:github
式中,μ爲位置參數,γ>0爲形狀參數。邏輯斯諦的分佈的密度函數f(x)和分佈函數F(x)的圖形以下圖所示。其中分佈函數屬於邏輯斯諦函數,其圖形爲一條S形曲線。該曲線以點(μ,1/2)
爲中心對稱,即知足:面試
曲線在中心附近增加較快,在兩端增加較慢,形狀參數γ的值越小,曲線在中心附近增加得越快。算法
線性迴歸的應用場合大可能是迴歸分析,通常不用在分類問題上,緣由能夠歸納爲如下兩個:
1)迴歸模型是連續型模型,即預測出的值都是連續值(實數值),非離散值;
2)預測結果受樣本噪聲的影響比較大。機器學習
LR模型的表達式爲參數化的邏輯斯諦函數,即:函數
一個事件發生的概率(odds)是指該事件發生的機率與該事件不發生的機率的比值。若是事件發生的機率是p,那麼該事件的概率爲p/(1-p) ,該事件的對數概率(log odds)或logit函數是:學習
對LR而言,根據模型表達式能夠獲得:3d
即在LR模型中,輸出y=1的對數概率是輸入x的線性函數,或者說y=1的對數概率是由輸入x的線性函數表示的模型,即LR模型。orm
除了從對數概率的角度理解LR以外,從函數映射也能夠理解LR模型。
考慮對輸入實例x進行分類的線性表達式θT,其值域爲實數域,經過LR模型的表達式能夠將線性函數θTx的結果映射到(0,1)區間,取值表示爲結果爲1的機率(在二分類場景中).
線性函數的值越接近於正無窮大,機率值就越近1;反之,其值越接近於負無窮,機率值就越接近於0,這樣的模型就是LR模型。
LR本質上仍是線性迴歸,只是特徵到結果的映射過程當中加了一層函數映射,即sigmoid函數,即先把特徵線性求和,而後使用sigmoid函數將線性和約束至(0,1)之間,結果值用語二分或迴歸預測。blog
LR模型多用於解決二分類問題,如廣告是否被點擊(是/否),商品是否被購買(是/否)等互聯網領域中常見的應用場景。但在實際場景中,咱們又不把它處理成絕對的分類,而是用其預測值做爲事件發生的機率。
這裏從事件,變量以及結果的角度給予解釋。
咱們所能拿到的訓練數據統稱爲觀測樣本。問題,樣本是如何生成的?
一個樣本能夠理解爲發生的一次事件,樣本生成的過程即事件發生的過程,對於0/1分類問題來說,產生的結果有兩種可能,符合伯努利試驗的機率假設。所以,咱們能夠說樣本的生成過程即爲伯努利試驗過程,產生的結果(0/1)服從伯努利分佈,那麼對於第i個樣本,機率公式表示以下:
將上面兩個公式合併在一塊兒,能夠獲得第i個樣本正確預測的機率:
上式是對一個樣本進行建模的數據表達。爲何能夠這麼作呢,由於y=1時後面一項爲1,y=0時前面一項爲1。那麼對於全部的樣本,假設每條樣本生成過程獨立,在整個樣本空間中(N個樣本)的機率分佈(即似然函數)爲:
接下來咱們就能夠經過極大似然估計方法求機率參數。
上圖所示即爲sigmoid函數,它的輸入範圍爲−∞→+∞,而值域恰好爲(0,1),正好知足機率分佈爲(0,1)的要求。用機率去描述分類器,天然要比閾值要來的方便。並且它是一個單調上升的函數,具備良好的連續性,不存在不連續點。
此外很是重要的,sigmoid函數求導後爲:
上一節的公式不只能夠理解爲在已觀測的樣本空間中的機率分佈表達式。若是從統計學的角度能夠理解爲參數θ
θ
似然性的函數表達式(即似然函數表達式)。就是利用已知的樣本分佈,找到最有可能(即最大機率)致使這種分佈的參數值;或者說什麼樣的參數才能使咱們觀測到目前這組數據的機率最大。參數在整個樣本空間的似然函數可表示爲:
爲了方便參數求解,對這個公式取對數,可得對數似然函數:
而後,咱們使用隨機梯度降低的方法,對參數進行更新:
最後,經過掃描樣本,迭代下述公式可救的參數:
式中,a表示學習率。
以上的推導,就是LR模型的核心部分,在機器學習相關的面試中,LR模型公式推導多是考察頻次最高的一個點,要將其熟練掌握。
1、預測結果是界於0和1之間的機率;
2、能夠適用於連續性和類別性自變量;
3、容易使用和解釋;
1、對模型中自變量多重共線性較爲敏感,例如兩個高度相關自變量同時放入模型,可能致使較弱的一個自變量回歸符號不符合預期,符號被扭轉。須要利用因子分析或者變量聚類分析等手段來選擇表明性的自變量,以減小候選變量之間的相關性;
2、預測結果呈「S」型,所以從log(odds)向機率轉化的過程是非線性的,在兩端隨着log(odds)值的變化,機率變化很小,邊際值過小,slope過小,而中間機率的變化很大,很敏感。 致使不少區間的變量變化對目標機率的影響沒有區分度,沒法肯定閥值。
一、LR採用log損失,SVM採用合頁損失。
二、LR對異常值敏感,SVM對異常值不敏感。
三、在訓練集較小時,SVM較適用,而LR須要較多的樣本。
四、LR模型找到的那個超平面,是儘可能讓全部點都遠離他,而SVM尋找的那個超平面,是隻讓最靠近中間分割線的那些點儘可能遠離,即只用到那些支持向量的樣本。
五、對非線性問題的處理方式不一樣,LR主要靠特徵構造,必須組合交叉特徵,特徵離散化。SVM也能夠這樣,還能夠經過kernel。
六、svm 更多的屬於非參數模型,而logistic regression 是參數模型,本質不一樣。其區別就能夠參考參數模型和非參模型的區別
那怎麼根據特徵數量和樣本量來選擇SVM和LR模型呢?Andrew NG的課程中給出瞭如下建議:
若是Feature的數量很大,跟樣本數量差很少,這時候選用LR或者是Linear Kernel的SVM
若是Feature的數量比較小,樣本數量通常,不算大也不算小,選用SVM+Gaussian Kernel
若是Feature的數量比較小,而樣本數量不少,須要手工添加一些feature變成第一種狀況。(LR和不帶核函數的SVM比較相似。)
參考文獻:https://plushunter.github.io/2017/01/12/機器學習算法系列(3):邏輯斯諦迴歸/