什麼是邏輯迴歸?
Logistic迴歸與多重線性迴歸實際上有很多相同之處,最大的區別就在於它們的因變量不同,其他的基本都差不多。正是因爲如此,這兩種迴歸可以歸於同一個家族,即廣義線性模型(generalizedlinear model)。
這一家族中的模型形式基本上都差不多,不同的就是因變量不同。
- 如果是連續的,就是多重線性迴歸;
- 如果是二項分佈,就是Logistic迴歸;
- 如果是Poisson分佈,就是Poisson迴歸;
- 如果是負二項分佈,就是負二項迴歸。
Logistic迴歸的因變量可以是二分類的,也可以是多分類的,但是二分類的更爲常用,也更加容易解釋。所以實際中最常用的就是二分類的Logistic迴歸。
Logistic迴歸的主要用途:
- 尋找危險因素:尋找某一疾病的危險因素等;
- 預測:根據模型,預測在不同的自變量情況下,發生某病或某種情況的概率有多大;
- 判別:實際上跟預測有些類似,也是根據模型,判斷某人屬於某病或屬於某種情況的概率有多大,也就是看一下這個人有多大的可能性是屬於某病。
Logistic迴歸主要在流行病學中應用較多,比較常用的情形是探索某疾病的危險因素,根據危險因素預測某疾病發生的概率,等等。例如,想探討胃癌發生的危險因素,可以選擇兩組人羣,一組是胃癌組,一組是非胃癌組,兩組人羣肯定有不同的體徵和生活方式等。這裏的因變量就是是否胃癌,即“是”或“否”,自變量就可以包括很多了,例如年齡、性別、飲食習慣、幽門螺桿菌感染等。自變量既可以是連續的,也可以是分類的。
常規步驟
Regression問題的常規步驟爲:
- 尋找h函數(即hypothesis);
- 構造J函數(損失函數);
- 想辦法使得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, 分別對每一個類進行預測,取概率最大的那個類作爲分類結果: