如何用Python實現(xiàn)智能推薦

這篇文章將為大家詳細(xì)講解有關(guān)如何用Python實現(xiàn)智能推薦,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),招遠(yuǎn)企業(yè)網(wǎng)站建設(shè),招遠(yuǎn)品牌網(wǎng)站建設(shè),網(wǎng)站定制,招遠(yuǎn)網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,招遠(yuǎn)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

智能推薦是以“客戶需求”為導(dǎo)向的,是給客戶帶來價值的。常見的如淘寶的 “你可能還喜歡”,亞馬遜的 “購買此商品的用戶也購買了” 便是實例。今天就帶大家來看看如何用Python實現(xiàn)智能推薦算法。

研究方向: Python

常見的推薦系統(tǒng)與算法

常見的 **推薦系統(tǒng)分類 **有:

  • 基于應(yīng)用領(lǐng)域: 電子商務(wù)/社交好友推薦等

  • 基于設(shè)計思想: 基于協(xié)同過濾的推薦等

  • 基于使用數(shù)據(jù): 基于用戶標(biāo)簽的推薦等

如何用Python實現(xiàn)智能推薦

“ 京騰 ” 合作構(gòu)建用戶畫像標(biāo)簽圖

常見的 **推薦算法 **有:

如何用Python實現(xiàn)智能推薦

本文將專注于理解起來最容易且又十分經(jīng)典常用的 **基于關(guān)聯(lián)規(guī)則的購物籃推薦 **。商品的關(guān)聯(lián)度分析對于 **提高商品的活力、挖掘消費者的購買力、促進最大化銷售 **有很大幫助。其建模理念為:物品被同時購買的模式反映了客戶的需求模式, **適用場景 **:無需個性化定制的場景;有銷售記錄的產(chǎn)品,向老客戶推薦;套餐設(shè)計與產(chǎn)品擺放。

購物籃簡介

問 : 什么是購物籃?主要運用在什么場景?

答:單個客戶一次購買商品的綜合稱為一個購物籃,即某個客戶本次的消費小票。常用場景:超市貨架布局:互補品與互斥品;套餐設(shè)計。

: 購物籃的常用算法?

答 :常用算法有

  • 不考慮購物順序 : 關(guān)聯(lián)規(guī)則 。購物籃分析其實就是一個因果分析。關(guān)聯(lián)規(guī)則其實是一個很方便的發(fā)現(xiàn)兩樣商品關(guān)系的算法。共同提升的關(guān)系表示兩者是正相關(guān),可以作為互補品,如豆瓣醬和蔥一起賣也才是最棒的。替代品的概念便是我買了這個就不用買另外一個。

  • 考慮購物順序 : 序貫?zāi)P?。多在電商中使用,比如今天你將這個商品加入了購物車,過幾天又將另一個商品加入了購物車,這就有了一個前后順序。但許多實體商店因為沒有實名認(rèn)證,所以無法記錄用戶的消費順序。

問 : 求出互補品與互斥品后對布局有什么用?

答 :根據(jù)關(guān)聯(lián)規(guī)則求出的商品間的關(guān)聯(lián)關(guān)系后,可能會發(fā)現(xiàn)商品間存在強關(guān)聯(lián),弱關(guān)聯(lián)與排斥三種關(guān)系。每種清醒有各自對應(yīng)的布局方式。

  • 強關(guān)聯(lián) :關(guān)聯(lián)度的值需要視實際情況而定,在不同 的行業(yè)不同的也業(yè)態(tài)是不同的。強關(guān)聯(lián)的商品彼此陳列在一起會提高雙方的銷售量。雙向關(guān)聯(lián)的商品如果陳列位置允許的話應(yīng)該相關(guān)聯(lián)陳列,即A產(chǎn)品旁邊有B,B產(chǎn)品邊上也一定會有A,比如常見的剃須膏與剃須刀,男士發(fā)油與定型梳;而對于那些單向關(guān)聯(lián)的商品,只需要被關(guān)聯(lián)的商品陳列在關(guān)聯(lián)商品旁邊就行,如大瓶可樂旁邊擺紙杯,而紙杯旁邊則不擺大瓶可樂,畢竟買大可樂的消費者大概率需要紙杯,而購買紙杯的顧客再購買大可樂的概率不大。

  • 弱關(guān)聯(lián) :關(guān)聯(lián)度不高的商品,可以嘗試擺在一起,然后再分析關(guān)聯(lián)度是否有變化,如果關(guān)聯(lián)度大幅提高,則說明原來的弱關(guān)聯(lián)有可能是陳列的原因造成的。

  • 排斥關(guān)系 :指兩個產(chǎn) 品基本上不會出現(xiàn)在同一張購物小票中,這種商品盡量不要陳列在一起。

根據(jù)購物籃的信息來進行商品關(guān)聯(lián)度的分析不僅僅只有如上三種關(guān)系,它們僅代表商品關(guān)聯(lián)度分析的一個方面(可信度)。全面系統(tǒng)的商品關(guān)聯(lián)分析必須有三度的概念,三度包括 **支持度 **, **可信度 **和 **提升度 **。

關(guān)聯(lián)規(guī)則

直接根據(jù)關(guān)聯(lián)三度所定義的概念去理解會有不少難度,尤其是可信度喝提升度中的“ 誰對誰 ”的問題。其實可以換一種方式來看:

  • 規(guī)則 X 的支持度 = 規(guī)則 X 的交易次數(shù) / 交易的總數(shù)。理解:支持度表示規(guī)則 X 是否普遍。

  • 規(guī)則 X(A→B) 的置信度= 規(guī)則 X 的交易次數(shù)/規(guī)則X中商品B 的交易次數(shù)。理解:置信度是一種條件概率,表示購買了A產(chǎn)品的客戶再購買B產(chǎn)品的概率。

如何用Python實現(xiàn)智能推薦

為方便理解這些規(guī)則,我們通過下面五個購物籃的例子來練習(xí)一下

如何用Python實現(xiàn)智能推薦

不難發(fā)現(xiàn),支持度的分母都是5,也就是購物籃的數(shù)量,分子則是選取這個規(guī)則中的所有商品同時出現(xiàn)在一個籃子的次數(shù)。以A->D為例,同時包含A和D的籃子有2個,總的交易數(shù)量(籃子總數(shù))有5個,所以規(guī)則A->D的支持度為2/5;有商品 A 的籃子個數(shù)為3,在這三個籃子中,其中2個籃子又包含商品D,所以該規(guī)則的置信度(可信度)為2/3。 有關(guān)關(guān)聯(lián)規(guī)則, 還有以下兩個問題想補充

問: 僅看支持度和置信度是否靠譜?

答: 看一個案例:食堂賣飯,1000份打飯記錄中,買米飯的有800人次,買牛肉的有600人次,兩個共同買的有400人次,那么可以得出對于規(guī)則(牛肉 - > 米飯) **Support **=P(牛肉&米飯)= 400/1000=0.40; **Confidence **=P(米飯|牛肉)=400/600=0.67 **置信度 **和 **支持度 **都很高,但是給買牛肉的人推薦米飯有意義嗎?顯然是沒有任何意義的。因為無任何條件下用戶購買米飯的概率:P(米飯)=800/1000=0.8,都已經(jīng)大過買了牛肉的前提下再買米飯的概率 0.67,畢竟米飯本來就比牛肉要暢銷啊。

這個案例便引出了 **提升度 **的概念:提升度 = **置信度/無條件概率 **=0.67/0.8。規(guī)則 X(A→B) 的提升度為 n 時:向購買了 A 的客戶推薦 B 的話,這個客戶購買 B 的概率是 TA 自然而然購買 B 的 n × 100% 左右。生活理解:消費者平時較少單獨購買桌角防撞海綿,可能偶爾想到或自己小孩碰到的時候才會想起購買,如果我們在桌子(書桌飯桌)的成功下單頁面添加桌角防撞海綿的推薦,則很大程度上可以提高防撞海綿的銷量。這也符合我們希望 **通過暢銷商品帶動相對非暢銷商品 **的宗旨。

問: 除了公式的含義,關(guān)聯(lián)三度(支持度,置信度,提升度)還有什么關(guān)聯(lián)嗎?

答: 可以這樣理解:

  • 支持度代表這組關(guān)聯(lián)商品的份額是否夠大

  • 置信度( 可信度)代表關(guān)聯(lián)度的強弱

  • 而提升度則是看該關(guān)聯(lián)規(guī)則是否有利用價值和值得推廣,用了(客戶購買后推薦)比沒用(客戶自然而然的購買)要提高多少。

所以 1.0 是提升度的一個分界值,剛才的買飯案例中給買了牛肉的用戶推薦米飯的這種騷操作的提升度小于 1 也就不難理解了。另外,高置信度的兩個商品(假設(shè)達到了 100%,意味著它們總是成雙成對的出現(xiàn)),但如果支持度很低(意味著份額低),那它對整體銷售提升的幫助也不會大。

基于Apriori 算法的Python實戰(zhàn)

由于有關(guān)Apriori等算法的研究已經(jīng)很成熟,我們在用Python實戰(zhàn)時無需一步一步計算,直接調(diào)用現(xiàn)有函數(shù)即可,主要是要 **明白背后的原理與不同算法的使用場景與優(yōu)劣比較 **。

探索性分析

首先導(dǎo)入相關(guān)庫并進行數(shù)據(jù) 探索性分析

如何用Python實現(xiàn)智能推薦

數(shù)據(jù)參數(shù)解釋

  • OrderNumber :客戶昵稱

  • LineNumber :購買順序,如前三行分別表示同一個客戶購買的三樣商品的順序

  • Model :商品名

接著來看看商品的種類

如何用Python實現(xiàn)智能推薦

再來看看最暢銷的 15 種商品

如何用Python實現(xiàn)智能推薦

再進行一些簡單的可視化

如何用Python實現(xiàn)智能推薦

使用 Apriori 算法求解關(guān)聯(lián)規(guī)則

首先 **生成購物籃 **,并將同一個客戶購買的所有商品放入同一個購物籃,需要提前使用 pip install Apriori 安裝,之后我們使用 Apriori 包中的 dataconvert 函數(shù), 下面是需要傳入的參數(shù)解釋

  • arulesdata :數(shù)據(jù)集 -- DataFrame

  • tidvar : “分類的索引”,即劃分購物籃的標(biāo)準(zhǔn),本案例是根據(jù)客戶 OrderNumber -- object類型

  • itemvar :將什么東西放進籃子里,本案例是將數(shù)據(jù)集中的商品,就是 Model 列放入籃子 -- object類型

  • data_type: 默認(rèn)選擇 'inverted',庫中提供的不變

注意:需要注意傳入的參數(shù)類型,只要對了,直接套用就不是什么難事

現(xiàn)在查看前五個購物籃中的物品

如何用Python實現(xiàn)智能推薦

現(xiàn)在 **生成關(guān)聯(lián)規(guī)則 **,根據(jù)排列組合,可知這些交易將會產(chǎn)生 21255×21254÷2 這么多個關(guān)聯(lián)規(guī)則。 首先就要滿足支持度的要求,太小則直接被刪去,支持度的大小可根據(jù)關(guān)聯(lián)規(guī)則的多少調(diào)整 如果關(guān)聯(lián)規(guī)則很少,可根據(jù)實際情況放寬支持度的要求。相關(guān)參數(shù)說明:

    • minSupport :最小支持度閾值

    • minConf :最小置信度閾值

    • minlen :規(guī)則最小長度

    • maxlen :規(guī)則最大長度,一般2就夠了

這里,minSupport 或 minConf 設(shè)定越低,產(chǎn)生的規(guī)則越多,計算量也就越大

如何用Python實現(xiàn)智能推薦

結(jié)果說明: 以 result 第一行為例

    • lhs : 被稱為左手規(guī)則,通俗理解即用戶購買的商品 - 山地車內(nèi)胎

    • rhs: 被稱為右手規(guī)則,通俗理解即根據(jù)用戶購買某商品來推薦的另一件商品 - ll山地胎

    • support : 支持度,山地車內(nèi)胎 和 ll山地胎 同時出現(xiàn)在一張購物小票中的概率

    • confidence : 置信度,購買了 山地車內(nèi)胎 的前提下,同時購買 ll山地胎 的概率

    • lift:向購買了 山地車內(nèi)胎 的客戶推薦 ll山地胎 的話,這個客戶購買 ll山地胎 的概率是這個客戶自然而然購買 ll山地胎 的 400% 左右,即高了300% 多!

現(xiàn)在我們 **篩選互補品和互斥品 **,代碼如下

如何用Python實現(xiàn)智能推薦

對結(jié)果簡單分析一些,不要期望每個規(guī)則都有意義,要結(jié)合業(yè)務(wù)思考,比如競速型賽道自行車與運動水壺互斥實屬正常,競速講究輕量化,還配個水壺干什么... 比如山地車配一個競速公路車用的運動型頭盔...互斥產(chǎn)品則是成對出現(xiàn)的!

根據(jù)關(guān)聯(lián)規(guī)則結(jié)果推薦產(chǎn)品

需要結(jié)合業(yè)務(wù)需求

  • 獲得最大營銷響應(yīng)度?-- 看置信度,越高越好

  • 銷售最大化?-- 看提升度,越高越好

  • 用戶未產(chǎn)生消費,我們向其推薦商品?

以獲得最高的營銷相應(yīng)率為目標(biāo)

如果一個新客戶剛剛下單了 *山地車英騎 *這個產(chǎn)品,如果希望 **獲得最高的營銷響應(yīng)率 **,那在他付費成功頁面上最應(yīng)該推薦什么產(chǎn)品?

目標(biāo):獲得最高的營銷響應(yīng)率

如何用Python實現(xiàn)智能推薦

以最大化總體銷售額為目標(biāo)

如果一個新客戶剛下單了 *山地英騎 *這個產(chǎn)品,如果希望 **最大化提升總體的銷售額 **,那么在他付費成功的頁面上應(yīng)該推薦什么產(chǎn)品?對Python感興趣或者是新手入門不懂怎么學(xué)習(xí)的小伙伴,可以加入我的薇信:itz992 從基礎(chǔ)的python腳本到web開發(fā)、爬蟲、django、數(shù)據(jù)挖掘等,零基礎(chǔ)到項目實戰(zhàn)的資料都有整理。分享給每一位python的小伙伴!每晚給大家分享一些學(xué)習(xí)的方法和需要注意的小細(xì)節(jié)

目標(biāo):最大化銷售額

如何用Python實現(xiàn)智能推薦

再次重申 **提升度通俗含義: **提升度是相對于自然而然購買而言,A對B的提升度為4.0的理解如下:向購買了A的用戶推薦B,則該用戶購買B的概率是該用戶單獨(即自然而然的購買)購買B的概率的 400% 向購買了A的用戶推薦B,則該用戶購買B的概率比該用戶單獨(即自然而然的購買)購買B的概率高 300%

用戶并未產(chǎn)生消費,為其推薦某樣商品

如何用Python實現(xiàn)智能推薦

結(jié)語: 基于關(guān)聯(lián)規(guī)則的 Apriori 算法是智能推薦領(lǐng)域十分經(jīng)典的應(yīng)用之一,簡單易上手。

關(guān)于如何用Python實現(xiàn)智能推薦就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

新聞標(biāo)題:如何用Python實現(xiàn)智能推薦
本文來源:http://bm7419.com/article24/ijpice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、App設(shè)計、網(wǎng)站維護動態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管