机器学习——逻辑回归算法
文章目錄
- 邏輯回歸算法
- 邏輯回歸概念
- Sigmoid函數
- 邏輯回歸模型
- 代價函數
- 最終運用梯度下降求解
- 實驗
- 總結
邏輯回歸算法
首先明確一個概念,邏輯回歸并不是解決回歸問題,而是解決分類問題,它是通過訓練數據中的正負例,學習樣本特征得到標簽之間的假設函數,是一種典型的線性分類器。
邏輯回歸概念
面對一個回歸或者分類問題,建立代價函數,然后通過優化方法迭代求解出最優的模型參數,然后測試驗證求解模型的好壞。
邏輯回歸實際是一種分類方法,主要用于兩分類問題,即輸出只有兩種,分別代表兩個類別。用Sigmoid函數就可以讓邏輯回歸只能輸出兩種值。
Sigmoid函數
Logistic函數(或Sigmoid函數),函數形式為:
對應圖形如下:
可以看出,Sigmoid函數是一個S型的曲線,它的取值在[0,1]之間,在遠離0的地方函數值會很快接近0或1??梢运伎?#xff0c;一個事件發生的概率是在0到1之間的,每一個概率都可以映射到函數的某一個值上,就可以歸類為超過50%的概率更容易實現歸一為1,低于50%的概率更不容易實現歸一為0,這樣就存在了只有0/1的二分類問題。
邏輯回歸模型
邏輯回歸模型所做的假設是:
可以發現,這里離將Sigmoid函數中的變量x換成了一個線性回歸公式,組成了新的邏輯回歸公式。
代價函數
邏輯回歸算法也是用最大似然估計來學習的,所以單個樣本的后驗概率為:
這是一個二項分布的整合式,相當于當y取1時,式子取h(x),而當y取0時,式子取1-h(x)。那么整個樣本的后驗概率為:
轉換成矩陣式,取對數可以得到對數似然度:
最終運用梯度下降求解
對數似然是越大越好的,求梯度下降需要在式子前邊加負號,轉變為求解最小值。所以求偏導的式子可以表示為:
最終可以化簡為:
可以說,沿梯度負方向選擇一個較小的步長可以保證代價函數是減小的,另一方面代價函數是凸函數,可以保證找到的局部最優值是全局最優。
實驗
利用梯度下降實現邏輯回歸模型,下述代碼用于求解y=2x1+x2+3,即使用梯度下降法求解y=ax1+bx2+c中參數a、b、c的最優值:
import numpy as np import matplotlib.pyplot as pltrate = 0.001 x_train = np.array([[1,2], [2,1], [2,3], [3,5], [1,3], [4,2], [7,3], [4,5], [11,3], [8,7]]) y_train = np.array([7,8,10,14,8,13,20,16,28,26]) x_test = np.array([[1,4], [2,2], [2,5], [5,3], [1,5], [4,1]])a = np.random.normal() b = np.random.normal() c = np.random.normal()def h(x):return a * x[0] + b * x[1] + cfor i in range(100):sum_a = 0sum_b = 0sum_c = 0for x, y in zip(x_train, y_train):for xi in x:sum_a = sum_a + rate * (y - h(x)) * xisum_b = sum_b + rate * (y - h(x)) * xia = a + sum_ab = b + sum_bc = c + sum_cplt.plot([h(xi) for xi in x_test])print(a) print(b) print(c)result = [h(xi) for xi in x_train] print(result)result = [h(xi) for xi in x_test] print(result)plt.show()算法求得的a、b、c的最優值和效果圖如圖所示:
總結
邏輯回歸具有一些優點:形式簡單,模型的可解釋性非常好。從特征的權重可以看到不同的特征對最后結果的影響,某個特征的權重值比較高,那么這個特征最后對結果的影響會比較大。訓練速度較快。分類的時候,計算量僅僅只和特征的數目相關,訓練的速度可以通過堆機器進一步提高,這樣我們可以在短時間內迭代好幾個版本的模型。
但是邏輯回歸本身也有許多的缺點:準確率并不是很高。因為形式非常的簡單(非常類似線性模型),很難去擬合數據的真實分布。很難處理數據不平衡的問題。舉個例子:如果我們對于一個正負樣本非常不平衡的問題,比如正負樣本比 10000:1,我們把所有樣本都預測為正也能使損失函數的值比較小。但是作為一個分類器,它對正負樣本的區分能力不會很好。處理非線性數據較麻煩。邏輯回歸在不引入其他方法的情況下,只能處理線性可分的數據,或者進一步說,處理二分類的問題 。
總結
以上是生活随笔為你收集整理的机器学习——逻辑回归算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习——梯度下降算法
- 下一篇: 机器学习——聚类算法