Logistic迴歸Cost函數和J(θ)的推導----Andrew Ng【machine learning】公開課

最近翻Peter Harrington的《機器學習實戰》,看到Logistic迴歸那一章有點小的疑問。算法

做者在簡單介紹Logistic迴歸的原理後,當即給出了梯度上升算法的code:從算法到代碼跳躍的幅度有點大,做者本人也說了,這裏略去了一個簡單的數學推導。機器學習

那麼其實這個過程在Andrew Ng的機器學習公開課裏也有講到。如今回憶起來,大二看Andrew的視頻的時候內心是有這麼一個疙瘩(Andrew也是跳過了一步推導)函數

這裏就來說一下做者略去了怎樣的數學推導,以及,怎麼推導。學習

在此以前,先回顧一下Logistic迴歸。code

Logistic迴歸視頻

  基本原理:《實戰》這本書上是這麼講的,「迴歸」就是用一條直線對一堆數據點進行擬合,這個擬合過程就稱爲「迴歸」。利用Logistic迴歸進行分類的主要思想是,根據現有數據對分類邊界線創建迴歸公式,以此進行分類。事件

  以Andrew公開課的例子說明:數學

 

 

  圓(藍色)和叉(紅色)是兩類數據點,咱們須要找到一個決策邊界將其劃分開,如圖所示的邊界形式顯然是線性的形式,如圖中所描述的:入門

  咱們記爲:table

  這裏,括號裏的就是決策邊界的表達式,咱們找一個函數g,將表達式結果做爲輸入,生成一個預測函數hθ(x).這裏咱們使用Sigmoid函數

  從而:

 

  然而有時候,決策邊界用一維直線沒法區分,也就是這裏的θ參數個數是變數,好比下面這堆數據

  這是一種非線性的決策邊界。

  能夠看到這裏,將x1,x2參數所有平方處理,找得一個圓形邊界。

  

公式推導

  講到這裏,咱們能夠把邊界形式作以下推廣:

  

  邊界的最後一項是向量相乘的形式,即:

  將其輸入到sigmoid函數去判斷其所屬類別,就有了咱們的預測函數,記爲:

  根據sigmoid圖像,這個預測函數輸出值大於0,那麼表明x(數據點)所屬類別爲1,不然是0(對於二分類問題)。

  可是別忘了咱們的最初的目標,這裏的θ向量未知。咱們的目的是:

    肯定θ的參數值,使得咱們這個決策邊界能更好地劃分數據集。

  這個過程,在Andrew的課程裏,被略過了,他直接給出了cost函數和J(θ)函數,而後經過梯度降低求得最優的θ參數。其中,J(θ)函數是這樣的:

  利用上面的公式以及梯度降低算法,咱們就能求出θ的值。也就能求出最能擬合數據的決策邊界。

  接下來就要講講這個公式是怎麼被推導出來的。

  咱們先來看看如今咱們已經知道什麼:

      一、一堆數據點+它們的類別(2類)

      二、它們的機率分佈hθ(x):雖然目前θ仍然是未知參數

  咱們的目標是求出未知參數,使得每一個樣本數據點屬於它當前所標記的類別的機率最大。

  因而就引出了Fisher的極大似然估計

  這裏就不講極大似然估計的具體概念和公式推導了,不過仍是用個例子來形象的說明極大似然估計的做用吧:

        一個獵人和一個學生一塊兒走在山路上,忽然從山間跑出一隻兔子,啪一聲槍響,兔子倒地而亡。問:誰最有可能殺死了兔子?

  答案顯而易見:獵人。那麼這裏,獵人就是那個參數θ。極大似然估計的目標就是預測出待估參數,使得樣本事件發生的機率最大。

  對於上述例子,用極大似然估計的思想來講明其中的幾個重要信息:

樣本事件 兔子被槍殺
待估參數 射死了兔子的人(記爲θ:θ屬於{獵人,學生})

 

  極大似然估計就是找出最有可能殺死兔子的人。

  一樣,對於本實驗的一堆數據點,咱們對應着看:

 

樣本事件 每一個樣本數據點屬於他本身的label  
待估參數 決策邊界參數向量θ

        P.S.雖然樣本里的每條數據都代表了數據點自己的類別,可是使用極大似然估計的時候,你並不知道樣本自己所屬的類別,樣本數據自帶的類別標籤是你估計好壞的一個評價標準。換句話說,數據點全體就是一個樣本事件

  接下來就是估計所須要的數學推導了。

  對於一個連續性的分佈,咱們須要它的機率密度函數,在本例中,其實就是那個sigmoid函數(取值範圍0-1恰好表示的是發生機率),咱們從新寫在這裏:

  把這兩個式子寫在一塊兒:

 

  能夠驗證一下,當y=1或者y=0的時候,上式分別知足上上式。對每一個樣本數據點,知足上式,因此對於羣體,咱們接下來繼續。

  根據極大似然估計的求解步驟,取似然函數:

    

  要求L(θ)的最大值對應的θ參數。其中m是樣本數據點的個數

  連乘不容易求解,同時又容易形成下溢出。這裏因爲x和ln(x)單調性相同,兩邊取對數

  這個就是Andrew給的那個J(θ)了,惟一的區別就是,Andrew在前面乘了一個負係數,使得這裏求最大值變成了最小值,從而可使用梯度降低算法。

  不過其實用本式也能夠完成任務,只是用的算法就變成梯度上升了,其實沒有區別。

結語

  這裏安利一下《機器學習實戰》這本書,真的蠻不錯的,實踐性很強,既入門了ML,又鍛鍊了動手能力。

相關文章
相關標籤/搜索