电子商务智能推荐服务

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实现如下目标

•按地域研究用户访问时间、访问内容和访问次数等分析主题,深入了解用户对访问网站的行为和目的及关心的内容。

•借助大量用户访问记录,发现用户的访问行为习惯,对不同需求的用户进行相关的服务页面的推荐

分析

本案例的目标是对用户进行推荐,即以一定的方式将用户与物品之间(本案例指网页)之间建立联系。为了更好地帮助用户从海量的数据中快速发现感兴趣的网页,在目前相对单一的推荐系统上进行补充,采用协同过滤算法进行推荐。

由于用户访问网站的数据记录很多,如果对数据不进行分类处理,对所有记录直接采用推荐系统进行推荐,必然出现如下问题。

数据量太大意味着物品数与用户数很多,在模型构建用户与物品的稀疏矩阵时,出现设备内存空间不够的情况,并且模型计算需要消耗大量的时间。

用户区别很大,不同的用户关注的信息不一样,因此,即使能够得到推荐结果,其推荐效果也不会很好。

为了避免出现上述问题,需要进行分类处理与分析。正常的情况下,需要对用户的兴趣爱好以及需求进行分类。因为在用户访问记录中,没有记录用户访问网页时间的长短,因此不容易判断用户的兴趣爱好。因此,本文根据用户浏览的网页信息进行分类处理,主要采用以下方法处理:以用户浏览网页的类型进行分类,然后对每个类型中的内容进行推荐。

整个分析过程可以分为如下过程

从系统中获取用户访问网站的原始记录。

对数据进行多维度分析,包括用户访问内容,流失用户分析以及用户分类等分析。

对数据进行预处理,包含数据去重、数据变换和数据分类等处理过程。

以用户访问html后缀的网页为关键条件,对数据进行处理。

对比多种推荐算法进行推荐,通过模型评价,得到比较好的智能推荐模型。通过模型对样本数据进行预测,获得推荐结果。

处理过程

数据获取

因为本案例是以协同过滤算法为主导,其他的推荐算法为辅助,而协同过滤算法的特点就是通过历史数据找到相似的用户或者网页。因此,在数据抽取的过程中,尽可能选择大量的数据,这样可以降低推荐结果的随机性,提高推荐结果的准确性,能更好地发掘长尾网页中用户感兴趣的网页。

以用户的访问时间为条件,选取三个月内(2015-02-21~2015-04-29)用户的访问数据作为原始数据集。每个地区的用户访问习惯以及兴趣爱好存在差异性,本案例抽取广州地区数据进行分析,共837453条记录,所含属性见数据集。

处理过程为:建立数据库—>导入数据(导入方法自行查阅,一般使用mysql的source 命令)—>搭建Python的数据库操作环境—>对数据进行分析—>建立模型。其中,数据库为mariaDB(免费版本的MySQL)。安装数据库后导入案例的原始数据文件raw.sql就成功配置好了数据库平台。

# 访问MySQL数据库示例程序

# 加载RMySQL包

require(RMySQL)

# 建立R与数据库的连接

con <- dbConnect(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, "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表示需要写入的数据

# dbWriteTable(con, name="info", value=info_d, append = T, s = 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 character_set_server = gbk;数据库服务器的编码

数据探索

•网页类型分析

•作为第一步,针对原始数据中用户点击的网页类型进行统计,网页类型是指“网址类型”的前三位数字(本身有6-7位数字)。前面已经提到过,此处处理的要义在于“分块进行”,必要时可以使用多线程或者分布式计算。

可以发现点击“咨询相关”(网页类型101的)最多,其次是“其他类型”(网页类型199的),然后是“知识相关”。可以得到用户点击页面类型的排行榜为:咨询相关、知识相关、其他方面的网页、法规(301)、律师相关(102)。可以初步得出相对于长篇的知识,用户更加偏向于查看咨询或者进行咨询。

对咨询类别内部进行统计分析,可以发现咨询内容页(101003)记录最多,其次是咨询列表页(101002)和咨询首页(101001)。综合上述初步结论,可以得出用户都喜欢通过浏览

相关文档
最新文档