天天看點

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

首先明确是分類而不是回歸

邏輯回歸的名字中雖然帶有回歸兩個字,不過這是一個并不是一個回歸算法,而是一個分類算法,他是線上性回歸的基礎上加入了sigmoid函數,将線性回歸的結果輸入至sigmoid函數中,并且設定一個門檻值,如果大于門檻值為1,小于門檻值為0

sigmoid 函數:

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

在圖中我們可以看到 x -> -∞ 時 y 趨向與0,反之趨向于 1def sigmoid (x):

return (1 / (1 + np.exp (-x)))12

邏輯回歸的推導過程

準備公式:

sigmoid函數 :

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

預測函數 :

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

用機率的形式表示時間是否發生:

在樣本 x 的條件下 y = 1 的機率 :

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

在樣本 x 的條件下 y = 0 的機率 :

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

上面兩個公式合并:

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

通過最大似然函數求損失函數

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作
邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

這裡在x 和 y 上的上标标忘了打了,用來表示第i個資料

損失函數 :

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

在這裡我們發現損失函數是一個恒正的函數,是以我們使用梯度上升算法,這個和梯度下降算法并沒有什麼差別

梯度上升疊代函數 :

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

偏導函數,為了推導友善,暫時省略求和計算

偏導公式進行鍊式分解:

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作
邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作
邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作
邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

上面三式綜上:

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

綜上可以得

邏輯回歸算法原理MATLAB,機器學習算法(二)邏輯回歸的原理和實作

程式實作:def gradAscent(dataMatIn, classLabels):

dataMatrix = np.mat(dataMatIn)                                        #轉換成numpy的mat

labelMat = np.mat(classLabels).transpose()                            #轉換成numpy的mat,并進行轉置

m, n = np.shape(dataMatrix)                                            #傳回dataMatrix的大小。m為行數,n為列數。

alpha = 0.001                                                        #移動步長,也就是學習速率,控制更新的幅度。

maxCycles = 500                                                        #最大疊代次數

weights = np.ones((n,1))    for k in range(maxCycles):

h = sigmoid(dataMatrix * weights)                                #梯度上升矢量化公式

error = labelMat - h

weights = weights + alpha * dataMatrix.transpose() * error    return weights.getA()                                                #将矩陣轉換

原文出處:https://blog.csdn.net/NaLaEur/article/details/81806621