二元逻辑回归损失函数的数学解释与公式推导
我們基于極大似然法來推導二元邏輯回歸的損失函數,這個推導過程能夠幫助我們了解損失函數怎么
得來的,以及為什么J(θ)J(\theta)J(θ)的最小化能夠實現模型在訓練集上的擬合最好。
我們的目標是:讓模型對訓練數據的效果好,追求損失最小
二元邏輯回歸的標簽服從伯努利分布(即0-1分布),因此我們可以將一個特征向量為 xxx,參數為θ\thetaθ的模型中的一個樣本i的預測情況表現為如下形式:
-
樣本i在由特征向量 xix_ixi?和參數 θ\thetaθ組成的預測函數中,樣本標簽被預測為1的概率為:
P1=P(yi^=1∣xi,θ)=yθ(xi)P_1=P(\hat{y_i}=1|x_i,\theta)=y_{\theta}(x_i)P1?=P(yi?^?=1∣xi?,θ)=yθ?(xi?)
-
樣本i在由特征向量 和參數 組成的預測函數中,樣本標簽被預測為0的概率為:
P0=P(yi^=0∣xi,θ)=1?yθ(xi)P_0=P(\hat{y_i}=0|x_i,\theta)=1-y_{\theta}(x_i)P0?=P(yi?^?=0∣xi?,θ)=1?yθ?(xi?)
當P1P_1P1?的值為1的時候,代表樣本i的標簽被預測為1,當P0P_0P0?的值為1的時候,代表樣本i的標簽被預測為0。
假設樣本i的真實標簽yiy_iyi?為1,此時如果P1P_1P1?為1,P0P_0P0?為0的時候,就代表樣本i的標簽被預測為1,與真實值一致。此時對于單樣本i來說,模型的預測就是完全準確的,擬合程度很優秀,沒有任何信息損失。
相反,如果P1P_1P1?為0,P0P_0P0?為1的時候,就代表樣本i的標簽被預測為0,與真實情況完全相反。對于單樣本i來說,模型的預測就是完全錯誤的,擬合程度很差,所有的信息都損失了。
當yiy_iyi?為0時,也是同樣的道理,所以,當 yiy_iyi?為1的時候,我們希望 P1P_1P1?非常接近1, 當 yiy_iyi?為0的時候,我們希望 P0P_0P0?非常接近1,這樣,模型的效果就很好,信息損失就很少。
將兩種取值的概率整合,我們可以定義如下等式:
P(yi^∣xi,θ)=P1yi?P01?yiP(\hat{y_i}|x_i,\theta)=P_1^{y_i}*P_0^{1-y_i}P(yi?^?∣xi?,θ)=P1yi???P01?yi??
這個等式代表同時代表了P0P_0P0?和P1P_1P1?,當樣本i的真實標簽 yiy_iyi?為1的時候,1?yi1-y_i1?yi? 就等于0,P0P_0P0? 的0次方就是1,所以P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ)等于P1P_1P1?,這時,如果P1P_1P1?為1,模型的效果就很好,損失就很小。同理,當 yiy_iyi?為0的時候,P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ)等于P0P_0P0?,此時如果P0P_0P0?非常接近1,模型的效果就很好,損失就很小。所以,為了達成讓模型擬合好,損失小的目的,我們每時每刻都希望P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ) 的值等于1。 而P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ) 的本質是樣本i由特征向量xix_ixi?和參數θ\thetaθ組成的預測函數中,預測出所有可能的y^\hat{y}y^?的概率,因此1是它的最大值。
也就是說,每時每刻,我們都在追求P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ) 的最大值。這就將模型擬合中的“最小化損失”問題,轉換成了對函數求解極值的問題。
P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ)是對單個樣本i而言的函數,對一個訓練集的m個樣本來說,我們可以定義如下等式來表達所有樣本在特征矩陣X和參數 θ\thetaθ組成的預測函數中,預測出所有可能的 y^\hat{y}y^?的概率P為:
P=∏i=1mP(yi^∣xi,θ)=∏i=1m(P1yi?P01?yi)=∏i=1m(y0(xi)yi?(1?y0(xi))1?yi)將開頭的P1和P0帶入\begin{aligned} P&=\prod_{i=1}^mP(\hat{y_i}|x_i,\theta) \\&=\prod_{i=1}^m(P_1^{y_i}*P_0^{1-y_i}) \\&=\prod_{i=1}^m(y_0(x_i)^{y_i}*(1-y_0(x_i))^{1-y_i}) ~~~~~~~~~~將開頭的P_1和P_0帶入 \end{aligned}P?=i=1∏m?P(yi?^?∣xi?,θ)=i=1∏m?(P1yi???P01?yi??)=i=1∏m?(y0?(xi?)yi??(1?y0?(xi?))1?yi?)??????????將開頭的P1?和P0?帶入?
對該概率P取對數,再由log?(A?B)=log?A+log?B\log(A*B)=\log A+\log Blog(A?B)=logA+logB和log?AB=Blog?A\log A^B=B\log AlogAB=BlogA可得:
log?P=log?∏i=1m(y0(xi)yi?(1?y0(xi))1?yi)=∑i=1mlog?(y0(xi)yi?(1?y0(xi))1?yi)=∑i=1m(log?yθ(xi)yi+log?(1?yθ(xi))1?yi)=∑i=1m(yilog?yθ(xi)+(1?yi)log?(1?yθ(xi)))\begin{aligned} \log P&=\log\prod_{i=1}^m(y_0(x_i)^{y_i}*(1-y_0(x_i))^{1-y_i}) \\&=\sum_{i=1}^m\log(y_0(x_i)^{y_i}*(1-y_0(x_i))^{1-y_i}) \\&=\sum_{i=1}^m(\log y_{\theta}(x_i)^{y_i}+\log(1-y_{\theta}(x_i))^{1-y_i}) \\&=\sum_{i=1}^m(y_i\log y_{\theta}(x_i)+(1-y_i)\log(1-y_{\theta}(x_i))) \end{aligned}logP?=logi=1∏m?(y0?(xi?)yi??(1?y0?(xi?))1?yi?)=i=1∑m?log(y0?(xi?)yi??(1?y0?(xi?))1?yi?)=i=1∑m?(logyθ?(xi?)yi?+log(1?yθ?(xi?))1?yi?)=i=1∑m?(yi?logyθ?(xi?)+(1?yi?)log(1?yθ?(xi?)))?
這就是我們的交叉熵函數。為了數學上的便利以及更好地定義”損失”的含義,我們希望將極大值問題轉換為極小值問題,因此我們對 log?P\log{P}logP取負,并且讓參數 θ\thetaθ作為函數的自變量,就得到了我們的損失函數 J(θ)J(\theta)J(θ):
J(θ)=?∑i=1m(yilog?yθ(xi)+(1?yi)log?(1?yθ(xi)))J(\theta)=-\sum_{i=1}^m(y_i\log y_{\theta}(x_i)+(1-y_i)\log(1-y_{\theta}(x_i)))J(θ)=?i=1∑m?(yi?logyθ?(xi?)+(1?yi?)log(1?yθ?(xi?)))
這就是一個,基于邏輯回歸的返回值 yθ(xi)y_{\theta}(x_i)yθ?(xi?)的概率性質得出的損失函數。在這個函數上,我們只要追求最小值,就能讓模型在訓練數據上的擬合效果最好,損失最低。這個推導過程,其實就是“極大似然法”的推導過程。
似然與概率
-
似然與概率是一組非常相似的概念,它們都代表著某件事發生的可能性,但它們在統計學和機器學習中有著微妙的不同。以樣本i為例,表達式為:
P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ)
對這個表達式而言,如果參數 θ\thetaθ是已知的,特征向量xix_ixi?是未知的,我們便稱P是在探索不同特征取值下獲取所有可能的 y^\hat{y}y^?的可能性,這種可能性就被稱為概率,研究的是自變量和因變量之間的關系。如果特征向量xix_ixi? 是已知的,參數θ\thetaθ 是未知的,我們便稱P是在探索不同參數下獲取所有可能的 y^\hat{y}y^? 的可能性,這種可能性就被稱為似然,研究的是參數取值與因變量之間的關系。
在邏輯回歸的建模過程中,我們的特征矩陣是已知的,參數是未知的,因此我們討論的所有“概率”其實嚴格來說都應該是“似然”。我們追求P(yi^∣xi,θ)P(\hat{y_i}|x_i,\theta)P(yi?^?∣xi?,θ) 的最大值(換算成損失函數之后取負了,所以是最小值),就是在追求“極大似然”,所以邏輯回歸的損失函數的推導方法叫做”極大似然法“。也因此,以下式子又被稱為”極大似然函數“:
P(yi^∣xi,θ)=y0(xi)yi?(1?y0(xi))1?yiP(\hat{y_i}|x_i,\theta)=y_0(x_i)^{y_i}*(1-y_0(x_i))^{1-y_i}P(yi?^?∣xi?,θ)=y0?(xi?)yi??(1?y0?(xi?))1?yi?
總結
以上是生活随笔為你收集整理的二元逻辑回归损失函数的数学解释与公式推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 Swift Package 插件生
- 下一篇: 邮件服务器http://jpk.sjzp