关于LR的自问自答
1、如何介紹logistic regression:
LR因為模型簡單、釋性強,一直備受青睞,當然也可能是我們接觸機器學習的第一個模型,但是如何去全面的介紹這個大家都在用模型呢?
介紹模型,首先我們為了解決問題會提出一些前提調件,在問題的假設情況下使問題能夠更加容易套用數學模型處理。問題預處理以后使用合適的損失函數(代價函數)進行求解來達到什么樣的目的。
用一句話來概括LR:邏輯回歸假設數據服從伯努利分布,通過極大化似然函數的方法,運用梯度下降來求解參數,達到將數據二分類的目的。
- 邏輯回歸的基本假設
伯努利分布是一個離散型機率分布,是二項分布的特殊情況,應用于兩種實驗結果,要么正例,要么負例。整個模型可以描述為:
邏輯回歸的第二個假設樣本為正的概率是:
所以邏輯回歸的最終形式:
- 邏輯回歸的損失函數
邏輯回歸的損失函數是它的極大似然函數:
在這里有一點需要說明:為什么使用交叉熵損失函數?
將極大似然函數取對數以后等同于對數損失函數。在邏輯回歸這個模型下,對數損失函數的訓練求解參數的速度是比較快的。大家可以看參數更新的公式:
這個式子的更新速度只和??、??相關。和sigmoid函數本身的梯度無關,這樣更新的速度是可以自始至終都比較的穩定。至于為什么不用平方損失函數,使用平方損失函數的話梯度更新的速度和sigmod函數本身的梯度是很相關的。sigmod函數在它在定義域內的梯度都不大于0.25。這樣訓練會非常的慢。
- 邏輯回歸的求解方法
極大似然函數無法直接求解,我們一般通過對該函數進行梯度下降來不斷逼近最優解。梯度下降主要有BGD、SGD、MBGD三種方法。
BGD會獲得全局最優解,缺點是在更新每個參數的時候需要遍歷所有的數據,計算量會很大,并且會有很多的冗余計算,導致的結果是當數據量大的時候,每個參數的更新都會很慢。
SGD以高方差頻繁更新,優點是使得sgd會跳到新的和潛在更好的局部最優解,缺點是使得收斂到局部最優解的過程更加的復雜。
MBGD降結合了sgd和batch gd的優點,每次更新的時候使用n個樣本。減少了參數更新的次數,可以達到更加穩定收斂結果,一般在深度學習當中可以采用這種方法,將數據一個batch一個batch的送進去訓練。
不過在使用上述三種方法時有兩個問題是不可避免的:
1、如何選擇合適的learning_rate。自始至終保持同樣的學習率顯然是不太合適的,開始學習參數的時候,距離最優解比較遠,需要一個較大的學習率能夠快速的逼近最優解。當參數接近最優解時,繼續保持最初的學習率,容易越過最優點,在最優點附近震蕩。
2、如何對參數選擇合適的學習率。對每個參數都保持的同樣的學習率也是很不合理的。有些參數更新頻繁,那么學習率可以適當小一點。有些參數更新緩慢,那么學習率就應該大一點。
針對以上問題,就提出了諸如Adam,動量法等優化方法,在上一篇文章中也給出了相關的想法,可以參考兩張gif。
- 邏輯回歸的目的
該函數的目的便是將數據二分類,提高準確率。
- 邏輯回歸如何達到分類的目的
邏輯回歸作為回歸應用到分類,劃定一個閾值,左右為兩類。多分類問題使用softmax函數。
2、邏輯回歸在訓練的過程當中,如果有很多的特征高度相關或者說有一個特征重復了100遍,會造成怎樣的影響?
如果在損失函數最終收斂的情況下,有很多特征高度相關也不會影響分類器的效果。對特征本身來說的話,假設只有一個特征,在不考慮采樣的情況下,你現在將它重復100遍。訓練以后完以后,數據還是這么多,但是這個特征本身重復了100遍,實質上將原來的特征分成了100份,每一個特征都是原來特征權重值的百分之一。如果在隨機采樣的情況下,其實訓練收斂完以后,還是可以認為這100個特征和原來那一個特征扮演的效果一樣,只是可能中間很多特征的值正負相消了。
3、為什么我們還是會在訓練的過程當中將高度相關的特征去掉?
將高度相關的特征去掉會讓模型的可解釋性更好,能夠大大提高訓練的速度。如果模型當中有很多特征高度相關的話,就算損失函數本身收斂了,但實際上參數是沒有收斂的,這樣會拉低訓練的速度。其次是特征多了,本身就會增大訓練的時間。
4、邏輯回歸的優缺點總結
4.1、優點:
1、形式簡單,模型的可解釋性非常好。從特征的權重可以看到不同的特征對最后結果的影響,某個特征的權重值比較高,那么這個特征最后對結果的影響會比較大。
2、模型效果不錯。在工程上是可以接受的(作為baseline),如果特征工程做的好,效果不會太差,并且特征工程可以大家并行開發,大大加快開發的速度。
3、訓練速度較快。分類的時候,計算量僅僅只和特征的數目相關。并且邏輯回歸的分布式優化sgd發展比較成熟,訓練的速度可以通過堆機器進一步提高,這樣我們可以在短時間內迭代好幾個版本的模型。
4、資源占用小,尤其是內存。因為只需要存儲各個維度的特征值。
5、方便輸出結果調整。邏輯回歸可以很方便的得到最后的分類結果,因為輸出的是每個樣本的概率分數,我們可以很容易的對這些概率分數進行cutoff,也就是劃分閾值(大于某個閾值的是一類,小于某個閾值的是一類)。
4.2、缺點:
1、準確率并不是很高。因為形式非常的簡單(非常類似線性模型),很難去擬合數據的真實分布。
2、很難處理數據不平衡的問題。舉個例子:如果我們對于一個正負樣本非常不平衡的問題比如正負樣本比 10000:1.我們把所有樣本都預測為正也能使損失函數的值比較小。但是作為一個分類器,它對正負樣本的區分能力不會很好。
3、處理非線性數據較麻煩。邏輯回歸在不引入其他方法的情況下,只能處理線性可分的數據,或者進一步說,處理二分類的問題 。
4、邏輯回歸本身無法篩選特征。有時候,我們會用gbdt來篩選特征,然后再上邏輯回歸。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 浅谈Spring5 响应式编程
- 下一篇: 对数几率回归 —— Logistic R