无名 发表于 2022-5-8 17:01:51

【LSP】特征工程:利用卡尔曼滤波器处理时间序列(快速入门+py


http://cdn.u1.huluxia.com/g4/M02/6D/5D/rBAAdl94A9KAfsadAACt4WdlvYs098.jpg
卡尔曼滤波器
英文kalman filter
这里介绍简单的,只有一个状态的滤波器
卡尔曼滤波器经常用在控制系统中、机器人系统中,但是这里主要讲解如何用在AI的大数据分析预测中
为什么要用kalman filter处理时间序列
假设我们有100个时间点的数据,这个数据就是分别在100个点观测出来的结果。

对于每一个时间点的数据,获取的方法有两个:

第一个就是观测,但是测量的结果不一定准确,可能受限于测量仪器的精度?
第二个就是用这个时间点之前的所有数据,预测这个时间点的数据,当然,这个预测值也是不准的。
可否利用这两种方法,相互促进,预测的值更准,或者说让观测道德值更接近本质?Kalman Filter卡尔曼滤波器就这样做的。
简单讲讲kalman filter的过程
每一个观测数据,严谨的说都应该会有一个偏差值。比方说,现在温度计测量是26度,偏差值是0.5度,那么真实的问题应该是在(25.5,26.5)之间,或者写成26±0.526±0.5。

这样我们预测的值,和观测的值,再加上这两个各自的偏差,总共四个已知信息,来推测真实的、更本质的数据。

预测的值:可以通过事先设定的公式,上一个时刻的真实的值算出来;
观测的值:直接读取测量仪器的值。
观测的值的偏差:这个也是可以直接得到的;
预测的值的偏差:这个是从上一个时间点的预测的值的偏差经过给定公式计算出来的。
下面的公式中,脚标k表示时间点,k-1是上一个时间点。大写字母A,B,C表示常数,事先设定的;大写字母H,是一个需要计算的。

预测的值:x预测k=A?x真实k?1+B?uk?1xk预测=A?xk?1真实+B?uk?1
观测的值:x观测kxk观测
观测的值的偏差:p观测kpk观测
预测的值的偏差:p预测k=(1?H)?p预测k?1?????????????√pk预测=(1?H)?pk?1预测
kalman增益H:Hk=(p预测k)2(p预测k)2+(p观测k)2Hk=(pk预测)2(pk预测)2+(pk观测)2
真实的值:x真实k=Hk?x观测k+(1?Hk)?x预测kxk真实=Hk?xk观测+(1?Hk)?xk预测
可以看出,这个kalman增益就是一个加权平均的权重,是观测值更重要还是预测值更重要;两者的重要性就由两者的偏差大小决定,偏差小的更重要。
其中uk?1uk?1表示上一个时间点的控制信号,比方说一个机器人,机器人的状态去觉得机器人自身的行为,但是很多情况这个控制信号是不用考虑的。比方对股市的时间序列做kalman滤波,那么并没有什么控制信号去控制,只是任由其自由发展。

举一个例子,房间的温度的例子:
总共有三个时刻,上午、下午和晚上(实际的话,时间点间隔应该会很短,这里只是举例),上午温度是观测值是23度,偏差是0.5,因为上午是第一个时间点,所以没有预测值;
下午,假设A=1,B=0,所以下午的预测值是23度,然后假设初始偏差时1;下午的观测值是25度,观测值的偏差时0.5,所以可以计算得到kalman增益H=1212+0.52=0.8H=1212+0.52=0.8,所以下午的真实值是:0.8?25+(1?0.8)?23=24.60.8?25+(1?0.8)?23=24.6
晚上,晚上的预测值就是上一时刻的真实值,所以是24.6,偏差是(1?0.8)?1??????????√=0.4472(1?0.8)?1=0.4472;晚上的观测值是20度,然后偏差时0.5,所以kalman增益增益H=0.447220.44722+0.52=0.4444H=0.447220.44722+0.52=0.4444,所以这个时刻的真实值是:0.4444?20+(1?0.4444)?24.6=22.560.4444?20+(1?0.4444)?24.6=22.56

最后总结一下,其实我们只需要什么呢?需要知道观测的误差是0.5,然后三个时间点的观测数据:,然后用kalman滤波器之后,就变成。其实起到了一个平滑的作用。

python怎么实现呢?http://cdn.u1.huluxia.com/g4/M02/6D/5D/rBAAdl94A9OAVcaGAAMQq_ckSqc964.jpg
这里面使用的是pykalman库中的KalmanFilter,因为上面讲解的Kalman Filter是简化的,绕靠了正统的解释的正态分布的知识,所以这里的卡尔曼滤波器的参数可能无法与上面给出的卡尔曼公式中一一对应,会产生一定的脱节。http://cdn.u1.huluxia.com/g4/M02/6D/5D/rBAAdl94A9SAdcY8AAHcXsY6aeM508.jpg
页: [1]
查看完整版本: 【LSP】特征工程:利用卡尔曼滤波器处理时间序列(快速入门+py