机器学习教程 之 慢特征分析:时序特征挖掘

慢特征分析(slow feature analysis,SFA)是 wiskott 在2002年的一篇论文里提出来的无监督学习方法,它可以从时间序列中提取变化缓慢的特征,被认为是学习时间序列最显著特征的一种方法。这里只讲述SFA应用于线性问题时的模型和解法,其对于非线性问题的应用,是基于线性模型并结合核函数来进行优化的。

一.慢特征分析模型的数学描述

首先,对于给定的原始时序特征 u ( t ) u(t) u(t) , 我们有符号

Δ ( u ) = < u ˙ 2 ( t ) > t \Delta(u) = <\dot{u}^{2}(t)>_{t} Δ(u)=<u˙2(t)>t

这里 u ˙ ( t ) = u ( t ) − u ( t − 1 ) \dot{u}(t) = u(t) - u(t-1) u˙(t)=u(t)u(t1) 表示时序差分, < ⋅ > 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)]TSFA旨在找到一系列慢特征 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分解,可以得到

B = U Λ U T B = U\Lambda U^{T} B=UΛUT

基于上式,我们可以得到预处理之后的白化数据
z = Λ − 1 / 2 U T x z = \Lambda^{-1/2} U^{T}x z=Λ1/2UTx

白化后的数据 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 = P z s = Pz s=Pz

并且满足 < 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 进行奇异值分解实现,即
< z ˙ z ˙ T > t = P T Ω P <\dot{z}\dot{z}^{T}>_{t} = P^{T}\Omega P <z˙z˙T>t=PTΩP

以这样的方式我们最终可以得到目标矩阵 W W W
W = P Λ − 1 / 2 U T W = P \Lambda^{-1/2} U^{T} 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.

三、更多资源下载

微信搜索“老和山算法指南”获取更多下载链接与技术交流群
在这里插入图片描述
有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。

  • 18
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liangjun_Feng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值