【深度學習與大模型基礎】第10章-期望、方差和協方差

一、期望

———————————————————————————————————————————

1. 期望是什么?

期望(Expectation)可以理解為“長期的平均值”。比如:

  • 擲骰子:一個6面骰子的點數是1~6,每個數字概率是1/6。
    期望值?= (1+2+3+4+5+6)/6 = 3.5
    意思是:如果你擲骰子無數次,平均每次的結果會趨近于3.5。

  • 程序員類比
    假設你每天寫代碼的bug數量是隨機變量,長期平均每天產生2個bug,那么?bug數的期望就是2


2. 期望的公式

離散隨機變量的期望公式:

E(X)=X_{1}P_{1}+X_{2}P_{3}+...+X_{K}P_{K}

即:每個值 × 它的概率,再全部加起來


3. 代碼例子

例子1:計算骰子的期望
import numpy as np# 骰子的可能取值和概率
values = np.array([1, 2, 3, 4, 5, 6])
probabilities = np.array([1/6] * 6)  # 每個概率1/6# 期望 = sum(值 × 概率)
expectation = np.sum(values * probabilities)
print(expectation)  # 輸出:3.5

4. 期望的現實意義

  • 決策依據:比如比較兩個功能的預期收益,選期望更高的。

  • 風險評估:比如算法的平均時間復雜度就是期望的體現。

  • 機器學習:損失函數的期望最小化(如交叉熵)是訓練模型的核心。


5. 注意

  • 期望≠必然結果!比如骰子期望是3.5,但永遠擲不出3.5。

  • 期望可能是無限(如某些概率分布的期望不存在)。

———————————————————————————————————————————

二、方差

_____________________________________________________________________________

1. 方差是什么?

方差衡量的是數據的“離散程度”,即數據點與期望值(均值)的偏離程度。
通俗說:方差越大,數據越“散”;方差越小,數據越“集中”

  • 例子1
    兩組程序員每天寫的代碼行數:

    • A組:[90, 100, 110](均值=100,波動小)→ 方差小

    • B組:[50, 100, 150](均值=100,波動大)→ 方差大

  • 例子2(程序員版)
    你的代碼在測試環境跑10次,每次耗時可能是:

    • 低方差:[9ms, 10ms, 11ms](穩定)

    • 高方差:[1ms, 10ms, 20ms](波動大,性能不可靠)


2. 方差的公式

設隨機變量?X的期望為?E(X),則方差?Var(X)為:

?Var(X)=E[(X-E(X))^{2}]

即:每個數據與均值的差的平方的平均


3. 代碼例子

例子1:計算骰子的方差

import numpy as np# 骰子的可能取值和概率
values = np.array([1, 2, 3, 4, 5, 6])
probabilities = np.array([1/6] * 6)  # 每個概率1/6# 期望 = sum(值 × 概率)
expectation = np.sum(values * probabilities)
print(expectation)  # 輸出:3.5# 方差 = sum( (x_i - 期望)^2 × 概率 )
variance = np.sum((values - expectation) ** 2 * probabilities)
print(variance)  # 輸出:2.916...
 

解釋

  • 骰子的結果1~6分別與期望3.5的差是[-2.5, -1.5, -0.5, 0.5, 1.5, 2.5]

  • 平方后求和再平均,得到方差≈2.92(說明骰子點數波動較大)。


4. 方差的意義

  • 穩定性評估:比如API接口的響應時間方差越小越好。

  • 風險控制:在強化學習中,策略的方差高可能導致訓練不穩定。

  • 特征選擇:機器學習中,方差接近0的特征可能對模型無用(如常數列)。


5. 注意

  • 方差單位是原數據的平方(比如“秒2”),有時用標準差(方差的平方根)更直觀。

  • 方差對異常值敏感(一個極端值會大幅拉高方差)。


?三、協方差

———————————————————————————————————————————

1. 協方差是什么?

協方差衡量的是兩個隨機變量的“協同變化關系”:

  • 協方差 > 0:一個變量增大,另一個也傾向于增大(正相關)。

  • 協方差 < 0:一個變量增大,另一個傾向于減小(負相關)。

  • 協方差 ≈ 0:兩個變量無明顯線性關系。

通俗比喻

  • 程序員版:

    • 正相關:代碼量增加 → Bug數量也增加 😅

    • 負相關:測試覆蓋率提高 → Bug數量減少 🎉

    • 無關系:咖啡飲用量和代碼性能(可能毫無關聯)?→🤖


2. 協方差公式

對于兩個隨機變量?X?和?Y,協方差?Cov(X,Y) 定義為:

Cov(X,Y)=E[(X?E[X])(Y?E[Y])]

即:兩個變量分別與各自均值的偏差,乘積的平均值


3. 代碼例子

例子1:程序員工作時長與Bug數量的關系

假設5天數據:

  • 每天工作時間(小時):[6, 8, 10, 12, 14]

  • 對應Bug數量:[3, 5, 7, 9, 11]

import numpy as np# 數據
hours = np.array([6, 8, 10, 12, 14])  # X
bugs = np.array([3, 5, 7, 9, 11])     # Y# 計算協方差
covariance = np.cov(hours, bugs, ddof=0)[0, 1]  # ddof=0表示總體協方差
print(covariance)  # 輸出:10.0
 

解釋

  • 協方差=10(正數),說明工作時長和Bug數量呈正相關(工作時間越長,Bug越多)。


例子2:代碼覆蓋率與Bug數量的關系

新數據:

  • 代碼覆蓋率(%):[70, 80, 90, 95, 99]

  • Bug數量:[10, 7, 5, 3, 1]

coverage = np.array([70, 80, 90, 95, 99])
bugs = np.array([10, 7, 5, 3, 1])covariance = np.cov(coverage, bugs, ddof=0)[0, 1]
print(covariance)  # 輸出:-32.16
 

解釋

  • 協方差≈-32(負數),說明覆蓋率越高,Bug越少(負相關)。


4. 協方差的意義

  • 特征相關性分析:在機器學習中,協方差矩陣用于篩選高相關性的特征。

  • 投資組合:在量化中,不同股票收益的協方差衡量風險分散效果。

  • 性能優化:比如分析CPU占用和內存使用的協方差,優化資源分配。


5. 注意

  • 協方差的數值大小受數據單位影響(比如“小時×Bug數”),難以直接比較。

  • 更常用的是相關系數(Pearson系數),它標準化協方差到[-1, 1]范圍:

    corr = np.corrcoef(hours, bugs)[0, 1]  # 輸出:1.0(完全線性正相關)

附:協方差矩陣

協方差矩陣是機器學習中常用的工具,例如PCA降維:

# 計算協方差矩陣
data = np.vstack([hours, bugs])
cov_matrix = np.cov(data, ddof=0)
print(cov_matrix)

輸出:

?[[ 8. ? -8.8 ]
?[-8.8 ? 9.76]]


總結

  • 協方差告訴你兩個變量如何共同變化。

  • 正/負協方差 → 正/負相關;接近0 → 無線性關系。

  • 代碼中用np.cov()計算,但實際分析更常用相關系數。

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

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

相關文章

JAVA虛擬機(JVM)學習

入門 什么是JVM JVM&#xff1a;Java Virtual Machine&#xff0c;Java虛擬機。 JVM是JRE(Java Runtime Environment)的一部分&#xff0c;安裝了JRE就相當于安裝了JVM&#xff0c;就可以運行Java程序了。JVM的作用&#xff1a;加載并執行Java字節碼&#xff08;.class&#…

【數據結構與算法】——堆(補充)

前言 上一篇文章講解了堆的概念和堆排序&#xff0c;本文是對堆的內容補充 主要包括&#xff1a;堆排序的時間復雜度、TOP 這里寫目錄標題 前言正文堆排序的時間復雜度TOP-K 正文 堆排序的時間復雜度 前文提到&#xff0c;利用堆的思想完成的堆排序的代碼如下&#xff08;包…

什么是柜臺債

柜臺債&#xff08;柜臺債券業務&#xff09;是指通過銀行等金融機構的營業網點或電子渠道&#xff0c;為投資者提供債券買賣、托管、結算等服務的業務模式。它允許個人、企業及機構投資者直接參與銀行間債券市場的交易&#xff0c;打破了以往僅限機構參與的壁壘。以下是綜合多…

【Android讀書筆記】讀書筆記記錄

文章目錄 一. Android開發藝術探索1. Activity的生命周期和啟動模式1.1 生命周期全面分析 一. Android開發藝術探索 1. Activity的生命周期和啟動模式 1.1 生命周期全面分析 onPause和onStop onPause后會快速調用onStop&#xff0c;極端條件下直接調用onResume 當用戶打開新…

Java對象內存結構詳解

Java對象內存結構詳解 Java對象在JVM內存中的存儲結構可以分為三個部分&#xff1a;對象頭&#xff08;Header&#xff09;、實例數據&#xff08;Instance Data&#xff09;和對齊填充&#xff08;Padding&#xff09;。以下是64位JVM&#xff08;開啟壓縮指針&#xff09;下…

【TI MSPM0】Printf重定向學習

一、新建工程 通過XDS110與電腦進行通信。 選擇這兩個引腳 需要添加這兩個頭文件 在程序中添加這三個函數即可對printf進行重定向 二、封裝函數 另一種方法 封裝一個函數&#xff0c;定義一個數組

深度強化學習基礎 0:通用學習方法

過去自己學習深度強化學習的痛點&#xff1a; 只能看到各種術語、數學公式勉強看懂&#xff0c;沒有建立清晰且準確關聯 多變量交互關系浮于表面&#xff0c;有時候連環境、代理控制的變量都混淆 模型種類繁多&#xff0c;概念繁雜難整合、對比或復用&#xff0c;無框架分析所…

asm匯編源代碼之-字庫轉換程序

將標準的16x16點陣漢字庫(下載16x16漢字庫)轉換成適合VGA文本模式下顯示的點陣漢字庫 本程序需要調用file.asm中的子程序,所以連接時需要把file連接進來,如下 C:\> tlink chghzk file 調用參數描述如下 C:\> chghzk ; 無調用參數,轉換標準庫文件(SRC16.FNT)為適合VGA…

uniapp轉換markdown

效果 AI智能體 微信小程序 流式 1.安裝Node.js 參考:2024最新版Node.js下載安裝及環境配置教程&#xff08;非常詳細&#xff09;_node.js 安裝-CSDN博客 2.需要克隆項目到本地或直接到項目地址下載壓縮包。 參考&#xff1a;uniapp中解析markdown支持網頁和小程序_uniapp ma…

用java代碼如何存取數據庫的blob字段

一.業務 在業務中我們被要求將文件或圖片等轉成 byte[] 或 InputStream存到數據庫的Blob類型的字段中. 二.Blob類型介紹 在 MySQL 中&#xff0c;Blob 數據類型用于存儲二進制數據。MySQL 提供了四種不同的 Blob 類型&#xff1a; TINYBLOB: 最大存儲長度為 255 個字節。BL…

qemu(2) -- 定制開發板

1. 前言 qemu支持自定義開發板&#xff0c;本文就記錄一下折騰的過程。基于qemu-10.0.0-rc3添加x210vb3s開發板。 2. 添加板卡文件 網上參考了一些文章&#xff0c;有些文章使用的版本和我的不一樣&#xff0c;折騰起來費了點時間&#xff0c;最后發現還是直接參考qemu中已有…

Python在糖尿病分類問題上尋找具有最佳 ROC AUC 分數和 PR AUC 分數(決策樹、邏輯回歸、KNN、SVM)

Python在糖尿病分類問題上尋找具有最佳 ROC AUC 分數和 PR AUC 分數&#xff08;決策樹、邏輯回歸、KNN、SVM&#xff09; 問題模板解題思路1. 導入必要的庫2. 加載數據3. 劃分訓練集和測試集4. 數據預處理5. 定義算法及其參數6. 存儲算法和對應指標7. 訓練模型并計算指標8. 找…

CPU(中央處理器)

一、CPU的定義與核心作用 CPU 是計算機的核心部件&#xff0c;負責 解釋并執行指令、協調各硬件資源 以及 完成數據處理&#xff0c;其性能直接影響計算機的整體效率。 核心功能&#xff1a; 從內存中讀取指令并譯碼。執行算術邏輯運算。控制數據在寄存器、內存和I/O設備間的…

上層 Makefile 控制下層 Makefile 的方法

在復雜的項目中&#xff0c;通常會將項目劃分為多個模塊或子項目&#xff0c;每個模塊都有自己的 Makefile。上層 Makefile 的作用是協調和控制這些下層 Makefile 的構建過程。下面是幾種常見的示例&#xff0c;實現上層 Makefile 對下層 Makefile 的控制。 直接調用&#xff1…

prompts提示詞經典模板

prompts.py 中的提示詞模板詳解 文件中定義了兩個核心提示詞模板&#xff1a;REASON_PROMPT 和 RELEVANT_EXTRACTION_PROMPT。這兩個模板在 DeepResearcher 的推理過程中扮演著關鍵角色。下面我將詳細解析這兩個模板的結構和功能。 REASON_PROMPT 詳解 REASON_PROMPT 是用于指…

使用python獲取電腦硬盤信息

import psutil# 獲取硬盤信息 disk_partitions psutil.disk_partitions() print(disk_partitions) for partition in disk_partitions:print(f"設備: {partition.device}")print(f"掛載點: {partition.mountpoint}")print(f"文件系統類型: {partitio…

HarmonyOS-ArkUI V2裝飾器: @Provider和@Consumer裝飾器:跨組件層級雙向同步

作用 我們在之前學習的那些控件中,各有特點,也各有缺陷,至今沒有痛痛快快的出現過真正能跨組件的雙向綁定的裝飾器。 比如 @Local裝飾器,不能跨組件@Param裝飾器呢,能跨組件傳遞,但是僅僅就是下一層組件接收參數。另外,它是單向傳遞,不可被重新賦值。如果您非要改值則…

索引下推(Index Condition Pushdown, ICP)

概念 索引下推是一種數據庫查詢優化技術&#xff0c;通過在存儲引擎層面應用部分WHERE條件來減少不必要的數據讀取。它特別適用于復合索引的情況&#xff0c;因為它可以在索引掃描階段就排除不符合全部條件的數據行&#xff0c;而不是將所有可能匹配的記錄加載到服務器層再進行…

idea在線離線安裝插件教程

概述 對于小白來說&#xff0c;剛使用idea時&#xff0c;還有很多不懂的地方&#xff0c;這里&#xff0c;簡單介紹下如何安裝插件。讓小白能容易上手全盤idea。 1、File -> Settings 2、找到 Plugins -> Marketplace 3、安裝 3.1、在線安裝 輸入想搜索的內容&#x…

豪越賦能消防安全管控,解鎖一體化內管“安全密碼”

在消防安全保障體系中&#xff0c;內部管理的高效運作是迅速、有效應對火災及各類災害事故的重要基礎。豪越科技憑借在消防領域的深耕細作與持續創新&#xff0c;深入剖析消防體系內部管理的痛點&#xff0c;以自主研發的消防一體化安全管控平臺&#xff0c;為行業發展提供了創…