用户点击行为模型分析.docx
《用户点击行为模型分析.docx》由会员分享,可在线阅读,更多相关《用户点击行为模型分析.docx(15页珍藏版)》请在冰豆网上搜索。
用户点击行为模型分析
数据挖掘实验报告
基于用户网站点击行为预测
1.概要:
这次的数据挖掘我们团队做的是基于用户网站点击行为预测,其中遇到的问题有数据量大,机器难以处理,含有时序关系,特征难以描述等,我们运用正负样本比例平衡的方法和时间衰减函数来解决这些问题,运用到的算法有基于协同过滤算法进行预测。
二.背景和挖掘目标:
随着互联网和信息技术的快速发展,广告的精准投放一直是各大广告商面临的问题。
点击网络广告的一般有两类人。
第一种是不小心点错的,相信大部分人都是不喜欢广告的,但由于网络的互动性,仍然会有部分人把广告当内容点击,其中网站诱导用户点击占了很大一部分比例。
第二种是真的想看广告内容,这部分人对广告的内容感兴趣,或是符合他们的需求,才会点击网络广告。
认真去研究这两类的行为,进行广告个性化的投放将产生巨大的价值。
基于这个背景,本次课题我们进行了网站点击行为的数据挖掘。
数据来自网络,包含了2015年1月1日-2015年6月22日间广告曝光和点击日志。
目的是预测每个用户在8天内即2015年6月23日-2015年6月30日间是否会在各检测点上发生点击行为。
利用数据挖掘技术可以帮助获得决策所需的多种知识。
在许多情况下,用户并不知道数据存在哪些有价值的信息知识,因此对于一个数据挖掘系统而言,它应该能够同时搜索发现多种模式的知识,以满足用户的期望和实际需要。
此外数据挖掘系统还应能够挖掘出多种层次(抽象水平)的模式知识。
数据挖掘系统还应容许用户指导挖掘搜索有价值的模式知识
三.难点分析:
1.数据量大,机器难以处理;
2.含有时序关系,特征难以描述;
3.针对行为预测,评价标准要创新。
四.难点解答:
1.如何解压数据,导入数据库?
使用XZCAT等命令工具,结合LIUNX管道,直接读取并处理压缩文件,分布式存储平台和分布式计算框架处理大数据。
2.如何对点击行为进行准确描述?
Onehotencoding扩展提取特征,One-Hot编码,又称为一位有效编码,主要是采用
位状态寄存器来对
个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
在实际的机器学习的应用任务中,特征有时候并不总是连续值,有可能是一些分类值,如性别可分为“male”和“female”。
在机器学习任务中,对于这样的特征,通常我们需要对其进行特征数字化。
在分析变量时加上时间要素的角度而形成的。
对于变量的考察,凡能用时间单位来表达的,就必须在分析中加上时间这一维度,才能使变量准确的表达出来。
3.如何在数据分布不平衡时有效地学习?
运用探索式下采样算法,把问题转化为N个平衡分布的子问题,依次解决平衡分布的子问题,把单模型的输出作为特征,自动学习模型权重。
把收集到的数据集划分为第一层和第二层中的最终模型,经过分析得到最终结果。
五.数据采集:
原始数据总共包含60G的txt文本数据,每条记录包含六列,分别是用户id,监测点id,ip地址,浏览器类型,国家,时间,点击或曝光。
同一网站的不同广告检测点id不同,如新浪网的衣服广告和新浪网的手机广告有不同的加测点id,不同网站相同广告有不同的检测点id,如XX网的手机广告和新浪网相同的手机广告有不同的检测点id。
如图:
鉴于数据量巨大,经过探讨我们决定抽取部分数据进行分析。
依据所提供的原始数据,试着分析如下目标:
每个用户在8天内即2015年6月23日-2015年6月30日间是否会在各检测点上发生点击行为。
六.分析方法:
本课题的目标是进行广告行为预测,数据量越大预测的准确率越高,因为数据量巨大,如果对数据不进行处理就会出现内存空间不足的情况。
因此我们抽取部分数据进行分析。
因为原始数据检测点是乱序的,我们第一步进行检测点分类,将同一个监测点的数据统一进行处理,如图:
将数据进行分类后,我们采用基于时间戳的衰减算法进行处理,示意图如下:
对于同一个监测点的数据统一处理,对于每一位用户在该监测点上的点击行为进行统计,比较,计算该用户对该检测点的偏好。
如图用户A分别在3月1日、3月5日、3月10日访问了三次。
而用户B只在3月3日访问了一次,这样用户A相对用户B对该网站的偏好更高。
对于另一个用户C也访问了三次,但是这三次相对于用户A的距离2015年6月23日-2015年6月30日期间更近,显然用户C比用户A更有可能在2015年6月23日-2015年6月30日间继续访问该网站,我们认为用户C比用户A对该网站有更高的偏好。
我们将对比各用户的偏好,我们选择偏好最高的那个用户,这里选择用户C。
七.数据探索:
在进行数据分析前我们发现我们得到的第一手数据是不可靠的,有的行缺少数据,有的出现重复,有的数据是无效的,所以我们有必要进行数据探索,保证数据的有效性。
7.1数据无效:
我们发现有的数据是无效的。
如下图:
通过观察,我们发现图中的数据只有一个用户曝光了该站点,我们认为该站点是无效的,将其剔除。
7.2数据缺失:
在获取的数据过程中有一些数据缺失了网站id,这些数据是不能用来挖掘的数据,否则会影响到最终挖掘的结果,因此我们把这类数据剔除。
八.数据预处理
现实世界数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或者挖掘得到的结果偏差,为了提高数据挖掘的质量产生了数据预处理技术,数据预处理一方面是要提高数据的质量,另外一方面是要让数据更好地适应特定的挖掘技术或工具。
数据预处理主要包括数据清洗,数据集成,数据变换和数据规约等。
这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低了实际挖掘所需要的时间。
常用的数据清理主要分为两类:
空缺值的处理和噪声数据处理。
空缺值处理主要是使用最可能的值填充空缺值,比如可以用回归、贝叶斯形式化方法工具或判定树归纳等确定空缺值。
这类方法依靠现有的数据信息来推测空缺值,使空缺值有更大的机会保持与其他属性之间的联系。
同时还可以用一个全局常量替换空缺值、使用属性的平均值填充空缺值或将所有元组按某些属性分类,然后用同一类中属性的平均值填充空缺值。
不过这些方法有局限性,当空缺值很多的情况下,这些方法的使用可能会误导挖掘结果;除了空缺值处理还有噪声数据处理,噪声是一个测量变量中的随机错误或偏差,包括错误的值或偏离期望的孤立点值。
常用分箱、回归、计算机检查和人工检查结合、聚类等方法进行噪音处理。
本次数据挖掘中主要用了数据清洗,数据丢弃,还有时间变换。
8.1数据清洗
数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。
因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,这些错误的或有冲突的数据显然是我们不想要的,称为“脏数据”。
我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗。
而数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。
不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。
数据清洗是与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。
8.2数据丢弃
数据丢弃如下图所示:
在获取到的数据中,有一些数据我们是用不到的,因此把这些无关数据丢弃,这样能使后面的挖掘过程更简单,我们只留下用户id,网站id和时间这三种数据。
数据丢弃前
数据丢弃后
8.3数据转换
数据转换,其作用就是将数据转换为易于进行数据挖掘的数据存储形式。
主要是由于数据量的不断增加,原来数据构架的不合理,不能满足各方面的要求.由数据库的更换,数据结构的更换,从而需要数据本身的转换。
在这次数据挖掘中我们把时间做了相应的转换:
把UNIX时间戳(unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒)转换成现在的时间,方便后续的数据统计,并且还利于观看。
如上图最后的那一列时间变换如下:
1434686416---------->>2015/6/1912:
0:
16
1434677712---------->>2015/6/199:
35:
12
1434686526---------->>2015/6/1912:
2:
6
1434677256---------->>2015/6/199:
27:
36
1433384573---------->>2015/6/410:
22:
53
1433384578---------->>2015/6/410:
22:
58
1433384485---------->>2015/6/410:
21:
25
1433384482---------->>2015/6/410:
21:
22
1433384525---------->>2015/6/410:
22:
5
1433384534---------->>2015/6/410:
22:
14
九.挖掘过程:
先计算用户对新闻主题的偏好,然后根据协同过滤方法分别预测用户可能的偏好。
9.1计算用户爱好
由于用户对新闻的偏好与阅读次数之间不是线性关系,而是随着阅读次数的增加,用户兴趣度增长速度逐步变慢。
因此,根据边际效应递减理论使用公式
(1)来计算用户对新闻点击率的偏好:
(1)
其中,a为对数的底数。
当a的取值比较大时,得到的用户偏好的范围比较小,当a的取值比较小时,得到的用户偏好的范围比较大,本文中需要将用户偏好映射到[0,1]之间的数值,因此,需要选择合适的a值。
在获取了用户对单个分词的偏好后,可以计算出用户对某个新闻标题的偏好,其计算公式如下:
(2)
其中,
表示新闻标题中包含的分词的数量。
9.2基于协同过滤算法进行预测
(1)选择两个用户共同的分词数量大于分词总量的20%时,才计算用户之间的相似度。
如公式(3所示:
(3)
其中,Wi表示用户i阅读的新闻标题的分词的集合。
设定>0.2时,才计算用户偏好之间的相似度。
(2)实验结果显示,相关相似性较余弦相似性所得的推荐质量更高。
因此本文采用相关相似性度量用户间的相似性。
通过Pearson相关系数度量,公式如下:
(4)
其中,Sc表示用户ui和uj阅读的新闻标题的共同的分词;表示用户ui对分词Sk的偏好;表示用户ui对阅读过的所有新闻标题分词的平均值,其计算公式如下:
(5)
其中,表示用户ui阅读的新闻标题分词的集合。
(3)根据计算得到的相似度,选择前10个相似度最高的用户作为目标用户的近似邻居。
(4)根据近似邻居的偏好预测目标用户的偏好。
(6)
其中,Un表示用户ui的近似邻居的集合。
(5)根据目标用户最后阅读新闻的时间,选择近似邻居近三天阅读的新闻标题。
十.结果分析:
我们把挖掘到的数据放在EXCEL中进行统计,同一个网站可能有多个用户点击,有的用户点击次数不止一次,时间间隔有些间隔短有些间隔长,数据如下:
根据以上数据的统计,我们预测出每个网站下次最有可能访问的用户是哪一个,如下图:
在中国好创意大数据竞赛用户点击行为中,在A,B榜都取得了好成绩:
十一.实验总结
11.1数据的采集
我们实验的数据主要有来源:
1、网络爬虫技术
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
2、来源于比赛
3、购买所得
4、市场调查
11.2在试验过程中遇到的问题
在我们做实验的过程中主要遇到了以下几个问题:
1、数据量过大;
2、数据存在偶然性;
3、部分数据来源于简单模拟;
11.3解决方案以及改进
1.使用XZCAT等命令工具,结合LIUNX管道,直接读取并处理压缩文件,分布式存储平台和分布式计算框架处理大数据。
2.进行性能调优;
数据库优化:
(1)用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;
(2)避免使用不兼容的数据类型;
(3)避免困难的正规表达式;
(4)合理使用EXISTS,NOTEXISTS子句。
11.4数据挖掘学习体会:
数据挖掘主要利用的思想:
1、来自统计学的抽样、估计和假设检验;
2、人工智能、模式识别和机器学习的搜索算法、建模技术和学习理论;
3、最优化、进化计算、信息论、信号处理、可视化和信息检索;
4、需要数据库系统提供有效的存储、索引和查询处理支持,需要高性能(并行)或分布计算的技术处理海量的数据集。
通过学习一个学期的数据挖掘课对数据挖掘有了一定的理解,也掌握了,理解了一些数据挖掘中用到的重要的算法。
在这个数据膨胀的大数据时代我们需要筛选,查询数据,处理数据。
我们看到的听到的都是数据,在这互联网时代数据更多,信息很多。
但是有些网站比如XX,谷歌,雅虎等为我们的学习生活带来了很多便利。
我们为了更正确更有效的利用和处理数据必须要利用数据挖掘技术,因为有了这技术我们以后的数字化生活变得更方便,不会因为数据多,信息多而感到反感。
所以我真正的体会到了数据挖掘的优越性。
同时我学习一些算法过后也感觉到了其复杂性,因为数据挖掘算法众多,掌握起来比较困难。
通过实验:
在广告点击与曝光的数据挖掘中,我们通过对用户的表达研究了解用户点击广告的关注重点是什么,影响关注度的重要因素是什么,其次我们会对用户的线上点击行为数据进行研究,去看用户购买除了关注自己喜爱类型的广告同时还会关注哪些广告。
结合这表达和行为的洞察,再深入探究广告的展示,宣传,形象,等等各方面之间的差异点。
这样广告商在广告运营中更能有方向性的去改进广告和用户之间的沟通方式。
如今许多公司所拥有的用户信息不仅仅对自己有价值,同时对他人也同样具有价值。
如今很多的淘宝店铺之间也有了很多的消费者数据的共享。
互联网也改变了品牌和品牌之间的关系,比如一个拥有很多青少年儿童数据的公司完全可以将自己的数据分享给做儿童食品的公司,或者更进一步,分享彼此所拥有的平台。
社交媒体让我们越来越多地从数据中观察到人类社会的复杂行为模式。
以数据为基础的技术决定着人类的未来,但并非是数据本身改变了我们的世界,起决定作用的是我们对可用知识的增加。
对于数据挖掘的学习,还是要注重算法的研究和开发。
目前我们还很欠缺这一块知识。
包括统计学、概率论,机器学习等。
数据挖掘是个繁复的过程,需要我们长此以往的研究!