上一篇 ※※※※※※※※ 【回到目錄】 ※※※※※※※※ 下一篇html
以前的章節介紹的都是迴歸問題,接下來是分類問題。所謂的分類問題是指輸出變量爲有限個離散值,好比正確或錯誤、0或一、是或否等等。咱們將首先從二元分類問題開始討論,可將分類總結成 y ∈ { 0 , 1 },,其中 0 表示負向類,1 表示正向類。
算法
Logistic迴歸與線性迴歸有一個主要的區別,在線性迴歸中,ℎ𝜃(𝑥)的值能夠小於0,也能夠大於1;而在Logistic迴歸中,ℎ𝜃(𝑥)的值在 0 - 1 的範圍內。因此這個算法的性質是:它的輸出值永遠在0 - 1 之間。編程
注意:Logistic迴歸是一種分類算法。雖然它也被稱爲迴歸,但其實是分類算法,適用於輸出變量y取離散值的狀況。微信
在上節中咱們介紹了,分類器的輸出值在 0 和1 之間。所以,咱們但願找出一個知足該性質的假設函數,即預測值要在 0 和1 之間。咱們能夠將 ℎ𝜃(𝑥) 視爲某種狀況的機率,如正確或者錯誤的機率:機器學習
當ℎ𝜃(𝑥) >= 0.5時,預測 𝑦 = 1。 好比一件事情爲正確的機率大於0.5,那麼咱們就認爲它是正確的(取1);編程語言
當ℎ𝜃(𝑥) < 0.5時,預測 𝑦 = 0。 好比一件事情爲正確的機率大於0.5,那麼咱們就認爲它是錯誤的(取0)。函數
引入新的模型:邏輯迴歸,該模型的輸出變量範圍始終在 0 和 1 之間。邏輯迴歸的假設函數的模型是: ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑋) ,其中: 𝑋 表明特徵向量 ,𝑔 表明S形函數(sigmoid函數),公式:\[g(z) = \frac{1}{{1 + {e^{ - z}}}}\]學習
所以:\[{{\rm{h}}_\theta }(x) = \frac{1}{{1 + {e^{ - {\theta ^T}x}}}}\]優化
S形函數的圖像爲:spa
如上文中所談,ℎ𝜃(𝑥)的做用是:對於給定的輸入變量,根據選擇的參數計算輸出變量=1 的可能性,即ℎ𝜃(𝑥) = 𝑃(𝑦 = 1|𝑥;𝜃) 。例如,對於給定的 x ,經過已經肯定的參數計算得出:ℎ𝜃(𝑥) = 0.7,則表示有70%的概率 y 爲正向類,相應地 y 爲負向類的概率爲1 - 0.7 = 0.3。
對於線性可分的分類狀況,能夠用簡單的線性模型進行分類。以下圖所示:
對於複雜的分析狀況,可能須要加入二次方特徵,使得 ℎ𝜃(𝑥) = 𝑔(𝜃0 + 𝜃1𝑥1 + 𝜃2𝑥2 + 𝜃3𝑥12 + 𝜃4𝑥22)。以下圖所示:
因而可知,斷定邊界並非訓練集的屬性,而是假設函數自己及其參數的屬性。只要給定了參數向量 𝜃 ,就能夠獲得斷定邊界。咱們能夠用很是複雜的模型來適應很是複雜形狀的斷定邊界。
非凸函數中局部最優解太多,可能會致使沒法收斂到全局最小值。引出須要找到一個非凸的代價函數。
須要從新定義代價函數爲:,其中
第一種狀況:y = 1 時,ℎ𝜃(𝑥)與 𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦)之間的關係圖:
(1) 當實際的y = 1,且ℎ𝜃(𝑥) = 1 時: cost = - log( ℎ𝜃(𝑥) ) = 0。就是說ℎ𝜃(𝑥)與實際狀況y一致時,代價函數爲0
(2) 當實際的y = 1,且ℎ𝜃(𝑥) ≠ 1 時: 隨着ℎ𝜃(𝑥)的減少,cost = - log( ℎ𝜃(𝑥) ) 逐漸增大。也就是說ℎ𝜃(𝑥)與實際狀況 y 之間相差越大,代價函數的值也就越大。
第二種狀況:y = 0 時,ℎ𝜃(𝑥)與 𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦)之間的關係圖:
(1) 當實際的y = 0,且ℎ𝜃(𝑥) = 0 時: cost = - log( ℎ𝜃(𝑥) ) = 0。就是說ℎ𝜃(𝑥)與實際狀況y一致時,代價函數爲0
(2) 當實際的y = 0,且ℎ𝜃(𝑥) ≠ 0 時: 隨着ℎ𝜃(𝑥)的增長,cost = - log( 1 - ℎ𝜃(𝑥) ) 逐漸增大。也就是說ℎ𝜃(𝑥)與實際狀況 y 之間相差越大,代價函數的值也就越大。
咱們將構建的 𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦) 簡化以下:
𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦) = −𝑦 × 𝑙𝑜𝑔(ℎ𝜃(𝑥)) − (1 − 𝑦) × 𝑙𝑜𝑔(1 − ℎ𝜃(𝑥))
代入代價函數中獲得:
在獲得這樣一個代價函數之後,咱們即可以用梯度降低算法來求得能使代價函數最小的參數了。
對 J(𝜃) 的求導,熟悉高等數學的能夠推導一下。個人推導用鉛筆寫的很潦草,這裏附上黃廣海博士的推導過程:
ps:若是看起來比較蒙的話,能夠不把ℎ𝜃(𝑥)分解開,將其視爲一個總體來推導,其中ℎ𝜃(𝑥)的導數 = ℎ𝜃(𝑥) *(1 - ℎ𝜃(𝑥))
如今,若是你把這個更新規則和咱們以前用在線性迴歸上的進行比較的話,你會驚訝地發現,這個式子正是咱們用來作線性迴歸梯度降低的。
可是對於線性迴歸:假設函數爲 對於邏輯迴歸:假設函數爲
所以,即便更新參數的規則看起來基本相同,但因爲假設的定義發生了變化,因此邏輯函數的梯度降低,跟線性迴歸的梯度降低其實是兩個徹底不一樣的東西。
咱們在最小化代價函數中應用到了梯度降低的方法,實際上除了梯度降低法,還有不少優秀的算法來計算代價函數𝐽(𝜃)和其偏導數,從而最小化代價函數。其餘優化代價函數的方法有:共軛梯度法 BFGS (變尺度法) 和 L-BFGS (限制變尺度)等。關於這些優化算法的細節,能夠參考該文章:【優化算法】MATLAB/Octave或者其餘的一些編程語言中,並不須要本身實現這些高級算法,通常均可以找到實現這些算法的庫,調用這些庫就好啦,除非你是吳恩達所提的專門研究數值計算的人 =_=
在以前的內容中主要講的是二元分類,即 y ∈ { 0 , 1 }。在二元分類中,咱們的數據看起來多是像這樣:
可是在多元分類問題是,數據看起來是這樣的:
在前文中,咱們已經學習瞭如何利用邏輯迴歸進行二元分類,而在多元分類中,咱們利用的依舊是二元分類的思想:即將其中一類視爲1,其餘的所有歸類於0,這個模型記做ℎ𝜃(1)(𝑥);接着,相似地第咱們選擇另外一個類標記爲正向類(𝑦 = 2),再將其它類都標記爲負向類,將這個模型記做 ℎ𝜃(2)(𝑥),依此類推。
咱們利用 k 個ℎ𝜃(𝑥),每一個ℎ𝜃(𝑥)都表明着某一種類別。好比ℎ𝜃(i)(𝑥)表明第 i 種類別,而後在這 k 個ℎ𝜃(𝑥)中找到那個使得ℎ𝜃(𝑥)最大的 i ,不管 i 值是多少,咱們都有最高的機率值,咱們預測𝑦就是那個值。
以上,就是吳恩達機器學習課程第七章的主要內容。