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 為什麼損失函式不用最小二乘
也就是損失函式為什麼不應平方損失而是選擇用交叉熵。原因是平方損失在訓練的時候會出現一定的問題。當預測值與真實值之間的差距過大時,這時候引數的調整就需要變大,但是如果使用平方損失,訓練的時候可能看到的情況是預測值和真實值之間的差距越大,引數調整的越小,訓練的越慢。
如果使用平方損失作為損失函式,損失函式如下
其中表示真實值,表示預測值。
對引數求梯度
由此可以看出,引數除了跟真實值與預測值之間的差距有關外,還和啟用函式的該點的導數有關,跟啟用函式的梯度成正比,常見的啟用函式是 函式,當這個點越靠近上邊或者下邊的時候梯度會變得非常小,這樣會導致當真實值與預測值差距很大時,引數變化的非常緩慢,與我們的期望不符合。
而使用交叉熵損失在更新引數的時候,當誤差越大時,梯度也就越大,引數調整也能更大更快。
參考文獻:
1、李航,統計學習方法,清華大學出版社,2012
2、https://blog.csdn.net/qikaihuting/article/details/78518263
知乎原文連結:
https://zhuanlan.zhihu.com/p/53387812