邏輯迴歸

前言

邏輯迴歸與線性迴歸都是迴歸,使用什麼迴歸函數,是經過數據來決定的。算法

而邏輯迴歸的數據的特色就是「x自變量向量組對應的y值只有1和0兩個值」。函數

因此咱們天然但願能找到一種方程,將x代入,得出來的值只有1或0兩種。學習

 

根據經驗可知sigmoid函數很符合咱們的需求,sigmoid函數隨着自變量的不斷改變,其值域也在[0,1]上改變。3d

 

如今咱們要作的就是「找到x和sigmoid函數自變量的一種關係」,即:x如何變化後,經過這種「關係」,能夠將x變化後的結果映射到sigmoid函數的自變量上,而後獲得具體的因變量y值。而這個關係就是某個函數,能夠是線性的也但是非線性的。blog

這段話挺抽象的。。。再具體說下:事件

sigmoid函數函數有自變量和因變量。變量

咱們但願找到咱們樣本值x和sigmoid函數因變量之間的關係。im

但咱們不能直接把x代到sigmoid函數的自變量中,由於sigmoid函數的自變量並不必定符合咱們的樣本參數,咱們須要「定製化的sigmoid函數」(這段話也挺抽象的。。下面會給解釋)經驗

因此咱們須要一個「函數關係」,把x代入函數關係,而後再代入sigmoid函數。數據

即:sigmoid函數爲:ϕ(z),其中z(x)又是個關於x的函數(通常定義爲線性函數)

 

邏輯迴歸也是屬於迴歸方程,同線性迴歸同樣,咱們同樣要「根據所給的樣本參數求出代價函數」。

(大體回顧一下以前的代價函數例子)

咱們有一大堆已經分好類的樣本參數(這是大前提)

 

咱們如今要作的就是根據這一大堆的「已經知道結果」的樣本參數,來找到一個迴歸方程,(重點)「使得這些樣本參數代入此迴歸方程的結果與咱們已知的正確結果相同」(如,假設這些樣本參數都是平面上的點,那麼這些點的x和y座標咱們都是知道的了。代入x進迴歸方程後都能獲得結果,其結果要和咱們已知的y保持一致性)。

 

這個時候咱們要作的其實就是選擇「合適的迴歸方程」做爲模型。在將咱們知道的樣本數據帶進去,把這個迴歸方程「定製」成符合咱們問題的方程。

 

最後的這個定製化的模型算法就是咱們「學習後的成果」。

通常這種問題都會有兩部分參數:一部分是已知的樣本參數,經過這部分參數咱們能訓練出模型。

另外一部分是「不知道結果」的參數,咱們能夠經過模型來「預測」出這些參數的結果。

 

結論

一、其實這個「把已知的樣本參數代入咱們選擇的模型中,而後將模型定製化」的過程就是一個「學習過程」,並且咱們很容易看出,咱們的樣本參數越多,最後訓練出來的模型也越準確。

 

二、一個模型只能適用於某一種類型的數據或問題。適用於什麼場景與咱們的樣本參數有很大關係,由於模型是咱們用同一問題場景的樣本參數訓練出來的,他之後能接收的參數天然也是該場景下的參數。

 

三、目前分類問題都是這麼個流程

步驟可化簡爲:

有已知結果的樣本參數。

選擇一個合適的算法模型(此處的選擇更多的是根據業務場景憑藉經驗和知識選擇出來的,這也是最考驗人的地方)。

將咱們擁有的「已知結果的樣本參數」代入咱們選擇的模型中(其中還會涉及代價函數的問題),將模型「訓練」成更符合咱們問題的模型(如此處的規劃模型,實際上每種規劃模型的區別只在常量向量θ上,而代入不一樣樣本參數,最終咱們能獲得的常量向量θ都不同,而有明確的常量向量θ的模型就是咱們須要的「定製模型」)

最後,咱們就能用這個訓練後的模型「預測」之後參數的結果。

 

邏輯迴歸的代價函數

回到邏輯迴歸問題上

 

以前的推理中咱們說了,

咱們須要根據咱們的樣本參數,把sigmoid函數訓練成咱們須要的定製化模型。

 

怎麼個訓練法?用咱們以前講代價函數的時候的通俗語言說就是:

把咱們樣本參數中的x的值代入sigmoid函數獲得的結果,「與咱們已知的x的真正結果作差別比較」,咱們但願這個結果差別很小。

而將x代入sigmoid函數求結果惟一的問題是咱們不知道sigmoid函數中的常量向量組θ應該定義多少。

因此如今咱們的問題就變成了「求解未知量θ」的問題了。

θ變成了自變量,而爲了求出θ而產生的方程就是咱們此時須要的代價方程。

 

接下來就推導一下這個邏輯迴歸的代價方程:

假設,根據數據咱們選擇線性模型做爲函數模型。

因此設函數模型爲:Z = θTX + b (θT是θ響向量的轉置,X是自變量x的向量集)

每次將Z值代入sigmoid函數,而後計算出該自變量x對應的因變量z值屬於「1分類」仍是「0分類」。

因此咱們的sigmoid函數ϕ(z)以下:

 

 

首先咱們先嚐試套用線性迴歸中的代價函數,即便用偏差平方和公式來當代價函數。獲得代價函數方程J(θ)爲:

 

 

此代價函數的圖像是一個「非凸函數」,裏面有不少局部的最小值,

因此雖然該代價方程「能夠找到θ值」,但很很差找。

 

咱們換一個角度來建立該代價函數。

ϕ(z)的值在也能夠當作是「知道某個x後,z屬於1分類的機率」,咱們將「z屬於某個分類」這個事件設爲y,y的樣本點爲0和1,「1樣本點」表明z屬於1分類事件,「0樣本點」表明z屬於0分類事件。(也能夠設別的數爲,但設0,1一個是符合事件描述,再者方便後續方程的創建,若是設別的值後續的代價函數方程雖然也能創建,但不如設0,1簡單)

 

因此P(y=1|x) = ϕ(z) ,P(y=0|x) = 1 - ϕ(z)

能夠將兩個方程合併成通常式,機率P(y|x)爲:

 

(根據以前的設,其中y=1或0)

這就是咱們邏輯迴歸的代價函數。

注意:這個代價函數中的z是個線性方程(也能夠是非線性方程),其中包含了咱們須要求出的常量向量集θ

 

與以前經過平方差公式經過距離差的方式推導的代價函數不一樣,

咱們此次選擇經過「機率」的方式,來使咱們的方程「儘量的能精準分類」。

咱們上面已經把P(y|x)公式推導出來了,P(y|x)的含義是:x爲某值的前提下,「其屬於y分類的機率」。

用於邏輯迴歸模型的數據其X自變量對應的y值只有兩種狀況,即:y=1或0(屬於1分類或0分類)。

咱們如今手裏已經有不少樣本點了,如(x1,1)、(x2,0)、(x3,1)、(x4,1)·······

假設咱們 代價函數是個很是完美的函數,以樣本點(x1,1)爲例,在咱們已經知道了該樣本點的正確分類爲1的狀況下,把x1代入咱們的代價函數,其計算出的機率P(1 | x1)應該是100%

但確定沒有那麼神的函數,因此咱們要作的就是「代入咱們已知的樣本點(x,y)後,經過選擇合適的θ向量集,讓函數的P(y|x)的結果更接近100%」

 

而後就是一些計算上的處理了:

首先咱們的樣本值不少,假設全部樣本之間相互獨立,那麼該樣本集的生機率就是各樣本點機率相乘。

因此咱們把個樣本點代入代價函數後,相乘並對整個表達式取對數(方便計算),獲得最終的關於θ的代價函數J(θ):

 

(其中的h(x)就是sigmoid函數)

 

推導此處,就能很明確的發現,如今問題已經變成了知道函數中的x和y,求:函數取最大值時θ的值。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息