R语言与数据分析练习:使用协同过滤算法实现网站的智能推荐

news/2024/5/11 15:33:42/文章来源:https://zhuang666.blog.csdn.net/article/details/118225813

R语言与数据分析练习:使用协同过滤算法实现网站的智能推荐


使用ARIMA模型预测网站访问量

一、实验背景:

基于实验1中某网站2016年9月每天的访问数据,使用基于内容的协同过滤算法实现网站的智能推荐,帮助客户发现他们感兴趣但很难发现的网页信息

二、实验目的:

使用协同过滤算法实现网站的智能推荐

三、实验设计方案和流程图:

实验设计方案:

  1. 由于实验1已对数据进行处理,这里我们只需要根据题目要求取出2016年9月份的数据。
  2. 取出数据后,对字段ID的空值进行处理。
  3. 处理完数据,我们可以构建一个二元型数据。
  4. 这里根据题目要去只需要用协同过滤算法实现网站的智能推荐,我们就按照步骤先建模,然后导出相似矩阵,预测并获取结果,最后将结果保存到本地。
  5. 对我们需要比较的算法进行模型评估。
  6. 根据评估的F1值,得出最优的算法。

实验设计流程图:
在这里插入图片描述

四、实验过程:

1、连接数据库

jc_content_viewlog.sql 数据文件下载:

文件下载链接:https://pan.baidu.com/s/165XwNDj1YQ1JYQdj90p8RQ
提取码:omop

jc_content_viewlog表的字段说明.xlsx 文件下载:

文件下载链接:https://pan.baidu.com/s/139bB8teH-CrwrDax8envlQ
提取码:es72

# 设置工作目录并导入需要的包
setwd("D:/bigdata//R语言与数据分析/project/test2")
library(RMySQL)
library(tidyr)# 连接数据库 读取数据
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '123456', dbname = 'rdata',host = 'localhost')
dbSendQuery(mysqlconnection,'SET NAMES gbk') 
data <- dbReadTable(mysqlconnection,'data')

2、清洗数据,查询一个月的数据,提取重要特征,删除ID为空的记录

# 将日期切分成年月日和时分秒
data <- separate(data = data, col = date_time, into = c("date_ymd", "date_hms"), sep = " ")
data <- separate(data = data, col = date_ymd, into = c("year", "month","day"), sep = "-")
# 根据日期进行分组计数
user <- data[which(data$year == "2016" & data$month == "09"),]
user <- user[!is.na(user$content_id),]
# 特征选取
user <- user[,c(1:3,7:9)]

在这里插入图片描述

3、将数据转化为二元型数据,利用协同过滤算法进行建模,利用模型对原始数据集进行预测,并获取长度为5的结果

# 基于网站的协同过滤
require(recommenderlab)
# 将用户IP和网站转换为0-1二元型数据,即模型的输入数据集
pagePath <- as(user[,c(4,3)],"binaryRatingMatrix")
write.csv(as(pagePath, "matrix"), "./pagePath_matrix.csv")
# 建模
model.IBCF <- Recommender(pagePath,method="IBCF")
# 导出相似度矩阵
pagePath.model.sim <- as(model.IBCF@model$sim,"matrix")
# 利用模型对原始数据集进行预测并获得推荐长度为5的结果
recommend.IBCF <- predict(model.IBCF, pagePath , n = 5)  # 推荐列表
as(recommend.IBCF, "list")[1:5]  # 查看前五个IP的网站推荐
# 将结果保存至工作目录下的文件中,需要将结果转换为list型。
# 对list型结果采用sink与print命令将其保存
sink("./recommend_IBCF.txt")
print(as(recommend.IBCF, "list"))
sink()

在这里插入图片描述

4、模型评价

# 模型评价
# Random算法每次都随机挑选用户没有产生过行为的网站推荐给当前用户
# Popular算法则按照物品的流行度给用户推荐他没有产生过行为的网站中最热门的网站。
# IBCF算法是基于网站的协同过滤算法
# 模型评价,离线测试
# 将三种算法形成一个算法的list
algorithms <- list("random items" = list(name = "RANDOM", param = NULL),"popular items" = list(name = "POPULAR", param = NULL),"UserCF" = list(name = "IBCF", param = NULL))# 将数据以交叉检验划分成K=10份,9份训练,1份测试
# given表示用来进行模型评测的项目数量,(实际数据中只能取1)
pagePath.es <- evaluationScheme(pagePath, method = "cross-validation", k = 10, given = 1)# 采用算法列表对数据进行模型预测与评价,其推荐值N取3, 5, 10, 15, 20, 30
pagePath.results <- evaluate(pagePath.es, algorithms, n = c(3, 5, 10, 15, 20, 25))# 画出评价结果的图形
plot(pagePath.results, "prec/rec", legend = "topleft", cex = 0.67)# 构建F1的评价指标
fvalue <- function(p, r) {return(2 * p * r / (p + r))
}# 求各个评价指标的均值,并将其转换为数据框的形式
pagePath.ind <- ldply(avg(pagePath.results))# 将指标第一列有关于模型的名字重新命名
pagePath.ind[, 1] <- paste(pagePath.ind[, 1], c(3, 5, 10, 15, 20, 25))# 选取计算F1的两个指标以及有关于模型的名字
temp.pagePath <- pagePath.ind[, c(1, 6, 7)]# 计算F1的指标,并综合所有指标
F1 <- fvalue(temp.pagePath[, 2], temp.pagePath[, 3])
pagePath.Fvalue <- cbind(pagePath.ind, F1)# 将评价指标写入文件中
write.csv(pagePath.Fvalue, "./pagePathpredict_ind.csv", row.names = FALSE)

在这里插入图片描述

在这里插入图片描述

五、实验结论:

预测分析:
由文本可以直观的看出给不同用户推荐的5个网站结果

模型分析:
根据召回指标图可以看出UserCF算法与Popular算法都随着推荐个数K的增加,其召回率变大,精确率变小,总体趋势差不多。而从评价指标中可以看出随机推荐的F1值基本为0.01,效果很差,然而UserCF算法的F1值总体要大于Popular,因此UserCF算法相对比较“稳定”!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732493.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言与数据分析练习:使用Apriori算法实现网站的关联分析

R语言与数据分析练习&#xff1a;使用Apriori算法实现网站的关联分析 使用ARIMA模型预测网站访问量 一、实验背景&#xff1a; 基于某网站的访问数据&#xff0c;使用Apriori算法对网站进行关联分析 二、实验目的&#xff1a; 预测网站访问量 三、实验设计方案和流程图&am…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

官网分析(英雄传奇)(如何设计网站前端)

官网分析&#xff08;英雄传奇&#xff09;&#xff08;如何设计网站前端&#xff09; 一、总结 一句话总结&#xff1a;最开始以仿为主&#xff0c;仿的多了&#xff0c;自己就会了。分块&#xff0c;留白&#xff0c;简洁&#xff0c;图片找好&#xff0c;字体找好&#xff0…

eyoucms 怎么使用网站地图?

网站无论大小&#xff0c;单独的网站地图页面都是必需的&#xff0c;通过网站地图&#xff0c;不仅用户可以对网站的所有内容一幕了然&#xff0c;搜索引擎也可以跟踪链接爬行到网站的主要部分。一般来说&#xff0c;网站地图有两种形式&#xff1a; 一种是HTML&#xff0c;称为…

大型网站背后的高性能系统架构设计

1. 性能测试1.1. 性能指标网站性能测试的主要指标有&#xff1a;响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时&#xff0c;到客户端接收到从服务器端返回的响应结果结束所经历的时间&#xff0c;响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。并…

细数国内几个比较牛的网站UED博客

发现国内一些有创新精神的网站的UED部门很活跃&#xff0c;也很有共享精神。他们有的在网站建立了自己的团队博客&#xff0c;在里面分享他们的设计经验&#xff0c;很值得一看。其实&#xff0c;团队开博客不仅仅有利于促进团队之间的良好氛围&#xff0c;更有利于宣传网站的文…

HTTPS通信中的身份认证机制_网站劫持检测

当你访问一个网站时&#xff0c;有没有想过这个问题&#xff1a;如何保证我的访问能直达目标网站&#xff0c;而没有被中间人攻击和劫持。想要解决这个问题&#xff0c;就得依靠HTTPS中的身份认证机制。 网站劫持检测 1、检测网站是否被劫持2、域名是否被墙3、DNS污染检测4、网…

5 个在线的网站测试和验证工具

网站上线前的测试和验证是非常重要的一个环节&#xff0c;验证的意思是检查网站的页面和其他数据是否符合标准规范&#xff0c;设计规范的网站在各种浏览器上表现会一致而且良好。 为了帮助你执行这些测试和验证&#xff0c;今天我们列表了 5 个在线的工具。 Pingdom Tools Pin…

mai模板html,纯PC网站模板改为自适应模板方法

随着互联网WEB前端技术的发展&#xff0c;各项技术诞生&#xff0c;BS架构、HTML5、CSS3、JQ各种新的技术出现在我们的面前&#xff0c;今天我们就分享下只有PC站情况下&#xff0c;如何快速做成自适应结构&#xff0c;满足移动端用户体验。网站自适应结构很多人认为很麻烦&…

svn同步到网站服务器,svn hook同步更新svn到web服务器

转到SVN项目的hooks目录下面新建post-commit文件.内容如下export LANGzh_CN.UTF-8WEB/www/vhostsvn update $WEB --username user --password passwd --no-auth-cache需要注意就是必须指定字符集还有运行 svn update 需要提供用户名密码且不要缓存用户认证令牌export LANGzh_CN…

学成在线网站首页_呕心整理!最全无版权图片网站都在这了,赶紧收藏!

在亚马逊上&#xff0c;买家大多数需要靠图片和文字来了解商品&#xff0c;而买家在搜索产品时&#xff0c;最先看到的是产品图片。可以说商品的主图是决定点击率的重要因素之一&#xff0c;而listing的图片是否具有吸引力是卖家能够为自己的Listing带来更高的转化率的另一个重…

用R语言进行网站评论文本挖掘聚类

对于非结构化的网站中文评论信息&#xff0c;r的中文词频包可能是用来挖掘其潜在信息的好工具&#xff0c;要分析文本内容&#xff0c;最常见的分析方法是提取文本中的词语&#xff0c;并统计频率。频率能反映词语在文本中的重要性&#xff0c;一般越重要的词语&#xff0c;在文…

oa办公系统含手机版源码_贵阳投资控股集团召开OA协同办公系统(含网站)建设项目启动大会...

为提高集团公司办公信息资源的利用效率&#xff0c;2020年1月7日&#xff0c;贵阳投资控股集团召开OA协同办公系统(含网站)建设项目启动大会。集团党委委员、副总经理付洪伟出席会议并讲话&#xff0c;信息科技部部长周康主持会议&#xff0c;上海泛微网络科技股份有限公司贵州…

scrapy爬虫框架和selenium的使用:对优惠券推荐网站数据LDA文本挖掘

介绍 最近我们被客户要求撰写关于爬虫的研究报告&#xff0c;包括一些图形和统计输出。 每个人都喜欢省钱。我们都试图充分利用我们的资金&#xff0c;有时候这是最简单的事情&#xff0c;可以造成最大的不同。长期以来&#xff0c;优惠券一直被带到超市拿到折扣&#xff0c;…

7个设计师必备的国际顶尖设计网站

成为dA&#xff08;deviantart&#xff09;的忠实用户有很多理由——dA是最大的艺术社区&#xff1b;成为dA用户简直是设计新手的必经之路。但是&#xff0c;这些都不妨碍你加入其他专业的网站来展现你的才华。 创立于12年前的dA现在拥有最多的艺术爱好者受众。然而&#xff0c…

追踪服务器的网站,网站Tracert路由追踪|在线Tracert工具—卡卡网 www.webkaka.com

Tracert是一个dos下的网络命令&#xff0c;主要作用是对路由进行跟踪。它是一个简单的网络诊断工具&#xff0c;可以列出分组经过的路由节点&#xff0c;以及它在IP 网络中每一跳的延迟。(这里的延迟是指&#xff1a;分组从信息源发送到目的地所需的时间&#xff0c;延迟也分为…

大型分布式网站架构技术总结

出处&#xff1a;ITFLY8 网址&#xff1a;http://www.cnblogs.com/itfly8/p/4967966.html 本文是学习大型分布式网站架构的技术总结。对架构一个高性能&#xff0c;高可用&#xff0c;可伸缩&#xff0c;可扩展的分布式网站进行了概要性描述&#xff0c;并给出一个架构参考。一…

Apache+php+mysq配置本地多个虚拟网站

首先我下载的是wampserver 64位&#xff0c; 按照自己的电脑系统下载 一般就分两种 &#xff0c;1 32为操作系统&#xff0c; 2 64为操作系统。 下面是软件图 文件64位&#xff1b; 安装教程就不写了。 下一步下一步就行 下面改到了配置了 首先第一步、 这里的 gao.com 就…

一个程序员单枪匹马,靠一个网站一年赚1个亿

是什么 网站叫BuiltWith.com&#xff0c;通过它可以查看其他网站使用了什么技术&#xff0c;什么编程语言、服务器及广告系统 可以客户生成、销售情报和市场分析提供的许多服务的用户使用&#xff0c;潜在客户列表的客户等&#xff0c;帮助企业赚钱、发现潜在客户。 这个网站仅…

Caddy实战(一)| 托管你的网站,只需一行命令

点击上方蓝色“飞雪无情”关注我&#xff0c;设个星标&#xff0c;第一时间看文章继续在Github猎奇&#xff0c;又看到了caddy这个Web服务器&#xff0c;发现star已经33K了&#xff0c;而且最近上升的也比较快&#xff0c;所以打算研究下它。周末抽了点时间&#xff0c;看了下c…