<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 智能計算 > 設計應用 > 活用自編碼器:以CF推薦系統(tǒng)為例

          活用自編碼器:以CF推薦系統(tǒng)為例

          作者:高煥堂(銘傳大學、長庚大學 教授,臺北) 時間:2021-10-26 來源:電子產(chǎn)品世界 收藏


          本文引用地址:http://www.ex-cimer.com/article/202110/429081.htm

          1   認識協(xié)同過濾(CF)推薦系統(tǒng)

          在大數(shù)據(jù)時代里,數(shù)字信息太多了,讓人眼花繚亂,因而需要有一個懂您的工具來協(xié)助您,例如在您想聽歌曲時,它會推薦您喜歡的音樂,當你想去一個陌生地方購物時,它就為您規(guī)劃一條最流暢的路線,這種工具就通稱為:推薦系統(tǒng)(recommender system)。推薦系統(tǒng)是一種信息過濾系統(tǒng),在大量信息之中,幫你過濾你不感興趣的信息(又稱噪聲),它隨時精確細膩地鎖定那些讓您會心一笑的有意義信息。也就是,它不需要您提出明確的需求,就會根據(jù)您的偏好和行為提供一些您可能會感興趣的物品或服務。推薦系統(tǒng)之所以會懂您,是基于一個假設:相似的客戶群,其成員會有相似的(similar)興趣或偏好。以電商購物場景為例,如果能找到一群與您相似的“鄰居”成員,然后從這一群相似的鄰居的偏好來協(xié)同分析,來挖掘出您潛在的興趣。例如,下圖里的客戶A 和客戶B是鄰居(具有很高的相似度)。如下圖所示:

          1635216769629432.png

          依據(jù)上圖,就可以把客戶A 喜歡的葡萄和西瓜推薦給客戶B。由于是從一群鄰居成員的偏好來協(xié)同分析的,所以通稱為:協(xié)同過濾(collaborative filtering,簡稱CF)。

          2   使用傳統(tǒng)的CF推薦算法

          協(xié)同過濾(CF)是推薦系統(tǒng)的流行算法,基于客戶對物品的行為(如消費、點贊、評分等),來建立客戶興趣的模型,然后依據(jù)其興趣而推薦物品給客戶。利用算法將客戶和物品聯(lián)結起來,而且不僅僅根據(jù)自己的喜愛來判斷,還從一群相似的“鄰居”的喜好來協(xié)同分析出潛在的興趣?,F(xiàn)在來舉例說明之,有一家水果店,賣5 種水果。目前收集了4 位客人對于這5 種水果的評比,其中有買過的水果才有評比,對于沒有買過的水果就沒有評比數(shù)據(jù)。如果能推測出這些缺失的評比,就能據(jù)之來進行推薦了。例如,從客服大數(shù)據(jù)中取得客戶評比(rating)歷史數(shù)據(jù)檔案(如.csv),并呈現(xiàn)如下:

          1635216834462800.png

          然后,讀取這檔案里的數(shù)據(jù),以陣列方式呈現(xiàn)于Excel 畫面上:

          1635216875245238.png

          這張圖看起來就更清晰了,其中的灰色空格部分,就是欠缺(missing)的評比數(shù)據(jù),而CF 推薦系統(tǒng)就是要找出合理的值,來替代這些欠缺的(評比)數(shù)據(jù)。當您按下“傳統(tǒng)CF 推薦”按鈕,就會利用傳統(tǒng)CF 推薦算法找出各位客戶的鄰居,然后通過協(xié)同過濾方法找出合理的值來填入上圖里的灰色格子里,如下圖:

          1635216901444356.png

          于是,在圖上方的陣列里,已經(jīng)預測出各位客戶對所有物品的評比了(將空白處填滿了)。而在圖下方的陣列(推薦表)里,則輸出優(yōu)先推薦的列表。例如,針對Lily 客戶,建議優(yōu)先推薦物品#4(香蕉),其次是物品#3(橘子)。還有針對Melody 客戶,則優(yōu)先推薦物品#1(草莓),其次是物品#4(香蕉)。還有針對Peter 客戶,則建議優(yōu)先推薦物品#1(草莓),其次是物品3(橘子)。

          3   活用ML瑞士刀:

          在上一期里[1],已經(jīng)介紹過(autoencoder,AE),它是一種小而美的ML 模型,它的用途非常多,所以有“ML 瑞士刀”之稱?;蚍Q為:深度學習瑞士刀。在本期里,就來活用AE(),來實踐CF 推薦?,F(xiàn)在,就來設計一個AE 模型。在上一期里,也已經(jīng)說明了,AE 模型的特色就是:目標值(t)等于輸入值(x)。如下圖:

          1635216955493522.png

          這是一個5×2×5 的AE 模型。首先將缺失的數(shù)據(jù)都補值為-1,然后按下“AE 模型CF 推薦”按鈕,就展開訓練了。幾分鐘之后,就訓練好了,出現(xiàn)如下圖:

          1635216979742488.png

          于是,就很快地把缺失的數(shù)據(jù)填補起來了,而且可以依據(jù)填補的數(shù)據(jù)來制作出優(yōu)先推薦的列表。例如,針對Lily 客戶,建議優(yōu)先推薦物品#4(香蕉),其次是物品#3(橘子)。針對Melody 客戶,則優(yōu)先推薦物品#1(草莓),其次是物品#4(香蕉);針對John 客戶,則只推薦物品3(橘子);還有針對Peter 客戶,則建議優(yōu)先推薦物品#1(草莓),其次是物品3(橘子)。以上展示了AE 模型的神奇用途之一,至于它(AE)的神奇技能的來源,則因篇幅的關系,就留待下一期再詳細說明之。

          4   介紹:基于物品的協(xié)同過濾(Item CF)推薦

          在本期所談的CF 推薦系統(tǒng)中,最常見的算法有兩種:User CF 和Item CF。在本期的前面3 節(jié)里,已經(jīng)介紹過User CF 了。它有個特性:如果針對一位用戶,而能找到更多相似的鄰居,這種CF 能夠提供給他更準確度的估算和推薦。然而,如果找不到相似的鄰居,其效果就會下降。此時,可以考慮其他的推薦算法,例如:Item CF?,F(xiàn)在,就來介紹Item CF。它是通過分析用戶標簽數(shù)據(jù)和行為數(shù)據(jù),判斷出用戶喜好商品的類型,然后從這類喜歡共同類型商品的用戶中挑選一些類似的商品推薦給該用戶。例如,該算法會因為你購買過“阿里山茶”而給你推薦“茶具”。該算法目前在一般電商平臺最常用的算法。Item CF 并不基于物品本身的屬性和類目來計算出物品之間的相似度,而是通過分析用戶行為來找出物品之間的相關性。所以不是計算阿里山、茶具與高山茶之間的相似度,而是基于喜歡“阿里山茶”的用戶群也喜歡茶具,來判斷阿里山茶與茶具之間是鄰居(有相關性)。例如,上圖里的“阿里山茶”與茶具比較相似,而且客戶C 喜歡“阿里山茶”,那么可以預測出客戶C也會喜歡茶具,于是就將茶具推薦給客戶C。綜上所述,User CF 算法是基于一項假設:一位客戶會喜歡他鄰居(具有相同喜好的客戶)所喜歡的物品。但如果一個用戶沒有鄰居的話,則User CF 就無法準確推薦了。

          1635217071112220.png

          而Item CF 算法也有一個基本假設:用戶會喜歡和他以前喜歡的物品的相似物品。也就是,他喜歡的東西都是比較具有相關性的,這通稱為:客戶對喜歡物品的自相似度。一個用戶喜歡物品的自相似度大,就愈符合Item CF 的假設,則Item CF 的推薦效果就愈好。

          參考文獻:

          [1] 高煥堂.AI講座:自編碼器——神奇的ML瑞士軍刀[J].電子產(chǎn)品世界,2021(9):27-29.

          (本文來源于《電子產(chǎn)品世界》雜志2021年10月期)



          關鍵詞: 202110 自編碼器

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();