语音社交App推荐系统实战学习笔记
2023-02-28 10:34:12 0 举报
AI智能生成
语音社交App推荐系统实战整套学习笔记(机器学习+ 推荐系统)
作者其他创作
大纲/内容
机器学习
推荐系统
一、推荐系统的由来
推荐系统的目的
1. 推荐系统的流行是因为要去解决一个问题:
物品越来越多,信息越来越多,而人的精力和时间是有限的,需要一个方式去更有效率地获取信息,链接人与信息。
物品越来越多,信息越来越多,而人的精力和时间是有限的,需要一个方式去更有效率地获取信息,链接人与信息。
2. 推荐系统就是为了解决这一问题而诞生的,在海量的物品和人之间,架起来一条桥梁。它就像一个私人的专属导购,根据你的历史行为、个人信息等等,为每个人diy进行推荐,千人前面,帮助人们更好、更快地选择自己感兴趣的、自己需要的东西。今日头条系的feed流在推荐算法的加持下,短短几年的用户增长速度和使用时长数据令人咂舌,受到了市场的追捧和高估值。一夜之间,几乎所有的app都开始上feed流、上各种推荐,重要性可见一斑。
3. 简而言之,推荐系统主要是为了解决信息过载和长尾商品问题
推荐系统的目标是在信息过载的时代根据用户的历史数据找到用户感兴趣的物品,进而实现个性化推荐。
推荐系统的目标是在信息过载的时代根据用户的历史数据找到用户感兴趣的物品,进而实现个性化推荐。
feed流
1. Feed流,拆开来理解,Feed是喂养的意思,即把用户都当成动物,你想吃什么,就喂给你什么。这些信息的共同点就是给你喂你想看的,而不是将所有的东西全部给你,典型的例子就是微博、知乎的首页,以及靠算法起家的今日头条。
2. 简单来说,feed流就是个性化的给用户推荐他们想看的内容,做到千人千面,每个人看到的内容都不尽相同,主要应用就是兴趣订阅类或针对用户画像差别推荐的产品。
二、推荐常用的算法理论和问题
1. 基于协同过滤(Collaborative Filtering)英 /
kəˈlæbərətɪv ˈfɪltərɪŋ
的推荐算法
kəˈlæbərətɪv ˈfɪltərɪŋ
的推荐算法
1.1 userbasedCF(基于用户的协同过滤)
1.11 核心思想:和你相似的人喜欢的商品你很可能会喜欢(比如男生给女生送礼物会先问问其闺蜜),
简而言之就是物以类聚,人以群分。
简而言之就是物以类聚,人以群分。
1.12 在一般应用中采用K-近邻算法计算两两之间的相似度
1.13 例如:推荐你的好友最近购买过的商品,一度和二度好友购买的最多的品类的商品。
优点:这种推荐系统的优点在于推荐物品之间在内容上可能完全不相关,因此可以发现用户的潜在兴趣,并且针对每
个用户生成其个性化的推荐结果。
个用户生成其个性化的推荐结果。
缺点:缺点在于一般的Web系统中,用户的增长速度都远远大于物品的增长速度,因此其
计算量的增长巨大,系统性能容易成为瓶颈。因此在业界中单纯的使用基于用户的协同过滤系统较少。但是实际生产
中,有很多基于userbasedcf思想的变种。
计算量的增长巨大,系统性能容易成为瓶颈。因此在业界中单纯的使用基于用户的协同过滤系统较少。但是实际生产
中,有很多基于userbasedcf思想的变种。
问题:
数据稀疏性
一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品, 不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。
算法扩展性
最近邻居算法的计算量随着用户和物品数量的增加而增加,不适合数据量大的情况使用。
解决方法:
1. 对用户进行聚类,如每一万聚一类,对一万的用户做相似度
2. 构建一个图数据库,从图数据库做查询(有问题)
1.2 itembasedCF(基于商品的协同过滤)
1.2.1 核心思想:和你人喜欢的商品相似的商品你很可能会喜欢,
简而言之就是你之前购买过的商品给你推荐与其类似的商品
简而言之就是你之前购买过的商品给你推荐与其类似的商品
1.2.2 问题:
1. 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。(冷启动即为没有对应的历史数据的
时候新用户或者新商品无法推荐)
2. 推荐的效果依赖于用户历史偏好数据的多少和准确性。
3. 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能
少部分人的错误偏好会对推荐的准确度有很大的影响等等。(有时候你给朋友买东西,但是买的商品是朋友喜欢的,会造成错误偏好的问题))
4. 对于一些特殊品味的用户不能给予很好的推荐。
5. 由于以历史数据为基础,抓取和建模用户的偏好后,很难利用获取的用户偏好演变,从而导致这个方法不够灵
活。
时候新用户或者新商品无法推荐)
2. 推荐的效果依赖于用户历史偏好数据的多少和准确性。
3. 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能
少部分人的错误偏好会对推荐的准确度有很大的影响等等。(有时候你给朋友买东西,但是买的商品是朋友喜欢的,会造成错误偏好的问题))
4. 对于一些特殊品味的用户不能给予很好的推荐。
5. 由于以历史数据为基础,抓取和建模用户的偏好后,很难利用获取的用户偏好演变,从而导致这个方法不够灵
活。
解决方法:热门兜底的推荐
总结:业界内,推荐系统这两者仍是最有效最常用,最基础的手段,但是有些时候我们需要想办法规避它的一些缺点
1.3 基于模型的协同过滤算法包含:基于矩阵分解和潜在语义的;基于贝叶斯网络的;基于SVM的等等(较老的算法)
2. 基于热度的推荐算法
概述:基于热度的推荐算法比较简单粗暴,主要是对热点商品或者信息的推荐。它主要是根据PV、UV、日均PV或分享率等
数据来按某种热度排序来推荐给用户。类似于热度排行榜这种,这种推荐是“千人一面”的,不能做到个性化推荐,但
是能解决冷启动问题
数据来按某种热度排序来推荐给用户。类似于热度排行榜这种,这种推荐是“千人一面”的,不能做到个性化推荐,但
是能解决冷启动问题
缺点:这种推荐是“千人一面”的,
但是无法解决推荐系统所需要解决的个性化推荐和长尾商品的问题
但是无法解决推荐系统所需要解决的个性化推荐和长尾商品的问题
优点
1. 可以解决冷启动的问题
2. 当用户的偏好不足,行为习惯比较少,符合用户的商品很少,比如我需要提供100个商品,但是符合用户的商品只有20个,这时候需要用基于热度的推荐算法做兜底补全
3. 基于内容的推荐算法
概念:基于内容的推荐是在推荐引擎出现之初应用最为广泛的推荐机制,它的核心思想是根据推荐物品或内容的元数据,发
现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。比如你看了哈利波特I,基于内
容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给
你。
现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。比如你看了哈利波特I,基于内
容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给
你。
优点:
1、易于实现,不需要用户数据因此不存在稀疏性和冷启动问题。2、基于物品本身特征推荐,因此不存在过度推荐热门的问题。 然而,缺点在于:a、抽取的特征既要保证准确性又
要具有一定的实际意义,否则很难保证推荐结果的相关性。豆瓣网采用人工维护tag的策略,依靠用户去维护内容的
tag的准确性。b、推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐
的新闻和你浏览过的,内容一致。
缺点:
基于物品本身特征推荐,因此不存在过度推荐热门的问题。a、抽取的特征既要保证准确性又
要具有一定的实际意义,否则很难保证推荐结果的相关性。豆瓣网采用人工维护tag的策略,依靠用户去维护内容的
tag的准确性。b、推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐
的新闻和你浏览过的,内容一致。
要具有一定的实际意义,否则很难保证推荐结果的相关性。豆瓣网采用人工维护tag的策略,依靠用户去维护内容的
tag的准确性。b、推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐
的新闻和你浏览过的,内容一致。
4. 基于关联规则的推荐算法
概述:基于关联规则的推荐更常见于电子商务系统中,并且也被证明行之有效。其实际的意义为购买了一些物品的用户更倾
向于购买另一些物品。基于关联规则的推荐系统的首要目标是挖掘出关联规则,也就是那些同时被很多用户购买的物
品集合,这些集合内的物品可以相互进行推荐。目前关联规则挖掘算法主要从Apriori和FP-Growth两个算法发展演变
而来。 基于关联规则的推荐系统一般转化率较高,因为当用户已经购买了频繁集合中的若干项目后,购买该频繁集
合中其他项目的可能性更高。
向于购买另一些物品。基于关联规则的推荐系统的首要目标是挖掘出关联规则,也就是那些同时被很多用户购买的物
品集合,这些集合内的物品可以相互进行推荐。目前关联规则挖掘算法主要从Apriori和FP-Growth两个算法发展演变
而来。 基于关联规则的推荐系统一般转化率较高,因为当用户已经购买了频繁集合中的若干项目后,购买该频繁集
合中其他项目的可能性更高。
相关算法:Apriori、FP-Growth
关联推荐的缺点:
1.计算量较大,但是可以离线计算,因此影响不大。
2.由于采用用户数据,不可避免的存在冷启动和稀疏性问题。
3.存在热门项目容易被过度推荐的问题。(制定策略打压热门的项目)
2.由于采用用户数据,不可避免的存在冷启动和稀疏性问题。
3.存在热门项目容易被过度推荐的问题。(制定策略打压热门的项目)
5. 基于模型的推荐算法
模型:基于模型的方法有很多,主要是使用常用的机器学习算法对目标用户建立推荐算法模型,然后对用户的爱好进行预测
推荐以及对推荐的结果打分排序等。 常用的模型包括LDA,聚类,SVD,Matrix Factorization,LR,GBDT等,这种
方法训练过程比较长,但是训练完成后,推荐过程比较快且准确。因此它比较适用于实时性比较高的业务如新闻、广
告等。当然,而若是需要这种算法达到更好的效果,则需要人工干预反复的进行属性的组合和筛选,也就是我们常说
的 特征工程。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。深度学习也会用
deep&wide,deepFM等
推荐以及对推荐的结果打分排序等。 常用的模型包括LDA,聚类,SVD,Matrix Factorization,LR,GBDT等,这种
方法训练过程比较长,但是训练完成后,推荐过程比较快且准确。因此它比较适用于实时性比较高的业务如新闻、广
告等。当然,而若是需要这种算法达到更好的效果,则需要人工干预反复的进行属性的组合和筛选,也就是我们常说
的 特征工程。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。深度学习也会用
deep&wide,deepFM等
6. 混合推荐算法
概述:真正的现实应用中,其实基本上很少会使用单一的推荐算法去实现推荐任务。因此,大型成熟网站的推荐系统都是基
于各种推荐算法的优缺点以及适合场景分析的情况下的组合使用的“混合算法”。当然,混合策略也会是十分丰富的,
例如不同策略的算法加权、不同场景和阶段使用不同的算法等等。具体的怎么混合需要结合实际的应用场景进行分析
与应用。(类似于组合拳)
于各种推荐算法的优缺点以及适合场景分析的情况下的组合使用的“混合算法”。当然,混合策略也会是十分丰富的,
例如不同策略的算法加权、不同场景和阶段使用不同的算法等等。具体的怎么混合需要结合实际的应用场景进行分析
与应用。(类似于组合拳)
三、推荐服务架构
1. 一般推荐系统的架构:
概述:
推荐系统架构基本上分为:离线,近线和在线(即lambda架构,区别于kappa架构),或者简单一点直接分为离线
和在线,其中在线部分负责为业务后端提供推荐列表,近线部分一般负责数据存储或缓存,离线部分负责离线的数据
处理和模型训练。如下图为亚马逊的推荐系统架构:
和在线,其中在线部分负责为业务后端提供推荐列表,近线部分一般负责数据存储或缓存,离线部分负责离线的数据
处理和模型训练。如下图为亚马逊的推荐系统架构:
亚马逊的推荐系统架构:
一般推荐系统架构(Netflix公司架构变化而来)
推荐系统架构广义版
lambda架构
kappa架构
2. 推荐服务架构拆解
2.1 召回
2.2 过滤
2.3 打分
2.4 排序
四、本推荐项目的场景介绍
五、推荐系统的实现
六、推荐服务的框架和ab测试
七、推荐系统模型进阶
八、推荐结果评估和分桶调整
九、推荐日志处理和日常问题排查
十、算法优化方向
0 条评论
下一页