邏輯回歸&線性回歸&梯度下降&正規方程


前一陣面試被問到邏輯回歸的問題,沒答好,現在對這一部分做個相對徹底的總結。部分內容來源於Andrew Ng的課。

邏輯回歸主要解決二分類或者多分類問題,是用回歸的思路,套上一個logistic函數,使得輸出為0或者1的一種分類策略。

說到邏輯回歸,不能不提線性回歸,因此先把線性回歸捋一遍。

線性回歸

簡單來說,假如我們有m個特征變量,要通過這m個特征變量預測一個y的數值,不管這數值實際代表什么意義。最直觀的就是用中學就學過的一次多項式來擬合,如果一階次的多項式效果不好,那么可以使用高階次的。不論你怎么組合這個多項式,總是要有相應的m個系數對應m個特征變量的。那么線性回歸想干什么呢,就是采用某種方法,找到最最優的一組m個系數,實現最優擬合。

一旦到這里了,就得定義什么是最優,這很有必要,不然憑什么認為這條線擬合的最好呢?

常見的定義最優的方式是:,這個也被稱為代價函數,或者說損失函數。

仔細觀察這個式子,其實就是平方誤差和的形式。

現在要做的,就是找到一些列的系數“西塔”,使得這個式子結果收斂到一個我們可以接受的誤差值范圍內。

怎么找?兩種方案:

1、梯度下降

2、正規方程

先說梯度下降:

 這個公式就是梯度下降的核心算法。可以看到,針對每一個系數,都采用對其取偏導數,然后使用一個合適的學習率參數a進行相乘並遞減,重復這個過程,直到代價函數收斂到某個范圍內。

有人會問學習率的選取問題,的確,合適的學習率有助於更快的達到收斂效果。梯度下降算法的每次迭代受到學習率的影響,如果學習率過小,那么需要的迭代次數過多;如果學習率過大,那么有可能會錯過局部最小值,導致無法收斂。常用的學習率數值:0.01,0.03,0.1,0.3,1,3,10

還要注意的一點就是,如果我們打算采用多項式回歸模型的話,在進行梯度下降算法前,很有必要先進性特征縮放,使其規約到一個相近的范圍內。采用的方式常常是:

再來說正規方程:

先上一個公式:可以說這個公式敘述了所有。注意“西塔”在這里表示系數向量,這個式子是一個矩陣運算式。X代表特征矩陣,y代表對應的待預測的實際值。

正規方程法不像梯度下降要一次次地試,它可以一次性給出最優的系數向量解。通常當特征變量小於10000個的時候,這個方法是很好用的,但是凡事有利有弊,這個方法最廣泛的應用還是在線性回歸領域,而在后面講的邏輯回歸就不能用了。下面是兩種方法的比較:

注意,正規方程法只能用於線性回歸模型。多項式的高階模型就不能用,但是如果采用變量替換,將非線性轉變為線性,依然可以用。相較於正規方程法,梯度下降法更加具有普適性。

邏輯回歸:

可以開始說邏輯回歸了。有了前面的鋪墊,我們知道,線性回歸可以預測一個數值,但是這個數值的大小呢,不一定,然而對於分類問題,我們想要得到0或者1,怎么辦?

 

拿這張圖片的例子來說,我們想要預測這兩類,可以明顯的找到一條線性回歸直線分開他們,但這時候我們不再需要什么預測數值,我們只想要0和1。假如現在我們找到了這條線,然后,線上方的紅叉類元素帶入直線方程后一定大於0;線下方的綠色圈圈元素帶入直線方程后一定小於0;線之上的元素帶入進去肯定等於0.這樣我們有了天然的分類屬性。

有沒有什么函數能把大於0的函數都歸類為1,或者把小於0的函數歸類為0呢,有的,這就是sigmoid function

但凡大於0的,都收斂於1;小於0的,都收斂於0;等於0的,恰好等於0.5。這樣聯合起來,得到:

,其含義是輸出變量=1的可能性,帶有一定的概率含義。

同樣的,我們必然要定義代價函數,也叫損失函數。怎么評定這條直線是最好的分類邊界呢?

依然如上,我們用平方誤差作為代價函數,帶入我們的,很不幸,當我們以為自變量,代價函數為因變量時,這個

是一個非凸函數。而非凸函數是極其性質不友好的函數,我們需要得到一個凸函數。

因此,我們不再用平方誤差作為代價函數,而是用下面的:

 

 

 

梯度下降算法依然不變,仍然記住,之前的特征縮放很有必要。

 

至此,基本上思路上還有算法層面上的內容都已經搞定。我們可以明確的看出一個通用的道理,衡量任何一個模型好壞都需要一個代價函數,然后是邏輯回歸和線性回歸的代價函數是極其不一樣的。

然后就是最常用的梯度下降算法,求取函數的局部最小值。

以后打算繼續寫一個牛頓方法的求法。mark一下。

以上!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM