AI/數(shù)據(jù)產(chǎn)品經(jīng)理需要了解的算法——商品推薦算法

關(guān)于商品推薦

你肯定有過這種有趣的經(jīng)歷深滚,就是登入某些網(wǎng)站或者APP時(shí)已球,發(fā)現(xiàn)曾經(jīng)在百度或者其他搜索引擎上搜索過的東西會出現(xiàn)在這些網(wǎng)站或APP的廣告位上漾肮,又或者這些網(wǎng)站或APP上的的廣告位上會出現(xiàn)一些與當(dāng)前頁面內(nèi)容的關(guān)鍵詞相關(guān)的內(nèi)容推薦路星。這是網(wǎng)站的JavaScript代碼讀取了瀏覽器的本地Cookies(通诚疲可以用來存儲瀏覽器上的表單信息榴捡、用戶名杈女、搜索關(guān)鍵詞等信息)和當(dāng)前頁面的文本信息,并做了相應(yīng)的關(guān)鍵詞提取吊圾,最后根據(jù)這些關(guān)鍵詞來猜測用戶可能感興趣的內(nèi)容再推薦到廣告位上达椰。

這是最早的一些較為簡單的商品或廣告推薦思路,但是你可能很快就發(fā)現(xiàn)它們的“愚蠢”之處项乒,即搜索并購買了一些產(chǎn)品之后它依然不停地進(jìn)行類似產(chǎn)品的推薦啰劲。比如購買了洗衣機(jī)還推薦洗衣機(jī),買了空調(diào)還推薦空調(diào)(都不是一些高頻回購的商品)檀何。即便是在網(wǎng)站或APP能夠得知我購買洗衣機(jī)和空調(diào)的成交記錄的情況下仍然這樣做蝇裤,確實(shí)讓我們覺得系統(tǒng)很弱智。

由此在這里向大家講解目前較為常見的频鉴,更加智能的個(gè)性化商品推薦算法栓辜。

兩種個(gè)性化商品推薦算法

首先要說明的是,我們所有的推薦算法砚殿,最終目的都是為了給用戶推薦他可能感興趣的商品啃憎,從而提高銷售和轉(zhuǎn)化率,忘記這個(gè)目的的所有算法設(shè)計(jì)都是自嗨似炎。

目前常見的商品推薦算法是協(xié)同過濾辛萍,公認(rèn)比較常用的方法俗稱“鄰居方法”悯姊。鄰居方法中有兩種視角。第一種是基于用戶贩毕。第二種是基于商品悯许。

基于用戶的協(xié)同過濾,稱為User-based CF(User-based Collaborative Filtering)辉阶。系統(tǒng)通過分析一個(gè)用戶和哪些用戶(參考用戶)的特征比較相似先壕,然后看看這些參考用戶喜歡買哪類的商品,再從這些商品里挑出一些推薦給該用戶谆甜。

基于商品的協(xié)同過濾垃僚,稱為Item-based CF(Item-based Collaborative Filtering)。系統(tǒng)通過數(shù)據(jù)分析和挖掘用戶的購買行為规辱,來判斷用戶喜歡的商品類型谆棺,然后從那些用戶喜歡的商品類型里挑出一些推薦給用戶。

User-based CF 基于用戶的協(xié)同過濾

算法核心思路:當(dāng)用戶進(jìn)入一個(gè)電商平臺時(shí)罕袋,作為電商平臺系統(tǒng)找到那些和該用戶興趣/喜好類似的人改淑,然后看看他們喜歡什么,就給該用戶推薦什么浴讯。簡而言之朵夏,A和B兩個(gè)用戶相似,然后給A推薦B喜歡的東西榆纽。

假設(shè)有用戶ID為1001到1006的六個(gè)用戶仰猖,他們對幾種商品進(jìn)行了瀏覽、收藏奈籽、購買亮元、添加到購物車、評論唠摹、分享等操作爆捞。

為了得到用戶對某類別產(chǎn)品的興趣度,我們可以設(shè)計(jì)這樣一個(gè)簡單的模型勾拉,給不同的用戶行為賦予不同的分值煮甥,比如瀏覽行為賦予0.1分。整體的行為分值如表:

滿分10分藕赞,加到10后則不再累加成肘。

然后,我們得到1001-1006六位用戶對各種商品的偏好程度(得分)表:

其中表格的數(shù)字是用戶對該商品“興趣程度”的一個(gè)量化值斧蜕,0為沒興趣双霍,10為非常有興趣。空白代表這個(gè)商品在系統(tǒng)內(nèi)洒闸,還沒有任何依據(jù)來判斷興趣如何染坯。

以用戶“1006”為研究對象,現(xiàn)在要找到和他興趣最接近的人丘逸,該如何實(shí)現(xiàn)单鹿?這里便需要對商品的多維向量進(jìn)行近似求法。

多維向量空間的相似性一般有兩種求法深纲,一種是歐幾里得距離或曼哈頓距離仲锄,另一種是余弦相似度。這里用的是第二種余弦相似度來進(jìn)行度量湃鹊。

余弦函數(shù)相信大家都不陌生儒喊,就是中學(xué)時(shí)候?qū)W的cosine函數(shù)cos(θ)。余弦相似度币呵,又稱為余弦相似性澄惊,是通過計(jì)算兩個(gè)向量的夾角的余弦值來評估他們的相似度。具體公式如下:

這里的Ai和Bi分別代表向量A和B的各分量富雅。

給出的相似性范圍從-1到1:結(jié)果為-1時(shí)意味著兩個(gè)向量指向的方向正好截然相反,1表示它們的指向是完全相同的肛搬,0通常表示它們之間是獨(dú)立的没佑,而在這之間的值則表示中間的相似性或相異性。

用簡單的話來說温赔,最相似的是1蛤奢,最不相似的是-1。

回到剛剛的例子陶贼,把用戶在一些不相干的商品類別的愛好當(dāng)做一個(gè)空間向量啤贩,把每個(gè)商品類別作為一個(gè)維度,我們列的例子中就有手機(jī)拜秧、平板痹屹、筆記本電腦、智能手表枉氮、自拍桿志衍、紅酒、白酒共7個(gè)維度聊替。我們試著求一下1006這個(gè)用戶和1005這個(gè)用戶已知部分的愛好相似程度:

由于1006用戶沒有紅酒和白酒的記錄楼肪,所以沒有用1005用戶的紅酒和白酒兩個(gè)維度的分?jǐn)?shù)來計(jì)算相似度。

因?yàn)椤白钕嗨频氖?惹悄,最不相似的是-1”春叫。所以1005和1006兩個(gè)用戶的相似度還是很高的。同理也能夠求出1006用戶和其他任何一個(gè)用戶的興趣相似程度。

之后設(shè)置一個(gè)相似的閾值暂殖,如0.8价匠、0.85……或者其他任何一個(gè)值,看看相似度超過這個(gè)閾值的用戶都有什么購物喜好央星,把他們喜好購買的東西推薦給1006用戶作為推薦方案即可(例如例子中霞怀,1005和1006的喜好高度相似,就可以將1005的喜歡的紅酒和白酒推薦給1006)莉给。這就是一種思路最為樸素的基于用戶的協(xié)同過濾算法思路毙石。

補(bǔ)充:

除了上述通過分析用戶的行為來設(shè)計(jì)這個(gè)用戶相似度外,還可以考慮通過用戶的畫像思維來補(bǔ)充和完善這個(gè)用戶協(xié)調(diào)過濾算法颓遏。用戶屬性表如表所示徐矩。

用戶屬性表

我們所有的產(chǎn)品幾乎都會有這種用戶屬性表,這也是構(gòu)建用戶畫像的常見方法叁幢,利用這種列表同樣也能夠去觀察哪些用戶之間更相似滤灯,然后找到相似的用戶,再把這些用戶比較喜好的曼玩,感興趣的產(chǎn)品推薦給他鳞骤。方法有很多,基本邏輯相同黍判。以后有機(jī)會開一個(gè)用戶畫像專題再細(xì)講豫尽。

Item-based CF 基于商品的協(xié)同過濾

基于物品的協(xié)同過濾算法最早由著名的電商公司亞馬遜提出的。這種算法給用戶推薦那些和他們之前喜歡的商品相似的商品顷帖。

一般美旧,推薦算法核心思想是,給用戶推薦那些和他們之前喜歡的物品相似的物品贬墩。

比如榴嗅,內(nèi)容推薦算法的“基于內(nèi)容的協(xié)同過濾”,用戶A之前閱讀過《香港最后一個(gè)童話破滅——許志安出軌了》陶舞,該算法會根據(jù)此行為給你推薦《震驚嗽测!許志安給馬明戴綠帽了》,但是基于物品的協(xié)同過濾有點(diǎn)不同肿孵,Item-based CF算法并不利用物品的內(nèi)容屬性計(jì)算物品之間的相似度论咏,它主要通過分析用戶的行為記錄計(jì)算物品之間的相似度。

Item-based CF算法認(rèn)為颁井,“有很多人喜歡商品A厅贪,同時(shí)他們也喜歡商品B,所以A和B應(yīng)該是比較類似的商品雅宾⊙蹋”

計(jì)算起來可以分成以下兩個(gè)步驟:

計(jì)算商品之間的相似度葵硕。

根據(jù)物品的相似度和用戶的偏好來給用戶生成推薦列表。

(一)計(jì)算物品之間的相似度贯吓。

這里同樣用到了余弦相似性來求物品的相似度懈凹,但是公式略有不同:

其中,|N(i)|是喜歡物品i的用戶數(shù)悄谐,|N(j)|是喜歡物品j的用戶數(shù)介评,|N(i)&N(j)|是同時(shí)喜歡物品i和物品j的用戶數(shù)。

從上面的定義看出爬舰,在協(xié)同過濾中兩個(gè)物品產(chǎn)生相似度是因?yàn)樗鼈児餐缓芏嘤脩粝矚g们陆,兩個(gè)物品相似度越高,說明這兩個(gè)物品共同被很多人喜歡情屹。

這里面蘊(yùn)含著一個(gè)假設(shè):就是假設(shè)每個(gè)用戶的興趣都局限在某幾個(gè)方面坪仇,因此如果兩個(gè)物品屬于一個(gè)用戶的興趣列表,那么這兩個(gè)物品可能就屬于有限的幾個(gè)領(lǐng)域垃你,而如果兩個(gè)物品屬于很多用戶的興趣列表椅文,那么它們就可能屬于同一個(gè)領(lǐng)域,因而有很大的相似度惜颇。

舉例說明皆刺,首先我們假定有5個(gè)用戶,分別為A凌摄、B羡蛾、C、D望伦、E,他們的商品購買記錄分別如下:

這是一個(gè)文娛用品商店的銷售記錄煎殷,記錄了每一個(gè)用戶購買的產(chǎn)品內(nèi)容屯伞,這里只用5個(gè)用戶來做一個(gè)演示。

首先要分別得到每個(gè)用戶購買物品的鄰接矩陣豪直,如用戶A購物鄰接矩陣如表所示:

用戶A購物鄰接矩陣

這個(gè)矩陣就是根據(jù)剛剛看到的用戶A的購買記錄得到的劣摇,由于紅酒、啤酒和顯示器同時(shí)出現(xiàn)在他的購物列表里弓乙,所以“紅酒和啤酒”末融、“紅酒和顯示器”、“啤酒和顯示器”兩兩“鄰接”暇韧,也就是說這些標(biāo)注1的小格子代表這兩種一起在一個(gè)人的購物記錄里出現(xiàn)過一次——注意買過就算勾习,不是必須出現(xiàn)在同一次購物籃里。

同理能夠得到其他B懈玻、C巧婶、D、E幾人的購物鄰接矩陣(所有的鄰接矩陣都是沿對角線對稱的。)艺栈。然后將A英岭、B、C湿右、D诅妹、E五人的鄰接矩陣,通過矩陣“疊加”的方式毅人,即將每一個(gè)矩陣的每個(gè)對應(yīng)的方格數(shù)字相加吭狡,最后得到中間矩陣C,過程如下:

疊加過程

最終的疊加結(jié)果——中間矩陣C:

中間矩陣C

從這個(gè)中間矩陣C里堰塌,可以看到同時(shí)喜歡紅酒和啤酒的有2個(gè)人赵刑,同時(shí)喜歡鼠標(biāo)和鍵盤的有2個(gè)人,同時(shí)喜歡白酒和紅酒的有1個(gè)人……由于矩陣是對稱的,我為大家都劃出了對角線晕翠,大家看表格對角線的一邊就行区丑。

這時(shí)便可以計(jì)算任意兩個(gè)商品的相似度做評估了,如計(jì)算鼠標(biāo)和鍵盤的相似程度铐懊,套用剛才的公式:

說明相似度極高,買鍵盤的人必買鼠標(biāo)瞎疼,買鼠標(biāo)的人必買鍵盤科乎。

再試算一下紅酒和白酒的相似度:

說明相似度極高,買鍵盤的人必買鼠標(biāo)贼急,買鼠標(biāo)的人必買鍵盤茅茂。

現(xiàn)在,再試算一下紅酒和白酒的相似度:

以此類推太抓,便可計(jì)算出所有商品之間的相似度空闲。

(二)根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表:

得到相似度后,便可以計(jì)算基于相似度的商品推薦列表了走敌。

計(jì)算完中間矩陣之后碴倾,當(dāng)要對一個(gè)用戶做推薦時(shí),先把這個(gè)用戶的歷史購買記錄都列出來掉丽,假設(shè)有n個(gè)購買記錄跌榔。然后對這個(gè)列表里每一個(gè)產(chǎn)品都用查表的方法查一次相似度,這樣會得到n個(gè)列表捶障,每個(gè)列表里都是一個(gè)產(chǎn)品和其對應(yīng)的相似度的關(guān)系僧须。把這n個(gè)列表做一個(gè)排序,相似度高的在前项炼,相似度低的在后皆辽。如果要推薦3個(gè)商品就取前3個(gè)柑蛇,如果要推薦5個(gè)商品就取前5個(gè)。

大概的推薦算法思路說到這大概就說完了驱闷,因?yàn)槲覀儾皇羌夹g(shù)耻台,產(chǎn)品經(jīng)理了解到這個(gè)層面就差不多了。深挖一層還可以根據(jù)相似度和歷史行為計(jì)算出用戶對物品的感興趣度空另,然后再給用戶生成推薦列表盆耽。就是在相似度的維度上,在增加一個(gè)感興趣的維度扼菠,作為推薦商品的衡量指標(biāo)摄杂,思路相似,這里不再展開循榆。

優(yōu)缺點(diǎn)說明

優(yōu)點(diǎn)是推薦都是基于用戶的行為數(shù)據(jù)去不斷學(xué)習(xí)和完善析恢,在過程中發(fā)現(xiàn)用戶的潛在商品興趣,能給用戶“制造驚喜”的同時(shí)秧饮,也在為自己制造驚喜映挂。這是一個(gè)持續(xù)成長的過程,而推薦不過是其中的一個(gè)短程跑道盗尸,設(shè)計(jì)者的目光應(yīng)該長遠(yuǎn)些柑船,將最終的目放在構(gòu)建行業(yè)的大數(shù)據(jù)庫和用戶畫像的產(chǎn)業(yè)生態(tài)上。

缺點(diǎn)則是啟動(dòng)的門檻高泼各,用戶量不夠時(shí)鞍时,商品量太少時(shí)幾乎無法開展;并且學(xué)習(xí)量不夠時(shí)推薦結(jié)果較差扣蜻,就會導(dǎo)致文初說的“愚蠢”現(xiàn)象出現(xiàn)逆巍,這也是很多時(shí)候人工智能被大家吐槽為“人工智障”的原因之一。

總而言之

關(guān)于個(gè)性化推薦的算法莽使,在網(wǎng)上有很多資料锐极,也有很多其他的實(shí)現(xiàn)方法,區(qū)區(qū)在下吮旅,所知實(shí)在有限溪烤。這里只是嘗試以產(chǎn)品經(jīng)理的角度味咳,用較簡單的語言來將自己學(xué)到的推薦算法原理剖析給大家聽庇勃。

關(guān)于產(chǎn)品經(jīng)理要不要懂技術(shù)的問題,也是老生常談了槽驶,高論很多责嚷,不敢多贊一詞。只說一句掂铐,產(chǎn)品經(jīng)理在算法產(chǎn)品的設(shè)計(jì)中罕拂,絕不能一句“做個(gè)性化推薦”就完事的揍异,你須深入算法內(nèi)部,了解算法爆班,然后結(jié)合產(chǎn)品特點(diǎn)來優(yōu)化和設(shè)計(jì)衷掷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市柿菩,隨后出現(xiàn)的幾起案子戚嗅,更是在濱河造成了極大的恐慌,老刑警劉巖枢舶,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懦胞,死亡現(xiàn)場離奇詭異,居然都是意外死亡凉泄,警方通過查閱死者的電腦和手機(jī)躏尉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來后众,“玉大人胀糜,你說我怎么就攤上這事『鹁撸” “怎么了僚纷?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拗盒。 經(jīng)常有香客問我怖竭,道長,這世上最難降的妖魔是什么陡蝇? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任痊臭,我火速辦了婚禮,結(jié)果婚禮上登夫,老公的妹妹穿的比我還像新娘广匙。我一直安慰自己,他們只是感情好恼策,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布鸦致。 她就那樣靜靜地躺著,像睡著了一般涣楷。 火紅的嫁衣襯著肌膚如雪分唾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天狮斗,我揣著相機(jī)與錄音绽乔,去河邊找鬼。 笑死碳褒,一個(gè)胖子當(dāng)著我的面吹牛折砸,可吹牛的內(nèi)容都是我干的看疗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼睦授,長吁一口氣:“原來是場噩夢啊……” “哼两芳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起去枷,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盗扇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后沉填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疗隶,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年翼闹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斑鼻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猎荠,死狀恐怖坚弱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情关摇,我是刑警寧澤荒叶,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站输虱,受9級特大地震影響些楣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宪睹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一愁茁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亭病,春花似錦鹅很、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至整袁,卻和暖如春菠齿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葬项。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工泞当, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迹蛤,地道東北人民珍。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓襟士,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚷量。 傳聞我的和親對象是個(gè)殘疾皇子陋桂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容