最近正在研究個(gè)性化推薦相關(guān)的知識(shí),本文以電商平臺(tái)為例,逐步探討有關(guān)個(gè)性化推薦的知識(shí)。
研究一個(gè)事物,首先要了解這個(gè)事物,才能深刻理解它。個(gè)性化推薦系統(tǒng)包括:用戶、推薦平臺(tái)以及推薦內(nèi)容三個(gè)方面。如圖所下:

上圖可知,在一個(gè)推薦系統(tǒng)中,平臺(tái)是內(nèi)容的載體,同時(shí)收集了用戶的一些屬性和行為,用戶是內(nèi)容的消費(fèi)者,完成瀏覽、購(gòu)買等行為,同時(shí)也產(chǎn)生了PV、訂單量等指標(biāo)。內(nèi)容是用戶和平臺(tái)之間的橋梁。
先從網(wǎng)站架構(gòu)方面來(lái)分析推薦系統(tǒng)
方便大家進(jìn)一步了解,本文先從網(wǎng)站架構(gòu)方面來(lái)分析推薦系統(tǒng),網(wǎng)站分前臺(tái)和后臺(tái)。下面著重從前臺(tái)和后臺(tái)逐步探討。
1.?前臺(tái)
前臺(tái)通過(guò)HTML搭建推薦內(nèi)容的基本框架,通過(guò)CSS裝飾被推薦的內(nèi)容,通過(guò)JS完成了用戶和平臺(tái)的交互。這是技術(shù)底層知識(shí),需要前端開發(fā)工程師參與。
如何設(shè)計(jì)前臺(tái)推薦內(nèi)容樣式、擺放以及用戶體驗(yàn)等,需要產(chǎn)品經(jīng)理的參與,文字選擇以及圖片顏色等設(shè)計(jì),需要UI設(shè)計(jì)人員參與。前臺(tái)有效地展示了推薦的內(nèi)容。
對(duì)于用戶而言,推薦的內(nèi)容無(wú)非是符合需求或者不符合而已。所以說(shuō),前臺(tái)的核心是將推薦的內(nèi)容按照某種排列、顏色搭配等方式展現(xiàn)給了用戶,當(dāng)然,有一些內(nèi)容性網(wǎng)站(今日頭條等)還加入了交互行為(例如,不感興趣、重新新聞等標(biāo)簽),以便完善推薦算法。
2.?后臺(tái)
后臺(tái)主要完成相關(guān)邏輯的處理,例如,用戶A在前臺(tái)提交了報(bào)名表單。后臺(tái)將會(huì)處理來(lái)自前臺(tái)的表單。具體流程:
用戶在前臺(tái)完成表單的填寫(form表單)→ 提交給以PHP等結(jié)尾的后臺(tái)文件(通常用action=“.php’)?→ 操作數(shù)據(jù)庫(kù)(增、刪、查、改等操作)
同樣,推薦系統(tǒng)是基于數(shù)據(jù)中的用戶表和商品表,通過(guò)表與表進(jìn)行某種關(guān)系(例如通過(guò)潛在因子算法),給用戶推薦感興趣的商品。后臺(tái)的核心在于處理用戶和商品之間的關(guān)系,給用戶和商品構(gòu)建畫像,將畫像與畫像建立關(guān)系,進(jìn)而構(gòu)建推薦系統(tǒng)。
以上從網(wǎng)站架構(gòu)分析的,主要目的讓用戶了解整個(gè)推薦系統(tǒng)底層架構(gòu)是什么,方便從宏觀方面了解。下面,本文從推薦系統(tǒng)發(fā)展史深入探討。
再?gòu)耐扑]系統(tǒng)發(fā)展史深入探討
1. 單因子推薦
單因子推薦是什么?也就是整個(gè)推薦系統(tǒng)基于某個(gè)核心因子給用戶推薦。單因子推薦分為被動(dòng)推薦和主動(dòng)推薦兩種。
(1)被動(dòng)推薦
所謂被動(dòng)推薦就是在用戶參與下而產(chǎn)生的某種結(jié)果。例如,淘寶網(wǎng)的按照銷量推薦以及價(jià)格從高到低等就是按照單因子推薦,用戶點(diǎn)擊按照銷量推薦,就會(huì)看到銷量從高到低商品列表(具體技術(shù)實(shí)現(xiàn)是這樣的:用戶點(diǎn)擊按照銷量排序-觸發(fā)點(diǎn)擊事件(事件內(nèi)包含后端代碼)-操作數(shù)據(jù)庫(kù)(select 語(yǔ)句)-結(jié)果渲染到前端)。
如圖1,淘寶按銷量從高到低所示:

圖1 淘寶從高到低排序
當(dāng)然,這種推薦是被動(dòng)推薦,需要用戶參與后(例如,點(diǎn)擊按價(jià)格從高到低排序,PHP或其他后端語(yǔ)言操作數(shù)據(jù)庫(kù),進(jìn)而返回值到前端,當(dāng)然,個(gè)別網(wǎng)站不需要后端參與,在客戶端將結(jié)果緩存),才可以看到排序結(jié)果。
(2)主動(dòng)推薦
除此之外,還有基于單因子的主動(dòng)推薦。常見的熱銷排行榜,是基于銷售量這一因子對(duì)商品在某段時(shí)間內(nèi)排序(當(dāng)然,熱銷排行榜可能還會(huì)牽扯到商品瀏覽量、好評(píng)量等因子,這個(gè)會(huì)在多因子推薦細(xì)說(shuō))。如圖 2 中國(guó)轎車銷量排行榜(部分截圖):

圖 2 中國(guó)轎車銷量排行榜(部分截圖)
圖2汽車銷量排行榜是基于10月這一時(shí)間刻度對(duì)中國(guó)轎車銷售數(shù)量而進(jìn)行的排名。
以上是基于單因子而進(jìn)行的推薦,分為主動(dòng)和被動(dòng)兩種推薦模式。這種推薦只是基于商品屬性(銷售量、瀏覽量、點(diǎn)擊量等維度)而給用戶進(jìn)行的推薦,不過(guò),在一定程度上會(huì)導(dǎo)致“馬太效應(yīng)’,使得銷售量好的商品獲得更多的流量和銷量。隨著個(gè)性化推薦技術(shù)的發(fā)展以及用戶消費(fèi)行為逐漸改變,一些不太常見或銷售量低的商品反而成為用戶的喜愛,于是,如何結(jié)合商品屬性和用戶屬性(性別、年齡、職業(yè)、收入以及偏好等)構(gòu)建用戶和商品畫像,給用戶推薦感興趣的商品是下文著重研究的重點(diǎn)。說(shuō)了單因子推薦,接著說(shuō)多因子推薦。
2. 多因子推薦
所謂多因子推薦就是基于多個(gè)因子而進(jìn)行的推薦。多因子推薦同樣分為基于商品自身的多因子推薦和基于商品和用戶屬性的多因子推薦兩種。同樣以電商為例(本人過(guò)往工作主要在電商企業(yè),所以就從熟悉的領(lǐng)域切入了),商品首頁(yè)通常有綜合排行榜(基于商品自身屬性(銷量、好評(píng)等多因子)構(gòu)建商品畫像)和猜你喜歡(基于商品屬性和用戶屬性而個(gè)性化推薦)兩種,這也是下文研究的重點(diǎn)。
(1)基于商品自身屬性多因子推薦
所謂基于商品自身屬性多因子推薦,仍是以商品為推薦核心,構(gòu)建商品畫像,例如,商品包括月銷售量20萬(wàn)、化妝品、價(jià)格400-600、月PV 30萬(wàn)等屬性,可為其打上熱銷品標(biāo)簽。當(dāng)然,這樣看起來(lái)比較定性化,為了方便大家了解這一過(guò)程,我細(xì)說(shuō)構(gòu)建商品畫像。
為了研究方便,仍以上文商品為例,影響商品的因子有銷售量、價(jià)格、月PV、好評(píng),差評(píng)等(注意:上述指標(biāo)本文并沒(méi)有做線性回歸分析,正常情況下,需要對(duì)各個(gè)指標(biāo)做線性方程回歸分析,確定各個(gè)指標(biāo)具有獨(dú)立性后,再做權(quán)重分析),假如,銷售量月20萬(wàn),權(quán)重為1,價(jià)格400-600,權(quán)重為0.3,月PV為30萬(wàn),權(quán)重為0.4,好評(píng)數(shù)為4萬(wàn),權(quán)重為0.6,差評(píng)為3000,權(quán)重為0.7,根據(jù)指標(biāo)值*權(quán)重相加得出一個(gè)商品綜合值,根據(jù)其對(duì)商品排序。如表1 因子權(quán)重排行榜

表 1因子權(quán)重排行
首先,計(jì)算綜合權(quán)重值,商品綜合權(quán)重值=銷售量20萬(wàn)*1+價(jià)格500(取中間值)*0.3+月PV30萬(wàn)*0.4+好評(píng)數(shù)4萬(wàn)*0.6+差評(píng)數(shù)*0.7
然后,將計(jì)算出來(lái)的數(shù)值保存到數(shù)據(jù)庫(kù)中,然后可根據(jù)sort、冒泡等排序算法對(duì)商品進(jìn)行排序。這是一種比較簡(jiǎn)單的推薦方式,通過(guò)對(duì)多因子轉(zhuǎn)化單因子進(jìn)行排序,提升排序效率。不過(guò)這種方法也存在一些需要注意的地方:
1)因子權(quán)重如何確定?
目前常見的是頭腦風(fēng)暴法和機(jī)器學(xué)習(xí)(數(shù)據(jù)建模)兩種方式。所謂頭腦風(fēng)暴法就是產(chǎn)品經(jīng)理或運(yùn)營(yíng)等人員根據(jù)自己經(jīng)驗(yàn)確定各個(gè)指標(biāo)確定權(quán)重大小,上文中各個(gè)權(quán)重大小就是我根據(jù)自身經(jīng)驗(yàn)確定的。這種方式很直接,不過(guò)在準(zhǔn)確度方面還存在一定的問(wèn)題。另一種就是機(jī)器學(xué)習(xí)方法了,也就是對(duì)各個(gè)數(shù)據(jù)建模,確定各個(gè)因子的指標(biāo)大小,比較常見的數(shù)據(jù)建模方式采用SPSS主成分因子分析法或用Python數(shù)據(jù)建模,進(jìn)而確定各個(gè)因子的權(quán)重大?。ū疚膹暮暧^方面闡述,下篇文章將著重論述如何采用SPSS主成分分析以及如何用Python數(shù)據(jù)建模)。
2)如何處理指標(biāo)值和權(quán)重值?
確定好各個(gè)因子權(quán)重后,如何處理指標(biāo)值以及權(quán)重值是需要面臨的問(wèn)題。通常兩種方式:
數(shù)據(jù)加權(quán):上文所列舉的事例就采用了數(shù)據(jù)加權(quán)模式,這種模式較為簡(jiǎn)單,不過(guò),在實(shí)際工作中往往存在較大偏差。
直接建模:就是將得到的指標(biāo)值和權(quán)重值直接建模,得出各個(gè)商品對(duì)應(yīng)的數(shù)值,然后通過(guò)sort、冒泡等排序算法對(duì)商品排序,輸出到前臺(tái)。
基于商品自身屬性多因子推薦仍沒(méi)有將用戶屬性加入到推薦系統(tǒng)中,往往會(huì)導(dǎo)致一定程度上“馬太效應(yīng)”。下文將講述如何將用戶屬性和商品屬性結(jié)合起來(lái),根據(jù)用戶畫像個(gè)性化推薦商品。
(2)基于商品和用戶屬性個(gè)性化推薦
既然是基于用戶畫像推薦,那么,在推薦之前首先要對(duì)用戶建立用戶畫像。什么是用戶畫像?用戶畫像也被稱為人物角色,或者用戶特征,是真實(shí)用戶的虛擬代表,是建立在一系列真是數(shù)據(jù)之上的目標(biāo)用戶模型。如何建立用戶畫像?主要分為以下步驟:
獲取用戶數(shù)據(jù):獲取數(shù)據(jù)的方式主要有問(wèn)卷調(diào)查、SDK或日志系統(tǒng)等方式。
數(shù)據(jù)處理(整理、清洗等工作):數(shù)據(jù)處理的過(guò)程主要是對(duì)數(shù)據(jù)整理、清洗等過(guò)程,主要處理一些缺失或不正確的字段。
數(shù)據(jù)建模(定性):數(shù)據(jù)建模是創(chuàng)建用戶畫像的核心部分。既然是數(shù)據(jù)建模,那么就從數(shù)據(jù)開始研究,用戶數(shù)據(jù)包括靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù)。
靜態(tài)數(shù)據(jù)主要包括用戶基礎(chǔ)屬性:年齡、性別、城市、工作等屬性。
動(dòng)態(tài)數(shù)據(jù)主要是用戶的行為特征:頻繁瀏覽男裝頻道、喜歡去知乎、收藏很多手機(jī)店鋪等。
有了這些數(shù)據(jù)后,如何建模?
針對(duì)靜態(tài)屬性可以通過(guò)描述性分析,給用戶打標(biāo)簽。動(dòng)態(tài)屬性可通過(guò) WHO、WHEN、WHERE以及WHAT方式給動(dòng)態(tài)數(shù)據(jù)打標(biāo)簽。
如何構(gòu)建用戶畫像,將在以后的文章中著重論述。
既然知道了如何構(gòu)建用戶畫像,那么,我們就可以以表格形式展現(xiàn)出來(lái)。表2 某用戶畫像標(biāo)簽。

表2 某用戶畫像標(biāo)簽
同樣,我們要對(duì)商品構(gòu)建商品畫像,表3為耐克鞋—商品畫像標(biāo)簽。

表3 耐克-商品畫像標(biāo)簽
確立好用戶畫像標(biāo)簽和商品畫像標(biāo)簽后,下一步需要針對(duì)用戶和商品建立用戶-商品模型,表4 用戶-商品模型

表4?用戶-商品模型
確立好相應(yīng)地用戶-商品模型后,下一步可運(yùn)用歐幾里得度量等算法對(duì)用戶-商品模型建模。

注意:因?yàn)檫@張圖是二維的,所以在同一時(shí)間內(nèi)你只能看到兩項(xiàng)評(píng)分,但是這一規(guī)則對(duì)于更多數(shù)量的評(píng)分項(xiàng)而言也是同樣適用的。
通過(guò)以上圖形制作,可以分析出相應(yīng)用戶-商品的可視化偏好,進(jìn)而針對(duì)用戶做個(gè)性化運(yùn)營(yíng)和分析。
作者:勵(lì)秣,某公司產(chǎn)品經(jīng)理,熱愛技術(shù),尤其擅長(zhǎng)PHP、java以及python,在某知名公司做過(guò)運(yùn)營(yíng),尤其擅長(zhǎng)數(shù)據(jù)運(yùn)營(yíng)。有過(guò)一段創(chuàng)業(yè)經(jīng)歷,平時(shí)兼職做項(xiàng)目,有意向一起創(chuàng)業(yè)者可勾搭。