機器學習羅吉斯迴歸演算法

來源:互聯網
上載者:User
本文內容資源來自 Andrew Ng 在 Coursera上的 Machine Learning 課程,在此向 Andrew Ng 致敬。

斯坦福大學機器學習第六課”羅吉斯迴歸“學習筆記,本次課程主要包括7部分:
1) Classification(分類)
2) Hypothesis Representation(建模)
3) Decision boundary(決策邊界)
4) Cost function(代價函數,成本函數)
5) Simplified cost function and gradient descent(簡化版代價函數及梯度下降演算法)
6) Advanced optimization(其他最佳化演算法)
7) Multi-class classification: One-vs-all(多類分類問題)

1) Classification(分類)
分類問題舉例:
郵件:垃圾郵件/非垃圾郵件。
線上交易:是否欺詐(是/否)。
腫瘤:惡性/良性。
以上問題可以稱之為二分類問題,可以用如下形式定義:

其中0稱之為負向類,1稱之為正向類。

2)分類問題建模
如果分類器用的是迴歸模型,並且已經訓練好了一個模型,可以設定一個閾值:
如果hθ(x)≥0.5,則預測y=1,既y屬於正例;
如果hθ(x)<0.5,則預測y=0,既y屬於負例;
如果是線性迴歸模型,對於腫瘤這個二分類問題,圖形表示如下:

可以看到,線性迴歸對預測腫瘤類別處理的並不好。且對於二分類問題來說,線性迴歸模型的Hypothesis輸出值hθ(x)可以大於1也可以小於0。

我們引入一個新的模型,羅吉斯迴歸,該模型的輸出變數方位始終在0和1之間。
羅吉斯迴歸模型的假設是: hθ(x)=g(θTX)
其中:
X代表特徵向量
g代表邏輯函數(logistic function),是一個常用的邏輯函數,也稱為S形函數(Sigmoid function),公式為:
g(z)=11+e−z
該函數映像為:

合起來,我們得到羅吉斯迴歸模型的假設:
g(z)=11+e−θTX
hθ(x) 的作用為,對於給定的輸入變數,根據選擇的參數計算輸出輸出變數=1的 可能性,即 hθ(x)=P(y=1|x;θ)

例如,如果對於給定的x,通過已經確定的參數計算得出hθ(x)=0.7,則表示有百分之70的幾率y為正向類,相應地y為負向類的幾率為1-0.7=0.3。

3) Decision boundary(決策邊界)
如上節所述,羅吉斯迴歸模型可以如下表示:

假設給定的閾值是0.5,當hθ(x)≥0.5時, y = 1;
當hθ(x)<0.5時,y = 0;
再次回顧sigmoid function的圖形,也就是g(z)的圖形:
當g(z)≥0.5時, z≥0;
對於hθ(x)=g(θTx)≥0.5, 則θTx≥0, 此時意味著預估y=1;
反之,當預測y = 0時,θTx<0;
我們可以認為θTx = 0是一個決策邊界,當它大於0或小於0時,羅吉斯迴歸模型分別預測不同的分類結果。例如,

hθ(x)=g(θ0+θ1x1+θ2x2)

θ0,θ1,θ2 分別取-3, 1, 1,

則當-3+x1+x2大於等於0,即x1+x2大於等於3時,模型將預測y=1。
我們可以繪製直線x1+x2=3,這條線便是我們模型的分界線,將預測為1的地區和預測為0的地區分隔開。

假使我們的資料呈現這樣的分布情況,怎樣的模型才能適合呢。

因為需要用曲線才能分隔y=0的地區和y=1的地區,我們需要二次方特徵:
hθ(x)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x22)

假設參數是[-1 0 0 1 1],則我們得到的判定邊界恰好是圓點在原點且半徑為1的圓形。
我們可以用非常複雜的模型來適應非常複雜形狀的判定邊界。

4) Cost function(代價函數,成本函數)
對於線性迴歸模型,我們定義的代價函數是所有模型誤差的平方和。理論上來說,我們也可以對羅吉斯迴歸模型沿用這個定義,但是問題在於,當我們將 hθ(x)=11+e−θTX 帶入到這樣定義了的代價函數中時,我們得到的代價函數將是一個非凸函數(non-convex function)

我們知道,線性迴歸的Cost Function是凸函數,具有碗狀的形狀,而凸函數具有良好的性質:對於凸函數來說局部最小值點即為全域最小值點,因此只要能求得這類函數的一個最小值點,該點一定為全域最小值點。

因此,上述的Cost Function對於羅吉斯迴歸是不可行的,我們需要其他形式的Cost Function來保證羅吉斯迴歸的成本函數是凸函數。
因此我們重新定義羅吉斯迴歸的代價函數為:

直觀的來解釋這個Cost Function,首先看當y=1的情況:

直觀來看, 如果y = 1, hθ(x)=1,則Cost = 0,也就是預測的值和真實的值完全相等的時候Cost =0;
但是,當hθ(x)→0時, Cost→∞
直觀來看,由於預測的結果南轅北轍:
如果hθ(x)=0, 也就是預測P(y=1|x;θ)=0,也就是y=1的機率是0,但是實際上y = 1
因此對於這個學習演算法給予一個很大的Cost的懲罰。
同理對於y=0的情況也適用:

總結:這樣構建的Cost(hθ(x),y)函數的特點是:當實際的y=1且hθ也為1時誤差為0,當y=1但hθ不為1時誤差隨著hθ的變小而變大;當實際的y=0且hθ也為0時代價為0,當y=0但hθ不為0時誤差隨著hθ的變大而變大。

5) Simplified cost function and gradient descent(簡化版代價函數及梯度下降演算法)
將構建的Cost(hθ(x),y)簡化如下:

帶入代價函數得到:


對於這個公式,這裡稍微補充一點,注意中括弧中的公式正是對羅吉斯迴歸進行最大似然估計中的最大似然函數,對於最大似然函數求最大值,從而得到參數(\theta)的估計值。反過來,這裡為了求一個合適的參數,需要最小化Cost function,也就是:
minθJ(θ)
與線性迴歸相似,這裡我們採用梯度下降演算法來學習參數θ,
演算法為:

對J(θ)求導後,梯度下降演算法如下:

註:雖然得到的梯度下降演算法表面上看上去與線性迴歸的梯度下降演算法一樣,但是這裡的hθ(x)=g(θTX)與線性迴歸中不同,所以實際上是不一樣的。另外,在運行梯度下降演算法之前,進行 特徵縮放依舊是非常必要的。
補充:羅吉斯迴歸中代價函數定義為J(θ),在梯度下降過程中需要使得代價函數J(θ)最小,需要對θ求偏微分,過程如下:

6) Advanced optimization(其他最佳化演算法)
除了梯度下降演算法以外還有一些常被用來令代價函數最小的演算法,這些演算法更加複雜和優越,而且通常不需要人工選擇學習率,通常比梯度下降演算法要更加快速。這些演算法有:共軛梯度(Conjugate Gradient),局部最佳化法(Broyden fletcher goldfarb shann,BFGS)和有限記憶體局部最佳化法(LBFGS)
minunc是matlab和octave中都帶的一個最小值最佳化函數,使用時我們需要提供代價函數和每個參數的求導,下面是octave中使用fminunc函數的程式碼範例:

function [jVal, gradient] = costFunction(theta)    jVal = [...code to compute J(theta)...];    gradient = [...code to compute derivative of J(theta)...]; end;options = optimset('GradObj', 'on', 'MaxIter', '100'); initialTheta = zeros(2,1); [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

7) Multi-class classification: One-vs-all(多類分類問題)
多類分類問題中,我們的訓練集中有多個類(>2),我們無法僅僅用一個二元變數(0或1)來做判斷依據。例如我們要預測天氣情況分四種類型:晴天、多雲、下雨或下雪。

下面是一個多類分類問題可能的情況:


一種解決這類問題的途徑是採用一對多(One-vs-All)方法。在一對多方法中,我們將多類分類問題轉化成二元分類問題。為了能實現這樣的轉變,我們將多個類中的一個類標記為正向類(y=1),然後將其他所有類都標記為負向類,這個模型記作 h(1)θ(x) 。接著,類似地第我們選擇另一個類標記為正向類(y=2),再將其它類都標記為負向類,將這個模型記作 h(2)θ(x) ,依此類推。

最後我們得到一系列的模型簡記為:
h(i)θ=P(y=i|x;θ)

最後,在我們需要做預測時,我們將所有的分類機都運行一遍,然後對每一個輸入變數,都選擇最高可能性的輸出變數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.