电子商务智能推荐服务

上传人:pu****.1 文档编号:469634723 上传时间:2022-11-15 格式:DOC 页数:6 大小:50.50KB
返回 下载 相关 举报
电子商务智能推荐服务_第1页
第1页 / 共6页
电子商务智能推荐服务_第2页
第2页 / 共6页
电子商务智能推荐服务_第3页
第3页 / 共6页
电子商务智能推荐服务_第4页
第4页 / 共6页
电子商务智能推荐服务_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《电子商务智能推荐服务》由会员分享,可在线阅读,更多相关《电子商务智能推荐服务(6页珍藏版)》请在金锄头文库上搜索。

1、实现如下目标 按地域硏究用户访问时间、访问内容和访问次数等分析主题,深入了解用户对访问网站的行 为和目的及关心的内容。 借助大量用户访问记录,发现用户的访问行为习惯,对不同需求的用户进行相关的服务页面 的推荐分析本案例的目标是对用户进行推荐,即以一定的方式将用户与物品之间(本案例指网页) 之间建立联系。为了更好地帮助用户从海量的数据中快速发现感兴趣的网页,在目前相对单 一的推荐系统上进行补充,采用协同过滤算法进行推荐。由于用户访问网站的数据记录很多,如果对数据不进行分类处理,对所有记录直接采用 推荐系统进行推荐,必然出现如下问题。数据量太大意味着物品数与用户数很多,在模型构建用户与物品的稀疏矩

2、阵时,出现设 备内存空间不够的情况,并且模型计算需要消耗大量的时间。用户区别很大,不同的用户关注的信息不一样,因此,即使能够得到推荐结果,其推荐 效果也不会很好。为了避免出现上述问题,需要进行分类处理与分析。正常的情况下,需要对用户的兴趣 爱好以及需求进行分类。因为在用户访问记录中,没有记录用户访问网页时间的长短,因此 不容易判断用户的兴趣爱好。因此,本文根据用户浏览的网页信息进行分类处理,主要采用 以下方法处理:以用户浏览网页的类型进行分类,然后对每个类型中的内容进行推荐。整个分析过程可以分为如下过程从系统中获取用户访问网站的原始记录。 对数据进行多维度分析,包括用户访问内容,流失用户分析以

3、及用户分类等分析。 对数据进行预处理,包含数据去重、数据变换和数据分类等处理过程。以用户访问 html 后缀的网页为关键条件,对数据进行处理。对比多种推荐算法进行推荐,通过模型评价,得到比较好的智能推荐模型。通过模型对 样本数据进行预测,获得推荐结果。处理过程数据获取因为本案例是以协同过滤算法为主导,其他的推荐算法为辅助,而协同过滤算法的特点 就是通过历史数据找到相似的用户或者网页。因此,在数据抽取的过程中,尽可能选择大量 的数据,这样可以降低推荐结果的随机性,提高推荐结果的准确性,能更好地发掘长尾网页 中用户感兴趣的网页。以用户的访问时间为条件,选取三个月内(2015-02-212015-0

4、4-29)用户的访问数据作 为原始数据集。每个地区的用户访问习惯以及兴趣爱好存在差异性,本案例抽取广州地区数 据进行分析,共837453 条记录,所含属性见数据集。处理过程为:建立数据库一导入数据(导入方法自行查阅,一般使用mysql的source 命令)搭建 Python 的数据库操作环境对数据进行分析建立模型。其中,数据库为 mariaDB (免费版本的MySQL)。安装数据库后导入案例的原始数据文件raw.sql就成功配置 好了数据库平台。# 访问 MySQL 数据库示例程序# 加载 RMySQL 包require(RMySQL)# 建立 R 与数据库的连接con - dbConnect

5、(MySQL(), host = 127.0.0.1, port = 3306, dbname = new,user = root, password = root)# 修改成自己数据库名称、用户名、密码、端口等# 修改此连接的编码为中文,只针对此连接有效。 dbSendQuery(con, set character_set_results = gbk) dbSendQuery(con, set character_set_connection = gbk) dbSendQuery(con, set character_set_database = gbk) dbSendQuery(con,

6、 set character_set_client = gbk)# R 通过连接对表按条件查询,查询 fullurl 中带有_ 的并且 fullurlid 为 107001 的数据 (即知识 类型页面)con_query - dbSendQuery(con, select * from all_gzdata where fullurlid = 107001)#提取查询到的数据,n=-1代表提取所有数据,n=100代表提取前100行data - dbFetch(con_query, n =-1)# 以下命令将本地的数据写入数据表中, name 表示写入的表名# value 表示需要写入的数据#

7、dbWriteTable(con, name=info, value=info_d, append = T, row.names = T)# 关闭连接 dbDisconnect(con)# 如果需要通过 R 的连接进行中文查询,可能需要修改下面的编码# set character_set_client = gbk;客户端编码方式# set character_set_connection = gbk;建 立连接使用的编码# set character_set_database = gbk;数 据库的编码# set character_set_results = gbk;结果集的编码# set

8、character_set_server = gbk;数 据库服务器的编码数据探索# 网页类型分析# 作为第一步,针对原始数据中用户点击的网页类型进行统计,网页类型是指网址 类型的前三位数字(本身有6-7位数字)。前面已经提到过,此处处理的要义在于“分块进行”, 必要时可以使用多线程或者分布式计算。可以发现点击“咨询相关”(网页类型101的)最多,其次是“其他类型”(网页类型199 的),然后是“知识相关”。可以得到用户点击页面类型的排行榜为:咨询相关、知识相关、 其他方面的网页、法规(301)、律师相关(102)。可以初步得出相对于长篇的知识,用户 更加偏向于查看咨询或者进行咨询。对咨询类别

9、内部进行统计分析,可以发现咨询内容页(101003)记录最多,其次是咨询列表 页(101002)和咨询首页(101001)。综合上述初步结论,可以得出用户都喜欢通过浏览 问题的方式找到自己需要的信息而不是以提问的方式或者查看长篇知识的方式得到所需信 息。对知识相关进行分析,因为只有一种类型(107001),所以利用网址进行分类,主要利用正 则表达式进行匹配。对其他方面进行分析,其中网址带有“?”的占了 32%左右,其他咨询相关与法规专题占比 达到 43%,地区和律师占比 26%。在网页分类中,已经存在了律师等分类,为什么还会存在 于其他类别中呢,这是由于网页地址没有匹配到这种格式。通过对这三种

10、分析,用户的一般使用情况为:咨询内容页、知识内容页、法规专题页、咨询 经验(在线咨询页)。因此,在后续分析中选取占比最多的两类(咨询内容页和知识内容页) 进行模型分析。点击次数分析统计分析原始数据用户浏览网页次数(以“真实IP”区分)的情况可以看出,大约80%的用户(不超过3 次)只提供了大约30%的浏览量(几乎满足二八定律)。 在数据中,点击次数最大值为42790 次,对其进行分析,发现是律师的浏览信息(通过律师 助手进行判断)。对浏览次数达到7次以上的情况进行分析,大部分用户浏览8-100次。对浏览次数为1 次的用户进行分析,问题咨询页占比78%,知识页占比15%,而且这些记录 基本上是通

11、过搜索引擎进入的。由此可以猜测两种可能:1)用户为流失用户,没有找到自 己的需要;2)用户找到了自己想要的信息,因此直接退出。可以归结为跳出率,需要对这 些网页进行针对用户的个性化推荐,帮助用户发现其感兴趣或者需要的网页, 针对点击一次的用户浏览的网页进行统计分析,发现排名靠前的都是知识与咨询页面,因此 可以猜测大量用户的关注都在知识和咨询上。网页排名通过查看各个页面的点击率,和通过搜索引擎进入后翻页的概率,从而决策。数据预处理数据清洗去除无用数据。require(plyr)#利用R对数据进行处理,去除多余的属性列,保留用户ip,与访问网址列info - data,c(1,11)# 亦可采用下

12、列方法去除多余属性列# info - data.frame(cbind(realIP = data$realIP, fullURL = data$fullURL), stringsAsFactors = F)#处理info类型中存在带有“?”的网址info,2 - gsub(?.*, , info, 2, perl = T)detach(package:RMySQL)# 这里采用 sqldf 包里的 sqldf 命令,通过 SQL 进行删选翻页与不翻页的网页 info_d - sqldf:sqldf(select * from info where fullurl like %!_% esca

13、pe !) info_q - sqldf:sqldf(select * from info where fullurl not like %!_% escape ! )# 读入 ask 类型的数据, 并删选用户与项目属性ask_data - read.csv(file = g:/ask02.csv, header = T, stringsAsFactors = F) askitem - ask_data, c(1, 2) # 将 ask 数据去重处理item_ask - ddply(askitem, .(realIP,FULLURL), tail, n = 1) 数据变换识别翻页,对翻页进行还

14、原。# 采用正则匹配那些带有翻页的网址,匹配网址的特点为:数字_页数 .html 的形式stri_p - regexec(A.+/d+)_d0,2(.html), info_d, 2)# 去除 list_1.html 形式的网页,以及与其类似的网页infol - info_d-(which(sapply(stri_p, length) != 3), # 提取正则匹配到的数据,并将数据进行粘接parts - do.call(rbind, regmatches(info_d, 2, stri_p)pas - paste0(parts, 2, parts, 3)# 或者采用命令 paste(part

15、s,2,parts,3,collapse = NULL)# 将数据进行列组合,并且重新命名,对比处理前后的数据combine - cbind(parts, pas)colnames(combine) - c(fullurl, temp1, temp2, new)do.data - data.frame(combine, c(1, 4), stringsAsFactors = F)#如果不加stringsAsFactors参数,可能会将其中的数据类型转换为factor型# 可以通过下列命令进行转换处理# do.data,1 - as.character(do.data, 1)# do.data,2 - as.character(do.data, 2)# 判断处理前后的两列数据以及数据位置是否相同?all.equal(infol, 2, do.data, 1)#如果返回为TRUE,两种数据集的连接采用如下方式condata - data.frame(cbind(infol, 1, do.data, 2), stringsAsFactors = F) co

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号