獨立成分分析
獨立成分分析(簡稱ICA)是一種用來從多變數統計數據中找到隱含因素或成分的方法,是主成分分析的一種變種和擴展。
在解釋ICA的作用之前,先介紹一個概念:雞尾酒會效應。在嘈雜的雞尾酒宴會上,許多人在同時交談,可能還有音樂背景,但人耳卻能夠準確而清晰的聽到特定人的談話,這種從混合聲音中選擇自己感興趣的聲音而把其他聲音忽略的現象,稱作雞尾酒會效應。
獨立成分分析就是對雞尾酒會效應的數學描述或實現,即如何從混雜對象中選出感興趣的部分來。本質上ICA是一種線性變換,它把數據或信號分離成統計獨立的非高斯信號源。對ICA的通用描述如下:
設s(t)是t時刻、m維零均值的源信號向量,且其分量相互獨立;設x(t)是n維觀測信號向量,其每個觀測信號分量都是m個獨立的源信號的線性組合,即
x(t)=a*s(t)
ICA的目標就是找到一個對x(t)做線性變換的m*n矩陣w,使得x(t)經過變換得到的新變數y的各個分量之間儘可能獨立,即y(t)為源信號s(t)的估計值。
ICA模型的使用需要滿足4個基本假設(1)滿秩矩陣;(2)非高斯源;(3)獨立性;(4)加性雜訊。
在ICA中,需要利用"非高斯性就是獨立性"來判斷獨立性,它利用的是中心極限定理的基本理論:如果一個信號源屬於高斯分布,那它極有可能是多個信號的綜合效應的體現,反之非高斯性則極有可能是其本身的體現。在概率論與數理統計中,教材上沒有這方面的實例,顯然,這是中心極限定理應用的一個"額外"功能。
實施ICA,一般需要三步:(1)數據的預處理,包括中心化和白化;(2)設定獨立性的度量標準,建立目標函數;(3)選用一種方法,使目標函數最優化。
ICA發展很快,也有多種方法可以實現,但用得最多的是FastICA演算法。在MATLAB中,有人已經把這種演算法實現了,下面給出的是摘自網上的演算法,在MATLAB2014版上運行通過,但由於代碼版本較早,有些語法過時了,MATLAB提示需要更改。這些源碼,查看本公眾號的另一文章:fastica。
上述內容摘選總結自:朱文泉與林文鵬編著的《遙感數字圖像處理-原理與方法》。


TAG:數據處理與編程 |