關于新聞個性化推薦你不能不知道的4個部分

2 評論 11711 瀏覽 107 收藏 29 分鐘

本文從內容畫像、用戶畫像、召回和排序、推薦策略四方面分析了新聞的個性化推薦機制。

關于個性化推薦,我的理解是:按照每個人的喜好,在合適的時間、合適的場景、把合適的內容以合適的形式呈現在用戶面前,滿足用戶的需求。那么這里就涉及到了三部分,用戶——算法和策略——內容。

下圖是一個簡單的新聞推薦組成部分:

新聞推薦簡圖

我們的“人”和“物”都是復雜的,需要用我們理解的符號去把他們描繪出來,讓我們的程序理解。

一、內容畫像

1.1 新聞文章來源

做新聞,我們首先要有文章源。文章的來源,一般有三部分:

  1. 機器在各個資訊網站抓來的文章。
  2. 公司編輯自己寫的文章。
  3. 入駐作者寫的文章。

1.2 內容分類體系介紹

有了文章,我們需要把文章分門別類的放在一個內容池子里。

那么該如何分門別類呢?這里就涉及到了內容分類體系。

在我們逛淘寶的時候,會有各種物品的分類,比如家居,比如圖書,比如衣服。

同樣的,文章也會有分類。當我們打開一個資訊app,比如頭條吧,就可以看到導航欄有:“軍事”“歷史”“時政”等等。

京東和頭條的前臺分類

這是我們在前臺可見的,其實在它的背后,有一套龐大的分類體系,下面我們來說一下。

分類體系一般有三種形式:結構化,半結構化,非結構化。

  • 結構化的分類:層級分明,有父子關系,分類間相互獨立,比如科技-互聯網-人工智能。
  • 半結構化的分類:具有結構化的形式,同時也有一些不成體系的分類,我認為知識圖譜算是一種半結構化的分類體系。
  • 非結構化的分類:分類比較靈活,沒有明確的父子關系,如獨立的關鍵詞標簽。

結構化分類體系

知識圖譜

1.3 常見問題和分類原則

  • 一級分類=二級分類的情況:如美食,寵物的一級二級分類名稱相同。
  • 二級分類不夠全或分的較粗:如歷史被分為“古代史,近代史,現代史”。
  • 一些分類較雜:如“科學探索”分類下可能各種內容都有。
  • 一些二級分類歸屬不夠合適:在有一級分類“職場”的情況下,“職業培訓”被放在了“教育”。
  • 一些文章沒有好的歸屬,如辦公軟件的學習類文章沒有歸屬。
  • 人工智能分類下的文章有一些是玩偶。

在做分類的時候我們會遵循一些原則,這里我來說一下結構化分類體系搭建的原則。

  1. 相互獨立:各分類間內涵應當相互獨立。
  2. 完全窮盡:各分類應當完全窮盡列舉,下一級分類可以組成上一級分類的全集。
  3. 命名應當短小易懂。
  4. 命名應當準確無歧義。
  5. 命名具有內容代表性。
  6. 分類粒度應當適合,不能較粗或較細。
  7. 每個分類下三級分類不能過于龐大。
  8. 釋義應當相對簡單明了,不應長篇大論太過專業。應當從c端用戶角度考慮,使標注的人可以一下子理解分類的內涵,而非必須具有專業知識才可分辨,否則不符合用戶思維習慣。

1.4 構建分類體系

那么接下來我們該如何去做分類體系呢?有兩個思路:

1)讓程序根據站內用戶瀏覽記錄,抓取出瀏覽比較多的一些關鍵詞,我們按照這些關鍵詞去整合分類。

但從實際操作來看,用戶的興趣分層是:(一二三級)分類——主題——興趣點——關鍵詞的層級,

舉個例子:科技(一級)——互聯網(二級)——人工智能(三級)——智能辦公(主題topic)——語音助手(興趣點poi)——小愛(關鍵詞)

如果我們根據關鍵詞往上匯合分類,會比較難實施。

2)人為的定義出一二三級分類。具體操作步驟如下:

  • 了解每個一級分類內涵,查閱大量相關網站,如搜索歷史垂類網站,查看網站內容和分類。②根據網站分類,逐一列舉,從日常用戶興趣角度出發列舉三級分類粒度的分類詞。
  • 從三級分類合并二級,以及從二級分類拆分三級分類雙向進行整理。
  • 對分類給出釋義和邊界,以便標注人員區分。

那么我們如何保證三級分類下的文章充足?以及如何保證人工分類的準確性呢?

我們采取了兩個措施:

  • 針對問題1:我們把三級分類詞,如“人工智能”放到研發的文章召回系統,進行搜索——可以看到以“人工智能”為關鍵詞可以召回的文章內容及數量,以此來判斷此三級分類是否文章充足,進行調整。
  • 針對問題2:因為一部分的文章首先要經過標注團隊的人工標注,在標注的時候,標注員會反饋具體某個三級分類存在的問題以及不合理性。此環節產品,運營,編輯都會介入,對于不合適的三級分類會進行修改。

1.5 人工標注和機器學習

當分類體系完成后,接下來是標注環節。

標注團隊標注一定數量的文章,算法團隊的工程師會用算法對人工標注的樣本,進行有監督的機器學習,把剩余的文章用程序給它標上對應的分類。

負責這部分工作的工程師,會用多種方法來對文章進行機器學習,比如有ABC三種。用三種方法對新的文章樣本進行分類。

然后讓標注員對算法標分類的文章進行校驗,從而得出三種方法為文章分類的準確性,公式如下:

標注員分類和機器分類相同的文章數量/總的文章數量=機器標注準確率

之后算法工程師會對標注不準確的文章繼續進行學習,不停的迭代優化算法。

針對外部抓取的文章,算法工程師也會用這套方法對他們標記分類。到這里,我們的文章就可以分門別類的被放在內容池的不同地方了。

二、用戶畫像

2.1 什么是用戶畫像

當有了內容的畫像,我們也需要用戶的畫像。那什么是用戶畫像呢,我認為是對用戶這個客觀實體的描募。

比如我對自己進行一個總結:男,175cm,65千克,產品經理,26歲,月薪25k,無車……等等。

這就是我的用戶畫像。

那么為什么做推薦需要用戶畫像呢?

是因為只有當我們了解了一個人,才能把她最想要的給她。

用戶畫像

2.2 用戶畫像要基于業務存在

做用戶畫像第一步要基于業務,也就是說用戶畫像是要對具體業務場景來服務的。

比如個性化推薦,精準營銷,數據分析,活動運營等等。

所以第一步需要了解業務場景以及各崗位的同事對畫像的需求。

2.3 搭建用戶畫像體系

在了解之后,我們會開始搭建畫像特征的體系,這里說明一下,特征是一點點獲取、建立和利用的;但特征體系在一開始需要搭建出來,盡可能的囊括各業務場景的需要。

雖然某些特征可能在初始階段還沒有建立,但需要根據業務需求先列舉出來;以便在做畫像平臺功能框架搭建的時候,不會因為沒考慮到某類特征,而使后期畫像平臺的功能框架無法兼容。

以下我從:基本信息、興趣愛好、行為特征、社交和心理、消費與模型這5個方面做了一個簡單的新聞資訊用戶畫像體系。

一般來說在建立特征體系的時候,應該包含以下表頭:一級特征分類、二級特征分類、特征描述、特征字段、特征值類型、特征來源、特征時效、最近更新內容、特征示例。

資訊用戶畫像體系

2.4 畫像特征介紹

用戶畫像主要有兩塊:事實特征和模型特征。

事實特征是用戶的基本信息,以及他在app內產生的行為:如用戶的設備信息,地理位置,主動填寫的性別,年齡,以及在客戶端瀏覽文章中產生的點擊行為等等。

模型特征是我們基于用戶的事實特征,制定一些規則建立的:如用戶流失等級,用戶消費等級,用戶滿意度等。

從時效性上來劃分,畫像特征分為長期,短期,實時。

長期特征如:用戶基本信息里面的一部分特征,性別,年齡,生日,賬號,設備等等。

短期特征如:用戶的興趣愛好和行為特征,當然這里要說明用戶的興趣愛好也分為長期和短期,但這個是相對的,興趣愛好仍然被我放在短期特征內。

實時特征如:用戶的實時地理位置,實時網絡狀態等等

2.5 畫像特征獲取

那么畫像的特征數據要怎么獲取呢?

①事實特征里的一部分,是我們通過用戶主動填寫或埋點來獲得的,比如用戶主動填寫的性別,比如埋點獲得的用戶瀏覽時長。

②另一部分是根據業務指標來對事實特征進行復合計算,如:用戶文章平均閱讀時長=用戶閱讀的總時長/用戶閱讀的總文章數。

如果用戶沒有填寫某些信息,或者我們獲取不到怎么辦呀?

一般我們有兩種方式:

  1. 引入第三方數據補全用戶畫像特征。
  2. 算法工程師會把填寫了性別的用戶作為樣本,按照男女分別進行有監督的機器學習,從而對性別特征不完整的用戶進行模型訓練,得出這部分用戶的性別,但這里是一個概率值,比如A用戶性別:男70%,女30%。

說完了事實特征,我們來說模型特征。

模型特征則需要我們去制定一些規則,為我們的業務場景服務,比如用戶流失等級,運營可以針對不同流失等級的用戶上不同的運營策略。我們規定:

  • 3天未打開新聞客戶端的用戶,流失等級為A;
  • 7天未打開新聞客戶端的用戶,流失等級為B;
  • 15天未打開新聞客戶端的用戶,流失等級為C;
  • 30天未打開新聞客戶端的用戶,流失等級為D;
  • 60天未打開新聞客戶端的用戶,流失等級為E;
  • 90天未打開新聞客戶端的用戶,流失等級為F(流失了)。

2.6 用戶畫像平臺

搭建好用戶畫像特征體系之后,我們需要有個可視化的平臺,用戶畫像平臺。在功能上一般應分為四部分。

  1. 群體畫像:我們可以通過特征圈選人群。比如用性別這個特征,分男女去看,不同的用戶群體,喜好的文章一級分類有什么區別。
  2. 單用戶畫像:當我們輸入用戶的id,可以看到這個用戶所有特征的詳細信息,同時也需要有個用戶畫像豐滿度的總評分。
  3. 場景賦能:比如我們可以圈選一部分目標用戶,對他們進行廣告投放,看這批用戶后期在每一個環節的轉化。
  4. 權限和特征管理:畫像平臺應當對不同崗位的員工設置不同的權限,同時也需要對用戶畫像的特征進行管理,支持增刪改查的操作。

三、召回和排序

3.1 什么是召回

首先我來解釋一下什么是召回,通俗易懂的理解就是:根據用戶的一些“條件”把符合這些“條件”的文章從廣闊的內容池里召喚出來,放到一個小的池子里。

3.2 文章的信息抽取

在召回前我們會做一些準備工作。

第一步是信息的抽取,文章是由html語言編寫的,有<title>有<head>有<body>,是成對出現的,都是半結構化的數據。

程序對文章進行信息抽取的時候,也是按照這樣的結構,用深度優先遍歷,按照棧結構先進后出的特點來抽取的。

深度優先遍歷這里我來說一下,如果是學計算機的同學,在《數據結構》這門課程中會學到。

如下圖是一個樹結構,我們需要把每個節點都走一遍,“深度優先”顧名思義就是縱向最深,那么我們按照從左到右深度優先的規則,走一遍。

得出的順序就是:A-B-E-F-C-G-D-H-I。

那么為什么抽取文章信息的時候,要用深度優先遍歷呢?

就是因為上文提到的文章的結構是有標題有正文,在html語言中代表標題和正文的標識在每個部分的前后出現,相互一層層嵌套,采用深度優先遍歷,抽取出的信息結構不會混亂。

抽取后,程序需要識別出哪些是正文,哪些是廣告。對于我們人來說,可以輕易辨別;但是對于程序而言,需要一些規則去讓程序識別出來——
比如我們用投票方法來對文章文本塊進行打分。

規定文本塊的位置:在頁面中間的為3分,在頁面左右兩端的為1分,在頁面底部的為2分。

再比如我們規定文本塊的長度:不同的長度給不同的分值。

3.3 文章的分詞

抽取信息之后,我們要對文章內容進行分詞,對于我們人來說,我們可以根據學習經驗對文本進行斷句,但機器卻并不知道。

所以這里我們也有一些方法,下面來介紹3種。

1)字典-最大前綴

首先我們有一個字典集,這個里面包含我們所有的詞語,當機器“讀”一句話的時候,例如“個性化推薦真好玩”

按照字典里面存在的詞語去從左到右進行匹配,“個性”是一個詞,做個記錄,繼續往下?!皞€性化”又是一個詞,再做個記錄?!皞€性化推”不是一個詞語,繼續向下“個性化推薦”是一個詞語。

直到找到最大的詞組。

2)N-gram分詞

這個N代表的就是對這句話用幾個字去拆分,比如N=3,原句就會被拆分為“個性化”“性化推”“化推薦”……。

3)基于統計學的分詞

如貝葉斯,根據語料庫的歷史信息,分析當一個漢字出現時,另一個漢字出現在它后面的概率,從而進行分詞。

字典-最大前綴樹

貝葉斯公式

3.4 文章的過濾與排重

分詞后我們會進行一波過濾:敏感詞過濾、低質過濾、排重。

敏感詞過濾:會根據既定的一些敏感詞列表,把包含這些敏感詞的文章過濾掉。

低質過濾:會根據機器學習的歷史低質文章算法,加標注人員標注的低質文章,對文章進行過濾。

排重:這里要對相似度較高的文章進行去重。我們來介紹兩種方法:

1)I-Match算法

假設有A和B兩篇文章,分詞后,我們首先統計出兩篇文章的高頻,中頻,低頻詞。去掉高頻和低頻詞。比較A和B兩篇文章中頻詞匯表的相似度,卡一個相似度的閾值。

2)Shingle算法

假設有A和B兩篇文章,A是:我困了晚安我睡了,B是:我累了晚安我睡了。

shingle會把A文章拆分為“我困了,困了晚,了晚安,晚安我,安我睡,我睡了?!?;B文章拆為“我累了,累了晚,了晚安,晚安我,安我睡,我睡了?!?/p>

兩篇文章的相似度=重復詞匯量/(A文詞匯量+B文詞匯量-重復詞匯量)=4/(6+6-4)=50%,卡一個相似度的閾值。

對相似度達到閾值的文章進行過濾,僅留一篇,比如按照發表的先后順序留,或者按照文章質量的判定留等等。

3.5 文章的召回

召回

1)基于人口屬性的召回。

如根據用戶的地理位置召回的文章。

2)基于用戶興趣的召回

如根據用戶對各分類文章的興趣程度進行召回。舉個例子:我們選取用戶近7天內點擊的文章所屬的三級分類下的文章,按照當下點擊數由高到低的選取30篇文章進入這路召回的集合。

3)基于用戶行為特征的召回

如根據用戶在站內的行為特征來進行召回。舉個例子:我們規定用戶對文章有以下行為就代表了用戶的行為特征,對某篇文章點贊(1分),評論(2分),轉發(3分)。

我們選取出這個用戶近7天內,得分最高的5篇文章,所在的三級分類下的30篇新文章,進入這路召回的集合。

4)基于協同的召回。

空間向量模型在說協同之前,我們先介紹一個空間向量模型。

我們把每個用戶表達成了一個個的標簽特征,我們想象每個標簽就是一個坐標軸,每個特征的分值,就是這個特征在坐標軸上的長度。這樣我們可以在一個多維坐標軸上,用一個向量來描述一個用戶,代表不同用戶的兩個向量的夾角越小,就表示兩個用戶越相似。

兩篇不同文章的相似度計算也是一樣。具體的公式如下:

余弦相似度公式

協同

1)基于用戶的協同

比如A用戶和B用戶向量化后很相似,那么我們認為B用戶喜歡的東西,A用戶也會喜歡,于是我們把B用戶喜歡的東西推薦給了A用戶。

2)基于內容的協同

比如A用戶喜歡甲文章,甲乙文章向量化后很相似,那么我們認為乙文章A用戶也會喜歡,于是我們把乙文章推薦給了A用戶。

3)基于整體的協同

比如有ABC三個用戶,A用戶喜歡甲乙文章,B用戶喜歡甲乙丙文章,C用戶喜歡甲文章,于是我們認為喜歡甲文章的用戶都會喜歡乙文章,于是把乙文章推薦給了C用戶。

3.6 文章的排序

每路召回形成的是一個基于每個用戶的文章集合,我們需要把多路集合作為輸入集灌入到我們的排序模型中。

排序模型會通過模型對用戶和文章的眾多特征,每個特征的權重進行計算。

常用的排序模型有:LR(邏輯回歸),GBDT(決策樹),FM(因子分解機)等以及他們的復合變種。

經過排序之后,對于每個用戶,會輸出一個新聞的信息流按照排序的規則(由高到低)。

四、推薦策略

下面我們來說一下重排序,也就是上產品策略的階段。

4.1 常見策略

我接觸過的部分策略如下:

  1. 新用戶興趣試探策略
  2. 興趣打散策略
  3. 本地化推薦
  4. 網絡狀態推薦
  5. 分時段推薦策略
  6. 搜索行為策略
  7. 負反饋策略
  8. 分場景策略
  9. 熱點事件策略
  10. 通勤場景策略
  11. 季節性策略
  12. 流失召回策略

4.2 策略的目標

在工作中,我們都會有一個目標,為一個目標服務。比如:新聞的個性化推薦看重,uv點擊率,次日留存率,用戶的平均閱讀時長等。

對于新用戶來說:我的理解是要盡快發現他們的興趣,把他們留下來,然后提升點擊。

對于老用戶來說:我的理解是要發掘他們更多的興趣,提升他們的點擊和閱讀時長,減少流失。

4.3 策略案例

這里來分享1個案例:分網絡狀態推薦策略。

需要說明的是:這里只進行思路簡述,實際策略方案會比這個更加嚴謹和復雜。

4.3.1 猜想與調研

猜想

從實際體驗出發,當我們在無線網絡下,會更肆無忌憚的去點視頻圖文觀看,而在有線環境下會更少一些。

如果用戶的行為符合這個猜想,那么在不同的網絡狀態調整不同類型文章的占比,可以提升用戶的點擊。

調研

為了驗證這個猜想,我們可以做一個競品調研。比如我們的新聞客戶端是A,調研BCD三家新聞客戶端在有線和無線狀態下,前100條資訊,首頁信息流中純視頻的數量(廣告除外)

假設我們得到的結果如下圖。我們發現競品確實也做了這樣的策略,那么我們需要做個ABtest來看下效果:

4.3.2 實驗設計

1)網絡狀態:

實驗組和對照組按照要求處在不同網絡狀態下。

2)人群劃分:

圈選20w人群,多維度均勻選取等量分為4組,使4組用戶同質。

3)變量控制:

只有首頁信息流視頻出現的比例不同這一個變量。

4)用戶要求:

每個組的5w用戶,只有當此用戶當日有分別在有線和無線網絡下瀏覽新聞的行為,才會被計入統計。

對照組1:5w用戶保持線上邏輯,有線和無線網絡狀態,首頁信息流推薦視頻比例相等。

對照組2:5w用戶保持線上邏輯,有線和無線網絡狀態,首頁信息流推薦視頻比例相等。

(說明:AAtest,保證實驗組和對照組的變化,不是由于人群包切分或其他因素造成不同。)

實驗組1:5w用戶在無線網絡下推薦視頻比例與對照組相同,有線網絡狀態下首頁信息流降低5%比例的視頻。

實驗組2:5w用戶在無線網絡下推薦視頻比例與對照組相同,有線網絡狀態下首頁信息流降低10%比例的視頻。

實驗組3:5w用戶在無線網絡下推薦視頻比例與對照組相同,有線網絡狀態下首頁信息流降低15%比例的視頻。

4.3.3 實驗結果評估

1)觀測指標

各個分組(按日):人均曝光量,人均點擊量,人均點擊率,人均閱讀時長,次日留存率等。

2)實驗數據觀測

親自體驗線上情況,同時觀測每個對照組和實驗組的數據表現。

3)策略復盤

實驗設計是否合理,是否引入了其他變量,策略是否在線上生效,數據是否符合預期,用戶對此需求的真偽,策略總結。

#專欄作家#

大鵬,公眾號:一個數據人的自留地。人人都是產品經理專欄作家《數據產品經理修煉手冊》作者。

本文原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 系統而通俗

    回復
  2. 謝謝大神

    回復