2020 推荐系统入门 (1)

recommendation_sys.jpeg

推荐系统

推荐系统概观

什么是推荐系统

那么什么是推荐系统,推荐系统做了那些工作呢?其实推荐系统就是根据用户的历史信息和行为,向用户推荐他感兴趣的内容或商品。

推荐系统的重要性

这个应该不用说了,现在很多企业背后成功都少不了推荐系统,例如今日头条、淘宝、京东以及国外的 Netflix 和亚马逊。

推荐系统解决哪些问题

  • 信息过载,当前信息量过多,每次要在京东上买东西,都是看了又看,比了有比,想了又想,话费很长时间才能买到自己想要商品。我们如何提用户进行筛选过滤帮助用户快速找到自己想要东西呢。
  • 挖掘长尾,根据销量的推荐系统,就只会考虑商品销量和热度进行推荐,而这些商品可能只占有总体商品一小部分,其后大部分商品得不到推荐,而这些排在后面商品并不是没有销量,而且他们销量面积可能还要大于热门商品销售面积,所以我们需要推荐系统将他们也进行推荐给用户。
  • 提升用户体验,这个我们就不说了,想一想我们总是沉迷于抖音而忘记了时间就知道了。

推荐系统分类

  • 实时推荐系统和离线推荐系统
  • 基于统计推荐
  • 个性化推荐
  • 根据数据源进行划分基于人口统计学的推荐、基于内容推荐和基于协同过滤
    • 基于人口统计学的推荐,我们拿到用户信息然后就可以给用户打标签,然后根据用户标签进行用户聚类,也就是将相似用户划分为一类,例如 A 和 B 用户同属于一组,我们就可以把 B 喜欢商品推荐给 A。同一个用户根据我们划分维度可能属于多个组,分组可以用机器学出来。用户信息标签化的过程一般就是我们平时说的用户画像(User Profiling),这里问题就是用户信息难收集,因为用户收集过多可能影响用户体验,所以我们能做的就是通过用户行为来推荐用户信息。我们可以将用户行为映射出用户信息,从而描绘出一个完整用户。现在所有几乎所有 app 都在尝试对用户进行分析,提供用户信息。
    • 基于内容的推荐算法,是基于商品相似度进行推荐。这个应该很好理解。也就是我们说的 CB(Content-based Recommendations)。其实拿到商品数据,还需要看我们怎么搞这些数据,这个环节是重要,我们如何对商品特性进行加权,根据用户行为(评价)来调整商品特征,其实每一个商品对于每一类用户或者每一个用户其特征维度和权重应该是不同的。这是我个人一点见解。我们又可以用户信息特征和物品的特征进行匹配,就可以给用户进行推荐了。如果请专业的人员对物品进行打标签(PGC)。对于商品特征的提取,我们可以采用 PGC(专家标签)、UGC(用户自定义标签)或者是 LFM(降维分析数据,提取语义标签) 而对于文本信息提取,可以使用自然语言处理的分词、语义处理和情感分析。

推荐系统中的算法

  • 相似度计算,在推荐系统往往用到余弦相似度作为
    • 欧式距离 d(x,y) = \sqrt{\sum_{i}(x_i- y_i)^2}
    • 余弦相似度 \cos \theta = \frac{a b}{||a|| \times ||b||} = \frac{\sum_i x_i,y_i}{\sqrt{\sum_i x_i^2}\times \sqrt{\sum_i y_i^2}}
  • 在深度学习,我们通过词嵌入(embedding)来表示不同用户或商品相似度,这个也是我们随后重点讨论内容.
  • SVD

特征工程

当我们打算买一套房子,我们会考虑面积、价格、朝向以及周边设施等等因素,这些因素就是商品的特征。所谓特征工程就是对数据进行一些处理、数据清洗、异常值处理以及数据归一化等等的工作。多数人更看重模型设计和训练,其实只有好的数据才能训练结果保证,因为 ImageNet 出现才有今天深度学习的发展,所以数据处理这个工作非常重要,不可以忽视。好了我们在特征工程主要做两件事特征处理特征选择。特征选择是有一定技巧的。

特征处理

  • 数值型: 主要进行归一化和离散化,例如房屋的价格和房屋的面积幅度不同,也就是他们作为房屋特征,取值范围却相差很大,价格在几十万,而面积大概取之集中在 100 左右。因为其取值范围导致他们对最后评估有影响权重不同,我们需要通过数据处理来消除。这就是归一化的作用。x_new = \frac{x_old}{x_max - x_min},离散化h_{\theta} = g(\theta^Tx)=\frac{1}{1 + e^{-\theta^Tx}} 所谓离散化,就是我们需要将连续值划分为几个范围,例如房屋面积划分为小户型面积 30 - 60,可以通过one-hot编码来表示划分取值范围。在京东中通过价格划分价格。离散化可以进行等步长划分或者等频划分。等频不适合经常变化值的特征。例如价格在不断变换
  • 类别型: 本身就是离散取值,尽量区分开,没有大小关系,我们通常使用 one-hot 编码
颜色 R G B
Red 1 0 0
Green 0 1 0
Blue 0 0 1
  • 时间型: 可以是连续值也可以是离散值,离散值,可能为一天哪几个时间段登录,一周中的星期几。
  • 统计型: 加减平均、分位线、次序性和比例类

反馈数据

我们需要反馈数据不断评估和优化我们模型,
| 用户行为 | 类型 | 特征 |作用|
|---|---|---|---|---|---|
| 评分 | 显示 | 整数量化的偏好 | 通过用户对商品的评分 |
| 投票 | 显示 | 布尔量化的偏好 | 通过用户投票 |
| 转发 | 显示 | 布尔量化的偏好 | 通过用户投票 |
| 保存/收藏 | 显示 | 布尔量化的偏好 | 通过用户投票 |
| 打标签 | 显示 | 一些单词,需要对单词进行分析,得到偏好 | 通过用户投票 |
| 评论 | 显示 | 一段文字,需要进行文本分析,得到偏好 | 通过用户投票 |
| 点击浏览 | 隐示 | 布尔量化的偏好 | 通过用户投票 |
| 页面停留时间 | 隐示 | 布尔量化的偏好 | 用户页面停留时间一定程度反映了用户偏好,但是可能会有噪音 |
| 购买 | 隐示 | 布尔量化的偏好,取值是 0 或 1 | 通过用户投票 |

UGC 也是用户反馈一种表现。大家都知道用户行为多么重要,无论喜欢还是不喜欢只要用户给出自己评价和标签就是说明用户对该商品的重视程度,当然我们需要排除一些噪音或者认为干涉出现的效果。我们可以用(u,i,b)表示用户 u 给商品 i 打了标签 b

一个简单的算法

  • 统计每个用户最常用的标签
  • 对于每个标签,统计被打过的这个标签次数最多的商品
  • 对于每个用户,首先找到他常用的标签,然后找到具有这些标签的最热门的物品,推荐给他
  • 所以用户 u 对物品 i 的兴趣公式为
    p(u,i) = \sum_b n_{u,b}n_{b,i}
  • 其中n_{u,b}是用户 u 打过标签 b 的次数 n_{b,i} 是物品 i 被打过标签 b 的次数

UGC 简单推荐的问题

简单算法中直接将用户打出标签的次数和物品得到的标签次数相乘,可以简单地表现出用户对物品对某个特征的兴趣。
这种方法倾向于给热门标签、热门物品比较大的权重,如果一个热门物品时对应热门标签,新颖就会降低。在文本分析上统计词频时,根据词出现频率来统计关键词。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352