你可能正在處理來自不同醫院、不同設備或不同人羣的睡眠多導睡眠圖(PSG)材料集(比如 Sleep-EDF, SleepDG, HMC 等),並發現一個棘手的問題:在一個資料集上訓練得很好的模型,換到另一個內容集上效果就一落千丈。
這個問題,大家稱之為域偏差(Domain Bias)或域偏移(Domain Shift)。
這篇博客的唯一目的,就是帶你——一個“小白”——從最基礎的統計學原理和公式出發,一步步學會如何量化和評判這些數據集之間的差異。
路線圖
我們將分步驟進行,就像爬樓梯一樣:
- Step 1: 描述性統計- <em>給你的內容集“量體温”</em>
- Step 2: 數據分佈- <em>看清數據集的“長相”</em>
- Step 3: 假設檢驗- <em>判斷“差異”是否真的存在</em>
- Step 4: 分佈相似性度量- <em>域偏差的“量化”</em>
- Step 5: 綜合分析- <em>如何向他人展示你的發現</em>
Step 1: 描述性統計 (Descriptive Statistics)
這是最基礎的第一步。我們要為每個數據集計算一些“身份信息”。
- 類比:想象你有兩組人(兩個數據集),你應該先知道他們的平均身高、體重範圍等主要信息。
1.1 中心趨勢 (Central Tendency)
它告訴我們數據的“中心”在哪裏。
a) 均值 (Mean)
就是我們常説的“平均數”。它對“異常值”(比如一個特定大的偽影)非常敏感。
公式:
對於一個特徵(比如C4-A1通道的EEG信號幅度),其均值為:
其中,是樣本總數(比如總Epochs數),
是第
個樣本的值。
b) 中位數 (Median)
將所有素材從高到低排序,排在最中間的那個數。它對異常值不敏感,更“穩健”。
公式:
1.2 離散程度 (Dispersion)
它告訴我們材料有多“分散”或多“集中”。
a) 方差 (Variance)
衡量每個數據點離均值有多遠。方差越大,信息越分散。
公式:
b) 標準差 (Standard Deviation)
方差的平方根。它的好處是單位和原始數據相同(比如),因此更容易解釋。
公式:
PSG應用與域偏差初探:
假設你計算了兩個PSG素材集(數據集A 和 數據集B)的統計數據:
|
特徵
|
指標
|
信息集 A (醫院A)
|
資料集 B (醫院B)
|
|
患者年齡 |
均值 ( |
45.2 歲
|
58.7 歲
|
|
EEG (C4-A1) 幅度 |
標準差 ( |
15.3 |
28.1 |
結論:
- 年齡差異:數據集B的患者平均年齡顯著大於A。這是一個協變量偏移 (Covariate Shift)。這可能導致模型學到的“年齡相關的睡眠特徵”在另一個數據集上失效。
- 信號幅度差異:數據集B的EEG信號標準差遠大於A。這可能意味着B的設備靈敏度不同,或者偽影(Artifacts)更多。這是內容本身的偏移。
Step 2: 數據分佈 (Data Distribution)
均值和方差只是“總結”。我們更想知道資料整體的“長相”。
- 類比:知道兩組人的平均身高還不夠,我想知道他們中“高個子”和“矮個子”各佔多少比例。
這就是概率密度函數 (Probability Density Function, PDF) 或 直方圖 (Histogram) 要做的事。
公式 (概念):
生物信號)服從就是我們頻繁假設信息(尤其正態分佈(高斯分佈)。
這個公式的重點是:一個分佈可以由它的 和
PSG應用與可視化:
大家行畫出兩個材料集某個特徵(比如某個頻帶的能量)的分佈圖。
假設的可視化圖:
[一個顯示兩個不同分佈的假設圖表]
|
數據集 A | .
(μ=10, σ=2) | . .
| . .
| . .
概率密度 | . . 數據集 B
| . . (μ=15, σ=4)
| . .
| . .
|. .
|________________._________________
特徵值 (例如: Delta波能量)
圖1:假設數據集A與數據集B的特徵分佈對比
結論:
從上圖(假設)中我們肉眼可見:
- 均值不同:B的中心(15)遠大於A的中心(10)。
- 方差不同:B的分佈更“胖”(
),説明其特徵值更分散。
這就是最直觀的域偏差!
Step 3: 假設檢驗 (Hypothesis Testing)
我們在Step 1和Step 2中“看到”了差異。但這個差異是**“顯著的”(真的有不同),還是“偶然的”**(可能只是抽樣巧合)?
- 類比:你在A組抽了10個人,B組抽了10個人,發現A組平均身高175cm,B組176cm。這個1cm的差異是“真的”嗎?還是你下次再抽10個人,可能A組就177cm了?
假設檢驗就是來回答這個問題的。
3.1 零假設 (
) vs 備擇假設 (
)
- 零假設 (
):“沒有差異”。(例如:
)
- 備擇假設 (
):“存在差異”。(例如:
)
我們的目標是**“拒絕”**。
3.2 t-檢驗 (t-test)
最常用的檢驗之一,用於比較兩個組的均值是否有顯著差異。
公式 (獨立雙樣本t-test):
它會計算一個,這個值越大,説明差異越“明顯”。
其中,是A和B的樣本均值;
是樣本量;
是合併標準差(有點複雜,這裏先理解概念)。
3.3 p-值 (p-value)
t-test 會給我們一個。
- p值的“小白”解釋:如果零假設(
)是真的(即A和B沒有差異),大家能觀測到當前這種(甚至更極端)差異的概率。
- 判斷標準:通常,我們設置一個顯著性水平
(比如
)。
- 如果
(例如
):説明“如果A和B沒差異,大家基本不可能看到現在的資料”。因此,我們拒絕
,認為**“差異是顯著的”**。
- 如果
(例如
):説明“這個差異很可能是偶然”。我們無法拒絕
。
PSG應用:
你對Step 1中的“患者年齡”進行t-test:
:數據集A和B的患者平均年齡相同。
:數據集A和B的患者平均年齡不同。
- 你運行檢驗,得到
。
- 結論:
,我們拒絕
。數據集A和B的患者年齡存在統計學上的顯著差異。這是一個必須在模型訓練中考慮的嚴重域偏差。
Step 4: 分佈相似性度量 (深入域偏差)
t-test 只比較“均值”。但有時兩個分佈均值相同,但“形狀”完全不同(比如一個高瘦,一個矮胖)。我們需要更高級的工具來比較整個分佈。
4.1 K-S 檢驗 (Kolmogorov-Smirnov Test)
K-S 檢驗用於比較兩個分佈的累積分佈函數 (CDF)。
- 類比:它不是比較“平均身高”,而是比較“身高在170cm以下的人的比例”、“180cm以下的人的比例”…等等所有點。
- 公式 (概念):它計算兩個CDF之間的最大垂直距離
。
- K-S 檢驗也會給出一個
值。如果
,説明兩個分佈形狀顯著不同。
4.2 JS 散度 (Jensen-Shannon Divergence)
這是信息論中一個非常強大的應用,用於衡量兩個概率分佈的“相似性”。
- 小白解釋:它衡量“用一個分佈去描述另一個分佈”有多“困難”。
- 基礎 - KL 散度 (Kullback-Leibler Divergence):
它衡量用替
時的“信息損失”。注意:
(不對稱)。
- JS 散度 (JSD):它是KL散度的“升級版”,具有對稱性。
其中,是兩個分佈的平均分佈。
用ln):就是JS 散度的值域是 [0, 1](如果用log2)或 [0, ln(2)](要
:兩個分佈完全相同。
越大:兩個分佈差異越大。
PSG應用 (核心):
這才是你分析域偏差的“殺手鐗”!
- 提取特徵:對每個Epoch(例如30秒的PSG片段)提取特徵(比如功率譜密度 Power Spectral Density, PSD)。
- 創建分佈:將所有Epoch的特徵值做成直方圖(PDF),這就是
(數據集A的特徵分佈) 和
(材料集B的特徵分佈)。
- 計算 JSD:
結論:
你得到了一個單一的數值(比如 0.42),它量化了兩個數據集在“這個特徵上”的域偏差有多大。你可以為所有重要特徵(不同通道、不同頻帶)都計算這個分數。
Step 5: 綜合分析 (可視化你的發現)
末了,你不能只給老闆看一堆值和 JSD 分數。你要求一個直觀的全局視圖。
技術:降維與可視化 (t-SNE / PCA)
PSG特徵(比如所有通道的PSD)可能有幾百甚至上千維。我們無法直接畫圖。我們需要用降維技巧把它們“壓”到2D或3D。
- PCA (主成分分析):線性降維,尋找數據“方差最大”的方向。
- t-SNE (t-分佈隨機鄰域嵌入):非線性降維,非常擅長“聚類”,能把相似的數據點“拉”到一起。
操作流程:
- 從內容集A和資料集B中抽取(比如各5000個)Epochs的特徵。
- 將數據集A的特徵標記為“藍色”。
- 將數據集B的特徵標記為“紅色”。
- 將所有(10000個)高維特徵數據扔進 t-SNE 算法,讓它降到2D。
- 繪製散點圖。
可能的分析結果:
- 情況一:域偏差極大
- 你看到的圖像是:左邊一大片“藍色”點,右邊一大片“紅色”點。兩坨分得清清楚楚。
- 結論:域偏差非常嚴重。模型能輕易“記住”它在哪個數據集上。
- 情況二:域偏差很小
- 你看到的圖像是:“藍色”和“紅色”的點均勻地混合在一起,像一碗“紅豆藍莓粥”。
- 結論:兩個數據集的特徵空間非常相似,模型泛化性會很好。
總結:你的最終評判流程
從0開始評判睡眠PSG資料集的域偏差,你應該:
- 看基本盤 (描述性統計): 計算
。檢查患者元數據(年齡、性別)和信號基本屬性(幅度、噪聲水平)。
- 看差異 (假設檢驗):對你懷疑有差異的指標(如年齡)跑一個t-test,用
值確認差異是否顯著。
- 看全局 (分佈度量):對關鍵的EEG/EOG/EMG特徵(如頻帶能量),計算JS散度 (JSD),得到一個量化的偏差分數。
- 看全貌 (可視化): 跑一個 t-SNE,用“顏色”區分數據集。如果能“一眼分開”,就是最直觀的域偏差證據。
通過這套組合拳,你就可以從一個“小白”變成一個能用信息和公式清晰説明“這兩個PSG材料集差異到底有多大”的專業分析師了。