機器學習入門 - 快速掌握邏輯迴歸模型
主要內容 :
一、邏輯迴歸的原理
二、極大似然估計
三、邏輯迴歸的極大似然估計
四、Python中的邏輯迴歸
預告:
本文將會帶領大家一步步理解邏輯迴歸的原理,並且會用幾行程式碼快速實現一個邏輯迴歸模型訓練和預測的例子。
之後,我計劃專門用一篇文章來演示 如何評估邏輯迴歸模型的表現以及如何調優 ,這部分內容會更加 偏重於實戰 ,感興趣的同學 歡迎關注 後續的更新!
目前來看,邏輯迴歸這一經典演算法的應用極為廣泛。如果要按照應用廣度來做個排名的話,它很可能就是一哥了。從垃圾郵件分類到廣告點選預測,從商品推薦到信用欺詐檢測,到處都是它的身影。
它能得到如此廣泛的應用,除了其分類效果良好之外,最大的原因就是在輸出分類的結果時,它還能給出樣本屬於預測分類的機率,這就給了模型極好的解釋性。很多分類模型類似黑盒,我們只能知道調整了某些引數之後分類效果可能明顯提升了或者下降了,但是並不清楚某一個樣本為什麼被分到了某一類,而邏輯迴歸則不存在這一問題。今天我們就從理論到應用來扒掉邏輯迴歸的外衣,嘿嘿。
一、邏輯迴歸的原理
首先,我們知道線性迴歸的輸出值域為負無窮到正無窮,因此它不太適合直接應用於分類,一個很好的辦法就是透過一個函式,將大於0的值對映為1,小於0的值對映為0,這樣我們就可以達到分類的目的。
我們先將線性迴歸模型寫作:
現在我們要對線性迴歸的值做一個變換,即:
一種方法是令g(z)為單位階躍函式,即:
但是我們發現,它並不連續,也就不滿足單調可導的性質。因此我們找到了更好的替代品:對數機率函式,即:
對數機率函式的分佈形態為:
可以看到,對數機率函式是一種“Sigmoid”函式,它將z值轉化為一個接近0或1的y值,且當z值遠離0時,y值迅速靠近0或1。
如果我們將y視為樣本x作為正例的可能性,則1-y就是其作為反例的可能性,兩者的比值被稱作“機率”(odds,又名發生比、優勢比等),反映了x作為正例的 相對可能性 。對數機率則是對機率取對數:
我們可以將(2)式中的y視為類後驗機率估計p(y=1|x),於是(2)可以重寫為:
從(1)中我們知道:
於是:
也就是說,線性函式(0)中z的值越接近正無窮,機率就越大,樣本屬於正例的機率值就越接近1;反之,z的值越接近負無窮,樣本屬於正例的機率就越接近0。
二、極大似然估計
我們用極大似然估計法(Maximum Likelihood Estimate)來估計邏輯迴歸模型的引數,這裡我們有必要先簡單解釋一下極大似然估計。
極大似然估計的原理是找出與樣本分佈最接近的機率分佈模型,似然是指在已知結果的前提下,隨機變數分佈的最大可能。我們用經典的拋硬幣例子來理解極大似然估計。
假如我們拋了10次硬幣,其中6次為正,4次為反,那麼發生這一事件的機率為:
這裡等號右邊的部分就是似然函式,極大似然估計就是找到這樣一個P正,使得似然函式的值最大。我們用下圖來觀察隨著P正取值的變化,似然函式大小的變化趨勢:
可以看到,當P正為0.6時,似然函式達到最大,因此我們估計的P正就是0.6。這就是極大似然估計的過程。
一般來說,對於引數θ和訓練資料集X,似然函式的一般形式為:
不過在實際的計算過程中,我們常對似然函式取對數,得到對數似然函式:
我們的資料集往往由大小為N的特徵集X與目標集(分類變數)Y組成,因此(10)更常被寫作如下形式:
而極大似然估計的一般形式為:
三、邏輯迴歸的極大似然估計
我們根據(10)來寫出邏輯迴歸的對數似然函式:
其中,
可以看到,不管yi是0還是1,式(13)都成立(代入一下就知道了)。然後我們把(4)(5)代入(13),然後再整體代入(12),得到:
在最後一步,分別考慮yi=0和yi=1的情況即可得到。到了這一步以後,我們就可以透過梯度下降法、牛頓法等數值最佳化演算法來對(14)式求解得到引數(w,b)了。關於數值最佳化演算法這裡就不再贅述,接下來我們看一下如何在Python中完成邏輯迴歸模型的訓練和預測。
四、Python中的邏輯迴歸
這裡我們仍然選擇經典的iris資料集(鳶尾花)來演示如何在Python中應用邏輯迴歸模型。需要注意的是,雖然我們上邊演示的推導過程為二元邏輯迴歸,但是其推導是可以推廣到多元邏輯迴歸過程的。這裡的鳶尾花資料集中,目標變數有三種分類水平,就是一個多元邏輯迴歸的例子,而強大的sklearn對於多元邏輯迴歸提供了原生的支援。
from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split iris = load_iris() X = iris.data y = iris.target X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) logr = LogisticRegression(solver='newton-cg', multi_class='multinomial') logr.fit(X_train, y_train) y_pred = logr.predict(X_test) acc = sum(y_pred == y_test)/len(y_pred) print('準確率:{0:.2f}%'.format(acc * 100))
輸出為:
準確率:97.37%
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2558236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習之邏輯迴歸:模型訓練機器學習邏輯迴歸模型
- 邏輯迴歸模型邏輯迴歸模型
- 機器學習中的邏輯迴歸模型簡介機器學習邏輯迴歸模型
- 機器學習之邏輯迴歸機器學習邏輯迴歸
- 機器學習整理(邏輯迴歸)機器學習邏輯迴歸
- 機器學習 | 線性迴歸與邏輯迴歸機器學習邏輯迴歸
- 機器學習入門(二) — 迴歸模型 (理論)機器學習模型
- 人工智慧-機器學習-邏輯迴歸人工智慧機器學習邏輯迴歸
- [DataAnalysis]機器學習演算法——線性模型(邏輯迴歸+LDA)機器學習演算法模型邏輯迴歸LDA
- 機器學習入門(三) — 迴歸模型(進階案例)機器學習模型
- 機器學習之邏輯迴歸:計算概率機器學習邏輯迴歸
- 【機器學習】邏輯迴歸過程推導機器學習邏輯迴歸
- 機器學習筆記-多類邏輯迴歸機器學習筆記邏輯迴歸
- 【機器學習基礎】邏輯迴歸——LogisticRegression機器學習邏輯迴歸
- 機器學習之邏輯迴歸:計算機率機器學習邏輯迴歸計算機
- 機器學習之使用Python完成邏輯迴歸機器學習Python邏輯迴歸
- 【6%】100小時機器學習——邏輯迴歸機器學習邏輯迴歸
- 手擼機器學習演算法 - 邏輯迴歸機器學習演算法邏輯迴歸
- 機器學習筆記(3):多類邏輯迴歸機器學習筆記邏輯迴歸
- 從零開始學機器學習——邏輯迴歸機器學習邏輯迴歸
- 機器學習_最小二乘法,線性迴歸與邏輯迴歸機器學習邏輯迴歸
- 利用Tensorflow實現邏輯迴歸模型邏輯迴歸模型
- 機器學習演算法--邏輯迴歸原理介紹機器學習演算法邏輯迴歸
- 機器學習之邏輯迴歸(純python實現)機器學習邏輯迴歸Python
- 【機器學習】---邏輯迴歸從初識到應用機器學習邏輯迴歸
- 資料探勘從入門到放棄(一):線性迴歸和邏輯迴歸邏輯迴歸
- 邏輯斯蒂迴歸與最大熵模型初探熵模型
- 機器學習筆記(6):多類邏輯迴歸-使用gluon機器學習筆記邏輯迴歸
- 機器學習筆記(4):多類邏輯迴歸-使用gluton機器學習筆記邏輯迴歸
- Python邏輯迴歸Python邏輯迴歸
- 淺談邏輯迴歸邏輯迴歸
- 把ChatGPT調教成機器學習專家,以邏輯迴歸模型的學習為例ChatGPT機器學習邏輯迴歸模型
- 邏輯迴歸演算法邏輯迴歸演算法
- 邏輯迴歸原理小結邏輯迴歸
- 06_邏輯迴歸演算法和最大熵模型邏輯迴歸演算法熵模型
- 機器學習簡介之基礎理論- 線性迴歸、邏輯迴歸、神經網路機器學習邏輯迴歸神經網路
- 機器學習-邏輯迴歸:從技術原理到案例實戰機器學習邏輯迴歸
- 機器學習入門:多變數線性迴歸機器學習變數