1. 程式人生 > >十分鐘掌握經典機器學習演算法-邏輯迴歸

十分鐘掌握經典機器學習演算法-邏輯迴歸

機器學習故事匯-邏輯迴歸

【咱們的目標】系列演算法講解旨在用最簡單易懂的故事情節幫助大家掌握晦澀無趣的機器學習,適合對數學很頭疼的同學們,小板凳走起!

這裡寫圖片描述

今天我們要來討論的一個分類演算法-邏輯迴歸(你有沒有搞錯,這不還是迴歸嗎,雖然名字帶上了迴歸其實它是一個非常實用的分類演算法)。先來吹一吹邏輯迴歸的應用,基本上所有的機器學習分類問題都可以使用邏輯迴歸來求解,當前拿到一份資料想做一個分類任務的時候第一手準備一定要拿邏輯迴歸來嘗試(雖然有很多複雜的模型比如神經網路,支援向量機的名氣更大,但是邏輯迴歸卻更接地氣,用的最多的還是它)!在機器學習中無論是演算法的推導還是實際的應用一直有這樣的一種思想,如果一個問題能用簡單的演算法去解決那麼絕對沒必要去套用複雜的模型。

這裡寫圖片描述

在邏輯迴歸中最核心的概念就是Sigmoid函數了,首先我們先來觀察一下它的自變數取值範圍以及值域,自變數可以是任何實數(這沒啥特別的!)但是我們觀察值域的範圍是[0,1]也就是任意的一個輸入都會對映到[0,1]的區間上,我們來想一想這個區間有什麼特別的含義嗎?在我們做分類任務的時候一般我都都會認為一個數據來了它要麼是0要麼是1(只考慮二分類問題),我們其實可以更細緻一點得出來它是0或者1的可能性有多大,由此我們就得出了一個輸入屬於某一個類別的概率值,這個[0,1]不就恰好是這個概率嗎!

這裡寫圖片描述

在這裡我們的預測函式還是跟線性迴歸沒有多大差別,只不過我們將結果又輸入到Sigmoid函式中,這樣得到了資料屬於類別的概率值。在推導過程中,我們假定分類是兩個類別的(邏輯迴歸是經典的而分類器)。設定y(標籤)要麼取0要麼取1,這樣就可以把兩個類別進行整合,得到一個更直觀的表達。

這裡寫圖片描述

對於邏輯迴歸的求解,已然沿用我們上次跟大家討論的梯度下降演算法。給出似然函式,轉換對數似然(跟線性迴歸一致),但是我們現在的優化目標卻跟之前不太一樣了,線性迴歸的時候我們要求解的是最小值(最小二乘法),但是現在我們想得到的卻是使得該事件發生得最大值,為了沿用梯度下降來求解,可以做一個簡單的轉換新增一個負號以及一個常數很簡單的兩步就可以把原始問題依然轉換成梯度下降可以求解的問題。

這裡寫圖片描述

此處求導過程看起來有些長,但也都是非常非常基本的運算了,感興趣拿起一支筆來實際算算吧!

這裡寫圖片描述

最終就是引數更新了,迭代更新是機器學習的常規套路了。但是我們來簡單想一想另外的一個問題,現在我們說的邏輯迴歸是一個二分類演算法,那如果我的實際問題是一個多分類該怎麼辦呢?這個時候就需要Softmax啦,引入了歸一化機制,來將得分值對映成概率值。

最後一句話總結一下吧,任何時候(沒錯就是這麼狠)當我們一個實際任務來了,第一個演算法就是邏輯迴歸啦,可以把它當成我們的基礎模型,然後不斷改進對比!

更多機器學習經典演算法與案例講解盡在公眾號:資料先鋒,趕快加入我們吧!

這裡寫圖片描述