關于商品推薦你肯定有過這種有趣的經(jīng)歷,就是登入某些網(wǎng)站或者APP時,發(fā)現(xiàn)曾經(jīng)在百度或者其他搜索引擎上搜索過的東西會出現(xiàn)在這些網(wǎng)站或APP的廣告位上,又或者這些網(wǎng)站或APP上的的廣告位上會出現(xiàn)一些與當前頁面內(nèi)容的關鍵詞相關的內(nèi)容推薦。這是網(wǎng)站的JavaScript代碼讀取了瀏覽器的本地Cookies(通??梢杂脕泶鎯g覽器上的表單信息、用戶名、搜索關鍵詞等信息)和當前頁面的文本信息,并做了相應的關鍵詞提取,最后根據(jù)這些關鍵詞來猜測用戶可能感興趣的內(nèi)容再推薦到廣告位上。 這是最早的一些較為簡單的商品或廣告推薦思路,但是你可能很快就發(fā)現(xiàn)它們的“愚蠢”之處,即搜索并購買了一些產(chǎn)品之后它依然不停地進行類似產(chǎn)品的推薦。比如購買了洗衣機還推薦洗衣機,買了空調(diào)還推薦空調(diào)(都不是一些高頻回購的商品)。即便是在網(wǎng)站或APP能夠得知我購買洗衣機和空調(diào)的成交記錄的情況下仍然這樣做,確實讓我們覺得系統(tǒng)很弱智。 由此在這里向大家講解目前較為常見的,更加智能的個性化商品推薦算法。 兩種個性化商品推薦算法首先要說明的是,我們所有的推薦算法,最終目的都是為了給用戶推薦他可能感興趣的商品,從而提高銷售和轉(zhuǎn)化率,忘記這個目的的所有算法設計都是自嗨。 目前常見的商品推薦算法是協(xié)同過濾,公認比較常用的方法俗稱“鄰居方法”。鄰居方法中有兩種視角。第一種是基于用戶。第二種是基于商品。 基于用戶的協(xié)同過濾,稱為User-based CF(User-based Collaborative Filtering)。系統(tǒng)通過分析一個用戶和哪些用戶(參考用戶)的特征比較相似,然后看看這些參考用戶喜歡買哪類的商品,再從這些商品里挑出一些推薦給該用戶。 基于商品的協(xié)同過濾,稱為Item-based CF(Item-based Collaborative Filtering)。系統(tǒng)通過數(shù)據(jù)分析和挖掘用戶的購買行為,來判斷用戶喜歡的商品類型,然后從那些用戶喜歡的商品類型里挑出一些推薦給用戶。 User-based CF 基于用戶的協(xié)同過濾算法核心思路:當用戶進入一個電商平臺時,作為電商平臺系統(tǒng)找到那些和該用戶興趣/喜好類似的人,然后看看他們喜歡什么,就給該用戶推薦什么。簡而言之,A和B兩個用戶相似,然后給A推薦B喜歡的東西。 假設有用戶ID為1001到1006的六個用戶,他們對幾種商品進行了瀏覽、收藏、購買、添加到購物車、評論、分享等操作。 為了得到用戶對某類別產(chǎn)品的興趣度,我們可以設計這樣一個簡單的模型,給不同的用戶行為賦予不同的分值,比如瀏覽行為賦予0.1分。整體的行為分值如表: 滿分10分,加到10后則不再累加。 然后,我們得到1001-1006六位用戶對各種商品的偏好程度(得分)表: 其中表格的數(shù)字是用戶對該商品“興趣程度”的一個量化值,0為沒興趣,10為非常有興趣。空白代表這個商品在系統(tǒng)內(nèi),還沒有任何依據(jù)來判斷興趣如何。 以用戶“1006”為研究對象,現(xiàn)在要找到和他興趣最接近的人,該如何實現(xiàn)?這里便需要對商品的多維向量進行近似求法。 多維向量空間的相似性一般有兩種求法,一種是歐幾里得距離或曼哈頓距離,另一種是余弦相似度。這里用的是第二種余弦相似度來進行度量。 余弦函數(shù)相信大家都不陌生,就是中學時候?qū)W的cosine函數(shù)cos(θ)。余弦相似度,又稱為余弦相似性,是通過計算兩個向量的夾角的余弦值來評估他們的相似度。具體公式如下: 這里的Ai和Bi分別代表向量A和B的各分量。 給出的相似性范圍從-1到1:結(jié)果為-1時意味著兩個向量指向的方向正好截然相反,1表示它們的指向是完全相同的,0通常表示它們之間是獨立的,而在這之間的值則表示中間的相似性或相異性。 用簡單的話來說,最相似的是1,最不相似的是-1。 回到剛剛的例子,把用戶在一些不相干的商品類別的愛好當做一個空間向量,把每個商品類別作為一個維度,我們列的例子中就有手機、平板、筆記本電腦、智能手表、自拍桿、紅酒、白酒共7個維度。我們試著求一下1006這個用戶和1005這個用戶已知部分的愛好相似程度: 由于1006用戶沒有紅酒和白酒的記錄,所以沒有用1005用戶的紅酒和白酒兩個維度的分數(shù)來計算相似度。 因為“最相似的是1,最不相似的是-1”。所以1005和1006兩個用戶的相似度還是很高的。同理也能夠求出1006用戶和其他任何一個用戶的興趣相似程度。 之后設置一個相似的閾值,如0.8、0.85……或者其他任何一個值,看看相似度超過這個閾值的用戶都有什么購物喜好,把他們喜好購買的東西推薦給1006用戶作為推薦方案即可(例如例子中,1005和1006的喜好高度相似,就可以將1005的喜歡的紅酒和白酒推薦給1006)。這就是一種思路最為樸素的基于用戶的協(xié)同過濾算法思路。 補充: 除了上述通過分析用戶的行為來設計這個用戶相似度外,還可以考慮通過用戶的畫像思維來補充和完善這個用戶協(xié)調(diào)過濾算法。用戶屬性表如表所示。 用戶屬性表 我們所有的產(chǎn)品幾乎都會有這種用戶屬性表,這也是構(gòu)建用戶畫像的常見方法,利用這種列表同樣也能夠去觀察哪些用戶之間更相似,然后找到相似的用戶,再把這些用戶比較喜好的,感興趣的產(chǎn)品推薦給他。方法有很多,基本邏輯相同。以后有機會開一個用戶畫像專題再細講。 Item-based CF 基于商品的協(xié)同過濾基于物品的協(xié)同過濾算法最早由著名的電商公司亞馬遜提出的。這種算法給用戶推薦那些和他們之前喜歡的商品相似的商品。 一般,推薦算法核心思想是,給用戶推薦那些和他們之前喜歡的物品相似的物品。 比如,內(nèi)容推薦算法的“基于內(nèi)容的協(xié)同過濾”,用戶A之前閱讀過《香港最后一個童話破滅——許志安出軌了》,該算法會根據(jù)此行為給你推薦《震驚!許志安給馬明戴綠帽了》,但是基于物品的協(xié)同過濾有點不同,Item-based CF算法并不利用物品的內(nèi)容屬性計算物品之間的相似度,它主要通過分析用戶的行為記錄計算物品之間的相似度。 Item-based CF算法認為,“有很多人喜歡商品A,同時他們也喜歡商品B,所以A和B應該是比較類似的商品?!?/p> 計算起來可以分成以下兩個步驟: 計算商品之間的相似度。 根據(jù)物品的相似度和用戶的偏好來給用戶生成推薦列表。 (一)計算物品之間的相似度。這里同樣用到了余弦相似性來求物品的相似度,但是公式略有不同: 其中,|N(i)|是喜歡物品i的用戶數(shù),|N(j)|是喜歡物品j的用戶數(shù),|N(i)&N(j)|是同時喜歡物品i和物品j的用戶數(shù)。 從上面的定義看出,在協(xié)同過濾中兩個物品產(chǎn)生相似度是因為它們共同被很多用戶喜歡,兩個物品相似度越高,說明這兩個物品共同被很多人喜歡。 這里面蘊含著一個假設:就是假設每個用戶的興趣都局限在某幾個方面,因此如果兩個物品屬于一個用戶的興趣列表,那么這兩個物品可能就屬于有限的幾個領域,而如果兩個物品屬于很多用戶的興趣列表,那么它們就可能屬于同一個領域,因而有很大的相似度。 舉例說明,首先我們假定有5個用戶,分別為A、B、C、D、E,他們的商品購買記錄分別如下: 這是一個文娛用品商店的銷售記錄,記錄了每一個用戶購買的產(chǎn)品內(nèi)容,這里只用5個用戶來做一個演示。 首先要分別得到每個用戶購買物品的鄰接矩陣,如用戶A購物鄰接矩陣如表所示: 用戶A購物鄰接矩陣 這個矩陣就是根據(jù)剛剛看到的用戶A的購買記錄得到的,由于紅酒、啤酒和顯示器同時出現(xiàn)在他的購物列表里,所以“紅酒和啤酒”、“紅酒和顯示器”、“啤酒和顯示器”兩兩“鄰接”,也就是說這些標注1的小格子代表這兩種一起在一個人的購物記錄里出現(xiàn)過一次——注意買過就算,不是必須出現(xiàn)在同一次購物籃里。 同理能夠得到其他B、C、D、E幾人的購物鄰接矩陣(所有的鄰接矩陣都是沿對角線對稱的。)。然后將A、B、C、D、E五人的鄰接矩陣,通過矩陣“疊加”的方式,即將每一個矩陣的每個對應的方格數(shù)字相加,最后得到中間矩陣C,過程如下: 疊加過程 最終的疊加結(jié)果——中間矩陣C: 中間矩陣C 從這個中間矩陣C里,可以看到同時喜歡紅酒和啤酒的有2個人,同時喜歡鼠標和鍵盤的有2個人,同時喜歡白酒和紅酒的有1個人……由于矩陣是對稱的,我為大家都劃出了對角線,大家看表格對角線的一邊就行。 這時便可以計算任意兩個商品的相似度做評估了,如計算鼠標和鍵盤的相似程度,套用剛才的公式: 說明相似度極高,買鍵盤的人必買鼠標,買鼠標的人必買鍵盤。 再試算一下紅酒和白酒的相似度: 說明相似度極高,買鍵盤的人必買鼠標,買鼠標的人必買鍵盤。 現(xiàn)在,再試算一下紅酒和白酒的相似度: 以此類推,便可計算出所有商品之間的相似度。 (二)根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表:得到相似度后,便可以計算基于相似度的商品推薦列表了。 計算完中間矩陣之后,當要對一個用戶做推薦時,先把這個用戶的歷史購買記錄都列出來,假設有n個購買記錄。然后對這個列表里每一個產(chǎn)品都用查表的方法查一次相似度,這樣會得到n個列表,每個列表里都是一個產(chǎn)品和其對應的相似度的關系。把這n個列表做一個排序,相似度高的在前,相似度低的在后。如果要推薦3個商品就取前3個,如果要推薦5個商品就取前5個。 大概的推薦算法思路說到這大概就說完了,因為我們不是技術,產(chǎn)品經(jīng)理了解到這個層面就差不多了。深挖一層還可以根據(jù)相似度和歷史行為計算出用戶對物品的感興趣度,然后再給用戶生成推薦列表。就是在相似度的維度上,在增加一個感興趣的維度,作為推薦商品的衡量指標,思路相似,這里不再展開。 優(yōu)缺點說明優(yōu)點是推薦都是基于用戶的行為數(shù)據(jù)去不斷學習和完善,在過程中發(fā)現(xiàn)用戶的潛在商品興趣,能給用戶“制造驚喜”的同時,也在為自己制造驚喜。這是一個持續(xù)成長的過程,而推薦不過是其中的一個短程跑道,設計者的目光應該長遠些,將最終的目放在構(gòu)建行業(yè)的大數(shù)據(jù)庫和用戶畫像的產(chǎn)業(yè)生態(tài)上。 缺點則是啟動的門檻高,用戶量不夠時,商品量太少時幾乎無法開展;并且學習量不夠時推薦結(jié)果較差,就會導致文初說的“愚蠢”現(xiàn)象出現(xiàn),這也是很多時候人工智能被大家吐槽為“人工智障”的原因之一。 總而言之關于個性化推薦的算法,在網(wǎng)上有很多資料,也有很多其他的實現(xiàn)方法,區(qū)區(qū)在下,所知實在有限。這里只是嘗試以產(chǎn)品經(jīng)理的角度,用較簡單的語言來將自己學到的推薦算法原理剖析給大家聽。 關于產(chǎn)品經(jīng)理要不要懂技術的問題,也是老生常談了,高論很多,不敢多贊一詞。只說一句,產(chǎn)品經(jīng)理在算法產(chǎn)品的設計中,絕不能一句“做個性化推薦”就完事的,你須深入算法內(nèi)部,了解算法,然后結(jié)合產(chǎn)品特點來優(yōu)化和設計。 |
|