您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

三步在阿里云上搭建一套个性化推荐系统?专家带你

时间:2020-06-24 17:59:14  来源:  作者:

作者:汉朝,阿里云数据库算法专家

背景信息

互联网时代个性化推荐已经渗透到人们生活的方方面面,例如常见的“猜你喜欢”、“相关商品”等。互联网能够对用户投其所好,向用户推荐他们最感兴趣的内容,实时精准地把握用户兴趣。目前很多成功的手机App都引入了个性化推荐算法,例如,新闻类的有今日头条新闻客户端、网易新闻客户端、阿里UC新闻客户端等;电商类的有拼多多淘宝、天猫等。分析型数据库PostgreSQL版推出的向量分析「链接」可以帮助您实现上述个性化推荐系统。

个性化推荐系统概述

以个性化新闻推荐系统为例,一篇新闻包含新闻标题、正文等内容,可以先通过NLP(Neuro-Linguistic Programming,自然语言处理)算法,从新闻标题和新闻正文中提取关键词。然后,利用分析型数据库PostgreSQL版向量内置的文本转换为向量函数,将从新闻标题和新闻正文中提取出的关键词转换为新闻向量导入分析型数据库PostgreSQL版向量数据库中,用于用户新闻推荐,具体实现流程如图1所示。

三步在阿里云上搭建一套个性化推荐系统?专家带你

图1.推荐算法整体框架

整个新闻推荐系统由以下步骤实现:

  1. 构建分析型数据库PostgreSQL版向量库,得到用户特征向量。通过分析用户历史浏览数据,构建相应的用户画像,建立用户偏好模型,得到用户特征向量。新闻推荐系统可以从用户的浏览日志中得到用户历史浏览新闻详情,再从每条历史浏览新闻中提取关键词,建立用户画像。例如,某用户浏览了多条NBA(National Basketball Association,美国职业篮球联赛)季后赛新闻,这些新闻中包含了NBA、篮球、球星、体育等关键词,通过这些关键词可以得出该用户是一个NBA球迷。通过分析型数据库PostgreSQL版向量将这些文本关键词转换为向量并导入到分析型数据库PostgreSQL版向量库中,得到用户特征向量。
  2. 根据分析型数据库PostgreSQL版向量数据库和逻辑回归预测模型,将用户感兴趣的新闻推荐给用户。通过分析型数据库PostgreSQL版向量数据库,可以从互联网检索出前500条用户没有浏览过的新闻,但是这500条新闻却是该用户最感兴趣的新闻。然后,从这500条新闻中提取每条新闻的创建时间和点击率,根据逻辑回归预测模型(该模型来自于用户以往的浏览的历史记录中),将用户感兴趣的新闻推荐给用户。

分析型数据库PostgreSQL版内置的文本转换为向量函数采用BERT(Bidirectional Encoder Representations from Transformers)模型,同时支持中文和英文两种语言。该模型基于大量的语料进行训练,其中包含了语义信息,而且其查询精度比简单的TF-IDF(term frequency–inverse document frequency)算法高。

个性化推荐系统中数据库表结构设计

图2是个性化新闻推荐系统中分析型数据库PostgreSQL版数据库表结构设计,系统包含了三张表(News, Person,Browses_History),分别存储新闻信息、用户基本信息、用户浏览记录。

三步在阿里云上搭建一套个性化推荐系统?专家带你

图2. 个性化推荐系统分析型数据库PostgreSQL版表结构

我们对着三张表进行分别介绍:

• News表存储新闻信息,包含新闻id(news_id)、新闻创建时间(create_time)、新闻名字(title)、新闻内容(content)、总的用户点击数(click_times)、两个小时内的用户点击次数(two_hour_click_times)。根据新闻的名称和内容得到新闻的关键词keywords,然后将新闻的关键词转化成向量(news_vector)。向news表中插入数据时,系统自动根据关键词转换为向量,将向量和其他新闻信息一起插入news表。

CREATE TABLE news (
  news_id bigint,
  create_time timestamp,
  title varchar(100),
  content varchar(200),
  keywords varchar(50),  
  click_times bigint,
  two_hour_click_times bigint,
  news_vector real[],
  primary key (news_id)
) distributed by (news_id);

• Browses_History表记录用户浏览的新闻的情况,包括新闻id(news_id)、用户id(person_id)、用户浏览新闻的时间(browse_time)。

CREATE TABLE browses_history (
  browse_id bigint,
  news_id bigint,
  person_id bigint,
  browse_time timestamp,
  primary key (browse_id)
) distributed by (browse_id);

• Person表记录用户信息,包括用户的id(person_id)、用户的年龄(age)、用户的星级(star)。

CREATE TABLE person(
  person_id bigint,
  age bigint,
  star float,
  primary key (person_id)
) distributed by (person_id);

三步实现一个个性化推荐系统:

1.从新闻中抽取新闻特征向量

分析型数据库PostgreSQL版通过内置的文本转换为向量函数,抽取新闻特征向量,然后将新闻特征向量存入新闻表news中。例如,执行以下SELECT将返回文本“ADB For PG is very good!”对应的特征向量。

select feature_extractor('text', 'ADB For PG is very good!');

假设新闻如下图所示,通过以下两个步骤将新闻信息存入新闻表news表中。

三步在阿里云上搭建一套个性化推荐系统?专家带你

 

(1)提取新闻关键词。由于分析型数据库PostgreSQL版暂时不支持关键词提取函数,您可以调用jieba结巴中文NLP系统)中的关键词抽取函数(
jieba.analyse.extract_tags(title + content, 3))提取关键词。

(2)执行INSERT将新闻信息(包含关键词和新闻特征向量)存入新闻表news表中。

insert into news(news_id, create_time, title, content, 
                 keywords, click_times,two_hour_click_times) 
values(1, now(),'韩国军方:朝鲜在平安北道一带向东发射不明飞行物','据韩国联合参谋本部消息,当地时间今天下午16时30分左右,朝鲜在其平安北道一带向东发射不明飞行物。', '韩国 朝鲜 不明飞行物', 123, 3);

2.提取用户特征向量

(1)提取用户浏览关键词。根据用户的新闻浏览日志,我们很容易得到用户的浏览关键词。例如,执行以下SELECT得到用户 person_id为9527的浏览关键词。

select keywords    
from Person p, Browses_History bh, News n 
where p.person_id = bh.person_id and bh.news_id = n.news_id and p.person_id = 9527;

(2)将用户浏览关键词转换为用户特征向量。将用户浏览关键词全部提取出来之后,就可以得到用户总的浏览关键词 。例如,用户person_id为9527浏览了关键词为“NBA 体育”、“总决赛”、“热火”、“火箭”的新闻。然后通过文本转换为向量函数,将用户person_id为9527浏览的关键词转换成向量。

select feature_extractor('text', 'NBA 体育 总决赛 热火 火箭'));

3.根据用户特征向量获取新闻推荐结果

通过用户特征向量,到新闻表news中查询相关的新闻信息。例如,执行以下SELECT将返回和用户相关的前500条新闻,同时系统也会过滤掉用户已经阅读过的文章。获取新闻推荐结果之后,应用就可以将用户感兴趣的新闻推荐给用户了。

select news_id, title, content, (extract(epoch from (now()-create_time)) * w1 + click_times/extract(epoch from (now()-create_time)) * w2 + two_hour_click_times/extract(epoch from (now()-create_time)) * w3 + ann_distance * w4) as rank_score
from (select *, l2_distance(news_vector, feature_extractor('textf', 'NBA 体育 总决赛 热火 火箭')) as ann_distance from news order by ann_distance desc limit 500) S 
order by rank_score desc;

参数说明:

• ann_distance:用户与新闻的相关度。

• create_time:新闻的创建时间。

• click_times/(now()-create_time):新闻热度点击率。

• two_hour_click_times/(now()-create_time):新闻近期热度点击率。

• w1、w2、w3、w4:逻辑回归模型学习中各个属性的权重。



Tags:推荐系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
2021 年,字节跳动旗下产品总 MAU 已超过 19 亿。在以抖音、今日头条、西瓜视频等为代表的产品业务背景下,强大的推荐系统显得尤为重要。Flink 提供了非常强大的 SQL 模块和有状态计算模块。目前在字节推荐场景,实时简单...【详细内容】
2021-10-25  Tags: 推荐系统  点击:(29)  评论:(0)  加入收藏
今天,要和大家推荐一个Go 编写的开源推荐系统——Gorse。 Gorse 旨在成为一个通用的开源推荐系统,可以快速引入各种在线服务。通过将商品、用户和交互数据导入 Gors...【详细内容】
2021-08-02  Tags: 推荐系统  点击:(104)  评论:(0)  加入收藏
Hello,大家好,欢迎来到“自由技艺”的知识小馆,今天我们来聊一聊推荐算法。在广告、电商、信息流分发等业务场景中,推荐算法发挥着至关重要的作用,好的推荐算法能够把用户牢牢抓...【详细内容】
2021-06-08  Tags: 推荐系统  点击:(135)  评论:(0)  加入收藏
推荐系统自诞生之日起就是为解决海量物料如何高效分发给海量用户,一套高效的算法流程就是推荐系统的核心。如今火热的各类机器学习、深度学习、强化学习等都可以在推荐系统中...【详细内容】
2021-04-27  Tags: 推荐系统  点击:(251)  评论:(0)  加入收藏
推荐系统是一种信息过滤技术,通过从用户行为中挖掘用户兴趣偏好,为用户提供个性化的信息,减少用户的找寻时间,降低用户的决策成本,让用户更加被动地消费信息。推荐系统是随着互...【详细内容】
2021-04-09  Tags: 推荐系统  点击:(319)  评论:(0)  加入收藏
有幸参与了几个业务推荐系统搭建的全流程,本文将从实际经验出发,为大家解构如何从从零搭建推荐系统,希望跟大家能够相互交流,如有错误之处烦请指正。...【详细内容】
2020-09-30  Tags: 推荐系统  点击:(67)  评论:(0)  加入收藏
电影推荐系统 demo 界面推荐系统[1](Recommender System,RS)能够根据用户的偏好主动为用户推荐商品或项目。它通过用户的历史数据来发掘用户兴趣偏好,从而将用户可能感兴趣的物...【详细内容】
2020-09-18  Tags: 推荐系统  点击:(127)  评论:(0)  加入收藏
推荐系统介绍自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。1998年,林登和他的同事申请了“item-to-item”协同...【详细内容】
2020-09-15  Tags: 推荐系统  点击:(177)  评论:(0)  加入收藏
在数字化革命和AI赋能的大背景下,推荐场景逻辑越来越复杂,推荐细分场景越来越丰富,对业务迭代和效果优化的效率有了更高的要求。推荐系统业务和技术在传统架构支撑下自然堆砌,变...【详细内容】
2020-09-07  Tags: 推荐系统  点击:(86)  评论:(0)  加入收藏
用户画像往往是大型网站的重要模块,基于用户画像不仅可以实现个性化推荐,还可以实现用户分群、精准推送、精准营销以及用户行为预测、商业化转化分析等,为商业决策提供数据支持...【详细内容】
2020-09-02  Tags: 推荐系统  点击:(121)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(7)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(39)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(40)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~· 什么是 ICP 备案呢?· ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(46)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(125)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条