基于推荐算法的去中心化社交平台设计与实现.docx

上传人:b****5 文档编号:8411642 上传时间:2023-01-31 格式:DOCX 页数:76 大小:1.65MB
下载 相关 举报
基于推荐算法的去中心化社交平台设计与实现.docx_第1页
第1页 / 共76页
基于推荐算法的去中心化社交平台设计与实现.docx_第2页
第2页 / 共76页
基于推荐算法的去中心化社交平台设计与实现.docx_第3页
第3页 / 共76页
基于推荐算法的去中心化社交平台设计与实现.docx_第4页
第4页 / 共76页
基于推荐算法的去中心化社交平台设计与实现.docx_第5页
第5页 / 共76页
点击查看更多>>
下载资源
资源描述

基于推荐算法的去中心化社交平台设计与实现.docx

《基于推荐算法的去中心化社交平台设计与实现.docx》由会员分享,可在线阅读,更多相关《基于推荐算法的去中心化社交平台设计与实现.docx(76页珍藏版)》请在冰豆网上搜索。

基于推荐算法的去中心化社交平台设计与实现.docx

基于推荐算法的去中心化社交平台设计与实现

 

 

基于推荐算法的去中心化

社交平台设计与实现

 

学院:

专业:

姓名:

指导老师:

 

中国·珠海

二○二○年五月

 

诚信承诺书

本人郑重承诺:

本人承诺呈交的毕业设计《基于推荐算法的去中心化社交平台设计与实现》是在指导教师胡敬朋的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。

 

本人签名:

日期:

年月日

 

基于推荐算法的去中心化社交平台设计与实现

摘要

近年来,随着信息技术的高速发展,衍生出了无数形形色色的互联网产品,其中的各种社交网络平台更是成为了人们日常生活中不可分割的一部分。

大部分竞争力不强的社交平台在当今激烈的市场竞争下,逐渐退出了历史舞台。

然而,很多活下来的能成为独角兽级别的传统社交平台在掌握了大量用户之后由于商业模式的需要,通过融入越来越多的广告甚至是引入明星等方式来吸收流量。

这种模式往往会忽略掉许多用户的个人偏好和兴趣等。

长此以往,有可能会造成用户的平台粘性下降。

不过,通过引入推荐算法,可以让社交平台中的用户筛选出他们感兴趣的内容,进而提高他们在社交平台的粘度。

本设计是将协同过滤推荐算法应用到全新的社交平台中,改变以流量为王的大V中心化社交生态模式。

本设计更加偏向于注重用户的个人喜好,去除部分中心化的效果,从而提升用户的粘度和好感度,以打造一个个性化社交平台。

本设计结合Node.js+Express+Vue.js和JavaScript语言,利用VsCode开发平台和云端数据库MongoDBAtlas构建开发设计实现了基于推荐算法的去中心化社交平台。

关键词:

推荐算法;协同过滤;个性化社交

 

TheDesignandImplementationofaDecentralizedSocialPlatformBasedonRecommendationAlgorithm

Abstract

Inrecentyears,withtherapiddevelopmentofinformationtechnology,numerousInternetproductshavebeenderived,andvarioussocialnetworkingplatformshavebecomeaninseparablepartofpeople'sdailylives.Mostofthelesscompetitivesocialplatformshavegraduallydisappearfromthehistoricalarenaduetotoday'sfiercemarketcompetition.However,manytraditionalsocialplatformsthathavesurvivedtobecomeunicornsafterabsorbedalargenumberofusers,theypreferintegratingmoreandmoreadvertisementsorevenintroducingcelebritiestoabsorbmoreusersbecauseofthebusinessmodel.Thismodeltendstoignorethepersonalpreferencesandinterestsofmanyusers.Overtime,itmaycausetheuser'splatformstickinesstodecrease.Nevertheless,byintroducingarecommendationalgorithm,usersonsocialplatformscanscreenoutthecontentstheyareinterestedin,therebyincreasingtheirviscosityonsocialplatforms.Thisdesignappliesthecollaborativefilteringrecommendationalgorithmtoanewsocialplatform,whichischangingtheoldmodellikebeingfullofmanyso-called‘thebigV’incentricsocialmodelandprefersthelawofbigflow.Forbuildingapersonalizedsocialplatform,thedesignpreferstofocusontheuser'spersonalpreferences,removingsomepartsofthecentralizationeffect,therebyenhancingusers’viscosityandfavorability.ThisdesigncombinesNode.js+Express+Vue.jsandJavaScriptlanguagetobuild,usingVsCodedevelopmentplatformandclouddatabaseMongoDBAtlastoimplementadecentralizedsocialplatformbasedonrecommendationalgorithm.

Keywords:

recommendationalgorithm;collaborativefiltering;personalizedsocial

 

1绪论

在当今互联网高速发展的背景下,越来越多的互联网公司竞相登场,而以Twitter、Facebook、Instagram、腾讯微信、新浪微博等为代表的众多社交网络巨头在人们的日常生活中扮演着不可或缺的角色,并在很大程度上丰富了人们的网络生活。

与此同时,随着互联网用户个数的飞速增长,逐渐也出现了人们接触到的信息也在飞速增长甚至病毒式的快速传播现象,于是各大社交平台渐渐都出现了“信息过载”的问题,让人们慢慢迷失在海量的互联网信息中,无法准确、迅速地获取自己最想了解的信息。

而目前解决该问题的主要方式有两种,一种是以Google、XX等搜索引擎为代表的信息检索技术;另一种则是通过应用推荐算法来过滤出有效信息,而协同过滤算法则是其中最流行的推荐算法之一。

本设计以MEVN架构(MongoDB+Express+Vue+NodeJS)为基础搭建社交网络平台,并通过融入协同过滤算法,从用户在平台中一些历史行为以及操作的数据出发,过滤筛选出用户真正的需求和兴趣,然后为用户推送信息其喜欢或可能喜欢的内容,节省了用户自己去发掘所需内容的时间成本,从而提升用户在社交平台上的体验感。

1.1协同过滤国内外发展现状

协同过滤的早期应用可以追溯到1992年,当时在Xerox工作的员工每天都许许多多的电子邮件要审阅,因为数量庞大而且无法很好地对这些电子邮件进行筛选并分类。

后来为了解决这个问题,他们推出了Tapestry邮件系统,该系统可以根据员工的审阅邮件的习惯,并把审阅行为记录下来并进行分析,然后就可以对新接收到的邮件进行排序,进而解决了员工们在审阅邮件时遇到的信息过载问题。

到了1994年,一个名为GroupsLens的新闻筛选系统横空出世。

其主要的用途是在读者阅读新闻后,会记录下读者对已经阅读的新闻的评分,然后会根据这些对新闻的评分进行分析,如果在未来分析出相关的读者可能会感兴趣的一些文章,系统就会将这些文章推荐给读者,这很好地考虑到了读者的阅读兴趣相关性的问题[1]。

而最近这些年来,电子商务都在以难以想象的速度在世界范围快速发展和迭代。

国内外许多大型电商网站都淘汰了很多老旧的技术,转而投入了更多的成本去研发更优秀更强大的推荐系统。

在国外,Amazon作为当今互联网的科技巨头之一,它的推荐系统可以说在各大电子商务平台中是非常强大的。

如它旗下的网络书店,顾客在下单购买了一本自己喜欢的书籍后,就会提示顾客并显示出其他的和该顾客买同一本书的人的书单。

这在很大程度上结合了顾客的兴趣,并利用其他相似兴趣的顾客的数据加以分析和整合,然后为顾客推送其他的他们可能也感兴趣的书单[2]。

相对而言,国内推荐系统的发展起步虽然比较晚,不过随着国内各大电子商务平台对推荐系统越来越重视,该项技术在国内互联网也得到了长足的发展和应用。

如:

以电影推荐和评分著称的豆瓣网,提供人们线上购物生活的电商平台淘宝网、京东,XX的基于LBS的地图应用,甚至是和人们一日三餐形影不离的外卖平台美团外卖和饿了么等等。

可以说,推荐系统在中国互联网土壤的培育下,逐渐遍地开花,也受到了越来越多IT公司的青睐。

推荐系统为用户提供了个性化的体验,也为不少平台带来了很多用户体验上的优势,而与该技术相关的算法在未来也会得到更多的发展和运用。

1.2本设计运用的主要开发技术

(1)JavaScript

JavaScript又被简称为JS,它是一种面向对象的脚本语言。

本设计中主要用于服务器的搭建、后台各接口的编写,以及结合HTML和CSS搭建前端的页面,实现一些页面中的动态效果等。

由于它具有非常强大的跨平台性,目前大部分的网站开发都会运用都JavaScript,而且绝大多数的主流浏览器都会支持它的运行,所以它也成为了很多网站开发者开发网站时的首要选项[3]。

(2)Node.js

Node.js是一个运行JavaScript的web服务端的平台,为JavaScript提供了V8引擎运行环境,极大的提高了基于JS等脚本语言编写的代码的运行速度。

而且它拥有强大的非阻塞IO和“事件轮播(eventloop)”框架,非常有利于实现高并发操作。

在本设计中主要用于平台服务器端的搭建,以及一些后台接口的实现[4]。

(3)VisualStudioCode

VisualStudioCode又被简称为VSCode,它是一款由微软公司提供的非常强大的跨平台编译工具。

由于它的轻量级和免费开源的特性,以及支持几乎所有的主流开发语言,还为开发者提供了大量功能强大的扩展插件,可扩展性非常高,越来越多的开发者选择通过VSCode进行开发工作。

而本设计的整个开发过程主要也是运用VsCode来对项目进行设计和编码[5]。

1.3本文设计与研究的主要内容

本文研究内容主要是如何运用MEVN架构(MongoDB+Express+Vue+NodeJS)为基础,快速搭建出一个网络社交平台,并在此基础上应用协同过滤算法,为用户打造个性化推荐服务,提升用户社交体验。

通过这个过程,本文将探讨协同过滤算法的原理及实现;本社交平台后台服务器的搭建;MongoDB数据库的连接;Vue前端界面的设计;前后端的连载。

最后在搭建好的社交平台中结合协同过滤算法,形成基于推荐算法的社交网络平台。

本设计将按照以下顺序进行讨论:

(1)绪论。

首先简单探讨协同过滤这项技术在国内外的发展历史和发展现状,以及本设计开发过程中所涉及到的主要开发技术。

(2)协同过滤推荐算法。

简单介绍和协同过滤推荐算法的分类、相关的原理、计算方式和优缺点等。

(3)社交平台的搭建。

主要介绍本社交平台的设计过程,从后台服务器的搭建,到数据库的设计、后台接口的设计、前后端的连载,然后是平台前端页面各功能模块的设计和实现,最后是协同过滤推荐算法的使用。

(4)社交平台的测试。

通过多个测试用例,对各个页面的数据交互接口进行测试,然后对测试结果进行分析。

(5)社交平台的总结和改进。

1.4本设计的界面板块划分

本设计主要是打造一个面向广大开发者社交的网络平台,为广大开发者们提供一个可以互相讨论技术相关话题以及互相学习的论坛。

平台中主要包括了以下几个主要的界面板块的划分:

(1)主界面的登录和注册入口板块;

(2)用户的注册界面板块;

(3)用户的登录界面板块;

(4)用户个人资料汇总板块;

(5)用户个人信息板块;

(6)用户个人信息编辑板块;

(7)用户个人经历添加板块;

(8)用户教育经历添加板块;

(9)用户社区评论留言板块;

1.5本设计解决的主要问题

(1)社交平台基于Node.js+Express的服务器搭建;

(2)MongoDB云端数据库Atlas如何创建以及如何与本地服务器连接;

(3)后台接口如何实现对数据表中数据的增添、删除、修改、查询等操作;

(4)社交平台前端页面和各板块的设计和实现;

(5)协同过滤推荐算法的在平台中的应用。

 

2协同过滤推荐算法

2.1协同过滤的概述

协同过滤推荐算法(CollabrativeFiltering)其实是一种通过结合群体对于某个事物的兴趣,然后将与之相关的事物推荐给某个有相似兴趣的个体,而与此同时该接受推荐的个体也会对该推荐事物给予一定程度上的反馈和回应,其反馈和回应并不仅仅局限于正面的感兴趣,不感兴趣的负面反馈和回应也非常重要。

而算法透过对该事物的反馈和回应的分析进一步过滤掉不感兴趣的事物,并筛选出个体感兴趣的事物。

这其实是一个群体之间相互合作的机制[6]。

例如,某天有一个人突然很想去买一本专业相关的书籍,但他一时又不知道买哪一本比较好。

在这种情况下他有可能就是去请教周围同学或者朋友,了解一下最近有没有什么这个专业的好书可以推荐推荐。

而他更有可能去询问的是和他同一专业的同学和朋友,因为大家都拥有相似的专业背景甚至是相同的爱好,自己也会对从这里得到的推荐会更加满意。

看起来和古人所说的物以类聚是非常相似的,而这恰好也是协同过滤的基本思路[7]。

协同过滤是各大推荐算法其中的一个分支,主要就是根据有类似爱好和行为的用户对某一物品感兴趣,然后将这个物品推荐给其它也有类似爱好和行为的用户。

而协同过滤推荐算法主要分为两个大的分类:

一个是基于领域的方法,另一个则是隐语义的方法。

而这两个大类的分类细节如下图2.1所示:

图2.1CF算法两大类

本文将主要介绍和讨论的是协同过滤算法里的基于邻域的方法中两个细分类别,即基于用户的协同过滤(user-based)和基于物品的协同过滤(item-based)。

协同过滤的算法过程大致如下面的图2.2所示,可以输入、算法分析和输出这三大块:

(1)输入部分是一个矩阵,可以用于记录某个用户对某个物品的打分,从而表示用户是否喜欢这个物品。

在矩阵中Uaj的值是用于表示a用户对j物品的打分,如果Uaj的值是0就代表a用户没有用过或者没有买过这个j物品。

(2)中间的算法分析又可以分为预测和推荐两个过程,这里就不做过多的讨论,在下一节会展开分析。

(3)输出部分是经过算法得到的两个结果,其中得到的Paj值代表预测a用户对j物品的打分值或是否喜欢该物品,而得到的Top-N列表则表示推荐给用户的可能会喜欢的N个物品。

图2.2协同过滤推荐算法的过程

2.2协同过滤的预测过程

2.2.1用户数据的收集

实际上,几乎所有的算法在计算时都离不开数据的支撑,可靠的数据对算法得出结果的准确度有很大的影响。

因此在进行预测之前,我们需要先收集用户的一些过去的行为或者偏好习惯等数据,如对某个物品的打分或者对某个物品发表的意见评论等等,然后通过对这些数据的分析才可以对其他用户的行为进行预测[8]。

2.2.2相似用户或相似物品的发掘

(1)计算相似度用的计算方法

一般情况下,在计算基于用户的最近邻推荐(user-based)的相似度时所用到的计算方法和计算基于物品的最近邻推荐(item-based)的相似度所用到的计算方法类似但也有所区别,下面将分别介绍两者用来计算相似度的计算方法:

a)在基于用户的最近邻推荐算法当中,两个用户的相关性一般可以通过运用皮尔森相关系数来表示,该系数的区间是[-1,+1],当皮尔森系数的值是+1时表示两个用户的相关性为正,在皮尔森系数的值是-1时表示两个用户的相关性为负,而皮尔森系数的值是0时则表示两个用户无相关性。

以下为皮尔森系数的计算公式:

在该计算公式当中,等号左边的sim(i,j)用于表示i用户和j用户的相关程度或相似性,等号左边的R(i,x)用于表示x物品在i用户中接收到的打分值,而I(ij)则是用于表示被i用户与j用户都打过分物品,然后R(i)平均值是用于表示所有i用户给出过的打分的平均值。

b)在基于物品的最近邻推荐算法当中,两个物品的相关性一般可以通过运用两个向量之间的pearson-r关联度来表示,该系数的区间是[-1,+1],当值是+1时表示两个物品的相关性为正,在值是-1时表示两个物品的相关性为负,而是0时则表示两个物品无相关性。

下图2.4为两向量的pearson-r关联度的计算公式:

基于物品的最近邻推荐(item-based)使用基于关联的相似度计算,计算两个向量之间的Pearson-r关联度,具体公式如下:

在该计算公式当中,等号左边的sim(i,j)用于表示i物品和j物品的相关程度或相似性,等号左边的R(u,i)用于表示i物品在u用户中接收到的打分值,R(u,j)用于表示j物品在u用户中接收到的打分值,而U(i,j)则是用于表示即对i物品也对j物品打过分用户,然后R(i)平均值是用于表示所有i物品接收到的所有打分的平均值,同样,R(j)平均值是用于表示所有j物品接收到的所有打分的平均值[9]。

(2)计算预测值

a)在基于用户的最近邻推荐算法当中,我们根据刚刚已经得到的u用户与别的用户间的相似度,再挑出其中的N个与u用户相似度最高的用户,然后计算u用户对p物品的预测打分值是多少。

计算公式如所示:

在该计算公式当中,等号左边的pred(u,p)是用于表示与u用户对p物品的预测打分值,等号右边的r(u)的平均值是用于表示u用户所有打分的平均值,sim(u,v)是表示u用户和v用户之间的相似度,而r(v)的平均值是用于表示v用户所有打分的平均值,然后r(v,p)是用于表示v用户对p物品的打分值。

b)在基于物品的最近邻推荐算法当中,我们根据刚刚已经得到的b物品与别的物品间的相似度,再挑出其中的N个与b物品相似度最高的物品,然后计算u用户对b物品的预测打分值是多少。

计算公式如下所示:

在该计算公式当中,等号左边的pred(u,b)是用于表示与u用户对b物品的预测打分值,等号右边的sim(a,b)是表示a物品和b物品之间的相似度,而r(u,a)是用于表示u用户对a物品的打分值。

2.3协同过滤的推荐过程

(1)基于用户的最近邻推荐

在基于用户的最近邻推荐算法当中,一般是通过某个用户感兴趣的物品挑选出了他的最近邻,再将这些最近邻们的兴趣物品推荐给这个用户。

如下表2.1和图2.3所示,首先根据用户A过去的兴趣,也就是用户A即喜欢物品A,也喜欢物品B,而和他兴趣相似的用户C不但喜欢物品A和物品B,而且还喜欢物品D,因此判断出用户C是用户A的近邻。

于是根据基于用户的最近邻推荐算法,就可以尝试将用户C感兴趣的物品D推荐给用户A。

表2.1基于用户的最近邻推荐示例表

用户/物品

物品A

物品B

物品C

物品D

用户A

推荐

用户B

用户C

物品A

物品B

用户A

相似

物品C

用户B

喜欢

物品D

推荐

用户C

图2.3基于用户的最近邻推荐示意图

(2)基于物品的最近邻推荐

在基于用户的最近邻推荐算法当中,一般是通过某个受到喜欢的物品挑选出了它的最近邻物品,再将这些最近邻物品推荐给对该物品感兴趣的用户。

如下表2.2和图2.4所示,物品A和物品C受到用户A的喜欢,而与此同时物品A和物品C也受到用户B的喜欢,因此可以判断出物品C是物品A的近邻。

于是根据基于物品的最近邻推荐算法,就可以尝试将物品A的最近邻物品C推荐给同样也喜欢物品A的用户C。

表2.2基于物品的最近邻推荐示例表

用户/物品

物品A

物品B

物品C

用户A

用户B

用户C

推荐

物品A

用户A

物品B

相似

用户B

喜欢

物品C

推荐

用户C

图2.4基于物品的最近邻推荐示意图

2.4协同过滤基于邻近方法的优势和缺陷

2.4.1基于邻近方法的优势

(1)实现的推荐效果比较好;

(2)预测和推荐的过程比较直观;

(3)推荐算法的实现相对简单。

2.4.2基于邻近方法的缺陷

(1)推荐算法的覆盖范围受限:

一般情况下,当用户拥有对同一物品的打分历史才能去计算他们的相似性,然而在现实的应用场景中,很有可能一些用户根本没有和别的用户拥有对同一物品打分的记录,而这些用户之间却实实在在有一些共同感兴趣的物品,在这种情况下就没能利用近邻方法进行推荐[10]。

(2)冷启动:

很多时候,用户不会为太多的物品打分,而往往只是局限在小部分物品上,这会造成评分矩阵稀疏的现象。

在这种情况下计算出来的物品之间或用户之间的相似性是会出现推荐偏差的。

2.5适用场景

在当今各大电子商务平台中,推荐算法似乎已经成为了必不可少的核心竞争力。

能够深入了解用户需求和发掘用户的兴趣的电商平台无疑更受消费者们的青睐。

比如人们在淘宝上搜索过某个物品,然后用户就可以在首页中看到许多和刚刚的搜索过的结果相关的物品被罗列出来,而这些物品中很有可能就是人们真正想买的物品。

而在各大社交网络平台中,推荐算法的应用也大大提升了用户体验以及对平台的好感度。

比如人们在微博中会关注一些自己喜欢的博主,在人们打开微博时候,平台会时不时提醒“你喜欢的博主的粉丝都在看”,然后用户点进去看发现这些其他粉丝喜欢看的内容也恰好是自己喜欢的内容。

这些场景仅仅是冰山一角,相信协同过滤的应用也会随着技术的发展在越来越多的场景中得到实现。

 

3社交平台的搭建

3.1服务器的搭建

(1)Express的简介

Express是一个比较轻量却拥有许多强大特性的网页开发应用框架,通过这个框架,开发者能够迅速地搭建起一个Web应用。

(2)安装过程

通过终端进入创建好的node项目中,在终端输入npminstallexpress

(3)配置过程

通过开发工具VisualStudioCode打开node项目文件,在根目录下的server.js文件中进行配置,内容如下:

constexpress=require("express");//引入express

constapp=express();//实例化一个app

constport=process.env.PORT||5000;//设置端口号

app.listen(port,()=>{

console.log(`Serverrunningonport${port}`);

})

3.2数据库的创建和连接

3.2.1MongoDB云端数据库Atlas的简介

MongoDBAtlas是MongoDB推出的一款面向开发人员的云端数据库的服务。

开发人员可以在这个云平台中建立自己的数据库,或者将自己的数据库迁移到云端。

该云端数据库在创建过程中为开发者提供了高度的自定义特性

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1