1分钟了解相似性推荐

前几天聊的“协同过滤(Collaborative Filtering)”和“基于内容的推荐(Content-based Recommendation)”,都必须分析用户的历史行为数据(例如电影点击数据,职位查看数据等),针对不同的用户进行个性化推荐。如果系统没有用户的历史行为数据积累,如何实施推荐呢?

今天接着用通俗的语言说说推荐算法中的“相似性推荐”。

什么是“相似性推荐”?

:对于新用户A,没有ta的历史行为数据,在ta点击了item-X的场景下,可以将与item-X最相似的item集合推荐给新用户A。

问题转化为,如何用一种通用的方法,表达item之间的相似性。

仍以电影推荐为例,新用户A进入了《我不是潘金莲》电影详情页,如何对A进行电影推荐呢?

先看二维空间的点N,如何推荐与其最近的点?

:可以用二维空间中,点与点之间的距离,表示点之间的远近。

对于全集中的任何一个点M(xi, yi),它与点N(x1, y1)的距离:

distance = (x1-xi)^2 + (y1-yi)^2

所以,只要计算全集中所有点与N的距离,就能计算出与它最近的3个点。

再看三维空间的点N,如何推荐与其最近的点?

:可以用三维空间中,点与点之间的距离,表示点之间的远近。

对于全集中的任何一个点M(xi, yi, zi),它与点N(x1, y1, z1)的距离:

distance = (x1-xi)^2 + (y1-yi)^2 + (z1-zi)^2

所以,只要计算全集中所有点与N的距离,就能计算出与它最近的3个点。

循序渐进,对于一部电影《我不是潘金莲》,假设它有10个属性,则可以把它看做一个十维空间中的点:

点N《我不是潘金莲》

{

导演:冯小刚

女主:范冰冰

男主:郭涛

女配:张嘉译

男配:大鹏

类型:剧情

地区:中国大陆

语言:普通话

日期:2016

片长:140

}

对于电影全集中的任何一部电影,都可以计算与点N《我不是潘金莲》之间的距离。二维三维中的点,可以用直线距离计算远近,10维空间{导演, 女主, 男主, 女配, 男配, 类型, 地区, 语言, 日期, 片长}中的两个点的距离,需要重新定义一个距离函数,例如:

distance = f1(导演) + f2(女主) + … +f10(片长)

这个距离,通俗的解释,就是每个维度贡献分值的总和。

分值可以这么定义:

f1(导演){

如果两部电影导演相同,得1分;

如果导演不同,得0分;

}

例如,现在10维空间中,有另一个点M《芳华》

{

导演:冯小刚

女主:苗苗

男主:黄轩

女配:NULL

男配:NULL

类型:剧情

地区:中国大陆

语言:普通话

日期:2017

片长:140

}

要计算点M《芳华》与点N《我不是潘金莲》的距离,代入distance距离计算公式:

distance = f1(导演) + f2(女主) + … +f10(片长)

=1 + 0 + … + 1

=5

即:导演、类型、地区、语言、片长相同各得1分,其他维度不同得0分。

遍历电影全集中的10w部电影,就能找到与点N《我不是潘金莲》最相近的3部电影,当用户点击《我不是潘金莲》的详情页时,直接推荐这3部最相近的电影即可。

相似性推荐,原理大致如上,要说明的是:

  • 由于没有用户历史行为积累,不是个性化推荐,所以所有用户的推荐结果都是相同的
  • 一般来说,距离公式确实是线性的
  • 一般来说,每个维度的权重不一样
  • 这个线性公式,以及维度的权重,都可以通过机器学习训练出来

相似性推荐,希望这1分钟,大家能有收获。

原文发布于微信公众号 - 架构师之路(road5858)

原文发表时间:2018-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨熹的专栏

手写,纯享版反向传播算法公式推导

每次推导公式时,感觉整个世界都安静了下来! 学神经网络,那么它的训练利器:反向传播算法,不能不会哦 ? ? 是不是看到这样的公式就头晕脑胀? ? 下面拆解开来,...

3564
来自专栏MixLab科技+设计实验室

写给设计师的人工智能指南:如何找出相似的文章

聊聊文本挖掘中的 “找出相似的文章”, 为“推荐系统”做准备。 以下为正文。 ---- 先了解下文本挖掘的一般过程。 如何让计算机读懂一段文字? 本质上要解决的...

41610
来自专栏互联网高可用架构

小目标运动物体检测算法-Pipeline

2693
来自专栏ATYUN订阅号

OpenAI开发的分级强化学习算法旨在解决高级操作

我们已经开发了一种分层强化学习算法,它学习用于解决一组任务的高级操作,可以快速解决需要数千个时间步长的任务。我们的算法应用于一组导航问题时,会发现一组用于在不同...

2936
来自专栏专知

NLP-Progress记录NLP最新数据集、论文和代码: 助你紧跟NLP前沿

【导读】方向是自然语言处理的同学们有福啦,为了跟踪自然语言处理(NLP)的进展,有大量仁人志士在 Github 上维护了一个名为 NLP-Progress 的库...

1191
来自专栏数据派THU

13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

[ 导读 ]马尔科夫链、主成分分析以及条件概率等概念,是计算机学生必学的知识点,然而理论的抽象性往往让学生很难深入地去体会和理解。而本文,将这些抽象的理论概念,...

1191
来自专栏目标检测和深度学习

本周 Github 精选:13 款炼丹利器,有开源工具包也有超大数据集

1634
来自专栏AI研习社

比 TensorFlow 云快 46 倍!IBM 用 Snap ML 和 Tesla V100 秀肌肉

AI 研习社按:TensorFlow 的机器学习库可以说大家都已经很熟悉了,但 IBM 的研究人员们表示这都是小意思。

882
来自专栏非著名程序员

GitHub 上最火,最热门的机器学习和人工智能,数据科学项目

最近,普拉纳夫 · 达尔(Pranav Dar)发文总结了 2018 年 2 月份 Github 上最火的 5 个数据科学和机器学习项目。

1163
来自专栏企鹅号快讯

2017年度盘点:Github上十大有趣的机器学习项目

目录: 1 AlphaZero-Gomoku 2 OpenPose 3 Face Recognition 4 Magenta 5 YOLOv2 6 MUSE 7...

6008

扫码关注云+社区

领取腾讯云代金券