Coursera:Standford Machine Learning Week 3 筆記

邏輯斯迴歸(Logistic Regression)


分類及結構(Classification and Representation)

分類(Classification)

在分類問題中,你要預測的 y 是離散值。這裡將學習一種邏輯斯迴歸(Logistic Regression)的演算法,下面是一些分類的例子:

  • e-mail:垃圾郵件/非垃圾郵件
  • 線上交易:詐欺/非詐欺
  • 腫瘤:良性/惡性

上述的例子皆為二元分類問題(Binary Classification Problem),y 只取 0 和 1 兩個值。

邏輯斯迴歸始終是一種分類演算法,注意別和線性迴歸混淆,分類並不是線性函數。

假設結構(Hypothesis Representation)

在分類問題中,我們要用什麼樣的函數來表示假設函數?

我們希望 hθ(x) 滿足於 [0, 1] 的區間內:

Logistic Regression Hypothesis Representation

g(z) 稱為邏輯函數(Sigmoid Function / Logistic Function),它會將任意實數映射至 (0, 1) 區間。

Sigmoid Function / Logistic Function

從上圖我們可以發現:

解讀假設函數的輸出(Interpreting Hypothesis Output)

  • 我們將 hθ(x) 該值視為輸出 x 後 y = 1 的機率值

決策邊界(Decision Boundary)

決策邊界是假設函數的一個性質,我們可以使用假設函數和參數來創建一個決策邊界,不需通過任何的資料集。創建決策邊界之後,我們在使用資料去配適(fitting)參數 θ

  • hθ(x) 大於等於 0.5 則判定 y = 1
  • 為此決策邊界(Decision Boundary)會分隔出 y = 0 和 y = 1 的區域
Decision Boundary

非線性決策邊界(Non-Linear Decision Boundaries)

透過高階方程式,我們可以得到更複雜的決策邊界。

Non-Linear Decision Boundaries

邏輯斯迴歸模型(Logistic Regression Model)

在先前的線性迴歸中,它的成本函數是其預測結果與實際結果的差值平方。

Linear Regression Cost Function

假設邏輯斯迴歸使用同樣的函數,最終參數 θ 會是非凸函數(Non-Convex),非凸函數不是一個單調遞增的函數。

邏輯斯迴歸的成本函數(Logistic Regression Cost Function)

當預測結果為 1 的機率越趨近於 0(上圖的 hθ(x) 越靠近 0 ),會以巨大的成本來懲罰學習演算法。

若預測結果為 1 的機率正好為 1,則成本恰好為 0(並非趨近於 0,從上圖可以得知是一個實心點)。

進階課程

Convex Analysis and Optimization:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-253-convex-analysis-and-optimization-spring-2012/index.htm

Convex Optimization:http://www.stat.cmu.edu/~ryantibs/convexopt/

簡化成本函數(Simplified Cost Function)

我們可以試著把上述的成本函數簡化成一條式子:

Logistic Regression Cost Function

此函數是由最大概似估計 Maximum Likelihood Estimation 導出,這也表示其有一個潛在的假設:特徵值的分配為常態分配。

  • 向量化(Vectorized)

梯度下降法(Gradient Descent)

Gradient Descent For Logistic Regression
  • 向量化(Vectorized)

進階最佳化(Advanced Optimization)

其他最佳化的演算法:

  • 共軛梯度法(Conjugate Gradient)

延伸資料:https://ch-hsieh.blogspot.tw/2014/03/conjugate-direction-methods-2-conjugate.html

  • BFGS

延伸資料:http://blog.csdn.net/itplus/article/details/21897443

  • L-BFGS

延伸資料:http://blog.csdn.net/itplus/article/details/21897715

它們比 Gradient Descent 更快速,而且不需要指定 α 值,但也更複雜。它們有一個內部迴圈,稱作線搜索(Line Search)可自動嘗試不同的學習速率 α ,並選擇較好的,甚至可以為每次迭代選擇不同的學習速率。

你可以直接在 Octave/Matlab 內調用這些複雜的演算法:

function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
gradient = [...code to compute derivative of J(theta)...];
end
  • fminunc()
options = optimset('GradObj', 'on', 'MaxIter', 100);
% GradObj 設置梯度目標參數為打開 (on)
% MaxIter 設置最大跌代次數 100
initialTheta = zeros(2,1);
% 設定初始值,一般設為 0
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
% @ 表示指向剛剛的 Cost Function

多元分類(Multiclass Classification)

一對多(One-vs-all)

假如你今天要做的是病人的分類,你可能希望你的 y 有沒有生病、感冒或流感三個分類。

上圖將訓練集切分為三個二元分類問題。

你可以得到三條不同的決策邊界(Decision Boundary),也就是三種不同的假設(Hypothesis)。

然後選擇其機率最大的一方,決定它會落在哪一類。

  • n + 1 類的情況

正規化(Regularization)


解決過度配適的問題(Solving the Problem of Overfitting)

若太過追求參數可以完美預測出訓練資料(可能其特徵值太多而產生太過複雜的假設函數),最後建立出的模型會因其過度配適(Overfitting,或稱過度凝合)訓練資料,而導致真實的預測效果不佳,也表示這個模型具有高變異(High Variance)。

If we have too many features, the learned hypothesis may fit the training set very well (J(θ) = 0), but fail to generalize to new examples.

反之,如果模型沒有很好的配適訓練資料,我們則稱為缺乏配適(Underfitting,或稱凝合不足),表示其模型具有高偏誤(High Bias)。

奧坎的剃刀(Occam’s Razor)

線性迴歸(Linear Regression)

邏輯斯迴歸(Logistic Regression)

解決過度配適(Addressing Overfitting)

  1. 降低特徵值的數量:可以透過人工選擇應該保留的特徵值或使用模型選擇演算法(Model Selection Algorithm)來決定。
  2. 正規化(Regularization):保留所有的特徵值,但降低其參數數值(magnitude/values of parameters θj )的大小,減弱較不重要的特徵值的影響力。

在上述式子中,我們利用一個極大的常數 1000 使 θ3θ4 趨近於 0 ,降低其影像力使函數平滑(Smoothing)成二次式。

因此,我們可以在式子後添加所謂的正規項,而截距項 θ0 並不會對模型產生太大的影響。

λ:正規化參數(Regularization Parameter),表示我們對預測誤差和正規項的取捨,如果其值越大,模型會越不重視預測落差並壓低 θ 值,但如果你將 λ 設得太大,可能會導致缺乏配適(Underfitting)。

從正規項中,你會發現 λ 會將所有的參數值 θ 都縮小。這是因為,實務上我們通常不知道如何去選取該縮小的參數,尤其是在特徵值很多的時候,因此我們會將所有參數 θ 的影響力一視同仁。

後續,我們會討論該如何去選擇 λ 值。

線性迴歸的正規化(Regularization For Linear Regression)

之前的課程中,我們研究了兩種線性迴歸的演算法:

  • 梯度下降法(Gradient Descent)
  • 正規方程式(Normal Equation)

正規化線性迴歸的成本函數(Regularized Linear Regression Cost Function)

Regularized Linear Regression Cost Function

正規化線性迴歸的梯度下降法(Gradient Descent For Regularized Linear Regression)

梯度下降法會重複地更新 θj ,其中 j = 0,1,2…n。實際上,後面那一樣是正規化 J(θ) 的偏導數。

所以,我們也可以把上述兩條式子合併:

Gradient Descent For Regularized Linear Regression

正規化的梯度下降法與一般的正規下降法的差別就在下面這一項:

Regularization Term
  • 通常學習速率(Learning Rate)很小,m 很大
  • 因此這個值只略小於 1,可能是 0.95 至 0.95 之間,所以它只將 θj 向 0 壓縮了一點

正規化線性迴歸的正規方程式(Normal Equation For Regularized Linear Regression)

Normal Equation For Regularized Linear Regression

不可逆性(Non-Invertibility / Singular)

假設我們的特徵值數項小於等於我們的總樣本數,正規化(Regularization)也會解決我們在 Week 2 正規方程式的不可逆性(Normal Equation Noninvertibility)中提到的不可逆(Non-Invertibility / Singular)矩陣的問題(只要 λ 嚴格大於 0 ,即可證明上述式子中括號內的矩陣式可逆的)。

如果對其證明有興趣,可以參考這篇:How to prove this regularized matrix is invertible?

邏輯斯迴歸的正規化(Regularization For Logistic Regression)

Overfitting

邏輯斯迴歸的成本函數(Logistic Regression Cost Function)

Logistic Regression Cost Function

正規化的邏輯斯迴歸的成本函數(Regularized Logistic Regression Cost Function)

Regularized Logistic Regression Cost Function

正規化邏輯斯迴歸的梯度下降法(Gradient Descent For Regularized Logistic Regression)

Gradient Descent For Regularized Logistic Regression

從上述式子可以看到,除了假設函數不同以外,基本上和線性迴歸是相同的。

進階最佳化(Advanced Optimization)

補充閱讀

机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合? — 知乎