你有没有注意到,许多销售产品、提供服务和提供内容的公司,如亚马逊、Oyo、youtube、Netflix和Flipkart,都会为我们提供关于他们的产品、服务和内容的建议或推荐?许多建议我们使用,因为我们知道这些产品的质量,许多产品我们使用,因为我们正在冲浪的产品或服务的平台知道有关产品,希望我们可能喜欢或需要在未来使用。在使用这些平台时,这些建议是如何出现在我们面前的?我们正在谈论的公司是当今市场上的一些领先公司。增加他们目前地位的因素之一是他们的推荐系统。
推荐系统旨在根据不同的因素对用户的服务、产品或项目进行推荐。这些系统预测用户最可能使用的产品的概率。 利用这些推荐系统,用户可以弄清楚他们的要求。这些系统处理用户提供的关于用户或他们想使用的产品的信息。它找出用户信息和产品要求之间的匹配,并归纳出用户和物品之间的相似性进行推荐。
推荐系统对双方都有好处,对用户方和提供者都有好处。它对用户有好处,可以使用户在搜索他感兴趣的东西时更加方便和节省时间,对供应商来说,可以将他的服务放在正确的位置,提高用户体验。 许多东西都可以被推荐,如电影、书籍、新闻文章、视频等,许多平台正在使用它来发展他们的业务。
推荐系统有很多类型。其中一些是--
- 基于人气的推荐系统--这种系统推荐趋势中的产品,就像youtube的趋势页面,页面推荐用户高频率观看的视频。
- 基于内容的推荐系统--这种类型的推荐系统基于内容的相似性提供推荐;例如,在Netflix,平台会在观看电影后向观众推荐相似的电影。
- 基于用户的推荐系统--在这种类型的推荐系统中,系统根据用户的信息,如性别、年龄、喜欢、不喜欢等,计算出用户之间的相似度,然后根据相似用户的服务消费数据给出推荐。例如,亚马逊根据孩子的年龄来推荐孩子的配件。
这些系统都是在某个地方有不同的算法来实现平台。而要把推荐系统分配给一个平台,我们都需要对所有推荐系统进行不同的暗示。因为,通常情况下,每个企业都需要在他们的平台上有更高的用户参与度,以获得更大的发展。如果用户觉得平台对他有用,他就会频繁使用平台,而推荐系统有助于为平台用户提供更好的用户体验。
选择推荐系统来嵌入平台需要很多知识。同时,这也是研究的课题,因为一次失败就会导致几个客户的流失。而这也会损害企业的利益。这个话题太深奥了,我们前面讨论的只是关于推荐系统的基本内容。推荐系统的实施是需要非常准确的,同时,到了实施的时候,它应该给出高水平的准确性和适当的推荐。在这里,RecBole参与其中,它可以使这些所有的任务都非常容易执行。接下来,在文章中,我们将讨论为推荐系统的研究目的而设计的RecBole框架。
什么是RecBole?
RecBole的库由72种推荐系统算法组成。它是在PyTorch框架上用Python开发的。它通过涵盖四大类推荐算法,以统一和全面的方式产生推荐算法。
- 普通推荐
- 顺序性推荐。
- 语境感知的推荐。
- 基于知识的推荐。
同时,在它的库中有所有这些算法,我们有28个推荐数据集可用,这些数据集是为了灵活运用这些算法而设计的。还有一些脚本可以对数据集进行预处理以适应这些算法。下面的图片可以显示RecBole的整体架构。
在Python中实现RecBole
让我们来看看我们如何使用RecBole。
要求 - python 3.6或以上版本,Torch 1.6.0或以上版本,CUDA 9.2或以上版本,NVIDIA驱动版本>=396.26(Linux)或>=397.44(Windows10)。
在本文中,我们使用的是google colab,所以我们需要先在我们的colaboratory中安装驱动器;我们可以使用以下代码来安装驱动器。
from google.colab import drive
drive.mount('/content/drive')
输出。
我们可以从提供的链接中获取授权代码,复制代码后,将其粘贴到小工具中,然后按回车键。我们的谷歌驱动器将被挂载在驱动器中。
我们可以用下面的命令安装Recbole。
!pip install recbole
输出。
或者我们可以用下面的命令直接从GitHub上克隆这个包。
!git clone https://github.com/RUCAIBox/RecBole.git
输出。
克隆包之后,我们只需要把colaboratory指向包的文件夹。
cd RecBole
输出。
在引导colaboratory之后,我们可以使用下面的命令安装Recbole框架。
!pip install -e . --verbose
输出。
安装完成后,我们可以运行软件包提供的脚本,以实现库的初始使用。这个脚本将在ml-100k数据集中运行BPR模型。这些数据集包括电影标题的发布年份和它们的类别,如惊悚片、动作片、冒险片等,以及它们的唯一ID。
!python run_recbole.py
这将提供不同的输出,其中包括系统的细节、模型、数据集和最终结果。
输出。
在上面的输出中,我们可以看到整个过程的系统配置。
在上面的输出中,我们可以看到训练中的模型的细节。
在上面的输出中,我们可以看到脚本的评估指标。
在上面的输出中,我们可以看到数据的细节。
最后,我们可以看到该算法的最佳结果。
我们还可以使用以下命令设置不同的参数。
python run_hyper.py --model=[model_name] --dataset=[data_name] --config_files=xxxx.yaml --params_file=hyper.test
在这个命令中,hyper.test文件包含了这些参数。
learning_rate loguniform -8, 0embedding_size choice [64, 96 , 128]
train_batch_size choice [512, 1024, 2048]
mlp_hidden_size choice ['[64, 64, 64]','[128, 128]']
其中loguniform表示,参数将遵循均匀分布中e^{-8}-e^{0}之间的随机取值。而选择允许你从设置列表中采取离散的值。
基本上,这个文件提供的是模型的超参数调整。我们可以在RecBole/hyper.test位置上的hyper.test文件中使用不同的数字。
例如,我在下面的代码中设置参数。
!python run_hyper.py --model=BPR --dataset=ml-100k --params_file=hyper.test
输出。
输出会像这样开始,需要一些时间才能完成。
下面是超参数调整后的模型的最终结果。
验证结果。
测试结果。
在这里,我们可以看到结果是相当令人满意的,而且,我们只需要几个步骤就可以做出一个推荐系统。该库在不同的数据集上进行了测试,如Ml-1m、Netflix、yelp数据。我们可以在这个链接中查看模型的全部细节和性能。
在这篇文章中,我们已经看到了如何生成一个推荐模型。我们还可以在不同的模型之间进行迭代,只需输入一行命令,RecBolde使整个推荐系统变得简单而快速。开始时使用的代码只用了1分钟就完成了,而超参数的调整大约需要3-4分钟就能成功运行。使用RecBole,我们不需要担心算法的问题。我们还得到了关于在后台运行的整个过程的全面细节。我鼓励你去链接,了解更多关于这个库的信息,因为它可以生成具有高精确度水平的模型。
参考资料。
- RecBole github。
- RecBole主页。
- 本文中的谷歌colab的实现代码。
The postHands-On Guide To RecBole Recommendation Algorithmsappeared first onAnalytics India Magazine.