1. 程式人生 > >logisitic 迴歸 +極大似然法 + 梯度下降法 (迭代優化)

logisitic 迴歸 +極大似然法 + 梯度下降法 (迭代優化)

logistic迴歸是分類問題。前面我們講的分類問題的輸出都是 “yes”或者“no”。但是在現實生活中,我們並不是總是希望結果那麼肯定,而是概率(發生的可能性)。比如,我們希望知道這個房子在第三個星期被賣出去的概率。那麼以前的分類演算法就無法使用了,這時logistic 迴歸就派上了用場。
也就是說,logistic 迴歸輸出的是一個概率值,而不是絕對的0/1。即目標函式變為
這裡寫圖片描述
我們用logistic 迴歸做分類,結果輸出的是+1的概率。但是我們的樣本的y確是+1或者-1。打個比方,我們預測房子3個月後被賣出去的概率。
但是對於我們蒐集房子的樣本,只知道樣本3個月後是否成功被賣,並不知道該樣本被賣的概率。
也就是,我們的樣本的資料,不是這樣
這裡寫圖片描述


而是這樣
這裡寫圖片描述

logistic 迴歸

對於樣本x的這裡寫圖片描述
這d個特徵(還有一個偏移x0。核心還是對這些特徵進行加權求和
這裡寫圖片描述
這個s的取值範圍是( 負無窮 到 正無窮 )。只是logisitc 迴歸用了一個函式將他壓縮到 [0,1]之間。由於這個壓縮函式是 單調遞增的,所以結果並不影響。
這個函式就是
這裡寫圖片描述
他是光滑且單調的。
那麼logistic 函式為
這裡寫圖片描述

這裡寫圖片描述

logistic 迴歸的Ein

我們總共講了3種模型。線性分類,線性迴歸,logistic 迴歸。其實他們三者的核心都是這裡寫圖片描述
也就是都是 對特徵的加權再求和。
但是他們的h(x)和Ein是不同的。
對於h(x)的形式,三著分別為
這裡寫圖片描述


對於Ein形式
linear classfication 的EinI[yf(x)]
linear regression 的Ein(yf(x))2
而logistic迴歸又是什麼呢??現在我們來求一求

極大似然法

我們可得到
這裡寫圖片描述
我們現在有一堆樣本
這裡寫圖片描述
那麼他有f產生的概率為
這裡寫圖片描述

我們有一個h ,h產生這堆樣本的概率為
這裡寫圖片描述

極大自然法,如果h產生一模一樣的資料的概率 同 f產生這堆資料的概率越相近,那麼就可以說 上面h與f更加接近。
由於我們的樣本(資料)本就是f產生的,所以f產生這堆資料的概率很大,接近1。因此,我們希望h可以產生一模一樣的資料的概率接近1。
這裡寫圖片描述

所以我們現在的目標是,這裡寫圖片描述

對於logistic迴歸,通過畫圖,我們可以得到關於他的對稱性
這裡寫圖片描述
所以likelihood
這裡寫圖片描述
現在,可以改寫出
這裡寫圖片描述
灰色的表示:由於我們相當於是再所有的h中找一個likelihood()最大的那個h,而對於所有的h,其P(X1),P(X2)...都是一樣的,所以不用去考慮,所以將其表為灰色。

即問題轉化為
這裡寫圖片描述
將其轉化為求w的形式
這裡寫圖片描述
由於是乘積的形式,將其轉化為log形式
這裡寫圖片描述
為了計算方便,將max轉化為min,並乘以1N(乘以1N並不影響結果,因為所有的h都乘了),再做進一步處理,即變為
這裡寫圖片描述

那麼我們的最終目標為
這裡寫圖片描述

根據上面的式子,由於Ein是光滑且凸的,所以我們只要通過令其梯度為0,得到的引數w1,w2,...就可以使Ein最小。
這裡寫圖片描述

梯度下降法

Ein的梯度為0,就是令Ein對每個wi的偏導為0。
這裡寫圖片描述
最後一步就是把所有的偏導彙總成一個式子。所以橘色的xn是一個向量。
最終變為
這裡寫圖片描述
如果Θ(ynwTxn)為0,那麼-y_nw^Tx_n為無窮大,不成立。所以只能上面權重求和為0。

我們回顧一下PLA演算法
這裡寫圖片描述

其實上面兩步可以歸為1步
這裡寫圖片描述
所以PLA演算法可以簡化為
這裡寫圖片描述
發現,上面兩圖有兩個引數,η和v .其中η表示 步長,而v表示 方向(修正是 改變的方向)
PLA通過不斷的迭代更新w的值,使得最終的值達到最優。這種演算法迭代優化方法。
logistic求解最小的Ein(w),也是用的是類似的PLA提到的迭代優化演算法。一步一步權值向量w,使得Ein(w)最小 變權值向量w,迭代優化方法的更新公式是
這裡寫圖片描述
其中η表示 步長,而v表示 方向(修正是 改變的方向,我們令他為單位向量,僅僅表示方向,用η表示 步長)

那麼我們現在就通過求解正確的 步長 η和方向v,使得Ein(w)最優。
我們知道:
這裡寫圖片描述

,以上為非線性的。當η很小時,我們運用泰勒展開式將其化為 線性形式。
根據泰勒公式:
這裡寫圖片描述
η很小時,可以將泰勒公式簡化成前兩個的和。且我令x=wt+ηv , a=wt 就可以得到
這裡寫圖片描述

那麼問題就變為
這裡寫圖片描述
我們想得到wt+1,那麼wt是已知的,又η是我們給定的。那麼上面灰色的表示對最小值無影響。所以只需將上面黑色部分求最小即可。由於是向量相乘,且v我們認定他是單位向量,長度為1,那麼我們只能改變中v的方向,就可以達到最小化 。當v的方向與梯度相反時,值最小。又v為單位向量,所以可得
這裡寫圖片描述
這樣我們就求出了v的值。

即最終得到梯度下降為
這裡寫圖片描述

步長η太小,導致演算法太慢;太大,就很任意出錯。
這裡寫圖片描述
我們希望η可以在演算法執行時不斷的改變。梯度越陡峭,說明離極值點越遠,那麼希望步長越大;梯度越平緩,說明離極值點越近,那麼希望步長越小
這裡寫圖片描述
那麼其實希望η與梯度成單調遞增性即可。
為了方便,這裡用正比,當然也可以用其他的。
這裡寫圖片描述
最終結果為
這裡寫圖片描述

所以logistic迴歸演算法實現為

這裡寫圖片描述