Stanford機器學習-- 邏輯迴歸和過擬合問題的解決 logistic Regression & Regularization

什麼是邏輯迴歸?

Logistic迴歸與多重線性迴歸實際上有很多相同之處,最大的區別就在於它們的因變量不同,其他的基本都差不多。正是因爲如此,這兩種迴歸可以歸於同一個家族,即廣義線性模型(generalizedlinear model)。

這一家族中的模型形式基本上都差不多,不同的就是因變量不同。

  • 如果是連續的,就是多重線性迴歸;
  • 如果是二項分佈,就是Logistic迴歸;
  • 如果是Poisson分佈,就是Poisson迴歸;
  • 如果是負二項分佈,就是負二項迴歸。

Logistic迴歸的因變量可以是二分類的,也可以是多分類的,但是二分類的更爲常用,也更加容易解釋。所以實際中最常用的就是二分類的Logistic迴歸。

Logistic迴歸的主要用途:

  • 尋找危險因素:尋找某一疾病的危險因素等;
  • 預測:根據模型,預測在不同的自變量情況下,發生某病或某種情況的概率有多大;
  • 判別:實際上跟預測有些類似,也是根據模型,判斷某人屬於某病或屬於某種情況的概率有多大,也就是看一下這個人有多大的可能性是屬於某病。

Logistic迴歸主要在流行病學中應用較多,比較常用的情形是探索某疾病的危險因素,根據危險因素預測某疾病發生的概率,等等。例如,想探討胃癌發生的危險因素,可以選擇兩組人羣,一組是胃癌組,一組是非胃癌組,兩組人羣肯定有不同的體徵和生活方式等。這裏的因變量就是是否胃癌,即“是”或“否”,自變量就可以包括很多了,例如年齡、性別、飲食習慣、幽門螺桿菌感染等。自變量既可以是連續的,也可以是分類的。

 

常規步驟

Regression問題的常規步驟爲:

  1. 尋找h函數(即hypothesis);
  2. 構造J函數(損失函數);
  3. 想辦法使得J函數最小並求得迴歸參數(θ)


構造預測函數h

Logistic迴歸雖然名字裏帶“迴歸”,但是它實際上是一種分類方法,主要用於兩分類問題(即輸出只有兩種,分別代表兩個類別),所以利用了Logistic函數(或稱爲Sigmoid函數),函數形式爲:

Sigmoid 函數在有個很漂亮的“S”形,如下圖所示(引自維基百科):

 

下面左圖是一個線性的決策邊界,右圖是非線性的決策邊界。



對於線性邊界的情況,邊界形式如下:

構造預測函數爲:


函數的值有特殊的含義,它表示結果取1的概率,因此對於輸入x分類結果爲類別1和類別0的概率分別爲:



構造損失函數J

Cost函數和J函數如下,它們是基於最大似然估計推導得到的。



下面詳細說明推導的過程:

(1)式綜合起來可以寫成:

取似然函數爲:


對數似然函數爲:


最大似然估計就是求使取最大值時的θ,其實這裏可以使用梯度上升法求解,求得的θ就是要求的最佳參數。但是,在Andrew Ng的課程中將取爲下式,即:


因爲乘了一個負的係數-1/m,所以取最小值時的θ爲要求的最佳參數。


梯度下降法求的最小值

θ更新過程:

 


θ更新過程可以寫成:

 


向量化Vectorization

Vectorization是使用矩陣計算來代替for循環,以簡化計算過程,提高效率。

如上式,Σ(...)是一個求和的過程,顯然需要一個for語句循環m次,所以根本沒有完全的實現vectorization。


下面介紹向量化的過程:

約定訓練數據的矩陣形式如下,x的每一行爲一條訓練樣本,而每一列爲不同的特稱取值:

g(A)的參數A爲一列向量,所以實現g函數時要支持列向量作爲參數,並返回列向量。由上式可知可由一次計算求得。

θ更新過程可以改爲:


綜上所述,Vectorization後θ更新的步驟如下:

(1)求

(2)求

(3)求 

 

正則化Regularization

過擬合問題

對於線性迴歸或邏輯迴歸的損失函數構成的模型,可能會有些權重很大,有些權重很小,導致過擬合(就是過分擬合了訓練數據),使得模型的複雜度提高,泛化能力較差(對未知數據的預測能力)。

下面左圖即爲欠擬合,中圖爲合適的擬合,右圖爲過擬合。


問題的主因

過擬合問題往往源自過多的特徵。

解決方法

1)減少特徵數量(減少特徵會失去一些信息,即使特徵選的很好)

  • 可用人工選擇要保留的特徵;
  • 模型選擇算法;

2)正則化(特徵較多時比較有效)

  • 保留所有特徵,但減少θ的大小

正則化方法

正則化是結構風險最小化策略的實現,是在經驗風險上加一個正則化項或懲罰項。正則化項一般是模型複雜度的單調遞增函數,模型越複雜,正則化項就越大。

從房價預測問題開始,這次採用的是多項式迴歸。左圖是適當擬合,右圖是過擬合。


直觀來看,如果我們想解決這個例子中的過擬合問題,最好能將的影響消除,也就是讓。假設我們對進行懲罰,並且令其很小,一個簡單的辦法就是給原有的Cost函數加上兩個略大懲罰項,例如:


這樣在最小化Cost函數的時候,

正則項可以取不同的形式,在迴歸問題中取平方損失,就是參數的L2範數,也可以取L1範數。取平方損失時,模型的損失函數變爲:


lambda是正則項係數:

  • 如果它的值很大,說明對模型的複雜度懲罰大,對擬合數據的損失懲罰小,這樣它就不會過分擬合數據,在訓練數據上的偏差較大,在未知數據上的方差較小,但是可能出現欠擬合的現象;
  • 如果它的值很小,說明比較注重對訓練數據的擬合,在訓練數據上的偏差會小,但是可能會導致過擬合。

正則化後的梯度下降算法θ的更新變爲:


正則化後的線性迴歸的Normal Equation的公式爲:



其他優化算法

  • Conjugate gradient method(共軛梯度法)
  • Quasi-Newton method(擬牛頓法)
  • BFGS method
  • L-BFGS(Limited-memory BFGS)

後二者由擬牛頓法引申出來,與梯度下降算法相比,這些算法的優點是:

  • 第一,不需要手動的選擇步長;
  • 第二,通常比梯度下降算法快;

但是缺點是更復雜。

 

多類分類問題

對於多類分類問題,可以將其看做成二類分類問題:保留其中的一類,剩下的作爲另一類。

對於每一個類 i 訓練一個邏輯迴歸模型的分類器,並且預測y = i時的概率;對於一個新的輸入變量x, 分別對每一個類進行預測,取概率最大的那個類作爲分類結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章