數(shù)據(jù)處理:非搜索場景下的列表應(yīng)該如何排序呢?
了解綜合排序的使用場景以及與個性化推薦的區(qū)別;了解綜合排序的影響因子以及常見的排序方法;基于業(yè)務(wù)需求對列表中的字段進行排列,輔助決策。
《數(shù)據(jù)處理之搜索如何命中》中說到了搜索結(jié)果的排序其實是對文本數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)得分的計算,那么對于非搜索場景下的列表應(yīng)該如何排序呢?
有兩種排序方式:單一維度排序;綜合排序。單一維度排序就是將所有的內(nèi)容按照某一維度進行排序,比較簡單不再贅述,主要說一下綜合排序。
一、定義
綜合排序就是綜合數(shù)據(jù)的多個維度進行排序,以搜索數(shù)據(jù)表為例,綜合排序涉及數(shù)據(jù)表的上傳時間、查看次數(shù)、更新周期、被搜索次數(shù)、熱度等維度,每個維度都有相應(yīng)的權(quán)重值,通過一定的公式計算出每個物品的“得分”進行降序排列。
二、使用場景
用于展示具有一定量級的數(shù)據(jù)且數(shù)據(jù)有多個指標維度,需要將某些高質(zhì)量的數(shù)據(jù)突出展示,可使用綜合排序,為每個維度值賦予一定權(quán)重。
用于展示搜索結(jié)果,需要根據(jù)命中字段、時間、搜索次數(shù)等維度進行綜合排序。
可搭配多個單個維度排序規(guī)則使用。
Q:綜合排序與個性化推薦的區(qū)別,可否用個性化排序代替綜合排序?
A:個性化推薦需要大量的數(shù)據(jù),需要對用戶、數(shù)據(jù)進行建模并不斷訓(xùn)練優(yōu)化,因此對于有限數(shù)量(幾百至幾千)的結(jié)果展示,可采用綜合排序的方法,將優(yōu)質(zhì)內(nèi)容推薦給用戶,同時也大大降低了開發(fā)成本。
關(guān)于個性化推薦:
個性化推薦是根據(jù)用戶的興趣、特點和行為,向用戶推薦用戶感興趣的信息和內(nèi)容。在個性化推薦系統(tǒng)中,需要基于用戶的基本信息和行為對用戶進行建模,同時基于物品的特征和信息對物品進行建模,將兩者進行匹配篩選,找到用戶可能感興趣的推薦物品,最后推薦給用戶。
常用的個性化推薦方法有:
① 基于內(nèi)容推薦:分析用戶看過的內(nèi)容(歷史內(nèi)容等 )再進行推薦;
② 基于用戶的協(xié)同過濾(UserCF):給用戶推薦和他興趣相似的其它用戶喜歡的內(nèi)容;
③ 基于物品的協(xié)同過濾(ItemCF):給用戶推薦和他之前喜歡的物品相似的物品;
④ 基于標簽的推薦:內(nèi)容有標簽,用戶也會因為用戶行為被打上標簽,通過給用戶打標簽或是用戶給產(chǎn)品打標簽為其推薦物品。
除此之外,還有隱語義模型推薦(LFM)、社會化推薦、根據(jù)時間上下文推薦、基于地理位置的推薦(LARS)等方法,各種推薦算法是可以疊加在一起的,根據(jù)不同算法的權(quán)重調(diào)整,給用戶最為精準智能的推薦。
三、排序方法
提供兩種排序方法:多維度分別單一排序;按總分值進行排序。
1. 多維度分別單一排序
定義:為每個維度定義排序方式(升序or降序),當A維度相同的情況下,按照B維度排序,若此時B維度相同,再按照C維度排序….直到最后一個維度,如果還相同,這時候就要看是隨機排序,還是按照唯一不重復(fù)的值進行排序。
使用場景:
- 適合維度較少,或者場景不復(fù)雜的情況;
- 適用于維度對結(jié)果影響非常明顯的情況;
- 需要排序的維度之間重要程度有明顯的不同。(若不同維度之間并沒有絕對的誰比誰重要的關(guān)系,不適合用此排序方式)
2. 按總分值進行排序
將多個不同維度(不同單位)的因素綜合到一起的方式有很多,比較常用和簡單的就是普通線性加權(quán)。(一般需要和pm一起確定因子和權(quán)重)
(1)普通線性加權(quán)
普通線性加權(quán)是將維度賦予一定的權(quán)重,然后將不同的維度乘以各自的權(quán)重再進行累加,如下樣式:
總分=維度A*維度A權(quán)重 +維度B*維度B權(quán)重 + 維度C*維度C權(quán)重 +……+維度N*維度N權(quán)重
舉例:當我們在某平臺購買東西時,物品排序受到瀏覽量、成交量和價格的影響,賦予一個權(quán)重值,瀏覽量:1分、成交量4分、價格5分。
那么 各個物品的得分=瀏覽量*1+成交量*4+價格*5;排序為:A>B>C
如果按照這個公式進行計算的話,會出現(xiàn)問題。首先我們期望價格越低越好,而通過這個公式計算價格越高,得分越高排名越靠前,顯然這是不對的。
問題出在哪呢?沒有歸一化
(2)歸一化加權(quán)
歸一化加權(quán)是將維度值進行細分,從產(chǎn)品業(yè)務(wù)角度出發(fā)賦予不同的系數(shù),也是最通用的一種方法,樣式如下:
總分=(維度A權(quán)重*歸一化的系數(shù)值a) + (維度B權(quán)重*歸一化的系數(shù)值b)+ …… + (維度N權(quán)重*歸一化的系數(shù)值n)
關(guān)于如何定義各維度的歸一化系數(shù)值,提供以下幾種方法供使用:
方法一:按照階梯分段進行處理
以瀏覽量為例:
- 當瀏覽量小于100時定義系數(shù)為0.1,
- 瀏覽量100~500時定義系數(shù)為0.2,
- 瀏覽量500~1000時定義系數(shù)為0.3,
- ……瀏覽量越高,系數(shù)越高(小于等于1)。
當瀏覽量特別多的時候,如10萬,此時數(shù)量已經(jīng)不那么重要了,可以將超過10萬的瀏覽量的系數(shù)定義為0.9。有時候為避免馬太效應(yīng),甚至可以將系數(shù)降低,給予一定的懲罰(涉及到降權(quán))。
方法二:按照百分比進行處理
仍以瀏覽量為例:
- 將瀏覽量由小到大進行排序,前5%的系數(shù)為0.1
- 5%-10%的系數(shù)是0.2;
- 10%-20%的系數(shù)是0.3;
- 20%-30%的系數(shù)是0.4
- ……
方法三:按照線性函數(shù)轉(zhuǎn)化處理(線性歸一化)
系數(shù)=(A-min)/(max-min),將數(shù)據(jù)值映射到[0, 1]之間。
這種處理方法的缺點是若數(shù)值集中且某個數(shù)值很大,歸一化后各值接近于0,并且將會相差不大,(如 1, 1.2, 1.3, 1.4, 1.5, 1.6,50)這組數(shù)據(jù)。當有新數(shù)據(jù)加入時,會導(dǎo)致max和min的變化,需要重新定義。
方法四:按照對數(shù)進行處理
這個方法很適合處理極值,經(jīng)常用在數(shù)據(jù)分化比較大的場景,有些數(shù)值很大,有些很小。這里一般使用Y=a*log10(X)+b的形式,通過調(diào)整a與b來根據(jù)數(shù)據(jù)調(diào)整曲線。
四、優(yōu)化調(diào)整
給定初步的權(quán)值之后可以進行灰度(甚至直接上線),根據(jù)實際結(jié)果不斷調(diào)整系數(shù)和權(quán)重值,在產(chǎn)品的發(fā)展過程中,也需要根據(jù)各階段的側(cè)重點的不同來調(diào)節(jié)權(quán)重和系數(shù)。
作者:墨白,公眾號:UED_family
本文由 @墨白 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
贊??歸一化我記得數(shù)值分析代數(shù)等等用得太多了