做推荐系统最常见的就是推荐电影,音乐,商品,股票等等,使用一些协同过滤的方法,若要搞点创新,可以去接触更细分的行业,比如,股票里的各种因子,音乐里的各种流派,商品的价格,品牌等。
一是推荐算法本身的进化,二是推荐系统如何工程化,如何高效实现闭环。前者是热点,后者是痛点
从网络上抓取数据、然后分类显示并根本科毕业设计想做NLP方面的,求推荐?
随便举几个例子吧,才疏学浅,考虑可能不周。
自动问答系统,这个也分好几类,有基于知识库的,也有基于模式匹配的。聊天机器人就属于自动问答系统,各种小冰小度小黄鸡小什么的=。=
小型的推荐系统,可以推荐电影啊、音乐啊、图书啊,旅游路线啊之类的,感觉要是做推荐系统的话能推荐的东西好多啊。。。
小型的搜索引擎,结合多样化搜索,基于实体的搜索等
情感分析,比如根据文本预测股市行情啊,网络舆情分析啊,用户评价分析啊之类的
短文本挖掘,基于微博、Twitter等可以做一些挖掘和分析
知识图谱构建,可以构建某一领域的知识库,然后进行多样的可视化展示
机器翻译,在线翻译什么的
还有一些人做很多跟考试相关的,让机器批改作文啊,做阅读理解啊什么的。。。。
据兴趣爱好推荐等。
一、推荐系统之常见的业务场景
1、场景一:Feed 流
这类是以信息流(Feed 流)的形式进行推荐。今日头条是最典型的代表,内容足够多也足够优质,推荐很好地提升了用户的使用时长。它的特点是,Feed 流会占据 APP 的主要空间,当用户浏览到最底端的时候,下面会持续出现 Feed,当用户进来后可以持续消费内容
2、场景二:猜你喜欢
这是“猜你喜欢”场景,它和 Feed 流推荐最核心的区别在于:“猜你喜欢”一般是占用页面的一部分,希望实现用户行为的延伸操作。
3、场景三:相关推荐
以上是“相关推荐”。根据计算内容或商品的相似度,进行一些相似内容或商品的推荐,以满足用户延伸阅读或者延伸购买或复购的需求。比如用户浏览一个手机后,下面推荐了“相关手机”,阅读一篇文章后,下面推荐了“相关文章”,看了一部电影后,下面有“相关电影”,推荐内容和我们关注的内容相关。
4、场景四:热门推荐
热门推荐,比如微博的话题榜、知乎热榜等,都是通过点击、收藏、评论等用户行为计算出热门及排名,提供给用户的热门内容,满足从众心理。
无非就是同一分类,商品衍生等等
比如盘子对应餐具分类,推荐碗,筷子等等
又比如啤酒对应酒杯,对应冰块等等
可以在商品上追加标签,然后按照标签来分类和衍生
整个构造推荐系统的过程其实就是在减少数据量,获得最精准的数据的过程
召回的过程是要实现巨大的数据降低。
简单的推荐应该 协同过滤 就够了
协同过滤算法,搜索学习下。也许一个小时基本你就能实现符合你要求的算法了。
简单做的话,就是打标签。即是给资源(用户能购买或浏览的)打上相对应的标签,搜集其浏览记录和购买记录给用户本身打标签,计算用户的标签和交互资源标签的相符合程度给用户做推荐。后面可以扩展,譬如说同样行为模式的A和B用户推荐其两者的差集推断其潜在兴趣,还有用户自身行业年龄之类属性之类....资料的话,入门可以看《推荐系统实战》
推荐系统是多个领域的交叉研究方向,所以会涉及机器学习以及数据挖掘方面的技巧(推荐系统==》数据挖掘/机器学习==》人工智能)。在这整理了小邬老师上课所介绍的关于主流研究方向的结构图。
推荐系统的研究主要集中在两个方面:
信息获取方式和推荐技术
信息获取方式:利用用户部分的可用信息进行推荐
使用人口统计资料 隐形评分资料 用户购买记录信息
推荐技术的研究:确定推荐的算法
关联规则:发现商品之间的相关性而产生推荐,但是推荐精度稍差
聚类技术:将有相似兴趣的用户分配到相同的簇中,在簇中其它用户对商品的评分就是系统对商品的评分,用于处理用户数据较快的场合,但是推荐精度不高
协同过滤技术:通过用户最近邻居产生推荐,推荐精度较高
关键:如何找到相似的用户
但是
于是解决方法:
通过转换成物品对应用户列表,可以很快得到哪些用户会喜欢同一个物品,然后就可以很方便的得到用户相似度矩阵的计算结果。这样就可以很快得到有可能会相似的用户,就可以大大降低计算量。
分别得到每个用户的物品相似度矩阵,然后再将所有用户的物品相似度矩阵相加,就得到总的物品相似度矩阵。
一般常用的是余弦相似度算法,大部分情况都是使用余弦相似度的算法
有一篇论文:
推荐了三本书和三篇论文
https://www.bilibili.com/video/av78199665/?p=3 头条推荐系统项目(2019年8天完整版)
在线推荐:基于会产生变化的所有的数据库的实时推荐
离线推荐SVD和离线推荐ALS都是基于对用户自己的相关信息进行推荐
热门推荐:也就是排行榜,是基于统计得到的推荐结果
相似推荐SVD和相似推荐ALS:对相关的物品进行推荐
需要考虑的东西:
数据来源(原始数据):比如考虑像下面这样 当然也可以考虑通过爬虫来爬取一些数据来存放
先要将收集到的数据存放到mysql中设计的对应表里,然后计算基于统计后的数据情况,
第三个GUI,就是界面设计
框架中的第四个表示推荐算法,包括在线推荐和离线推荐,其中离线推荐包括ALS和SVD算法
四种推荐具体实现的大致图解
下面是在线推荐算法:
用来估算预测的模型和真实模型之间的拟合程度,损失函数越小,一般说明拟合程度越高
要通过建模,利用损失函数对模型进行优化
利用梯度下降的方法对损失函数做出优化,然后就可以得出观众对电影的喜好程度的矩阵
要用代码写出对应的公式
随机先取一个值,然后得到一个误差比较大的x的值,然后在根据相应的公式,不断改进得到x,以便最终得到误差最小的x 本质上就是在不停的建模调参数
进行优化的时候一般都是使用梯度下降的方法
也就是没有数据的新用户没办法给他进行个性化推荐,应该怎么解决
基于商品相似性的推荐也就是协同过滤 后面的代码就是需要用到的工具包
首先,如何让对数据进行处理? 在已知到用户历史数据,也就是已知用户相关的信息的情况下对用户进行推荐
对累计数据分别进行统计:
反正所有事情之前必须先把数据整理好,然后再进行相应处理
下面是按照相应指标进行数据处理:
然后就进入核心中:系统应该怎么样去做:
也就是对每一个用户不用对他们进行个性化的推荐,而直接可以按照排行榜简单粗暴的推荐
直接按照每首歌曲的点击量或者播放量作为分数衡量标准,然后按照分数进行排序,得出排行榜,然后进行推荐
然后是最主要的基于歌曲相似度的推荐:
离线一般说召回,要从很多推荐的物品里进行召回。大的推荐客户每天会新增物品可能几十万,在推荐候选集中有几千万时并不是所有的每次都要重新计算一遍。离线模块的处理就是先做一个推荐结果的召回,这种召回一般叫重量级的算法,比如说做协同过滤、决策分解、深度学习等,这些会依赖于大数据的集群。
用户模型构建:也就是用户画像,在实际场景中挖掘用户的兴趣偏好。用户画像有的多种信息:基于注册信息包括年龄、性别、地狱等,还有另一种数据:用户偏好,同时还有各种分类的场景,比如电商会判断一个用户他是否对价格敏感,是否喜欢小众的东西。
单一推荐算法:基于内容的 基于热门的 基于协同过滤 基于矩阵分解 基于深度学习的 单一算法会得到一些推荐候选集
拿到推荐候选集以后要做一个融合,将最后的结果返回给用户。我们会将单一推荐候选集输入到融合模型里,让模型预测,按照用户偏好的高低排序,然后取得topn返回给用户。
推荐的整体流程有以上这几点,首先是各种单一算法召回,召回完进行融合,单一算法里又分了不同维度,比如协同过滤、矩阵分解,包括用户画像等。
根据浏览、收藏、销售做的商品统计在常规推荐时会经常用到
个性化智能推荐系统设计建设由三步构成:
- 建立平台用户行为的召回模型
维度基于用户历史行为数据召回、用户偏好召回、用户地域召回来实现
用户历史行为数据召回基于用户浏览、点击、购买、评论、分享、收藏、关注等触点
分类推荐在线相关、在线相似、离线相关、离线相似行为
基于用户偏好召回是基于用户归类画像和平台多屏互通融合
基于用户地域召回是基于用户地域的网格化来实现地域行为推荐算法
- 召回模型匹配算法
用算法来得出和用户召回行为的匹配商品和广告信息
- 平台使用排序算法实现自动匹配个性化推荐
平台针对匹配模型推荐结果的排序算法,基于用户交互日志通过模型训练特征权重
个性化推荐的难点:
平台后端需要建立复杂的用户行为数据采集、数据存储、数据建模和用户画像过程
要想建立全面的个性化推荐,数据采集的涉及领域需要足够广、足够深。
用户画像:
是通过用户兴趣、行为、自身属性建立的一个模型。
通过对用户行为的分析,结合业务的需求,将用户分为不同的群体,然后在群体中抽象出一些典型的特征,用结构化的信息记录下来,概括出用户的特征。
用户画像有自身的特性和局限性,例如无法百分之百地描述一个人,且具有时效性,因此,需要根据用户画像的基础数据持续更新和修正,同时要善于从已知数据中具象化出新的标签使用户画像越来越鲜活立体。
数据采集:
首先要在网站和app中将进行埋点,在页面埋入“隐形“探针,
采集用户行为数据和业务系统操作日志、
从数据库中提取业务数据 用户行为数据采集基本上采用SDK方式
ETL服务器负责将日志文件和结构化数据导入数据存储分析集群,并将分析结果导出到数据库
数据解析服务器负责连接数据分析服务器,完成数据分析各项计算
存储服务和分析服务提供数据分布式存储和计算的基础框架
要使系统采集的数据指标能够支持平台前端的个性化行为分析,必须围绕用户为主线来进行画像设计,要将统计出来的不同规模数据,细分定位到每个用户,使每个数据有一个用户归属。每个统计数据都增加一个标签,点击标签可以展示对应每个用户的行为数据,同时可以链接到其它统计数据页面。
数据存储:
对采集的原始数据首先要进行ETL加工处理,首先要处理掉存储的无效重复数据。同时对于用户行为没有影响或重复数据,对非结构化数据和半结构化数据进行结构化处理,并对数据进行补缺、替换、数据合并、数据拆分、数据加载和异常处理。
数据建模:
用户模型的表示方法有4类:协同过滤模型、行为规则模型、基于概念的用户兴趣模型和向量空间模型
向量空间模型(VSM)是最为常用的用户模型表示方法之一,通常使用一组向量值描述用户特征,向量的每一个维度代表用户感兴趣的一个主题。
个性化推荐系统一般有三大环节:
预处理->召回->排序 当然,也可以认为是两层(召回->排序)
预处理:对各种数据源的数据进行特征提取和特征构建
例如:内容特征提取、用户行为画像构建
召回:
把预处理产生的特征作为输入参数,训练出推荐模型,然后使用推荐模型得出候选集合的过程。常用的召回方式有:基于内容推荐、基于协同过滤推荐等。
排序:
将候选集合根据一定的规则,例:点击预估、匹配关联度、人为权重等进行调整,从而影响最后的推荐顺序
一个简单的推荐猜你喜欢的实现过程:
首先算法离线训练好与该商品的相似商品集,当在线用户请求过来的时候,有一个用户实时点击过的相似产品召回策略,该策略先获取用户实时点击过的商品列表,再取每个商品的相似商品,从而得到一个候选集。再通过在线排序进行点击率预估,取其中的top商品从而得到一个推荐结果集。实际的场景中,将在离线训练、召回策略、排序策略等环节不断优化。