逻辑回归的总结(详细步骤)
什么是邏輯回歸?
邏輯回歸雖然名字中帶有回歸,但是并不是一個回歸模型,而是一個分類模型。邏輯回歸的目的就是解決分類問題,最常用的就是解決二分類問題。
邏輯回歸和線性回歸的關系
邏輯回歸(Logistic Regression)與線性回歸(Linear Regression)都是一種廣義線性模型(generalized linear model)。邏輯回歸假設因變量 y 服從伯努利分布,而線性回歸假設因變量 y 服從高斯分布。 因此與線性回歸有很多相同之處,去除Sigmoid映射函數的話,邏輯回歸算法就是一個線性回歸。可以說,邏輯回歸是以線性回歸為理論支持的,但是邏輯回歸通過Sigmoid函數引入了非線性因素,因此可以輕松處理0/1分類問題。
這廣義線性模型家族中的模型形式基本上都差不多,不同的就是因變量不同。
- 如果是連續的,就是多重線性回歸;
- 如果是二項分布,就是邏輯回歸;
- 如果是Poisson分布,就是Poisson回歸;
- 如果是負二項分布,就是負二項回歸;
邏輯回歸問題解決的常規步驟
1.尋找一個合適的預測函數,一般是h函數(即hypothesis函數)。這個函數就是我們要找分類函數,用來預測輸入數據的判斷結果。這個過程很重要,需要對數據有一定的了解和分析,知道或猜測函數大概的形式,比如說是線性函數還是非線性函數。
2.構造一個Cost函數(即損失函數),該函數用來表示預測函數(h)與訓練數據類別(y)之間的偏差,可以將二者之間的差(h-y)或者差平方(h?y)2(h-y)^2(h?y)2或者其他的形式。綜合考慮所有的訓練數據的“損失”,將Cost求和或者求平均,記為J(θ)J(\theta)J(θ)函數,表示所有的訓練數據預測值與實際類別的偏差。
3.想辦法使得J(θ)J(\theta)J(θ)最小并且求得最佳參數。J(θ)J(\theta)J(θ)函數的值越小,表示預測函數越準確(即h函數越準確),所以要找到J(θ)J(\theta)J(θ)函數的最小值。找函數的最小值有不同的方法,這里使用的是梯度下降法(Gradient Descent)。
具體過程
1.尋找h函數
邏輯回歸是一個分類方法,用于解決分類問題,常用于解決二分類問題,即輸出類別有兩種。在這里,我們要選用Sigmoid函數即:g(z)=11+e?zg(z)=\frac{1}{1+e^{-z}}g(z)=1+e?z1?簡單解釋下邏輯回歸模型為什么要用Sigmoid函數。
從指數族分布講起,指數族分布 (The exponential family distribution),區別于指數分布(exponential distribution)。在概率統計中,若某概率分布滿足下式,我們就稱之屬于指數族分布。
p(y;η)=b(y)exp(ηTT(y)?a(η))p(y;η)=b(y)exp(η^{T}T(y)?a(η))p(y;η)=b(y)exp(ηTT(y)?a(η))
其中η是natural parameter, T(y)是充分統計量, exp?a(η))是起到歸一化作用。 確定了T,a,b,我們就可以確定某個參數為η的指數族分布.
統計中很多熟悉的概率分布都是指數族分布的特定形式,如伯努利分布,高斯分布,多項分布(multionmal), 泊松分布等。下面介紹其中的伯努利分布。
伯努利分布
p(y;?)=?y(1??)1?yp(y;?)=?^y(1??)^{1?y}p(y;?)=?y(1??)1?y
=exp[ylog?+(1?y)log(1??)]=exp[ylog?+(1?y)log(1??)]=exp[ylog?+(1?y)log(1??)]
=exp[ylog?1??+log(1??)]=exp[ylog\frac{?}{1??}+log(1??)]=exp[ylog1????+log(1??)]
把伯努利分布可以寫成指數族分布的形式,且
T(y)=yT(y)=yT(y)=y
η=log?1??η=log\frac{?}{1??}η=log1????
a(η)=?log(1??)=log(1+eη)a(η)=?log(1??)=log(1+e^η)a(η)=?log(1??)=log(1+eη)
b(y)=1b(y)=1b(y)=1
同時我們可以看到?=11+e?η?=\frac{1}{1+e{?η}}?=1+e?η1? 就是logistic sigmoid的形式。
具體的解釋,可以看這篇文章 logistics 為什么用sigmoid函數.
接下來需要確定數據劃分的邊界,對于圖1和圖2的兩種數據分布,顯然圖1需要一個線性的邊界,而圖2需要一個非線性的邊界。所以接下來我們只討論線性邊界。
對于線性邊界的情況,邊界形式如下:θ0+θ1x1+....+θnxn=∑i=0nθixi=θTx\theta_0+\theta_1x_1+....+\theta_nx_n =\sum_{i=0}^n\theta_ix_i =\theta ^Txθ0?+θ1?x1?+....+θn?xn?=i=0∑n?θi?xi?=θTx構造預測函數為:hθ(x)=g(θTx)=11+e?θTxh_\theta(x)=g(\theta^Tx)=\frac {1}{1+e^{-\theta ^Tx}}hθ?(x)=g(θTx)=1+e?θTx1?
hθ(x)h_\theta(x)hθ?(x)函數的值有特殊的含義,它表示結果取1的概率,因此對于輸入x的分類結果為類別1和類別0的概率分別為:
P(y=1∣x;θ)=hθ(x)P(y=1|x;\theta)=h_\theta(x)P(y=1∣x;θ)=hθ?(x)
P(y=0∣x;θ)=1?hθ(x)P(y=0|x;\theta)=1-h_\theta(x)P(y=0∣x;θ)=1?hθ?(x)
2.構造Cost函數
我們知道損失函數分為0-1損失,平方損失,絕對損失和對數似然損失(對數損失)。
在這里我們采用對數似然損失。當然,損失函數都是人為選擇的,選擇什么損失函數都行。但是如果這里用最小二乘法作為損失函數的話,函數曲線是非凸的,不利于求解參數。而對數似然函數作為損失函數的話,曲線是凸的,方便求解。
根據對數似然損失函數,有:
Cost(hθ(x),y)={?log(hθ(x))ify=1?log(1?hθ(x))ify=0Cost(h_\theta(x),y) = \begin {cases} -log(h_\theta(x)) & {if y=1} \\ -log(1-h_\theta(x)) &{if y=0} \end {cases} Cost(hθ?(x),y)={?log(hθ?(x))?log(1?hθ?(x))?ify=1ify=0?
根據伯努利分布,有p(y∣x;θ)=hθ(x)y(1?hθ(x))1?yp(y|x;\theta)=h_\theta(x)^y(1-h_\theta(x))^{1-y}p(y∣x;θ)=hθ?(x)y(1?hθ?(x))1?y
取似然函數:
L(θ)=∏i=1mp(yi∣xi;θ)=∏i=1mhθ(xi)yi(1?hθ(xi))1?yiL(\theta)=\prod_{i=1}^m p(y^i|x^i;\theta)=\prod_{i=1}^mh_\theta(x^i)^{y^i}(1-h_\theta(x^i))^{1-y^i}L(θ)=i=1∏m?p(yi∣xi;θ)=i=1∏m?hθ?(xi)yi(1?hθ?(xi))1?yi
對數似然函數:
l(θ)=logL(θ)=∑i=1m[yilog(hθ(xi))+(1?yi)log(1?hθ(xi))]l(\theta)=logL(\theta)=\sum_{i=1}^m[y^ilog(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))]l(θ)=logL(θ)=i=1∑m?[yilog(hθ?(xi))+(1?yi)log(1?hθ?(xi))]
最大似然估計就是要求l(θ)取最大值時的θl(\theta)取最大值時的\thetal(θ)取最大值時的θ,故將J(θ)=?1ml(θ)J(\theta)=-\frac{1}{m}l(\theta)J(θ)=?m1?l(θ),即
J(θ)=?1m∑i=1m[yilog(hθ(xi))+(1?yi)log(1?hθ(xi))]J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^ilog(h_\theta(x^i))+(1-y^i)log(1-h_\theta(x^i))]J(θ)=?m1?i=1∑m?[yilog(hθ?(xi))+(1?yi)log(1?hθ?(xi))]
所以J(θ)取最小值時的θ為要求的最佳參數J(\theta)取最小值時的\theta為要求的最佳參數J(θ)取最小值時的θ為要求的最佳參數
3.梯度下降法求J(θ)J(\theta)J(θ)的最小值
求參優化也有不同的方法如梯度下降法,擬牛頓法等方法可以使用,在這里我們用梯度下降法。
梯度下降公式如下:
θj:=θj?αδδθjJθ,(j=0,1,2,....,n)\theta_j:=\theta_j-\alpha\frac{\delta}{\delta\theta_j}J\theta,(j=0,1,2,....,n)θj?:=θj??αδθj?δ?Jθ,(j=0,1,2,....,n)式子中α為學習步長\alpha為學習步長α為學習步長,下面來求偏導:
上面求解過程中用到的公式有:
因此,梯度下降公式可以更新為:
總結
以上是生活随笔為你收集整理的逻辑回归的总结(详细步骤)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 生成随机数_Java 生成随机
- 下一篇: node-media-server wi