数据挖掘实验报告基于用户网站点击行为预测...数据挖掘实验报告. (1)一.概要: (3)二.背景和挖掘目标: (3)三.难点分析: (4)四.难点解答: (4)五.数据采集: (5)六.分析方法: (6)七.数据探索: (8)7.1数据无效: (8)7.2数据缺失: (8)八.数据预处理 (9)8.1数据清洗 (9)8.2数据丢弃 (10)8.3数据转换 (10)九.挖掘过程: (11)9.1计算用户爱好 (11)9.2基于协同过滤算法进行预测 (12)十.结果分析: (13)十一.实验总结 (14)11.1数据的采集 (14)11.2在试验过程中遇到的问题 (14)11.3解决方案以及改进 (14)11.4数据挖掘学习体会: (15)一.概要:这次的数据挖掘我们团队做的是基于用户网站点击行为预测,其中遇到的问题有数据量大,机器难以处理,含有时序关系,特征难以描述等,我们运用正负样本比例平衡的方法和时间衰减函数来解决这些问题,运用到的算法有基于协同过滤算法进行预测。
二.背景和挖掘目标:随着互联网和信息技术的快速发展,广告的精准投放一直是各大广告商面临的问题。
点击网络广告的一般有两类人。
第一种是不小心点错的,相信大部分人都是不喜欢广告的,但由于网络的互动性,仍然会有部分人把广告当内容点击,其中网站诱导用户点击占了很大一部分比例。
第二种是真的想看广告内容,这部分人对广告的内容感兴趣,或是符合他们的需求,才会点击网络广告。
认真去研究这两类的行为,进行广告个性化的投放将产生巨大的价值。
基于这个背景,本次课题我们进行了网站点击行为的数据挖掘。
数据来自网络,包含了2015年1月1日-2015年6月22日间广告曝光和点击日志。
目的是预测每个用户在8天内即2015年6月23日-2015年6月30日间是否会在各检测点上发生点击行为。
利用数据挖掘技术可以帮助获得决策所需的多种知识。
在许多情况下,用户并不知道数据存在哪些有价值的信息知识,因此对于一个数据挖掘系统而言,它应该能够同时搜索发现多种模式的知识,以满足用户的期望和实际需要。
此外数据挖掘系统还应能够挖掘出多种层次(抽象水平)的模式知识。
数据挖掘系统还应容许用户指导挖掘搜索有价值的模式知识三.难点分析:1.数据量大,机器难以处理;2.含有时序关系,特征难以描述;3.针对行为预测,评价标准要创新。
四.难点解答:1.如何解压数据,导入数据库?使用XZCAT等命令工具,结合LIUNX管道,直接读取并处理压缩文件,分布式存储平台和分布式计算框架处理大数据。
2.如何对点击行为进行准确描述?One hot encoding扩展提取特征,One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
在实际的机器学习的应用任务中,特征有时候并不总是连续值,有可能是一些分类值,如性别可分为“male”和“female”。
在机器学习任务中,对于这样的特征,通常我们需要对其进行特征数字化。
在分析变量时加上时间要素的角度而形成的。
对于变量的考察,凡能用时间单位来表达的,就必须在分析中加上时间这一维度,才能使变量准确的表达出来。
3.如何在数据分布不平衡时有效地学习?运用探索式下采样算法,把问题转化为N个平衡分布的子问题,依次解决平衡分布的子问题,把单模型的输出作为特征,自动学习模型权重。
把收集到的数据集划分为第一层和第二层中的最终模型,经过分析得到最终结果。
五.数据采集:原始数据总共包含60G的txt文本数据,每条记录包含六列,分别是用户id,监测点id,ip地址,浏览器类型,国家,时间,点击或曝光。
同一网站的不同广告检测点id不同,如新浪网的衣服广告和新浪网的手机广告有不同的加测点id,不同网站相同广告有不同的检测点id,如百度网的手机广告和新浪网相同的手机广告有不同的检测点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/19 12:0:161434677712---------->>2015/6/19 9:35:121434686526---------->>2015/6/19 12:2:61434677256---------->>2015/6/19 9:27:361433384573---------->>2015/6/4 10:22:531433384578---------->>2015/6/4 10:22:581433384485---------->>2015/6/4 10:21:251433384482---------->>2015/6/4 10:21:221433384525---------->>2015/6/4 10:22:51433384534---------->>2015/6/4 10:22:14九.挖掘过程:先计算用户对新闻主题的偏好,然后根据协同过滤方法分别预测用户可能的偏好。
9.1计算用户爱好由于用户对新闻的偏好与阅读次数之间不是线性关系,而是随着阅读次数的增加,用户兴趣度增长速度逐步变慢。
因此,根据边际效应递减理论使用公式(1)来计算用户对新闻点击率的偏好:i f a i p log = (1)其中,a 为对数的底数。
当a 的取值比较大时,得到的用户偏好的范围比较小,当a 的取值比较小时,得到的用户偏好的范围比较大,本文中需要将用户偏好映射到[0,1]之间的数值,因此,需要选择合适的a 值。
在获取了用户对单个分词的偏好后,可以计算出用户对某个新闻标题的偏好,其计算公式如下:∑==i new i N k k new p p 1 (2)其中,i new N 表示新闻标题中包含的分词的数量。
9.2基于协同过滤算法进行预测(1)选择两个用户共同的分词数量大于分词总量的20%时,才计算用户之间的相似度。