05_行销(Marketing)里推荐合适的产品(Product Recommendation)

在这篇文章里,我们将构建产品推荐系统,通过这些产品,我们可以使用针对个人客户量身定制的产品推荐来更好地定位客户。研究表明,个性化的产品推荐可以提高转化率和客户保留率。随着我们拥有更多可用于利用数据科学和机器学习进行目标营销的数据,定制产品推荐在营销信息中的重要性和有效性已大大提高。产品推荐系统是一种旨在预测和汇总客户可能购买的商品清单的系统。近年来,推荐系统已广受欢迎,并且已针对各种业务用例进行了开发和实施。例如,音乐流媒体服务Pandora将推荐器系统用于其听众的音乐推荐。电子商务公司Amazon利用推荐系统预测并显示客户可能购买的产品列表。媒体服务提供商Netflix使用推荐器系统为可能会观看的单个用户推荐电影或电视节目。推荐系统的使用不止于此。它还可以用于向用户推荐相关文章,新闻或书籍。推荐器系统具有在各个领域中使用的潜力,因为它们直接影响销售收入和用户参与度,因此在许多企业中,尤其是在电子商务和媒体业务中,都扮演着至关重要的角色。

在本章中,我们将讨论用于开发推荐系统,协作过滤的常用机器学习算法,以及实现针对产品推荐的协作过滤算法的两种方法。

  • 协同过滤(Collaborative filtering )
    协同过滤方法基于以前的用户行为,例如他们查看的页面,他们购买的产品或他们对不同项目的评分。然后,协作过滤方法使用此数据来查找用户或项目之间的相似性,并向用户推荐最相似的项目或内容。协作过滤方法背后的基本假设是,过去曾经浏览或购买过类似内容或产品的人将来可能会浏览或购买类似种类的内容或产品。因此,基于此假设,如果一个人过去购买了商品A,B和C,而另一个人过去购买了商品A,B和D,则第一个人可能会购买商品D,而另一个人可能会购买商品D。购买商品C,因为它们之间有很多相似之处。

如前一部分所述,协作过滤算法用于根据用户行为的历史记录和用户之间的相似性来推荐产品。为产品推荐系统实现协作过滤算法的第一步是构建用户对项目的矩阵。用户到项目矩阵包括行中的单个用户和列中的单个项目。用一个例子来解释会更容易。看一下下面的矩阵
在这里插入图片描述
此矩阵中的行代表每个用户,列代表每个项目。每个单元格中的值表示给定用户是否购买了给定商品。例如,用户1购买了商品B和D,用户2购买了商品A,B,C和E。为了构建基于协作过滤的产品推荐系统,我们需要首先构建此类用户项目矩阵。有了这个用户对项目矩阵,构建基于协作过滤的产品推荐系统的下一步就是计算用户之间的相似度。为了测量相似度,经常使用余弦相似度。计算两个用户之间的余弦相似度的公式如下

在这里插入图片描述
在此等式中,U1和U2代表用户1和用户2。P1i和P2i代表用户1和用户2购买的每个产品。可以想象,余弦相似度越大,则两个用户更相似。

  • 基于内容的过滤(Item-based filtering)
    基于内容的过滤会根据项目或用户的特征生成推荐列表。它通常查看描述项目特征的关键字。基于内容的过滤方法背后的基本假设是,用户可能会查看或购买与他们过去购买或查看过的商品相似的商品。例如,如果用户过去曾经听过某些歌曲,则基于内容的过滤方法将推荐与用户已经听过的歌曲具有相似特征的相似类型的歌曲。

最后,将协作式过滤算法用于产品推荐时,可以采用两种方法:基于用户的方法和基于项目的方法。顾名思义,基于用户的协作过滤方法利用了用户之间的相似性。另一方面,基于项目的方法协同过滤使用项目之间的相似性。这意味着,当我们在基于用户的方法协同过滤中计算两个用户之间的相似性时,我们需要构建并使用一个用户到项目的矩阵,如我们先前所讨论的。但是,对于基于项目的方法,我们需要计算两个项目之间的相似度,这意味着我们需要构建和使用项目对用户矩阵,我们可以通过简单地将用户对项目转置来获得该矩阵。

我们仍然使用04中的零售数据集OnlineRetail.csv

# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All" 
# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session
/kaggle/input/onlineretail/OnlineRetail.csv

Load the packages

import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline

Load the data

df=pd.read_csv(r"../input/onlineretail/OnlineRetail.csv", encoding="cp1252")
df.head(3)
InvoiceNo StockCode Description Quantity InvoiceDate UnitPrice CustomerID Country
0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 12/1/2010 8:26 2.55 17850.0 United Kingdom
1 536365 71053 WHITE METAL LANTERN 6 12/1/2010 8:26 3.39 17850.0 United Kingdom
2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 12/1/2010 8:26 2.75 17850.0 United Kingdom
df = df.loc[df['Quantity'] > 0
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值