慢特徵分析(slow feature analysis,SFA)是 wiskott 在2002年的一篇論文裏提出來的無監督學習方法,它可以從時間序列中提取變化緩慢的特徵,被認爲是學習時間序列最顯著特徵的一種方法。這裏只講述SFA應用於線性問題時的模型和解法,其對於非線性問題的應用,是基於線性模型並結合核函數來進行優化的。
一.慢特徵分析模型的數學描述
首先,對於給定的原始時序特徵 u(t) , 我們有符號
Δ(u)=<u˙2(t)>t
這裏
u˙(t)=u(t)−u(t−1) 表示時序差分,
<⋅>t 表示序列的期望。 運算
Δ(u(t)) 的值可以認爲是序列
u(t) 波動快慢的一個度量。給定一個 n 維的時序數據
x(t)=[x1(t),x2(t),...,xn(t)]T ,
SFA旨在找到一系列慢特徵 s(t)=[s1(t),s2(t),...,sn(t)]T 。這些慢特徵是按照從慢到快或者從快到慢排序的,一般而言我們認爲提取後的特徵中變化最慢的幾個特徵是最能體驗數據本質特性的特徵,將其保留,而變化快速的特徵認爲是一些噪聲信號,將其捨棄。
SFA的線性模型可以寫成如下形式
min<s˙2i>
約束爲
<si>t=0 ,零均值
<s˙2(t)>t=1 ,單位方差
i≠j,<sisj>t=0 , 去相關
該模型中 s(t)=WTx(t) ,即模型可以理解爲將原始數據 x 轉化爲慢特徵 s 以後要求 s 的波動變化最慢,同時對 s 具有以上的三個限制。 線性的SFA通過矩陣分解的辦法可以得到完美的解析解。
二.慢特徵模型的求解
我已經提到 s(t)=WTx(t) ,這裏的 W=[w1,w2,...,wn]T 是SFA需要優化求解的對象。我們首先對原始數據進行預處理白化操作,即使得數據滿足於第一節提到的三個約束條件,記 B=<xxT>t , 對 B 矩陣進行SVD分解,可以得到
B=UΛUT
基於上式,我們可以得到預處理之後的白化數據
z=Λ−1/2UTx
白化後的數據
z 的協方差矩陣爲單位陣,即具有性質
cov(z)=<zzT>t=I ,接下來,我們的優化問題就變成了找到一個矩陣
P 使得
s=Pz
並且滿足
<ssT>t=I ,根據這一條件我們可以知道,待求解的矩陣
P 一定滿足條件
<PPT>=I , 因此
P 一定是正交矩陣。我們的模型目標爲最小化
<s˙2i>t=pTi<z˙z˙T>tpi ,這一目標可以簡單的通過對
<z˙z˙T>t 進行奇異值分解實現,即
<z˙z˙T>t=PTΩP
以這樣的方式我們最終可以得到目標矩陣
W 爲
W=PΛ−1/2UT
慢特徵分析的python源代碼還有應用的地址如下
https://github.com/LiangjunFeng/Machine-Learning/blob/master/A10.SFA.py
參考文獻
[1] Wiskott L, Sejnowski T J. Slow feature analysis: unsupervised learning of invariances[J]. Neural Computation, 2002, 14(4):715.