最近工作有這樣一個需求:給定十幾個時序序列,判斷出這個序列的趨勢(上升、下降或平穩)。最開始肯定是想到,直接線性擬合斜率大小來判斷唄,但是業務部門的同事說他們不止看整體斜率還看局部特征什么的總之很感性。
於是我把每個點當一個維度直接跑分類模型(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求平均,然后比大小判斷趨勢么