如何判断一段数据趋势,上升或 下降
最近工作有这样一个需求:给定十几个时序序列,判断出这个序列的趋势(上升、下降或平稳)。最开始肯定是想到,直接线性拟合斜率大小来判断呗,但是业务部门的同事说他们不止看整体斜率还看局部特征什么的总之很感性。
于是我把每个点当一个维度直接跑分类模型(lr,多层感知机,svm,rf,gbdt,xgboost),结果还不错上升和下降的查准查全率都到80%(总共样本也就五六十个。。。)。
为了提高查准率查全率,又和业务部门同事沟通了一下,他们主要综合整体以及最后几个点的趋势来判断,所以处理整体斜率,还将最后几个点的拟合斜率作为特证,这样再去分类,果然查准率或查全率得到了提高。这充分说明了传统机器学习特征提取的重要性。。。逃
- 通常是求导,就是看前后2个数的差值。但为了避免毛刺,估计要滤波。这就得具体问题具体分析了,麻烦
- 看连续的差值是不是都是正或者负不就行了么
- 然后把 连续的差值 累加起来,看结果是正 还是 负。正就是 上升 负 就是下降。 这样怎么样?
- 先滤波,再比较。
- 二阶差分之后看正负值可以得到拐点,也就是趋势的拐点
- RC低通滤波 Y(n)=kY(n-1)+(1-k)X(n)
- 一阶差分 ΔY(n)=Y(n+1)-Y(n)
- 二阶差分 Δ(ΔY(n))=Y(n+2)-2Y(n+1)+Y(n)
- 不是取一个窗口,前1/3求平均,后1/3求平均,然后比大小判断趋势么
作者:jsp
-------------------------------------------
个性签名:无论在哪里做什么,只要坚持服务、创新、创造价值,其它的东西自然都会来的。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!