線性回歸原理推導與應用(七):邏輯回歸原理與公式推導

邏輯回歸是一種分類算法,常用于二分類,也就是得出的結果為是和不是,例如通過各種因素判斷一個人是否生病,信用卡是否違約等。邏輯回歸在社會和自然科學中應用非常廣泛,

前置知識

線性回歸

邏輯回歸的底層方法就是線性回歸,所以需要對線性回歸有基本的了解。具體的一元,多元線性回歸原理在之前的文章中已經講過,可以查看之前的文章
https://blog.csdn.net/qq_42692386/article/details/140824402
https://blog.csdn.net/qq_42692386/article/details/138210463
https://blog.csdn.net/qq_42692386/article/details/146070598

回歸:假設現在有一些數據點,我們用一條線對這些點進行擬合(這條線稱為最佳擬合線),這個擬合的過程就叫做回歸。

線性回歸:最佳擬合線是一條直線,線性是指每個自變量(或者說特征) x x x與因變量(或者說結果) y y y的結果是線性的關系

邏輯回歸

在線性回歸中得到的結果一般是連續的結果,而分類需要的結果是離散型的,例如二分類就是最終結果只需要兩類。邏輯回歸可以進行分類就是使用了Sigmoid函數將結果轉化為0到1的范圍內,再將0.5作為分界線從而分類。

Sigmoid函數

又被稱為對數幾率函數、Logistic函數。Sigmoid函數的數學表達式為:
σ ( z ) = 1 1 + e ? z \sigma(z)= \frac 1 {1+e^{-z}} σ(z)=1+e?z1?
其函數圖像為:
在這里插入圖片描述

從圖形可以看出,Sigmoid函數有如下性質:
1.函數定義域為 ( ? ∞ , + ∞ ) (?\infty,+\infty) (?,+),值域為 ( 0 , 1 ) (0,1) (0,1)
2.當 z z z趨近于 ? ∞ ?\infty ?時,函數值 g ( z ) g(z) g(z)趨近于0;當 z z z趨近于 + ∞ +\infty +時,函數值 σ ( z ) \sigma(z) σ(z)趨近于1;當 z = 0 z=0 z=0時,函數值 σ ( z ) \sigma(z) σ(z)等于0.5.
3.函數單調可微。

Sigmoid函數的這些性質決定了它可以將 ( ? ∞ , + ∞ ) (?\infty,+\infty) (?,+)的數據映射到 ( 0 , 1 ) (0,1) (0,1)上,加上它在中心點處取值為0.5,所以我們可以將0.5作為分界線來進行分類。當然選擇0.5作為閾值是一個一般的做法,實際應用時特定的情況可以選擇不同閾值,如果對正例的判別準確性要求高,可以選擇閾值大一些,對正例的召回要求高,則可以選擇閾值小一些

對Sigmoid函數求導,有:
σ ′ ( z ) = d d z 1 1 + e ? z = e ? z ( 1 + e ? z ) 2 = 1 ( 1 + e ? z ) ? ( 1 ? 1 ( 1 + e ? z ) ) = σ ( z ) ( 1 ? σ ( z ) ) \begin{aligned} \sigma'(z) & = \frac d{dz}\frac 1{1+e^{-z}}\\ & = \frac {e^{-z}}{(1+e^{-z})^2}\\ & = \frac 1{(1+e^{-z})} \cdot (1- \frac 1{(1+e^{-z})})\\ & = \sigma(z)(1-\sigma(z))\\ \end{aligned} σ(z)?=dzd?1+e?z1?=(1+e?z)2e?z?=(1+e?z)1??(1?(1+e?z)1?)=σ(z)(1?σ(z))?
可以看到Sigmoid函數求導后仍然可以使用原函數表示,這也是它的一個比較好的性質。

邏輯回歸的損失函數

邏輯回歸本質上是線性回歸,只是在特征到結果的映射中加入了一層Sigmoid函數映射,即先把特征線性求和,然后使用Sigmoid函數 g ( z ) g(z) g(z)將線性回歸的結果值映射到0到1之間。將線性回歸模型的表達式帶入g(z),就得到邏輯回歸的表達式:

在之前的線性回歸原理中多元線性回歸的一般形式為:
f ( x ) = w 0 x 0 + w 1 x 1 + w 2 x 2 + . . . + w k x k = w T x f(x) = w_{0}x_{0} +w_{1}x_{1}+ w_{2}x_{2} + ... +w_{k}x_{k}=w^Tx f(x)=w0?x0?+w1?x1?+w2?x2?+...+wk?xk?=wTx
代入到邏輯Sigmoid函數的表達式中,結果為:
h ( x ) = σ ( w T x ) = 1 1 + e ? w T x h(x)=\sigma(w^Tx)= \frac 1 {1+e^{-w^Tx}} h(x)=σ(wTx)=1+e?wTx1?

此時如果按照之前的最小二乘法推導出最終的損失函數是非凸的,很難找到最優解,所以邏輯回歸中使用最大似然法來確定模型的參數。

最大似然估計

最大似然估計認為我們既然已經抽取得到了一個結果,那么就認為這個結果就是所有情況、所有樣本結果中出現概率最大的那一個。考慮到每次的抽取都是獨立同分布的,所以將每一個取值對應的概率相乘就是這一個樣本結果出現的概率(也就是似然函數),那么只要讓這一個結果出現的概率(似然函數)最大就可以估算出每個值對應的概率

舉個例子來說就是一個大桶里有紅藍兩種球,現在有放回的隨機抽了100個球,最終有70個紅球和30個藍球,那么我們可以推斷認為桶里紅藍球的比例約為7:3,因為這種比例下出現已抽取到的結果的可能性最大.。
具體可以參閱如下鏈接文章:
https://blog.csdn.net/qq_42692386/article/details/139919043

最大似然估計的一般步驟為:

  1. 寫出似然函數(也就是已知的樣本結果出現的概率)。對于離散型變量是將對應概率相乘,連續型變量就是概率密度函數相乘。
  2. 求似然函數最大時對應概率的值。一般為了簡化計算,首先對等式兩邊取對數,將相乘改為相加減,然后對似然函數求導,求導數為0時的值

邏輯回歸損失函數推導

邏輯回歸的最終結果是一個二分類結果,在概率中將結果表示為 y = 0 , y = 1 y=0,y=1 y=0,y=1,通常用數字1表示結果為正例,0表示結果為反例,可以分別表示發生與不發生,正面與反面,成功與失敗,有問題與無問題等等二分類結果。在概率中我們用 P ( Y ) P(Y) P(Y)表示事件 Y Y Y發生的概率,例如 P ( Y = 1 ) P(Y=1) P(Y=1)可以表示硬幣拋出正面,下雨這個事件發生等等的概率。同時二分類中的結果只有正例和反例,所以兩者發生概率相加為1。用 P ( Y ∣ X ) P(Y|X) P(YX)表示在條件 X X X的情況下事件 Y Y Y發生的概率,稱為后驗概率

所以在邏輯回歸中,結果當取值為 x x x時為正例的概率為:
P ( y = 1 ∣ x ; w ) = h ( x ) = 1 1 + e ? w T x = e w T x 1 + e w T x P(y=1|x;w)=h(x)= \frac 1 {1+e^{-w^Tx}}=\frac{ e^{w^Tx}} {1+e^{w^Tx}} P(y=1∣x;w)=h(x)=1+e?wTx1?=1+ewTxewTx?
同理可得出當取值為 x x x時為負例的概率:
P ( y = 0 ∣ x ; w ) ) = 1 ? h ( x ) = 1 ? σ ( w T x ) = 1 1 + e w T x P(y=0|x;w))=1-h(x)=1-\sigma(w^Tx)= \frac{1} {1+e^{w^Tx}} P(y=0∣x;w))=1?h(x)=1?σ(wTx)=1+ewTx1?
需要注意的是這里直接將邏輯回歸的計算結果 h ( x ) h(x) h(x)作為概率,例如一個樣本計算結果 h ( x ) = 0.8 h(x)=0.8 h(x)=0.8,則就是認為其為正例的可能性為0.8,從而根據概率理解為其為正例,但是需要注意的是這個計算結果并不是一個真實的概率,只是在邏輯回歸中計算結果可以作為概率來使用。

將兩者合并到一起,可以得到邏輯回歸的表達式:
P ( y ∣ x ; w ) = ( h ( x ) ) y ( 1 ? h ( x ) ) 1 ? y P(y|x;w)= (h(x))^y(1- h(x))^{1-y} P(yx;w)=(h(x))y(1?h(x))1?y

假設訓練樣本相互獨立,則根據最大似然函數寫出似然函數的表達式為:

J ( w ) = ∏ i = 1 n P ( y ( i ) ∣ x ( i ) ; w ) = ∏ i = 1 n h ( x ( i ) ) y ( i ) ( 1 ? h ( x ( i ) ) ) 1 ? y ( i ) J(w) = \prod_{i=1}^n P(y^{(i)}|x^{(i)};w) = \prod_{i=1}^n h(x^{(i)})^{y^{(i)}}(1-h(x^{(i)}))^{1-y^{(i)}} J(w)=i=1n?P(y(i)x(i);w)=i=1n?h(x(i))y(i)(1?h(x(i)))1?y(i)

其中 x ( i ) , y ( i ) x^{(i)},y^{(i)} x(i),y(i)是第 i i i 個觀察樣本的自變量值和實際結果值
對等式兩邊取以自然底數 e e e為底的對數,將累乘變為累加,有:

l n J ( w ) = l n ( ∏ i = 1 n h ( x ( i ) ) y ( i ) ( 1 ? h ( x ( i ) ) ) 1 ? y ( i ) ) = ∑ i = 1 n [ y ( i ) l n ( h ( x ( i ) ) ) + ( 1 ? y ( i ) ) l n ( 1 ? h ( x ( i ) ) ) ] \begin{aligned} ln J(w) &= ln \bigg(\prod_{i=1}^n h(x^{(i)})^{y^{(i)}}(1-h(x^{(i)}))^{1-y^{(i)}} \bigg) \\&= \sum^n_{i=1} \Big[y^{(i)} ln(h(x^{(i)})) + (1-y^{(i)})ln(1-h(x^{(i)}))\Big] \end{aligned} lnJ(w)?=ln(i=1n?h(x(i))y(i)(1?h(x(i)))1?y(i))=i=1n?[y(i)ln(h(x(i)))+(1?y(i))ln(1?h(x(i)))]?

最大似然估計希望似然函數越大越好,而之前我們求解損失函數時用的梯度下降是求最小值,所以在前面可以加一個負號,這樣就得到邏輯回歸的損失函數如下:
J ( w ) = ? ∑ i = 1 n [ y ( i ) l n ( h ( x ( i ) ) ) + ( 1 ? y ( i ) ) l n ( 1 ? h ( x ( i ) ) ) ] J(w)= -\sum^n_{i=1} \Big[y^{(i)} ln(h(x^{(i)})) + (1-y^{(i)})ln(1-h(x^{(i)}))\Big] J(w)=?i=1n?[y(i)ln(h(x(i)))+(1?y(i))ln(1?h(x(i)))]

梯度下降更新公式

為了求解得到邏輯回歸的損失函數的最小值,依舊使用梯度下降法
w j n + 1 = w j n ? α ? ? w j J ( w ) w_{j}^{n+1}=w_{j}^{n}-\alpha\frac{\partial}{\partial w_{j}} J(w) wjn+1?=wjn??α?wj???J(w)
其中 α \alpha α為學習率

根據Sigmoid函數求導的性質,對w求偏導有:

h ( x ) = σ ( w T x ) = σ ( w T x ) ( 1 ? σ ( w T x ) ) ? ? w j w T x = h ( x ) ( 1 ? h ( x ) ) ? ? w j w T x h(x)=\sigma(w^Tx)= \sigma(w^Tx)(1-\sigma(w^Tx))\frac{\partial}{\partial w_{j}}{w^Tx}= h(x){(1-h(x)}) \frac{\partial}{\partial w_{j}}{w^Tx} h(x)=σ(wTx)=σ(wTx)(1?σ(wTx))?wj???wTx=h(x)(1?h(x))?wj???wTx

對損失函數求偏導有:
? ? w j J ( w ) = ? ∑ i = 1 n [ y ( i ) 1 h ( x ( i ) ) ? ? w j h ( x ( i ) ) + ( 1 ? y ( i ) ) 1 ( 1 ? h ( x ( i ) ) ) ? ? w j ( 1 ? h ( x ( i ) ) ) ] = ? ∑ i = 1 n [ y ( i ) 1 h ( x ( i ) ) ? ? w j h ( x ( i ) ) ? ( 1 ? y ( i ) ) 1 ( 1 ? h ( x ( i ) ) ) ? ? w j h ( x ( i ) ) ] = ? ∑ i = 1 n [ y ( i ) 1 h ( x ( i ) ) ? ( 1 ? y ( i ) ) 1 ( 1 ? h ( x ( i ) ) ) ) ] ? ? w j h ( x ( i ) ) = ? ∑ i = 1 n [ y ( i ) 1 h ( x ( i ) ) ? ( 1 ? y ( i ) ) 1 ( 1 ? h ( x ( i ) ) ) ) ] h ( x ( i ) ) ( 1 ? h ( x ( i ) ) ) ? ? w j w T x = ? ∑ i = 1 n [ y ( i ) ( 1 ? h ( x ( i ) ) ) ? ( 1 ? y ( i ) ) h ( x ( i ) ) ] ? ? w j w T x = ? ∑ i = 1 n [ y ( i ) ? h ( x ( i ) ) ] ? ? w j w T x = ∑ i = 1 n [ h ( x ( i ) ? y ( i ) ) ] x j ( i ) \begin{aligned} \frac{\partial}{\partial w_{j}} J(w) &= -\sum^n_{i=1} \Big[y^{(i)} \frac{1}{h(x^{(i)})} \frac{\partial}{\partial w_{j}}h(x^{(i)}) + (1-y^{(i)}) \frac{1}{(1-h(x^{(i)}))} \frac{\partial}{\partial w_{j}}{(1-h(x^{(i)})})\Big] \\&= -\sum^n_{i=1} \Big[y^{(i)} \frac{1}{h(x^{(i)})} \frac{\partial}{\partial w_{j}}h(x^{(i)}) - (1-y^{(i)}) \frac{1}{(1-h(x^{(i)}))} \frac{\partial}{\partial w_{j}}{h(x^{(i)}})\Big] \\&= -\sum^n_{i=1} \Big[y^{(i)} \frac{1}{h(x^{(i)})} - (1-y^{(i)}) \frac{1}{(1-h(x^{(i)}))} )\Big] \frac{\partial}{\partial w_{j}}h(x^{(i)}) \\&= -\sum^n_{i=1} \Big[y^{(i)} \frac{1}{h(x^{(i)})} - (1-y^{(i)}) \frac{1}{(1-h(x^{(i)}))} )\Big] h(x^{(i)}){(1-h(x^{(i)}))} \frac{\partial}{\partial w_{j}}{w^Tx} \\&= -\sum^n_{i=1} \Big[y^{(i)} {(1-h(x^{(i)}))} - (1-y^{(i)})h(x^{(i)})\Big] \frac{\partial}{\partial w_{j}}{w^Tx}\\&= -\sum^n_{i=1} \Big[y^{(i)} - h(x^{(i)})\Big] \frac{\partial}{\partial w_{j}}{w^Tx} \\&= \sum^n_{i=1} \Big[h(x^{(i)} - y^{(i)} )\Big] x_{j}^{(i)} \end{aligned} ?wj???J(w)?=?i=1n?[y(i)h(x(i))1??wj???h(x(i))+(1?y(i))(1?h(x(i)))1??wj???(1?h(x(i)))]=?i=1n?[y(i)h(x(i))1??wj???h(x(i))?(1?y(i))(1?h(x(i)))1??wj???h(x(i))]=?i=1n?[y(i)h(x(i))1??(1?y(i))(1?h(x(i)))1?)]?wj???h(x(i))=?i=1n?[y(i)h(x(i))1??(1?y(i))(1?h(x(i)))1?)]h(x(i))(1?h(x(i)))?wj???wTx=?i=1n?[y(i)(1?h(x(i)))?(1?y(i))h(x(i))]?wj???wTx=?i=1n?[y(i)?h(x(i))]?wj???wTx=i=1n?[h(x(i)?y(i))]xji??

所以最終的梯度下降更新公式為:
w j : = w j ? ? ? w j J ( w ) = w j ? α ∑ i = 1 n [ h ( x ( i ) ? y ( i ) ) ] x j ( i ) w_{j}:=w_{j}-\frac{\partial}{\partial w_{j}} J(w)=w_{j}-\alpha \sum_{i=1}^{n} \Big[h(x^{(i)} - y^{(i)} )\Big] x_{j}^{(i)} wj?:=wj???wj???J(w)=wj??αi=1n?[h(x(i)?y(i))]xji?

可以看到梯度下降更新公式與之前說的多元線性回歸梯度下降更新公式形式是一樣的。但是這里的 h ( x ) h_(x) h(?x)其中有Sigmoid函數,所以是非線性的函數,與多元線性回歸是不同的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81089.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81089.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81089.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Fastrace:Rust 中分布式追蹤的現代化方案

原文鏈接:Fastrace: A Modern Approach to Distributed Tracing in Rust | FastLabs / Blog 摘要 在微服務架構中,分布式追蹤對于理解應用程序的行為至關重要。雖然 tokio-rs/tracing 在 Rust 中被廣泛使用,但它存在一些顯著的挑戰&#xf…

水果系列數據集- 葡萄grapes>> DataBall

該數據集可以用于目標檢測,水果分類 ,文生圖相關項目。 以下是圖片樣例:

HTTP協議接口三種測試方法之-postman

HTTP協議作為現代Web開發的基石,其接口測試是開發過程中不可或缺的環節。Postman作為最流行的API測試工具之一,能夠極大提升我們的測試效率。本文將詳細介紹如何使用Postman進行HTTP接口測試。 一、HTTP協議基礎回顧 在開始使用Postman之前&#xff0c…

佰力博科技與您探討半導體電阻測試常用的一些方法

一、兩探針法? 兩探針法是一種較為基礎的測試方法。該方法將兩根探針與半導體樣品表面緊密接觸,通過電源在兩根探針之間施加電壓,同時使用電流表測量通過樣品的電流,再根據歐姆定律計算電阻。?這種方法的優點在于操作簡單、設備要求較低&a…

機器學習的一些基本概念

看了b站一個清華博士的視頻做的筆記,對于人工智能的底層原理,訓練方式,以及生成式文本輸出,圖片生成的底層原理有了一個了解,算是一個還不錯的科普文。之前一直想要了解一下機器學習的入門原理,神經網絡相關…

Python爬蟲實戰:研究Grab 框架相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的數據量呈爆炸式增長。如何高效地獲取和利用這些數據成為了當前的研究熱點。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照一定的規則,自動地抓取萬維網信息,在搜索引擎、數據挖掘、信息整合等領域有著廣泛的…

uniapp 嵌入鴻蒙原生組件 具體步驟

關于怎么使用uniapp 嵌入鴻蒙原生組件 HBuilder X 版本 4.64 app-harmony文件下新建 index.uts button.ets button.ets里面復制uniapp 官方提供的 示例代碼 https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html button.ets import { NativeEmbedBuilderO…

阿里云 OS Copilot 使用指南

安裝: AlibabaCloudLinux: sudo yum install -y os-copilotUbuntu: curl -#S https://mirrors.aliyun.com/os-copilot/os-copilot-all-in-one-latest.sh | bash添加RAM用戶 打開 https://ram.console.aliyun.com/users 復制AccessKey,Ac…

枚舉類擴充處理

問題背景 由于 Java 不允許枚舉繼承另一個枚舉(enum cannot extend enum),但可以通過 組合方式 或 工具類 來實現類似功能。 ? 解決方案一:組合方式引入原始枚舉值 示例代碼: public enum CustomErrorCodeEnum imp…

Spring Security探索與應用

Spring Security核心概念 框架定位與核心能力 Spring Security是Spring生態中實現應用級安全的核心框架,其官方定義為"強大且高度可定制的認證與訪問控制框架"。作為Spring應用程序安全防護的事實標準解決方案,它通過模塊化設計提供以下核心能力: 認證(Authenti…

藍橋杯國14 不完整的算式

!!!!!!!!!!!!!!!理清思路 然后一步步寫 問題描述 小藍在黑板上寫了一個形如 AopBC 的算式&#x…

掃描電鏡:打開微觀世界的“超維相機“

當你用手機拍攝一朵花的微距照片時,放大100倍已足夠驚艷。但如果告訴你,科學家手中的"相機"能將物體放大百萬倍,連病毒表面的蛋白突觸都清晰可見,你是否會好奇這背后的黑科技?這把打開微觀宇宙的鑰匙&#x…

JVM學習(四)--對象內存布局

目錄 一、對象內存布局 1、對象的實例化 1.1、你有幾種方式創建對象? 1.2、創建對象的步驟 1.2.1、從字節碼角度看待對象創建過程 1.2.2、從執行步驟角度分析 2、對象的內存布局 2.1、對象頭 2.2、實例數據 2.3、對齊填充 3、對象的訪問定位 3.1、句柄訪…

SQL每日一題(4)

前言:第四更 雖然已經全部做完了,這套卷子非常推薦! 根據題目還原出來的原始表 employees表 idnameagestatus1張三28在崗2李四35在崗3王五42在崗4趙六NULL在崗5錢七58在崗6孫八24在崗7周九31離職8吳十-5在崗9鄭十一45在崗10王十二52在崗 題…

如何做好一份技術文檔?

文章目錄 前言一、技術文檔的核心原則二、技術文檔的類型與場景三、技術文檔的寫作流程3.1 需求分析階段(文檔生產的基礎)3.2 架構設計階段(文檔的骨架搭建)3.3 內容開發階段(血肉填充)3.4 質量保障階段&am…

怎么判斷一個Android APP使用了KMM這個跨端框架

要判斷一個 Android 應用是否使用了 KMM(Kotlin Multiplatform Mobile) 框架,可以通過以下方法逐步驗證: 一、安裝包結構分析 解壓 APK 將 .apk 文件重命名為 .zip 并解壓,檢查以下特征: ? kotlin/ 目錄&a…

Axure系統原型設計列表版方案

列表頁面是眾多系統的核心組成部分,承擔著數據呈現與基礎交互的重要任務。一個優秀的列表版設計,能夠極大提升用戶獲取信息的效率,優化操作體驗。下面,我們將結合一系列精心設計的列表版方案圖片,深入探討如何打造出實…

HarmonyOS優化應用內存占用問題性能優化四

一、使用purgeable優化C內存 Purgeable Memory是HarmonyOS中native層常用的內存管理機制,可用于圖像處理的Bitmap、流媒體應用的一次性數據、圖片等。應用可以使用Purgeable Memory存放其內部的緩存數據,并由系統根據淘汰策略統一管理全部的purgeable內存…

第一課如何學習課程

讀薄就這些東西 讀厚細節;實現了還是很混沌(內功心法)-》有個項目;在聽的過程中寫博客:我學了什么,敲代碼; 第二章 網絡-》9.1kv存儲 第三章 基礎組件 (API函數、最基礎的底層架構…

Linux 系統不終止進程的情況下關閉長連接

使用 tcpkill 中斷指定 TCP 連接 適用場景:需主動中斷已知源IP或目標端口的連接,無需進程重啟。 安裝 dsniff 工具(包含 tcpkill): yum -y install dsniff 捕獲并殺死特定連接(例如目標IP 192.168.1.10…