关于逻辑回归,面试官们都怎么问
作者?| WEIWEI? ?整理?|?NewBeeNLP
「面試官們都怎么問」系列文章主旨是盡可能完整全面地整理ML/DL/NLP相關知識點,不管是剛入門的新手、準備面試的同學或是溫故知新的前輩,我們希望都能通過這一系列的文章收獲到或多或少的幫助?
這會持續更新,希望你能喜歡?目前已整理的有:
關于SVM,面試官們都怎么問
關于ELMo,面試官們都怎么問
關于Transformer,面試官們都怎么問
關于BERT,面試官們都怎么問
一. 一句話概括邏輯回歸
邏輯回歸假設數據服從伯努利分布,通過極大化似然函數的方法,運用梯度下降來求解參數,來達到將數據二分類的目的。
這句話包含了五點,接下來一一介紹:
邏輯回歸的假設
邏輯回歸的損失函數
邏輯回歸的求解方法
邏輯回歸的目的
邏輯回歸如何分類
二. 邏輯回歸的假設
任何的模型都是有自己的假設,在這個假設下模型才是適用的。
Hypothesis #1
邏輯回歸的第一個基本假設是假設數據服從伯努利分布。
伯努利分布:是一個離散型概率分布,若成功,則隨機變量取值1;若失敗,隨機變量取值為0。成功概率記為p,失敗為q = 1-p。
在邏輯回歸中,既然假設了數據分布服從伯努利分布,那就存在一個成功和失敗,對應二分類問題就是正類和負類,那么就應該有一個樣本為正類的概率,和樣本為負類的概率。具體我們寫成這樣的形式:
Hypothesis #2
邏輯回歸的第二個假設是正類的概率由sigmoid的函數計算,即:
預測樣本為正類的概率:
預測樣本為負類的概率:
寫在一起,即預測樣本的類別:
個人理解,解釋一下這個公式,并不是用了樣本的標簽,而是說你想要得到哪個的概率,時意思就是你想得到正類的概率,時就意思是你想要得到負類的概率。另外在求參數時,這個是有用的,這點在下面會說到。
另外關于這個值, 是個概率,還沒有到它真正能成為預測標簽的地步,更具體的過程應該是分別求出正類的概率即時,和負類的概率時,比較哪個大,因為兩個加起來是1,所以我們通常默認的是只用求正類概率,只要大于0.5即可歸為正類,但這個0.5是人為規定的,如果愿意的話,可以規定為大于0.6才是正類,這樣的話就算求出來正類概率是0.55,那也不能預測為正類,應該預測為負類。
三. 邏輯回歸的損失函數
都說邏輯回歸的損失函數是它的極大似然函數,但是為啥呢?
先一句話概括一下極大似然估計,順便就復習了,以防面試官問起來:
極大似然估計:利用已知的樣本結果信息,反推最具有可能(最大概率)導致這些樣本結果出現的模型參數值(模型已定,參數未知)
再聯系到邏輯回歸里,一步步來分解上面這句話,首先確定一下模型是否已定,模型就是用來預測的那個公式:
參數就是里面的 ,那什么是樣本結果信息,就是我們的,,是我們的樣本,分別為特征和標簽,我們的已知信息就是在特征取這些值的情況下,它應該屬于y類(正或負)。
反推最具有可能(最大概率)導致這些樣本結果出現的參數,舉個例子,我們已經知道了一個樣本點,是正類,那么我們把它丟入這個模型后,它預測的結果一定得是正類啊,正類才是正確的,才是我們所期望的,我們要盡可能的讓它最大,這樣才符合我們的真實標簽。反過來一樣的,如果你丟的是負類,那這個式子計算的就是負類的概率,同樣我們要讓它最大,所以此時不用區分正負類。
這樣串下來,一切都說通了,概括一下:
一個樣本,不分正負類,丟入模型,多的不說,就是一個字,讓它大
一直只提了一個樣本,但對于整個訓練集,我們當然是期望所有樣本的概率都達到最大,也就是我們的目標函數,本身是個聯合概率,但是假設每個樣本獨立,那所有樣本的概率就可以寫成:
個人理解,此時,只能叫它目標函數,因為它是我們的目標,那損失函數是啥呢?一般別的算法里,損失函數都是真實值和預測值的誤差確定的,所以很好理解。
查了半天資料,好像沒有個官方的概念是介紹log損失函數的,那我只能個人理解繼續上了,邏輯回歸沒有損失函數,這個log損失函數是強行叫它的。那為啥叫它log損失函數呢?
我們的目標是最大化上面那個目標函數,那我們就要向目標方向前進,要最大,那就求導啊,要求導,那就化簡啊,不然太復雜了,那怎么化簡呢?
第一步,取對數,去掉連乘,變為連加,直接給出化簡后的結果:
第二步,為了迎合一般要最小化損失函數,所以加個負號:
化簡之后(步驟就不詳細放了),就可以稱為損失函數了:
四. 邏輯回歸的求解方法
一般都是用梯度下降法來求解,梯度下降又有隨機梯度下降,批梯度下降,small batch 梯度下降三種方式:
簡單來說 批梯度下降會獲得全局最優解,缺點是在更新每個參數的時候需要遍歷所有的數據,計算量會很大,并且會有很多的冗余計算,導致的結果是當數據量大的時候,每個參數的更新都會很慢。
隨機梯度下降是以高方差頻繁更新,優點是使得sgd會跳到新的和潛在更好的局部最優解,缺點是使得收斂到局部最優解的過程更加的復雜。
小批量梯度下降結合了sgd和batch gd的優點,每次更新的時候使用n個樣本。減少了參數更新的次數,可以達到更加穩定收斂結果,一般在深度學習當中我們采用這種方法。
加分項,看你了不了解諸如Adam,動量法等優化方法(在這就不展開了,以后有時間的話專門寫一篇關于優化方法的)。因為上述方法其實還有兩個致命的問題:
第一個是如何對模型選擇合適的學習率。自始至終保持同樣的學習率其實不太合適。因為一開始參數剛剛開始學習的時候,此時的參數和最優解隔的比較遠,需要保持一個較大的學習率盡快逼近最優解。但是學習到后面的時候,參數和最優解已經隔的比較近了,你還保持最初的學習率,容易越過最優點,在最優點附近來回振蕩,通俗一點說,就很容易學過頭了,跑偏了。
第二個是如何對參數選擇合適的學習率。在實踐中,對每個參數都保持的同樣的學習率也是很不合理的。有些參數更新頻繁,那么學習率可以適當小一點。有些參數更新緩慢,那么學習率就應該大一點。
五. 邏輯回歸的目的
將數據二分類
六. 邏輯回歸的如何分類
這個在上面的時候提到了,要設定一個閾值,判斷正類概率是否大于該閾值,一般閾值是0.5,所以只用判斷正類概率是否大于0.5即可。
七. 邏輯回歸為什么用極大似然函數作為損失函數
一般和平方損失函數(最小二乘法)拿來比較,因為線性回歸用的就是平方損失函數,原因就是平方損失函數加上sigmoid的函數將會是一個非凸的函數,不易求解,會得到局部解,用對數似然函數得到高階連續可導凸函數,可以得到最優解。
其次,是因為對數損失函數更新起來很快,因為只和x,y有關,和sigmoid本身的梯度無關。
八. 邏輯回歸在訓練的過程當中,如果有很多的特征高度相關或者說有一個特征重復了100遍,會造成怎樣的影響
先說結論,如果在損失函數最終收斂的情況下,其實就算有很多特征高度相關也不會影響分類器的效果。
但是對特征本身來說的話,假設只有一個特征,在不考慮采樣的情況下,你現在將它重復100遍。訓練以后完以后,數據還是這么多,但是這個特征本身重復了100遍,實質上將原來的特征分成了100份,每一個特征都是原來特征權重值的百分之一。
如果在隨機采樣的情況下,其實訓練收斂完以后,還是可以認為這100個特征和原來那一個特征扮演的效果一樣,只是可能中間很多特征的值正負相消了。
九. 為什么我們還是會在訓練的過程當中將高度相關的特征去掉
去掉高度相關的特征會讓模型的可解釋性更好
可以大大提高訓練的速度。如果模型當中有很多特征高度相關的話,就算損失函數本身收斂了,但實際上參數是沒有收斂的,這樣會拉低訓練的速度。其次是特征多了,本身就會增大訓練的時間。
十. 邏輯回歸的優缺點總結
優點:
形式簡單,模型的可解釋性非常好。從特征的權重可以看到不同的特征對最后結果的影響,某個特征的權重值比較高,那么這個特征最后對結果的影響會比較大。
模型效果不錯。在工程上是可以接受的(作為baseline),如果特征工程做的好,效果不會太差,并且特征工程可以大家并行開發,大大加快開發的速度。
訓練速度較快。分類的時候,計算量僅僅只和特征的數目相關。并且邏輯回歸的分布式優化sgd發展比較成熟,訓練的速度可以通過堆機器進一步提高,這樣我們可以在短時間內迭代好幾個版本的模型。
資源占用小,尤其是內存。因為只需要存儲各個維度的特征值。
方便輸出結果調整。邏輯回歸可以很方便的得到最后的分類結果,因為輸出的是每個樣本的概率分數,我們可以很容易的對這些概率分數進行cut off,也就是劃分閾值(大于某個閾值的是一類,小于某個閾值的是一類)。
缺點:
準確率并不是很高。因為形式非常的簡單(非常類似線性模型),很難去擬合數據的真實分布。
很難處理數據不平衡的問題。舉個例子:如果我們對于一個正負樣本非常不平衡的問題比如正負樣本比 10000:1.我們把所有樣本都預測為正也能使損失函數的值比較小。但是作為一個分類器,它對正負樣本的區分能力不會很好。
處理非線性數據較麻煩。邏輯回歸在不引入其他方法的情況下,只能處理線性可分的數據,或者進一步說,處理二分類的問題 。
邏輯回歸本身無法篩選特征。有時候,我們會用gbdt來篩選特征,然后再上邏輯回歸。
-?END?-
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的关于逻辑回归,面试官们都怎么问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【入门基础】写给小白看的入门级 Java
- 下一篇: DeepMatch :用于推荐广告的深度