个人总结:从 线性回归 到 逻辑回归 为什么逻辑回归又叫对数几率回归?
邏輯回歸不是回歸算法,是分類算法,可以處理二元分類以及多元分類。
線性回歸
線性回歸的模型是求出特征向量Y和輸入樣本矩陣X之間的線性關系系數θ,滿足Y = Xθ。此時Y是連續的,所以是回歸模型。
對應n維樣本數據,對應的模型是這樣的:
?其中θ為模型參數。
一般用均方誤差作為損失函數,損失函數的代數法表示如下:
用矩陣形式表示為:
采用梯度下降法,則θ的迭代公式為:
如果采用最小二乘法,則θ為
在這里最小二乘看上去比梯度下降更簡便,但是最小二乘有很多局限性:
線性回歸的正則化
Lasso回歸
線性回歸的L1正則化通常稱為Lasso回歸,和一般線性回歸的區別在于損失函數增加了一個L1正則化的項,同時有一個常數系數α來調節損失函數的均方差項和正則化項的權重,具體Lasso回歸的損失函數表達式如下:
?
Lasso回歸可以使一些特征系數變小,甚至一些絕對值較小的系數直接變為0,增強模型泛化能力。
Lasso回歸的求解辦法一般有坐標軸下降法和最小角回歸法。但Lasso也有L1范數的缺點,它雖然是凸函數,但并不是處處可微分。
Ridge回歸
線性回歸的L2正則化通常稱為Ridge回歸。損失函數表達式如下:
Ridge回歸在不拋棄任何一個特征的情況下縮小了回歸系數,使得模型相對而言比較穩定,但和Lasso回歸相比,會使模型的特征留的特別多,模型解釋性差。
Ridge回歸一般可以直接采用最小二乘法,令J(θ)的導數為0:
則最后的θ的結果:
, 其中E為單位矩陣。
也可以用梯度下降法進行表示
?
可以看出,在正則化系數越大的情況下,回歸系數越小。當正則化系數大到一定的程度時,所有特征系數會越來越趨于0。從模型的復雜度上來解釋,更小的權值代表復雜度更低,也就是說θ越小,網絡復雜度越低,但是沒辦法讓它全為0,所以沒法做特征選擇。
接上,上面的Y是連續的,如果想要Y是離散的,就再做一次函數轉換變為g(Y)。如果使g(Y)在某個實數區間的時候為類別A,另一個實數區間的時候為類別B。就得到一個分類模型。如果類別只有兩種,就是二元分類模型。
Ridge的優點包含了L2范數的優點,它是凸函數,且處處可微分。
二元邏輯回歸
這個函數g一般取為sigmoid函數,形式如下:
可以看到,當z趨近正無窮,g(z)趨于1,而當z趨于負無窮時,g(z)趨于0。非常適合于分類概率模型。
另外還有一個很好的導數性質:
扯一些題外話,為什么邏輯回歸叫對數幾率回歸,可跳過:
在使用Tensorflow時,我們可能經常會看到Logits這個東西,它其實應該分開讀log it,這個it指的就是幾率(Odds),而Log it指的就是對數幾率。
我們知道概率是P(A) = 發生事件A的次數??/??所有事件的次數
而幾率 Odds(A) = 發生事件A的概率/不發生事件A的概率 = P(A)/1-P(A)
那對數幾率就是,這里是自然對數,它的圖像是
我們用θ將P進行表示:
這不就是我們的sigmoid函數嘛?
而θ就是我們的對數幾率,這就是為什么使用了sigmoid函數的邏輯回歸叫做對數幾率回歸的原因。
順便值得一提的是,將Logit(θ,對數幾率)輸入sigmoid函數時為二分類概率,輸入softmax函數時(此時Logit是一維向量)便得到了多分類概率。
線性回歸: Y?= θX
令z =?θX,則? ?。其中x為樣本輸入,為模型輸出,理解為某一分類的概率大小。而θ為分類模型的模型參數。可以通過設置閾值,比如0.5,當比閾值大時,則y為1,反之則y為0。
的值越小,則分類為0的概率越高,反之,值越大的話,分類為1的概率越高。如果靠近臨界點(閾值),則分類準確率下降。
也可以寫成矩陣的模型:
,其中為模型輸出,為mx1的維度。X為樣本特征矩陣,為mxn維度,θ為模型系數,為nx1向量。
?
二元邏輯回歸的損失函數
線性回歸的輸出是線性的,所以可用誤差平方和來定義損失函數。但是邏輯回歸不是連續的,但是可以用最大似然估計法來推導出損失函數。
如果輸出是0和1兩類,假定輸入樣本x,用表示訓練樣本x條件下預測y =? 1的概率,則為相應樣本預測y = 0的概率。
可以看出符合樣本符合0-1分布(伯努力分布),將其合并則有概率分布表達式
,y為0時則是預測y = 0的概率,y為1時預測y = 1的概率。
有了概率分布表達式,則可以通過極大似然估計來求解需要的模型系數了。
極大似然估計:最合理的參數估計量應該使得從模型中抽取該n組樣本觀測值的概率最大。打個比方:一個袋子中有20個球,只有黑白兩色,有放回的抽取十次,取出8個黑球和2個白球,計算袋子里有白球黑球各幾個。那么我會認為我所抽出的這個樣本是被抽取的事件中概率最大的。設取黑球的概率為p, p(黑球=8) = p^8*(1-p)^2,讓這個值最大。極大似然法就是基于這種思想。
于是,邏輯回歸的似然函數的代數表達式就為極大似然估計,我們要讓以下損失函數最大:
,其中m為樣本個數。
接著對似然函數對數化,得到對數似然損失函數表達式為:
這其實正好也是二分類模型的交叉熵代價函數。
將sigmoid代入,最后得到的式子為:
,這其實就是Logistic Loss的其中一種寫法,此時。
當,可以寫成另外一種形式,。可見當yi均為1時兩個形式相等,而第一個形式當yi為0時,對應第二個形式yi為-1。
接下來,我們要找到使損失函數最大的參數θ。
通過取反,轉換為找到損失函數最小時的參數θ,這個時候就可以用梯度下降法:
其矩陣形式為:
為什么用極大似然估計而不用最小二乘法?
實際上也可以使用最小二乘,但是最小二乘得到的權重效果比較差,因為使用最小二乘法,目標函數就是差值的平方和,是非凸的,不容易求解,容易陷入到局部最優解。
如果使用極大似然估計,目標函數就是對數似然函數,是關于(w, b)的高階連續可導凸函數,可以方便通過一些凸優化算法求解,比如梯度下降、牛頓法等。
二元邏輯回歸損失函數的優化方法
常見的有梯度下降法,坐標軸下降,牛頓法等。
這里使用梯度下降法進行推導:
?
二元邏輯回歸正則化
常見的有l1正則化和l2正則化。
l1正則化增加了l1范數作為懲罰,超參數α作為懲罰系數,調節罰項大小。這里用矩陣形式的損失函數來表示
l1正則化一般用坐標軸下降法和最小角回歸法。
l2正則化損失函數表達式為:
優化方法和普通的邏輯回歸類似。
?
二元邏輯回歸的推廣:多元邏輯回歸
二元邏輯回歸推廣到多元邏輯回歸,比如總是認為某種類型為正值,其余為0值(1-vs-rest),我們可以訓練k個二分類的邏輯回歸分類器,第i個分類器用以區分每個樣本是否可以歸為第i類。
可以假設每個樣本屬于不同標簽的概率服從于幾何分布,使用多項邏輯回歸(softmax regression)來進行分類
其中為模型的參數。一般來說多項邏輯回歸會有參數冗余的特點,即將同時加減一個向量后預測結果不變。特別的,當類別數為2時:
利用參數冗余的特點,將所有參數減去,變成:
這其實就是邏輯回歸的形式,可以看出二分類邏輯回歸實際上是多分類邏輯回歸的特例。
多元回歸的推導和二元回歸類似。
調參
penalty: 正則化選擇參數。可選“l1”或“l2”,默認是l2的正則化。如果L2正則化還是過擬合,可以考慮L1正則化。
solver: 優化算法選擇參數。默認“liblinear”,內部使用坐標軸下降法來迭代優化損失函數。“lbfgs”,擬牛頓法的一種,利用損失函數二階導數矩陣即海森矩陣來迭代優化損失函數。“newton-cg”也是牛頓法家族的一種。“sag”即隨機平均梯度下降,梯度下降法的變種,和普通下降法的區別是每次迭代僅僅用一部分的樣本來計算梯度,適合于樣本多的時候。
multi_class:有ovr(默認)和multinomial兩種選項。ovr即one-vs-rest(所有都可以看做二元邏輯回歸。具體做法是,對于第K類的分類決策,我們把所有第K類的樣本作為正例,除了第K類樣本以外的所有樣本都作為負例,然后在上面做二元邏輯回歸,得到第K類的分類模型。其他類的分類模型獲得以此類推),而multinomial即前面提到的many-vs-many(MvM,這里舉MvM的特例one-vs-one(OvO)作講解。如果模型有T類,我們每次在所有的T類樣本里面選擇兩類樣本出來,不妨記為T1類和T2類,把所有的輸出為T1和T2的樣本放在一起,把T1作為正例,T2作為負例,進行二元邏輯回歸,得到模型參數。我們一共需要T(T-1)/2次分類)。如果是二元邏輯回歸,ovr和multinomial并沒有任何區別,區別主要在多元邏輯回歸上。
class_weight:?標示分類模型中各種類型的權重,可以不輸入,即不考慮權重,或者說所有類型的權重一樣。“balanced”,那么類庫會根據訓練樣本量來計算權重,某類樣本量越多,則權重越低,樣本量越少,則權重越高。
sample_weight:?對于樣本不平衡問題,可以通過sample_weight來調節每個樣本權重。如果上面兩種方法都用到了,那么樣本的真正權重是class_weight*sample_weight。
小結
邏輯回歸是基于伯努利分布假設的概率模型,通過極大似然估計的假設,輸出y=1的概率。邏輯回歸也可以看做一個單層神經網絡添加sigmoid函數進行分類。
邏輯回歸嚴格來說屬于廣義線性模型,是非線性模型,但是在沒有其他條件下只能對線性可分的數據進行分類。通過對數據進行升維(非線性映射),之后線性可分,可以使邏輯回歸進行非線性分類。
邏輯回歸是解決工業規模問題最流行的算法。但在工業界很少將連續值作為邏輯回歸的模型的特征輸入,而是將連續特征離散化為一系列0,1特征交給邏輯回歸模型,這樣做的優勢有:
1、易于模型快速迭代
2、稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展
3、離散后的特征對異常數據有很強魯棒性:比如大于30歲是1,300歲還是1
4、簡化邏輯回歸模型的作用,降低過擬合的風險
優點:
- 適合需要得到一個分類概率的場景
- 計算代價小,在時間和內存需求上相當高效。可應用于分布式數據
- 對于小噪聲的魯棒性很好,并且不會受到輕微的多重共線性的特別影響(嚴重多重共線性則可以使用邏輯回歸結合L2正則化來解決。但是若想得到一個簡約模型,L2正則化并不是最好的選擇,因為它建立的模型涵蓋了全部的特征)
缺點:
- 容易欠擬合,分類精度不高
- 數據特征有缺失或者特征空間很大時表現效果并不好
總結
以上是生活随笔為你收集整理的个人总结:从 线性回归 到 逻辑回归 为什么逻辑回归又叫对数几率回归?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maple用Java做的,Debian1
- 下一篇: arm学习-1-开发板