1. 邏輯迴歸的應用背景
主要解決問題:分類問題---二分類問題
如果需要解決多分類問題--- softmax 迴歸
什麼是分類?
分類是監督學習的一個核心問題,在監督學習中,當輸出變量Y取有限個離散值時,預測問題便成為分類問題。這時,輸入變量X可以是離散的,也可以是連續的。監督學習從數據中學習一個分類模型或分類決策函數,稱為分類器。分類器對新的輸入進行輸出的預測,稱為分類。
與線性迴歸的區別:線性迴歸預測輸出的是(-∞,+∞)
而邏輯迴歸輸出的是{0,1},這裡面0我們稱之為負例,1稱之為正例。
如果分類器用的是迴歸模型,並且已經訓練好了一個模型,可以設置一個閾值:
如果
,則預測
,既y屬於正例
如果
,則預測
,既y屬於負例
但是對於二分類問題來說,線性迴歸模型的輸出值
可以大於1也可以小於0,所以我們需要一個函數,將輸出轉換到0和1之間。這裡我們引入一個函數,sigmoid函數
這裡g代表的就是這個函數:
圖像如下:
這個函數的導數:
1.1 為什麼要用 sigmoid 函數
我們可以從熵的角度,來理解一下這個問題。熵原本是信息熵中的概念,用在概率分佈上可以表示這個分佈中所包含的不確定度,熵越大不確定度越大。所以大家可以想象到,均勻分佈熵最大,因為基本新數據是任何值的概率都均等。
而我們現在關心的是,給定某些假設之後,熵最大的分佈。也就是說這個分佈應該在滿足我假設的前提下越均勻越好。比如大家熟知的正態分佈,正是假設已知均值和方差後熵最大的分佈。
回過來看邏輯迴歸,這裡假設了什麼呢?首先,我們在建模預測
,並認為
服從伯努利二項分佈,所以我們只需要知道
;其次我們需要一個線性模型,所以
。接下來我們就只需要知道
是什麼就行了。而我們可以通過最大熵原則推出的這個
,就是
函數。其實還有一種解釋可以看成伯努利二項分佈的指數族形式,也就是
函數。
2. 邏輯迴歸
邏輯迴歸的數學表達模型:
其中
是參數,輸出的直觀解釋:
對於給定的輸入
,
時估計的概率
例如:對於腫瘤問題(惡性/良性),輸入變量為腫瘤的大小
,表示的是病人的腫瘤有70%的可能是惡性的。
較正式的說法可以如下表示:
給定輸入
,參數化的
(參數空間),
時的概率。數學上可以如下表示:
2.1 損失函數
這裡我們選擇對數似然損失函數作為邏輯迴歸的損失函數
損失函數為:
前面的
可以去掉,化簡為:
注意中括號中的公式正是對邏輯迴歸進行最大似然估計中的最大似然函數
將兩個合在一起
有了這個我們可以求出邏輯迴歸的最大似然函數
對數似然函數為:
對數似然取最大值等價於損失函數取最小值
2.2 梯度下降法
算法流程:
(1)初始化
(隨機初始化)
(2)進行迭代,新的
能夠使得
更小
(3)如果
能夠繼續減小,返回(2)
其中,
稱為學習率或步長
這其中最主要的就是求解
的梯度,即梯度方向
注意,這個算法和線性迴歸裡的梯度下降算法幾乎是一致的,除了
的表示不同。
2.3 為什麼損失函數不用最小二乘
也就是損失函數為什麼不應平方損失而是選擇用交叉熵。原因是平方損失在訓練的時候會出現一定的問題。當預測值與真實值之間的差距過大時,這時候參數的調整就需要變大,但是如果使用平方損失,訓練的時候可能看到的情況是預測值和真實值之間的差距越大,參數調整的越小,訓練的越慢。
如果使用平方損失作為損失函數,損失函數如下
其中
表示真實值,
表示預測值。
對參數求梯度
由此可以看出,參數
除了跟真實值與預測值之間的差距有關外,還和激活函數的該點的導數有關,跟激活函數的梯度成正比,常見的激活函數是
函數,當這個點越靠近上邊或者下邊的時候梯度會變得非常小,這樣會導致當真實值與預測值差距很大時,參數變化的非常緩慢,與我們的期望不符合。
而使用交叉熵損失在更新參數的時候,當誤差越大時,梯度也就越大,參數調整也能更大更快。