在機器學習中,多元分類 是將示例歸類為多個(大於兩個)類別中的一類(將示例歸為兩類中的一類被稱為二元分類)。
一些分類演算法自然地允許使用超過兩類,另一些自然是二元分類演算法;然而,它們可以通過多種策略轉化為多元分類。
多元分類不應該和多標籤分類相混淆,多標籤分類要為每個示例**多個標籤,即乙個示例可以同時被歸為多個類別。
所以,要解決多元分類問題,只需將其簡化為多個二元分類問題。
而顧名思義,二元分類就是給定乙個物件 x
\mathit
x,根據標籤給它劃分為a類還是b類
邏輯回歸就是一種解決二分類問題的機器學習方法,說到邏輯回歸,就不得不提到線性回歸,邏輯回歸(logistic regression)與線性回歸(linear regression)都是一種廣義線性模型(generalized linear model)。
線性回歸
線性回歸(linear regression)是利用稱為線性回歸方程的最小二乘函式對乙個或多個自變數和因變數之間關係進行建模的一種回歸分析。這種函式是乙個或多個稱為回歸係數的模型引數的線性組合。只有乙個自變數的情況稱為簡單回歸,大於乙個自變數情況的叫做多元回歸。
線性回歸分析用於研究乙個變數與另乙個變數或多個變數之間的關係。
以雙變數為例,變數x和變數y之間可以有三種關係:正線性相關、負線性相關、不是線性相關(隨機)。
線性回歸的表示式如下:
f (x
)=wt
x+bf(\bm) = \bm^t\bm + b
f(x)=w
tx+b
線性回歸對於給定的輸入x
\bmx ,輸出的是乙個數值 y ,因此它是乙個解決回歸問題的模型。也就是說,我們能通過線性回歸,知道x和某個特徵的相關度。
但是對於二分類問題,我們需要的結果並不是數值,而是0 or 1這樣能夠給物件分類的布林值,如何能解決這個問題呢?
乙個常用的解決方法是設定乙個閾值,大於這個閾值,則分為a類,小於則分為b類
採用這種方法的模型又叫做感知機(perceptron)。
而另乙個方法就是不去直接**標籤,而是去**標籤為a概率,我們知道概率是乙個[0,1]區間的連續數值,那我們的輸出的數值就是標籤為a的概率。一般的如果標籤為a的概率大於0.5,我們就認為它是a類,否則就是b類。這就是邏輯回歸 (logistics regression)。
邏輯回歸 (logistics regression)
我們知道,線性回歸f(x
)=wt
x+bf(\bm) = \bm^t\bm + b
f(x)=w
tx+b
的值域是 (−∞
,∞)(-\infty,\infty)
(−∞,∞)
,而我們所求概率的值域一定是限制在[0,
1][0,1]
[0,1
]之間,所以線性回歸是不符合要求的,於是,我們可以引入這樣乙個函式:sigmoid函式,也被稱作邏輯函式(logistic function)。
sigmoid函式的表示式和函式影象σ(x
由函式影象即可看出,sigmoid函式的值域在01之間,在遠離0的地方函式的值會很快接近0或者1。它的這個特性對於解決二分類問題十分重要。
實際上,我們把sigmoid函式作為對線性回歸模型的處理函式來使用,也就是說我們把z=w
tx+b
\bm= \bm^t\bm + b
z=wtx+
b的輸出z值作為sigmoid函式的自變數。
所以,我們需要的邏輯回歸模型的表示式如下:
y =σ
(f(x
))=σ
(wtx
)=11
+e−w
txy=\sigma(f(\bm)) = \sigma(\bm^t\bm)=\frac^t\bm}}
y=σ(f(
x))=
σ(wt
x)=1
+e−w
tx1
這個函式的意思就是在給定 x 和 w
ww的條件下 y=1 的概率。
與之相對應的決策函式為:
y^ = 1, if p(y=1|x)>0.5
選擇0.5作為閾值是乙個一般的做法,實際應用時特定的情況可以選擇不同閾值,如果對正例的判別準確性要求高,可以選擇閾值大一些,對正例的召回要求高,則可以選擇閾值小一些。
簡單來說,損失函式反映的是通過邏輯回歸得到的結果與真實值的差異大小,一般來說,cost越小,說明損失越小,損失函式越**明模型和引數越符合訓練樣本。
對於損失函式的推導這裡不做贅述。
其中, p=1
1+e−
wtxp = \frac^t\bm}}
p=1+e−
wtx1
這個函式 f(w
)f(\bm)
f(w)
又叫做它的損失函式。損失函式可以理解成衡量我們當前的模型的輸出結果,跟實際的輸出結果之間的差距的一種函式。
既然上文說過了,損失函式的值越小,說明我們的分類值和實際上的值的差距越小,所以我們就要想方設法把損失函式最小化,而梯度下降法就是這個作用。
梯度下降法(英語:gradient descent是乙個一階最優化演算法,通常也稱為最速下降法。 要使用梯度下降法找到乙個函式的區域性極小值,必須向函式上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜尋。如果相反地向梯度正方向迭代進行搜尋,則會接近函式的區域性極大值點;這個過程則被稱為梯度上公升法。
就好似下山,我們在每乙個點都向下山最快的方向走,無疑能達到山的最底部。
具體操作,就是對b和w不斷迭代求偏導,找到能得到cost函式最小值取值時的值由於邏輯回歸時b的取值可為0,此處不考慮。
w t+
1=wt
−η∗d
w\bm_ = \bm_t-\eta*dw
wt+1=
wt−
η∗dw
這裡的η
\eta
η是另乙個可以設定的引數,叫做學習率。迭代次數也是有人為控制。
至此,邏輯回歸的簡單介紹到此結束,有些數學推導未能列出來,請讀者自行查閱
Python梯度下降法實現二元邏輯回歸
定義當函式值大於等於0.5時,結果為1,當函式值小於0.5時,結果為0.函式的值域是 0,1 上圖為二元邏輯回歸的概率公式,則代價函式可以表示為 損失函式求偏倒數為 可以發現和線性回歸的結果是一樣的,只不過是假設函式h發生了變化。為了避免過擬合,通常在代價函式後加乙個正則化項,針對二元邏輯回歸,填加...
深度學習(正則化的線性回歸和邏輯回歸)
clear clc 載入資料 x load ex5linx.dat y load ex5liny.dat 顯示原始資料 plot x,y,o markeredgecolor b marke cecolor r markersize 10 將特徵值變成訓練樣本矩陣 x ones length x 1 ...
機器學習基礎 梯度下降法之二元線性回歸
二元線性回歸 import numpy as np import matplotlib.pyplot as plt from numpy import genfromtxt from mpl toolkits.mplot3d import axes3d 可以用來畫3d圖 匯入資料 data genf...