結合matlab代碼案例解釋ICA獨立成分分析原理

本分享爲腦機學習者Rose整理髮表於公衆號:腦機接口社區(微信號:Brain_Computer).QQ交流羣:941473018

關於ICA,可以查看Rose小哥之前分享的《ICA獨立成分分析去除EEG僞影》以及Scott等大神關於ICA的原理與應用的文獻彙總《Scott等大神的33篇ICA獨立成分分析論文彙總》。

介紹

獨立分量分析是一種將多個傳感器中的獨立源線性混合分離的信號處理方法。例如,當在頭皮上記錄腦電圖(EEG)時,ICA可以分離出嵌入在數據中的僞像(因爲它們通常彼此獨立)。

什麼是ICA?

ICA是一種分離線性混合源的技術。例如,我們可以嘗試混合然後分開兩個源。

下面,我們定義兩個獨立源A(頂部)和B(底部)的時間過程(matlab代碼在後文中有提供)
在這裏插入圖片描述
然後,我們將這兩個源線性混合。頂部曲線等於A減去B的兩倍,而底部線性組合爲1.73 * A + 3.41 * B。
在這裏插入圖片描述
然後,將這兩個信號輸入ICA算法(在本例中爲fastICA),該算法能夠發現A和B的原始激活。
在這裏插入圖片描述
請注意,該算法無法恢復源活動的確切振幅(稍後可以看到原因)。建議嘗試使用不同程度的噪音進行測試,看看它是相當穩健。值得注意的是,從理論上講,ICA只能提取線性組合的源。

對數據進行白化

不過在使用ICA算法之前,需要說明一下大多數ICA算法在實際應用ICA之前需要執行的預處理。

許多ICA算法的第一步是白化數據。這意味着我們刪除了數據中的所有相關性,即不同的通道(矩陣Q)必須保證不相關。

爲什麼這樣做呢?一個幾何解釋是,它恢復數據的初始“形狀”,然後ICA必須只旋轉結果矩陣(見下文)。

下面,再次將兩個隨機的源A和B混合。在下圖中,A的值是數據點的橫座標,B的值是它們的縱座標。(見代碼 ica_test2.m)
在這裏插入圖片描述
取A和B的兩個線性混合物,並繪製這兩個新變量
在這裏插入圖片描述
然後,如果我們把這兩種線性混合物白化,就得到下面的圖
在這裏插入圖片描述
兩個軸上的方差現在是相等的,數據在兩個軸上的投影的相關性是0(意味着協方差矩陣是對角的,所有對角線上的元素都是相等的)。然後應用ICA僅意味着將這個表示“旋轉”回原始的A和B軸空間。

白化過程只是混合數據座標的線性變化。一旦在這個“白化”的座標系中找到ICA解決方案,我們就可以輕鬆地將ICA解決方案重新投影到原始的座標系中。

ICA算法

直觀地,您可以想象ICA將白化的矩陣旋轉回原始(A,B)空間(上面的第一個散點圖)。它通過最小化投影在兩個軸(固定點ICA)上的數據的高斯性來實現旋轉。例如,在上面的例子中,
在這裏插入圖片描述
在兩個軸上的投影是類似於高斯的(即看起來像一個鐘形曲線)。相比之下,投影在原A、B空間中遠離高斯分佈。
在這裏插入圖片描述
通過旋轉軸並在第一個散點圖最小化投影Gaussianity,ICA可以恢復統計上獨立的原始源(這個屬性來自於中心極限定理,該定理指出在滿足某種條件時,獨立隨機變量的和趨於高斯分佈,從而使得獨立隨機變量的和比任何一個原始隨機變量都更接近於高斯分佈)。在Matlab中,函數峯度(在EEGLAB工具箱中的kurt();在Matlab統計工具箱中的kurtosis())指示了分佈的高斯性(但是定點ICA算法使用了一個稍微不同的度量,稱爲負熵)。

EEGLAB工具箱中的Infomax ICA (Infomax ICA)並沒有那麼直觀,它涉及到最小化投影在兩個軸上的數據的相互信息。當然,即使ICA算法在數值上有所不同,但在理論上都是等價的。

ICA處理n維數據
上面只處理了二維空間。但是ICA可以處理任意數量的維。讓我們以128個腦電圖電極爲例。在每個時間點記錄在所有電極上的信號構成一個128維空間中的數據點。在白化數據之後,ICA將“旋轉128軸”,以最小化投影在所有軸上的高斯性(注意,與PCA不同,軸不必保持正交)。

我們所稱的ICA分量是一個矩陣,它允許將初始空間中的數據投影到ICA找到的軸上。權重矩陣是原始空間的完整變換。

下面使用一個例子來說明:
S=WXS=WX
X是原始空間中的數據,S是源活動。
對於腦電圖數據來說:
在這裏插入圖片描述
對於fMRI數據來說:
在這裏插入圖片描述
在腦電圖中:僞影時間過程或大腦中一個緊湊域的時間過程
在這裏插入圖片描述
在fMRI中:僞影地形或統計上最大獨立激活模式的地形圖

W是從S空間到X空間的權重矩陣。

現在,W的行是向量,通過它,可以計算一個獨立成分的活動。爲了計算,公式S = W X中的分量活度,權重矩陣W定義爲
在這裏插入圖片描述
例如,要計算第二個源或第二個獨立分量的活動(以矩陣乘法格式),您可以簡單地用行向量乘以矩陣X。
在這裏插入圖片描述
現在有了第二個分量的活動,但是活動是沒有單位的。如果聽說過逆建模,那麼在偶極子定位軟件中與EEG/ERP源的類比是最容易理解的。每個偶極子都有一個活動(線性地投射到所有電極上)。除非將其投射到電極上,否則大腦源的活動(偶極子)是無單位的。

現在我們將看到如何將一個分量重新投影到電極空間。
W1W^{-1}是從源空間SS到數據空間XX的逆矩陣。
X=W1SX=W^{-1}S
在Matlab中,只需要輸入inv(W)就可以得到一個矩陣的逆。
在這裏插入圖片描述
如果S是一個行向量(例如上面計算的分量2的活動),我們將它乘以上面逆矩陣中的列向量.
在這裏插入圖片描述
我們將得到分量2的投影活動(分量2的逆權值(列向量;左下)乘以組件2的活動(行向量;右上)引出分量投影(矩陣;右下角)。
在這裏插入圖片描述
現在,如果想要從數據中刪除分量2(例如,如果分量2被證明是僞跡),在可以簡單地從原始數據X中減去上面的矩陣(XC2)。

注意,在上面計算的矩陣(XC2)中,所有列都是成比例的,這意味着頭皮活動只是按比例縮放。

因此,我們表示W-1矩陣的列,即各成分的頭皮形貌。

這個矩陣的每一列都是一個分量的地形,它隨時間由該分量的活度縮放。每個分量的頭皮形貌可用於估計該組件的等效偶極子位置(假設該分量不是僞跡)。

綜上所述,當我們討論獨立分量時,我們通常會提到兩個概念
矩陣的行是分量活動的時間過程
矩陣的列是分量的頭皮投影

ICA特性

從前面的介紹可以看出ICA的幾個特性:

  • ICA只能分離線性混合的源。
  • 由於ICA處理的是點雲,因此改變點的繪製順序(EEG中的時間點順序)對算法的結果幾乎沒有影響。
  • 改變通道順序(例如在EEG中交換電極位置)也不會影響算法的結果。對於腦電信號來說,該算法對電極位置沒有先驗知識,ICA分量在大多數情況下可以被解析爲一個等效偶極子,這證明了ICA能夠分離出皮層同步化的緻密區域。
  • 由於獨立分量分析通過最大化源的非高斯性來分離源,所以完美的高斯源是不能被分離的。
  • 即使信息源不是獨立的,獨立分量分析也能找到一個最大獨立空間。

請在關注公衆號,在公衆號後臺留言"ICA code"獲取包括FastICA、ica_test1.m、ica_test2.m等代碼案例。

參考文獻
Jung T-P, Makeig S, Humphries C , Lee TW, McKeown MJ, Iragui V, and Sejnowski TJ, “Removing Electroencephalographic Artifacts by Blind Source Separation,” Psychophysiology, 37:163-78, 2000 (.pdf, 1.3Mb).
Jung T-P, Makeig S, Westerfield W, Townsend J, Courchesne E, and Sejnowski TJ, "Removal of eye activity artifacts from visual event-related potentials in normal and clinical subjects,"Clinical Neurophysiology 111:1745-58, 2000 (.pdf, 4.9Mb).

參考
結合matlab代碼案例解釋ICA獨立成分分析原理

本文章由腦機學習者Rose筆記分享,QQ交流羣:941473018
更多分享,請關注公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章