參數的調整

前言

超級APP功能越來越全,非超級APP的DAU都在下降,當失去增長紅利之後,精細化迭代和精細化運營將成爲必然選擇。產品的工作的重點也需要從前端和交互的修改,轉移到策略的制定。而產品策略在實現層,最終是以算法公式的形式輸出的。

一個成熟的策略系統,會涉及多種重要的因素。如何保證這些策略公式在複雜的運算中發揮自己應有的作用,如何保證不同的數值能在同一緯度計算,這就涉及很多參數調整的策略技巧。

調整參數的目的

首先在調整參數的時候,前提是明確調整參數的目的。針對具體的目的,使用對應的工具,然後才能達成具體的目的。對調整參數的目的簡單做了一些總結,具體如下:

歸一化處理

調整因素的影響力

信息論處理:熱門降權和時間衰減降權

調整變化曲線

設定變化界限

歸一化處理

歸一化處理,通過處理讓不同因素在一個範圍內進行比較。舉個例子,如果要比較專欄的影響力,需要綜合考慮閱讀量、點贊量、發表文章量這三個因素,直接相加顯然是不可行,因爲閱讀量數量是點贊數的至少10倍,而點贊數也是發表文章數的幾十倍。要讓不同因素在一個變化範圍內,這個時候就需要對進行歸一化處理。

最簡單粗暴的歸一化方式,就是直接除以數據中的最大值,那麼所有值都在0~1之間,並保留原有的變化性質。即:

當然這樣的處理方法也會有問題,比如受到極值影響比較大。而且如果大部分分值比極值低很大的數量級,則低分值將沒有區分度,以閱讀量爲例,如果最大閱讀量爲十萬+,而大部分專欄文章閱讀量集中在500左右。這樣直接除以極大值顯然是不明智的。這個時候最好在處理前對數值進行調整。在之前的文章《神奇的對數》中提到的對數處理是個比較好用的方法:

這樣既保證了所有的數值在0~1之間,同時極值對最終分值的決定性影響也沒那麼大。

調整因素的影響力

調整影響力的比較通用的辦法有兩種,加數值,乘以數值。

加數值能解決冷啓動遇到的新內容權重過低的問題,比如,如果知乎答案完全按照贊同排序,則新發布的知乎答案,一開始在下面,不利於被更多人看見,如果新發布的內容自帶20個贊參與排序,則能解決這一問題。

乘以數值能解決數值重要性的問題,如果希望某一因素在總排序中佔據更重要的位置,則可以用乘法處理,比如,還是知乎內容排序的例子,如果完全按照贊同排序,要提高文章的排序權重,可以直接乘以某個係數。

信息論處理:熱門降權、時間衰減降權、置信度提權

一個信息出現概率越小,信息量越大,如果一個信息越常見,包含的信息越小。這個在之前文章《搜索的原理》中提到的一個基礎觀點。在實際的策略公式中,從信息論的角度去考慮就能快速的理解策略,讓最終結果更加符合預期。

熱門降權以經典的圖書推薦爲例進行介紹。在圖書推薦中買了的人還買了的策略中,有一個著名的哈利波特問題,因爲哈利波特銷量過高,幾乎所有的圖書都和它有關係。怎麼處理呢?一個辦法是用銷量做流行度處理,降低流行度特別高的商品在排序中的得分:

時間衰減降權,顧名思義,讓過去的信息權重更低,最近的信息權重更高。行爲具有連續性,最新的行爲包含了更大的信息量。在處理的時候也可以使用上面的數學形式,讓更遠的時間分數衰減更大:

置信度提權,是基於數據量越大信息越靠譜,在處理平均值,打分等的參數時候有比較好的應用。比如,在計算一個電影的排序的時候,在考慮多個因素中包含了電影觀衆打分,這兒時候應該是打分的人越多,電影打分的權重越高。

調整變化的曲線

一般而言未經加工的數值在策略中很難直接應用,比如:知乎點贊/閱讀的比率。好的文章高一些,差的文章低一些。變化範圍特別小。希望整體數值變化範圍不變的情況下,怎麼加大區分度?這個時候可以用一些曲線的性質。開方是個例子,0.25變爲0.5,0.01變爲0.1,而1處理後還是1:

同樣的如果分值都集中在很高的情況下,爲了加大區分度,也可以用開方的逆運算。0.8處理後變爲0.64,0.5處理後變爲0.25,1處理後還是1:

設定變化的界限

防止一些極值產生對於計算的影響,設定變化界限也是常用的方法。比較暴力的做法是設定最大值,比如:當在閱讀量計算中,閱讀量數值大於10萬,只取十萬,防止大值的影響。

還有一些比較柔性的做法,比如用有界函數進行處理:

或者直接用之前文章《神奇的對數》中提到的對數也是不錯的做法,會讓大值影響減少:

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