天天看點

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

标簽:

1、概述

Logistic regression(邏輯回歸)是目前業界比較常用的機器學習方法,用于估計某種事物的可能性。

在經典之作《數學之美》中也看到了它用于廣告預測,也就是根據某廣告被用 戶點選的可能性,把最可能被使用者點選的廣告擺在使用者能看到的地方,然後叫他“你點我啊!”使用者點了,你就有錢收了。這就是為什麼我們的電腦現在廣告泛濫的 原因。還有類似的某使用者購買某商品的可能性,某病人患有某種疾病的可能性啊等等。這個世界是随機的(當然了,人為的确定性系統除外,但也有可能有噪聲或産生錯誤的結果,隻是這個錯誤發生的可能性太小了,小到千萬年不遇,小到忽略不計而已),是以萬物的發生都可以用可能性或者幾率(Odds)來表達。“幾率”指的是某事物發生的可能性與不發生的可能性的比值。

Logistic regression可以用來回歸,也可以用來分類,主要是二分類。

2、基本理論

2.1Logistic regression和Sigmoid函數

回歸:假設現在有一些資料點,我們用一條直線對這些點進行拟合(該條稱為最佳拟合直線),這個拟合過程就稱作回歸。利用Logistic回歸進行分類的思想是:根據現有資料對分類邊界線建立回歸公式,以此進行分類。這裡的“回歸”一詞源于最佳拟合,表示找到最佳拟合參數,使用的是最優化算法。

Sigmoid函數具體的計算公式如下:

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

z=w0x0+w1x1+w2x2+...+wnxn, z=wTx 其中w是我們要找的最佳參數(系數),x是分類器的輸入資料特征。

當x為0時,Sigmoid函數值為0.5,随着x的增大,對應的Sigmoid值将逼近于1;而随着x的減小,Sigmoid值将逼近于0。如果橫坐标刻度足夠大(如下圖所示),Sigmoid函數看起來很像一個階躍函數。

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作
python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

為了實作Logistic回歸分類器,我們可以在每個特征上都乘以一個回歸系數,然後把所有結果值相加,将這個總和代入Sigmoid函數中,進而得到一個範圍在0-1之間的數值。任何大于0.5的資料被分入1類,小于0.5即被歸入0類。是以,Logistic回歸也可以被看作是一種機率估計。

2.2最優化理論

由上述問題得到,我們現在的問題變成了:最佳回歸系數時多少?

z=w0x0+w1x1+w2x2+...+wnxn, z=wTx

向量x是分類器的輸入資料,向量w是我們要找的最佳參數(系數),進而使得分類器盡可能地精确,為了尋找最佳參數,需要用到最優化理論的一些知識。

下面首先介紹梯度上升的最優化方法,我們将學習到如何使用該方法求得資料集的最佳參數。接下來,展示如何繪制梯度上升法産生的決策邊界圖,該圖能将梯度上升法的分類效果可視化地呈現出來。最後我們将學習随機梯度上升法,以及如何對其進行修改以獲得更好的結果。

2.2.1梯度上升法

梯度上升法的基于的思想是:要找到某函數的最大值,最好的方法是沿着該函數的梯度方向探尋。則函數f(x,y)的梯度由下式表示:

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

這個梯度意味着要沿x方向移動

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

,沿y方向移動

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

,其中,函數f(x,y)必須要在待計算的點上有定義并且可微。具體的函數例子如下圖所示:

python邏輯回歸_邏輯回歸(LogisticRegression)--python實作

注釋:梯度上升算法到達每個點後都會重新估計移動的方向。從P0開始,計算完該點的梯度,函數就根據梯度移動到下一點P1。在P1點,梯度再次被重新計算,并沿新的梯度方向移動到P2。如此循環疊代,直到滿足停止條件。疊代過程中,梯度算子總是保證我們能選取到最佳的移動方向。

可以看到,梯度算子總是指向函數值增長最快的方向。這裡所說的是移動方向,而未提到移動量的大小。該量值稱為歩長,記作

标簽: