通俗地說邏輯迴歸【Logistic regression】算法(一)

在說邏輯迴歸前,仍是得提一提他的兄弟,線性迴歸。在某些地方,邏輯迴歸算法和線性迴歸算法是相似的。但它和線性迴歸最大的不一樣在於,邏輯迴歸是做用是分類的。html

還記得以前說的嗎,線性迴歸其實就是求出一條擬合空間中全部點的線。邏輯迴歸的本質其實也和線性迴歸同樣,但它加了一個步驟,邏輯迴歸使用sigmoid函數轉換線性迴歸的輸出以返回機率值,而後能夠將機率值映射到兩個或更多個離散類。java

若是給出學生的成績,比較線性迴歸和邏輯迴歸的不一樣以下:算法

  • 線性迴歸能夠幫助咱們以0-100的等級預測學生的測試分數。線性迴歸預測是連續的(某個範圍內的數字)。
  • Logistic迴歸能夠幫助預測學生是否經過。邏輯迴歸預測是離散的(僅容許特定值或類別)。咱們還能夠查看模型分類背後的機率值。

一.從迴歸到分類的核心 --Sigmoid Function

以前介紹線性迴歸的時候,它的函數是這樣樣子的:編程

h(x)=θ0 + θ1 * x1 + θ2 * x2 + θ3 * x3 ...函數式編程

但這樣的函數是沒辦法進行分類的工做的,因此咱們要藉助一下其餘函數,那就是Sigmoid Function。函數

咱們先來看看這個Sigmoid Function長什麼樣,Sigmoid Function的數學公式是這樣子的:oop

Sigmoid函數

若是表示在平面座標軸上呢,那它長這個樣子。
Sigmoid函數的座標軸測試

這個Sigmoid Function能夠將線性的值,映射到[0-1]這個範圍中。若是映射結果小於0.5,則認爲是負的樣本,若是是大於0.5,則認爲是正的樣本。大數據

比方說要對垃圾郵箱進行分類,分垃圾郵箱和正常郵箱。當這個Sigmoid Function的計算出來後,小於0.5,則認爲是垃圾郵箱,大於0.5則是非垃圾郵箱。htm

原先線性迴歸的計算公式是這樣的:
線性迴歸公式

那麼將這個z函數代入到Sigmoid Function中,OK,如今咱們就有了一個邏輯迴歸的函數了。

邏輯迴歸的公式

二.代價函數Cost Function

和線性迴歸同樣,邏輯迴歸也有代價函數。而且都是經過最小化Cost Function來求得最終解的。

咱們先來看單個點的狀況,
代價函數

這個代價函數呢,叫作交叉熵,其中y(i)指的是預測的結果,而hθ(xi)指的是xi這個點本來的值。

那麼它具體是什麼意思呢,爲何叫作交叉熵?咱們舉兩個極端的例子看看就明白了:

1.xi原始值hθ=1,預測結果,yi=1的狀況

極端狀況下的Sigmoid函數1

這個時候,代價函數的加號右邊會被消掉,由於右邊(1-y(i))是0,左邊部分呢,由於hθ(xi)=1,故而log(1)=0。

y(i)log(hθ(xi)) = 1 * log(0) = 0

也就是說,若xi原始值是1,當預測值y=1的時候,代價函數是0的。這個也比較好理解,代價函數爲0就是說預測結果和原始結果徹底一致的,沒有半點出差錯。

2.計算結果,yi=0,原始值hθ=0

極端狀況下的Sigmoid函數2

此次的結果就和上面的反過來了,由於yi=0,因此左邊部分全軍覆沒,來看右邊,

(1-yi) * log(1-hθ(xi)) = 1 * log(0) = 0

由於1-hθ(xi),最終結果仍是等於0。

也就是說,這個損失函數,只要原始值與預測結果越相符,損失函數就越大,反之,損失函數就會越小。

以上說的只是一個點的狀況,實際的代價函數,是要計算全部點的損失函數的均值,以下所示:

變換的損失函數

三.梯度降低

和線性迴歸同樣,邏輯迴歸的解法也能夠經過梯度降低來進行求解。梯度降低的目的,是爲了最小化代價函數Cost function。

要求使用梯度降低,須要先求解偏導數,如下是求導數的一個具體過程:
求導過程

而梯度降低的計算方法也和線性迴歸的計算方法是同樣的。只是其中的代價函數,換成了邏輯迴歸的代價函數。

其中,α右邊部分對應咱們上面對代價函數求偏導的結果。而α是用來控制訓練速率的,這個在線性迴歸那裏已經有說到,這裏就再也不介紹了。

最終就是對θj不斷迭代,直到損失函數降到最小,那就能夠求出咱們要的θ值了。

四.小結

OK,今天介紹了線性迴歸和邏輯迴歸的區別,一樣都是迴歸分析,邏輯迴歸能完成分類任何的核心,就算使用了Sigmoid Function。

這裏留一個小問題,上面所述的邏輯迴歸,一般是僅僅可以進行二分類,那有沒有辦法來讓邏輯迴歸實現多分類呢?

下一次將闡述用邏輯迴歸進行多分類,以及正則化相關內容,並介紹sklearn的邏輯迴歸參數和用法!!

以上~~


推薦閱讀:
通俗得說線性迴歸算法(一)線性迴歸初步介紹
通俗得說線性迴歸算法(二)線性迴歸初步介紹
Scala 函數式編程指南(一) 函數式思想介紹
通俗地說決策樹算法(二)實例解析
大數據存儲的進化史 --從 RAID 到 Hadoop Hdfs
C,java,Python,這些名字背後的江湖!

相關文章
相關標籤/搜索