那些年用過的時間衰減函數

在我們日常的應用中時間衰減函數無處不在,比如避免出現猶太反應(強者愈強,弱者愈弱)各種排行榜;通常我們希望某些指標如文章熱度、電影評分隨着時間的漂移越來越低或者隨着時間的衰減出現一個係數能擬合這一過程,比較出名的就是牛頓冷卻定律。

一、剛開始接觸時間衰減,是在使用elasticsearch的過程中對function_score函數的使用

function_score支持的衰減函數有三種,分別是 linear、exp 和 gauss

linear、exp、gauss三種衰減函數的差別只在於衰減曲線的形狀,在DSL的語法上的用法完全一樣
linear : 線性函數是條直線,一旦直線與橫軸0相交,所有其他值的評分都是0

exp : 指數函數是先劇烈衰減然後變緩

guass(最常用) : 高斯函數則是鐘形的,他的衰減速率是先緩慢,然後變快,最後又放緩

衰減函數們 (linear、exp、gauss) 支持的參數

origin : 中心點,或是字段可能的最佳值,落在原點(origin)上的文檔評分_score爲滿分1.0,支持數值、時間 以及 “經緯度地理座標點”(最常用) 的字段

offset : 從 origin 爲中心,爲他設置一個偏移量offset覆蓋一個範圍,在此範圍內所有的評分_score也都是和origin一樣滿分1.0

scale : 衰減率,即是一個文檔從origin下落時,_score改變的速度

decay : 從 origin 衰減到 scale 所得的評分_score,默認爲0.5 (一般不需要改變,這個參數使用默認的就好了)

二、熱度衰減
文章熱度是時間的衰減與溫度與時間的衰減規律很類似。我們可以定義一個文章有一個熱度分,
當前熱度分=上一期得分 x exp(-(冷卻係數) x 間隔的小時數)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章