慢特征分析(slow feature analysis,SFA)是 wiskott 在2002年的一篇论文里提出来的无监督学习方法,它可以从时间序列中提取变化缓慢的特征,被认为是学习时间序列最显著特征的一种方法。这里只讲述SFA应用于线性问题时的模型和解法,其对于非线性问题的应用,是基于线性模型并结合核函数来进行优化的。
一.慢特征分析模型的数学描述
首先,对于给定的原始时序特征 u ( t ) u(t) u(t) , 我们有符号
这里 u ˙ ( t ) = u ( t ) − u ( t − 1 ) \dot{u}(t) = u(t) - u(t-1) u˙(t)=u(t)−u(t−1) 表示时序差分, < ⋅ > t <\cdot>_{t} <⋅>t 表示序列的期望。 运算 Δ ( u ( t ) ) \Delta(u(t)) Δ(u(t)) 的值可以认为是序列 u ( t ) u(t) u(t) 波动快慢的一个度量。给定一个 n 维的时序数据 x ( t ) = [ x 1 ( t ) , x 2 ( t ) , . . . , x n ( t ) ] T x(t) = [x_{1}(t),x_{2}(t),...,x_{n}(t)]^{T} x(t)=[x1(t),x2(t),...,xn(t)]T, SFA旨在找到一系列慢特征 s ( t ) = [ s 1 ( t ) , s 2 ( t ) , . . . , s n ( t ) ] T s(t) = [s_{1}(t),s_{2}(t),...,s_{n}(t)]^{T} s(t)=[s1(t),s2(t),...,sn(t)]T。这些慢特征是按照从慢到快或者从快到慢排序的,一般而言我们认为提取后的特征中变化最慢的几个特征是最能体验数据本质特性的特征,将其保留,而变化快速的特征认为是一些噪声信号,将其舍弃。
SFA的线性模型可以写成如下形式
m
i
n
<
s
˙
i
2
>
min <\dot{s}^{2}_{i}>
min<s˙i2>
约束为
<
s
i
>
t
=
0
<s_{i}>_{t} = 0
<si>t=0 ,零均值
<
s
˙
2
(
t
)
>
t
=
1
<\dot{s}^{2}(t)>_{t} = 1
<s˙2(t)>t=1 ,单位方差
i
≠
j
,
<
s
i
s
j
>
t
=
0
i \neq j , <s_{i}s_{j}>_{t} = 0
i=j,<sisj>t=0 , 去相关
该模型中 s ( t ) = W T x ( t ) s(t) = W^{T}x(t) s(t)=WTx(t),即模型可以理解为将原始数据 x x x 转化为慢特征 s s s 以后要求 s s s 的波动变化最慢,同时对 s s s 具有以上的三个限制。 线性的SFA通过矩阵分解的办法可以得到完美的解析解。
二.慢特征模型的求解
我已经提到 s ( t ) = W T x ( t ) s(t) = W^{T}x(t) s(t)=WTx(t) ,这里的 W = [ w 1 , w 2 , . . . , w n ] T W = [w_{1},w_{2},...,w_{n}]^{T} W=[w1,w2,...,wn]T 是SFA需要优化求解的对象。我们首先对原始数据进行预处理白化操作,即使得数据满足于第一节提到的三个约束条件,记 B = < x x T > t B = <xx^{T}>_{t} B=<xxT>t, 对 B B B 矩阵进行SVD分解,可以得到
基于上式,我们可以得到预处理之后的白化数据
白化后的数据 z z z 的协方差矩阵为单位阵,即具有性质 c o v ( z ) = < z z T > t = I cov(z) = <zz^{T}>_{t} = I cov(z)=<zzT>t=I,接下来,我们的优化问题就变成了找到一个矩阵 P P P 使得
并且满足 < s s T > t = I <ss^{T}>_{t} = I <ssT>t=I,根据这一条件我们可以知道,待求解的矩阵 P P P 一定满足条件 < P P T > = I <PP^{T}> = I <PPT>=I, 因此 P P P 一定是正交矩阵。我们的模型目标为最小化 < s ˙ i 2 > t = p i T < z ˙ z ˙ T > t p i <\dot{s}^{2}_{i}>_{t} = p^{T}_{i}<\dot{z}\dot{z}^{T}>_{t}p_{i} <s˙i2>t=piT<z˙z˙T>tpi ,这一目标可以简单的通过对 < z ˙ z ˙ T > t <\dot{z}\dot{z}^{T}>_{t} <z˙z˙T>t 进行奇异值分解实现,即
以这样的方式我们最终可以得到目标矩阵 W W W 为
慢特征分析的python源代码还有应用的地址如下
https://github.com/LiangjunFeng/Machine-Learning/blob/master/A10.SFA.py
三、更多资源下载
微信搜索“老和山算法指南”获取更多下载链接与技术交流群
有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。