活用自編碼器:以CF推薦系統為例
1 認識協(xié)同過(guò)濾(CF)推薦系統
在大數據時(shí)代里,數字信息太多了,讓人眼花繚亂,因而需要有一個(gè)懂您的工具來(lái)協(xié)助您,例如在您想聽(tīng)歌曲時(shí),它會(huì )推薦您喜歡的音樂(lè ),當你想去一個(gè)陌生地方購物時(shí),它就為您規劃一條最流暢的路線(xiàn),這種工具就通稱(chēng)為:推薦系統(recommender system)。推薦系統是一種信息過(guò)濾系統,在大量信息之中,幫你過(guò)濾你不感興趣的信息(又稱(chēng)噪聲),它隨時(shí)精確細膩地鎖定那些讓您會(huì )心一笑的有意義信息。也就是,它不需要您提出明確的需求,就會(huì )根據您的偏好和行為提供一些您可能會(huì )感興趣的物品或服務(wù)。推薦系統之所以會(huì )懂您,是基于一個(gè)假設:相似的客戶(hù)群,其成員會(huì )有相似的(similar)興趣或偏好。以電商購物場(chǎng)景為例,如果能找到一群與您相似的“鄰居”成員,然后從這一群相似的鄰居的偏好來(lái)協(xié)同分析,來(lái)挖掘出您潛在的興趣。例如,下圖里的客戶(hù)A 和客戶(hù)B是鄰居(具有很高的相似度)。如下圖所示:
依據上圖,就可以把客戶(hù)A 喜歡的葡萄和西瓜推薦給客戶(hù)B。由于是從一群鄰居成員的偏好來(lái)協(xié)同分析的,所以通稱(chēng)為:協(xié)同過(guò)濾(collaborative filtering,簡(jiǎn)稱(chēng)CF)。
2 使用傳統的CF推薦算法
協(xié)同過(guò)濾(CF)是推薦系統的流行算法,基于客戶(hù)對物品的行為(如消費、點(diǎn)贊、評分等),來(lái)建立客戶(hù)興趣的模型,然后依據其興趣而推薦物品給客戶(hù)。利用算法將客戶(hù)和物品聯(lián)結起來(lái),而且不僅僅根據自己的喜愛(ài)來(lái)判斷,還從一群相似的“鄰居”的喜好來(lái)協(xié)同分析出潛在的興趣?,F在來(lái)舉例說(shuō)明之,有一家水果店,賣(mài)5 種水果。目前收集了4 位客人對于這5 種水果的評比,其中有買(mǎi)過(guò)的水果才有評比,對于沒(méi)有買(mǎi)過(guò)的水果就沒(méi)有評比數據。如果能推測出這些缺失的評比,就能據之來(lái)進(jìn)行推薦了。例如,從客服大數據中取得客戶(hù)評比(rating)歷史數據檔案(如.csv),并呈現如下:
然后,讀取這檔案里的數據,以陣列方式呈現于Excel 畫(huà)面上:
這張圖看起來(lái)就更清晰了,其中的灰色空格部分,就是欠缺(missing)的評比數據,而CF 推薦系統就是要找出合理的值,來(lái)替代這些欠缺的(評比)數據。當您按下“傳統CF 推薦”按鈕,就會(huì )利用傳統CF 推薦算法找出各位客戶(hù)的鄰居,然后通過(guò)協(xié)同過(guò)濾方法找出合理的值來(lái)填入上圖里的灰色格子里,如下圖:
于是,在圖上方的陣列里,已經(jīng)預測出各位客戶(hù)對所有物品的評比了(將空白處填滿(mǎn)了)。而在圖下方的陣列(推薦表)里,則輸出優(yōu)先推薦的列表。例如,針對Lily 客戶(hù),建議優(yōu)先推薦物品#4(香蕉),其次是物品#3(橘子)。還有針對Melody 客戶(hù),則優(yōu)先推薦物品#1(草莓),其次是物品#4(香蕉)。還有針對Peter 客戶(hù),則建議優(yōu)先推薦物品#1(草莓),其次是物品3(橘子)。
3 活用ML瑞士刀:自編碼器
在上一期里[1],已經(jīng)介紹過(guò)自編碼器(autoencoder,AE),它是一種小而美的ML 模型,它的用途非常多,所以有“ML 瑞士刀”之稱(chēng)?;蚍Q(chēng)為:深度學(xué)習瑞士刀。在本期里,就來(lái)活用AE(自編碼器),來(lái)實(shí)踐CF 推薦?,F在,就來(lái)設計一個(gè)AE 模型。在上一期里,也已經(jīng)說(shuō)明了,AE 模型的特色就是:目標值(t)等于輸入值(x)。如下圖:
這是一個(gè)5×2×5 的AE 模型。首先將缺失的數據都補值為-1,然后按下“AE 模型CF 推薦”按鈕,就展開(kāi)訓練了。幾分鐘之后,就訓練好了,出現如下圖:
于是,就很快地把缺失的數據填補起來(lái)了,而且可以依據填補的數據來(lái)制作出優(yōu)先推薦的列表。例如,針對Lily 客戶(hù),建議優(yōu)先推薦物品#4(香蕉),其次是物品#3(橘子)。針對Melody 客戶(hù),則優(yōu)先推薦物品#1(草莓),其次是物品#4(香蕉);針對John 客戶(hù),則只推薦物品3(橘子);還有針對Peter 客戶(hù),則建議優(yōu)先推薦物品#1(草莓),其次是物品3(橘子)。以上展示了AE 模型的神奇用途之一,至于它(AE)的神奇技能的來(lái)源,則因篇幅的關(guān)系,就留待下一期再詳細說(shuō)明之。
4 介紹:基于物品的協(xié)同過(guò)濾(Item CF)推薦
在本期所談的CF 推薦系統中,最常見(jiàn)的算法有兩種:User CF 和Item CF。在本期的前面3 節里,已經(jīng)介紹過(guò)User CF 了。它有個(gè)特性:如果針對一位用戶(hù),而能找到更多相似的鄰居,這種CF 能夠提供給他更準確度的估算和推薦。然而,如果找不到相似的鄰居,其效果就會(huì )下降。此時(shí),可以考慮其他的推薦算法,例如:Item CF?,F在,就來(lái)介紹Item CF。它是通過(guò)分析用戶(hù)標簽數據和行為數據,判斷出用戶(hù)喜好商品的類(lèi)型,然后從這類(lèi)喜歡共同類(lèi)型商品的用戶(hù)中挑選一些類(lèi)似的商品推薦給該用戶(hù)。例如,該算法會(huì )因為你購買(mǎi)過(guò)“阿里山茶”而給你推薦“茶具”。該算法目前在一般電商平臺最常用的算法。Item CF 并不基于物品本身的屬性和類(lèi)目來(lái)計算出物品之間的相似度,而是通過(guò)分析用戶(hù)行為來(lái)找出物品之間的相關(guān)性。所以不是計算阿里山、茶具與高山茶之間的相似度,而是基于喜歡“阿里山茶”的用戶(hù)群也喜歡茶具,來(lái)判斷阿里山茶與茶具之間是鄰居(有相關(guān)性)。例如,上圖里的“阿里山茶”與茶具比較相似,而且客戶(hù)C 喜歡“阿里山茶”,那么可以預測出客戶(hù)C也會(huì )喜歡茶具,于是就將茶具推薦給客戶(hù)C。綜上所述,User CF 算法是基于一項假設:一位客戶(hù)會(huì )喜歡他鄰居(具有相同喜好的客戶(hù))所喜歡的物品。但如果一個(gè)用戶(hù)沒(méi)有鄰居的話(huà),則User CF 就無(wú)法準確推薦了。
而Item CF 算法也有一個(gè)基本假設:用戶(hù)會(huì )喜歡和他以前喜歡的物品的相似物品。也就是,他喜歡的東西都是比較具有相關(guān)性的,這通稱(chēng)為:客戶(hù)對喜歡物品的自相似度。一個(gè)用戶(hù)喜歡物品的自相似度大,就愈符合Item CF 的假設,則Item CF 的推薦效果就愈好。
參考文獻:
[1] 高煥堂.AI講座:自編碼器——神奇的ML瑞士軍刀[J].電子產(chǎn)品世界,2021(9):27-29.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2021年10月期)
評論