如何截取完整的波形图,请教一下各位(关于机器学习、特征提取、时间序列)

56 天前
 AlwaysBee

最近在做机器学习相关的事情,但遇到了如下问题,导致训练出来的模型识别准确度一般

数据波形图如上图所示,我目前是通过滑动窗口来进行截取的,我的预期是截取下来的数据是红色框框的这种(两边平缓、中间波动较大),我目前的截取条件是超过阈值就自动截取

注:窗口大小是固定的

但由于条件可能过于单一,也有一定的概率截取到黑色框框的这种类型的数据

本人在数据分析和机器学习上,基本上是小白,问题描述可能也比较不专业,所以在此请教一下 V 友,这种时间序列的数据,应该如何进行特征提取

1728 次点击
所在节点    机器学习
29 条回复
AlwaysBee
56 天前
@sillydaddy #14
请教一下,这里的乘以 1.0 是有什么作用吗?
ipwx
56 天前
@AlwaysBee 你现在总结的信息才是解决你问题的重要信息。

按照你的说法,我感觉似乎用一个高斯核、一个均匀核进行卷积。如果两者相差太大,就可以认为出现了你要的检测信号。
sillydaddy
56 天前
@AlwaysBee 40 个点乘以 1.0 加总,其实隐含的就是两侧的 60 个点乘以 0.0 ,取 1.0 是对比 0.0 来说的。这里对每个点乘以一个加权数然后加总的过程就是 ipwx 提到的卷积。具体加权的数字怎么定义,怎么分布,就是所谓的卷积核。它是根据待提取的特征决定的。比如为了突出中间数值特别大的特征,也可以取中间 10 个点乘以 3.0 ,周围 30 个点乘以 1.0 ,再周围 60 个点乘以 0.0 。卷积核怎么定义,都是自己定的。

在这个例子里,特征就是中间波动大(数值绝对值也大),两边波动小(数值绝对值也小)。假设想要提取一个满足中间值比较大,两侧值比较小这个特征的滑动窗口,那就对于连续的每个滑动窗口,都用滑动窗口的中间区域乘以一个大的数值,两侧区域乘以一个小的数值,加总后的值得到该滑动窗口对应的特征值。如果某个滑动窗口的这个特征值比周围滑动窗口的特征值都大,即极大值,那我们就找到它了。
AlwaysBee
56 天前
谢谢两位,我这边先消化一下
@sillydaddy @ipwx
sillydaddy
56 天前
如果你要提取波动大的特征,而不是数值绝对值大的特征,也可以类似比照着做,只是需要先计算一下相邻两个点的变化率,通过卷积,对一个窗口的变化率加权加总,来计算出一个特征值。

甚至也可以将数值大小与变化率大小结合起来,计算出一个特征值。单看数据的特征了。

我是看你发的图形的特征,用数值计算特征值好像就足够了。
Sawyerhou
56 天前
直接要求最小值在窗口中间行不?
SiWXie
56 天前
@Sawyerhou 这个是最简单的,先把所有数据用窗口扫一遍,判断极值是不是在窗口的中间,不再的先过滤掉。

这样不仅能保证样本具有一致性操作也简单。op 需要做的就是设置最小值的阈值,超过这个阈值才能称作最小值。

至于上面讨论的核函数方法,我们就算求出了特征值,也需要设置阈值做判断,还不如这个直接。
Sawyerhou
56 天前
倒也不一定删掉,我就觉着把那个黑框挪一下,把最值放窗口中间,就跟红框差不多。
TY233
56 天前
感觉都不用 ai ,opencv 就可以搞定,从左到右检测蓝线的值,低于阈值就以这个点为中心画框

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059641

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX