首頁>科技>

在一個網站或者app中,推薦系統通常會和整個大系統的多個方面有互動,推薦系統本身也有很多的組成部分,再加上整個系統所處的大環境,綜合起來會有很多因素影響著一個推薦系統最終效果的好壞,這裡的效果指的是包括準確率、召回率、多樣性等等指標在內的一個整體整體效果,不做具體區分。在這裡我們試對其中一些主要的因素做一討論。需要指出的是,這些因素裡面並不是所有的我們都可以左右,但是了解它們究竟是什麼對我們開發和優化系統還是非常有用的。

使用者因素

與廣告系統需要同時面對使用者和廣告主不同,推薦系統的服務物件只有一個,那就是使用者,所以使用者的因素很大程度會影響系統的效果。具體來講,系統中新使用者和老使用者的比例可以說是對效果影響最大的因素之一。大家知道推薦系統是高度依賴使用者行為的,而對於無任何行為或者行為非常少的新使用者,效果肯定是不會太好的,所以整個系統中新使用者的比例越高,系統的整體表現就會越差。

這就是一個典型的推薦系統本身無法左右的因素,而是需要整個系統共同努力來解決。對於這個問題,有兩種解決思路:一種是努力優化推薦系統的冷啟動演算法,這種方法肯定會有效,但是其天花板也是非常低的;而另一種方法,是努力將平臺上的新使用者轉化為老使用者,也就是說努力讓他們與平臺多互動,產生行為,從而脫離冷啟動的階段。這兩種方法相比,可能第二種的效果要更好,這主要是因為冷啟動演算法的優化空間實在有限,而將其轉為“熱”使用者之後,各種優化策略就都可以派上用場了。這也是一種可以在多種場景下借鑑的思路:將未知問題轉化為已知問題,而不是創造新問題。

產品設計因素

所謂產品設計因素,指的是推薦出的物品在什麼位置、以何種形式展示給使用者。如果說推薦演算法是一個人的內在,那麼產品設計就是一個人的臉。在現在這個看臉的時代,長得好不好看會很大程度上影響演算法能量的釋放程度。最常見的影響效果的外在因素包括但不限於:

圖片的品質。網際網路早已進入讀圖時代,無論任何物品的推薦,例如商品、資訊等,有圖片的吸引力一定是大於無圖片的。而對於都有圖片的情況,圖片的大小和清晰度則會對使用者是否感興趣產生很大影響。除了大小和清晰度這種基礎的品質以外,圖片本身傳達出來的資訊的品質也很關鍵,例如對於商品的圖片,如果不能在圖片中展示出該商品的主要資訊和使用者關心的內容,那麼使用者點選的概率就會大大降低,畢竟大家都很忙,點一下也是有代價的。所以對於C2C市場這樣以使用者自己拍攝的照片為主的場景,引導使用者拍出高品質的商品圖片就顯得尤為重要,這個問題上Airbnb自費給房東拍照片的故事已經足夠證明其重要性和意義了。

主題的吸引程度。除了圖片以外,以文字形式描述的主題也是非常重要的,畢竟文字還是人們獲取資訊的一個主要途徑。在轉轉平臺上,會有一些偷懶的使用者在文字描述中只寫類似“如圖,私聊”這樣的資訊,可想而知這樣的描述競爭力是比較弱的,同時也會讓人覺得賣家對這個商品並不是很上心,所以除非你的商品在其他方面極具競爭力,否則是很難得到轉化的。

主題吸引人固然重要,但是過於“頭重腳輕”,只關注主題品質,而忽略物品本身品質的話,反而會起到反作用,引起使用者的反感。這裡面最典型的例子就是現在充斥螢幕的各種標題黨文章了,為了吸引使用者的點選而在起標題上面大做文章,但使用者點進去之後發現要麼文章品質低下,要麼文不對題,長期以往下去,會對平臺的信譽度產生很大的負面影響,是一種殺雞取卵的做法。

關鍵資訊是否露出。所謂關鍵資訊,指的是能夠左右或影響使用者產生點選、轉化的資訊,除了上面提到的圖片和文字描述以外,各個業務場景下都有一些有特點的關鍵資訊,例如銷量、評論數等等。一部分是因為這些資訊本身就會對使用者的轉化產生影響,另一方面,推薦演算法在召回或排序時可能用到了這些資訊,那麼將這些資訊展現出來,一定程度上充當了推薦解釋的功能。

是否有干擾資訊。這個指的是模組周圍是否有影響使用者注意力的其他內容,能否讓使用者比較專心地瀏覽推薦模組。典型的如一些亮閃閃的廣告或者促銷/活動banner之類的,放在推薦位的旁邊會對使用者的注意力產生不同程度的影響,進而影響轉化。如果推薦系統在你的業務中是重要的一部分,那麼就應該給予它足夠專注(dedicated)的空間和位置,而儘量不要將其與其他內容混在一起。在這個紛繁複雜的世界裡,很多時候,少就是多(lessismore)。

資料因素

推薦系統是典型演算法驅動的系統,而如果說演算法是系統的骨架,那麼資料就是系統的血液。如果資料品質和數量不夠,那麼任何演算法的效果都會打折扣。資料的數量不足是很容易理解的,而且資料量是否充足很多時候和整個網站或APP的發展狀況有關,不是我們所能左右的,但資料品質則不同,是可以通過人為的努力而不斷加強的。所以這裡就簡單說一下資料品質方面常見的可能存在的問題。

關鍵資訊缺失。資訊缺失是資料品質方面最大的問題之一,尤其是影響到演算法策略或排序模型的關鍵資訊。例如曝光資料中沒有具體曝光位置資訊,展現日誌中沒有使用者停留時長的資訊等等,這些資訊的確實會直接導致演算法效果的下降,進而影響最終效果。類似這些問題的出現,很多時候是因為在最初的資料系統建設時,沒有演算法相關的人員參與,導致沒有把這些相關資訊設計進去。不過這類問題也相對好解決,只要在發現有缺失之後儘快補充進去就好了。

資料設計欠佳,使用複雜。還有一種情況,就是關鍵資訊都有,沒有嚴重缺失,但是資料結構或表結構設計不夠合理,導致獲取一個資訊要join多張表,或經過複雜的運算邏輯。這種情況下,雖然關鍵資訊都可以獲取到,但是由於獲取成本高,很有可能在工程實現中被不同程度地做折中,導致資料品質打折扣,影響最終效果。這類問題的解決方法,從大的思路上來講是要做好演算法相關的資料倉庫/資料集市建設,使得資料的獲取、變動和維護都儘量簡單化,減少資料建設的成本,從而提高資料的使用效率。

推薦系統使用到的資料通常是整個網站的資料系統中的一個子集,所以這部分資料品質的把控需要推薦系統的開發人員和資料系統的開發人員共同的努力,才能保證資料的可用性和易用性。

演算法策略因素

上面說了這麼多,終於說到了推薦系統最核心的演算法策略部分。演算法策略對效果的影響是毋庸置疑的,但是其影響也是多方面的,具體來講,演算法可能會從以下幾個方面影響效果。

演算法複雜度影響準確性。複雜度越高的演算法整體上準確性較高,無論使用什麼具體演算法,這個大趨勢整體來說是正確的。例如簡單的排序模型可能幹不過非線性模型,連續值特徵有可能幹不過離散化後的非線性特徵,時序問題上vanillarnn幹不過LSTM等等。在保證資料品質的前提下,用複雜度高的模型是一種能夠確保收益的效果提升方式,當然前提是演算法要與業務相契合,不能為了複雜而複雜。

演算法的穩定性影響效果的穩定性。我們知道在機器學習模型中有一類模型具有低偏差但同時也具有高方差,這裡的高方差,指的是在訓練出來的模型,在不同的資料集上表現差異會比較大,這種現象還有另外一個名字就是過擬合。如果資料量足夠大的話,再加上合理的正則化手段,過擬合是比較容易避免的。所以問題更容易出現在資料量不足的情況下,在這種情況下,應該選擇例如線性模型這樣簡單模型來保證結果的穩定性,甚至可以考慮使用基於規則的演算法來保證穩定性。

為什麼要關注結果的穩定性呢?這裡的原因和我們在學習演算法設計分析時要關注演算法的平均複雜度是類似的。我們雖然希望得到一個非常準確的模型,但是更希望這個模型在線上執行時穩定的,是可預期的,不會今天效果好,明天效果差。在實際使用中,無論準確率如何,都希望穩定性是有保證的。

工程架構因素

最後,我們再來簡單說一下工程架構方面的因素。無論什麼樣的資料,什麼樣的演算法,最終呈獻給使用者之前都需要具體的工程落地,那麼這個落地過程中選擇的具體工程架構也會對效果產生影響。

效應耗時的影響。介面的響應速度無疑是工程架構對使用者的最直接體現,響應速度慢肯定會導致使用者的不耐煩,可能就直接流失掉了。要提高速度,通常會有幾類方法,一類是對演算法進行優化,減少不必要的計算;二是選擇簡單演算法;三是使用快取的思路,只在線上部分進行儘量少的計算,其餘的計算都放到離線或近線層去做,減少實時計算的負擔。

架構設計對問題排查監控的影響。老司機們都知道,只能跑不能修的車是肯定不能上路的。同理,推薦系統的整體架構設計要對問題的排查比較友好,能夠在出現問題或者需要驗證猜想的時候能夠快速在系統中進行定位,而不是現加debug資訊現上線,導致問題排查過程被拖長。優秀的工程師會在系統設計的時候就給自己留好後路,而不是在出了問題時才臨時抱佛腳。

架構設計對迭代速度的影響。除了響應速度這種較為表面的影響以外,整個架構的設計能否支援快速的策略迭代對效果的隱形影響也是極大的。如果整體架構比較臃腫,模組分離不清晰,基礎邏輯缺乏適當抽象同一,會導致資料和策略的迭代無法快速進行,每迭代一次都要走很複雜的流程,而且還不能保證正確性。這樣的問題會拖累系統的發展速度,最終影響效果。

總結

除了上面提到的因素,還有很多細節會影響推薦系統的最終效果,所以說我們在提升推薦系統效果時,眼睛不能只盯著一處,而是要具有一定的全域性觀,能夠從全域性的角度找到當前對效果影響最大的是什麼,進而進行鍼對性優化。對於那些暫時不能改變的因素,也要做到心裡有數,在適當的時機進行干預。

感覺有用的朋友,點個關注,給個收藏,就是對我堅持更新,最好的支援

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 螞蟻金服股權之變,馬雲當初如何斡旋,才從日本人手中巧奪支付寶