




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目案例——广告
检测的流量作弊识别与传统的电视广告、户外广告采买相比,虚假流量一直被看作互联网广告特有的弊病。互联网广告虚假流量,是指通过特殊的方式,模仿人类浏览行为而生成的访问流量。如通过设置程序,每分钟访问一次某网站的主页,这样的流量即属于虚假流量。广告主寻找媒体投放广告的目的是将信息传达给目标受众,以促进相关产品的销售。而媒体的责任则是尽可能引导更多的用户浏览这些信息。同等条件下,流量大的网站收取的广告费用更高。因此,部分网站受利益的驱使,会通过作弊方式产生虚假广告流量。任务背景虚假广告流量的问题在数字营销行业中一直存在,给广告主带来了严重的损失。但互联网不是法外之地,利用大数据及人工智能技术构筑网络安全屏障,一方面能够保障国家安全;一方面能够提高市场效率,消除网络垃圾,惩治网络违法行为。目前,广告监测行为数据被越来越多地用于建模和做决策,如绘制用户画像、跨设备识别对应用户等。作弊行为、恶意曝光,甚至是在用户毫无感知的情况下被控制访问等非用户主观发出的行为给数据带来了巨大的噪声,给模型训练造成了很大影响。本章将通过Spark大数据技术实现广告检测的流量作弊识别,使读者可以更加熟悉Spark相关技术,并灵活应用相关技术解决相应的大数据问题。任务背景1探索分析广告流量数据目录分析需求2预处理数据并构建特征3构建与评估分类模型4任何解决方案都需要从需求入手,分析实现目标所需要进行的步骤。本节的任务如下。了解在互联网中常见的广告流量作弊方式;结合广告检测的流量作弊识别案例的目标,分析案例的需求。任务描述互联网时代的核心之一是流量,更多的流量意味着更多的关注和可能的更高的收入。广告主在互联网投放广告时往往会依据流量信息来设计投放方案,广告流量作弊不仅仅会使广告主选择错误的广告投放方案,造成浪费,也会使后期根据用户浏览信息对现有广告进行修改时出现偏差。这些问题常常会引发“蝴蝶效应”,造成不可估量的损失。因此,对广告流量进行作弊检测进而加以防范是非常有必要的。广告的浏览信息数据量往往十分庞大,人工对其进行筛选很不现实,所以一般会通过算法对海量浏览信息进行自动化筛选。常见的流量作弊方式常见的几种广告流量作弊方式作弊者通过各项技术,不断模拟人的行为,增大识别作弊流量的难度。机器模拟的流量是通过软件实现的,与人类的点击流量存在一定的差异。常见的流量作弊方式广告流量作弊方式说明脚本刷量设定程序,使计算机按一定的规则访问目标网站控制肉鸡访问利用互联网上受病毒感染的计算机访问目标网站页面代码修改通过病毒感染或其他方式,在媒体网站插入隐藏代码,在其页面加载肉眼不可见的指向目标网站的小页面DNS劫持通过篡改DNS服务器上的数据,强制修改用户计算机的访问位置,使用户原本访问的网站被修改为目标网站根据目标对广告检测的流量作弊识别的整体实现流程进行拆分,如下图。分析需求广告检测的流量作弊识别实现流程的步骤如下。对广告检测获得的历史流量数据进行选择性抽取和数据划分。对第(1)步中形成的数据集进行数据探索分析,包括缺失值、冗余字段的基础探索和流量作弊的行为特征的业务探索。根据探索分析结果得出的清洗规则,对数据进行相应的预处理,并构建建模时需要的特征,形成建模样本数据。建立不同的虚假流量识别模型,并对模型进行评估及对比。保存效果较好的模型,模拟新数据产生,加载保存好的模型以进行应用。分析需求1探索分析广告流量数据目录分析需求2预处理数据并构建特征3构建与评估分类模型4不同的作弊行为产生的数据特征不同,对数据进行探索分析并合理归纳虚假流量的数据特征,为后期有针对性地对数据进行预处理、构建相应的指标提供可靠依据,可有效提高模型分类的准确率。本节的任务如下。对广告流量数据进行探索分析,包括对数据说明、数据记录数、日访问流量等的基础探索;对作弊浏览的特征探索。任务描述广告流量数据数据说明字段名称说明rank记录序号dt相对日期,单位为天cookiecookie值ipIP地址,已脱敏idfaIDFA值,可用于识别iOS用户imeiIMEI值,可用于识别Android用户androidAndroid值,可用于识别Android用户openudidOpenUDID值,可用于识别iOS用户macMAC值,可用于识别不同硬件设备timestamps时间戳camp项目IDcreativeid创意ID(续表)数据说明字段名称说明mobile_os设备OS版本信息,该值为原始值mobile_type机型app_key_md5AppKey信息app_name_md5AppName信息placementid广告位信息useragent浏览器信息mediaid媒体ID信息os_typeOS类型标记born_timecookie生成时间label作弊标签,1表示作弊,0表示正常本案例的完整流程都将在IntelliJIDEA中通过编程实现,同时由于数据探索和处理部分会较为频繁地输出结果以进行验证,因此数据探索和处理的程序将选择本地模式进行编译运行。首先创建一个Spark工程,导入Spark相关的开发依赖包,创建一个Explore.scala类。实例化SparkSession对象,命名为spark,并设置日志级别为“WARN”。基础探索数据读取本地case_data_new.csv文件的数据为DataFrame格式的数据,通过option设置文件首行为列名,使用count()方法统计数据记录数,结果如下图。基础探索数据1.探索记录数广告检测流量数据总共有7天的数据,在该数据中,dt字段记录了流量数据提取的相对天数。dt字段的值为1~7,1表示提取的7天流量数据的第1天数据,以此类推。对每天的数据流量进行统计,查看是否有异常。使用groupBy()方法根据dt字段进行分组统计,查询7天中每天的日流量,并根据相对天数进行升序排序,结果如右图。基础探索数据2.探索日流量根据数据的类型对数据中的22个字段进行探索,结果如下表。基础探索数据3.分析数据类型数据类型字段名称字符类型(character)cookie、ip、idfa、imei、android、openudid、mac、app_key_md5、app_name_md5、placementid、useragent、os_type数值类型(numeric)rank、dt、timestamps、camp、creativeid、mobile_os、mobile_type、mediaid、born_time、label对7天中所有的广告流量数据进行缺失值探索,统计出各个字段的缺失值情况。SparkSQL的DataFrame中有na()方法可以对缺失值进行统计,结合drop()方法即可得到数据字段的缺失值占比,即缺失率。原始数据存在22个字段,若对每个字段的缺失率统计都编写类似的代码,会造成代码冗余。同时通过观察,creativeid字段的大量值都为0,不符合正常情况,因此,若creativeid的字段值为0也视为存在缺失值,且需单独统计。基础探索数据4.统计缺失数据缺失值探索为提高代码利用率,在主程序(main()方法)外构建自定义方法用于计算数据字段缺失率。在主程序内调用for循环对各个字段进行统计。结果如下图。基础探索数据缺失值探索的完整结果基础探索数据字段名称缺失率
字段名称缺失率rank0.0%creativeid98.38905404089067%dt0.0%mobile_os80.23365259243003%cookie0.0%mobile_type77.39617428941281%ip0.0%app_key_md579.96577774074409%idfa92.19213756503227%app_name_md580.5729411778513%imei79.83116549325942%placementid0.0%android80.78859070248346%useragent4.350839184721567%openudid84.14450806675923%mediaid0.0%mac78.82843921382691%os_type67.29080822507825%timestamps0.0%born_time0.0%camp0.0%label0.0%缺失率分析结果基础探索数据5.分析冗余数据字段名称缺失率备注idfa92.19%可用于识别iOS用户imei79.83%可用于识别Android用户android80.79%可用于识别Android用户openudid84.14%可用于识别iOS用户脚本刷新网页作弊通过设定程序,使计算机按一定的规则访问目标网站。该作弊方式产生的数据记录中cookie与ip不变,且存在多条记录。在cookie和ip不变的情况下统计数据记录数,使用groupBy()方法根据ip和cookie字段进行分组统计,并使用withColumn()新增一个ip_cookie_count_precent字段,用于存放同一ip和cookie的数据记录数,结果如右图。探索作弊流量的数据特征1.脚本刷新网页作弊正常情况下,极少有人在7天内频繁浏览某广告多达100次或以上,因此在ip和cookie不变的情况下,对广告的浏览次数超过100的记录进行简单统计。使用filter()方法过滤出count字段值大于100的数据,并统计筛选后的数据记录数,结果如下图。探索作弊流量的数据特征同一ip和cookie的用户浏览数据很容易被识别,因此作弊者往往也会通过定期清除cookie,制造不同cookie的访问记录,使流量数据避免被广告主识别为虚假流量,该类虚假流量的特征为ip不变,cookie不同。使用groupBy()方法根据ip字段进行分组统计,统计每个ip对应的不同cookie值的数量分布情况,结果如右图。探索作弊流量的数据特征2.定期清除cookie,刷新网页作弊作弊者利用ADSL(AsymmetricDigitalSubscriberLine,非对称数字用户线)重新拨号后刷新网页作弊,ADSL重新拨号后刷新网页浏览广告这一行为产生的流量同样为虚假流量。其特征是在某一时间段里,多条访问记录的ip来源于同一个区域,因此ip的前2段或前3段相同。根据ip前2段进行分组统计,统计ip前2段相同的记录数的分布情况,使用substring_index()方法根据“.”对ip进行分割,取出前2段,统计ip前2段相同的记录数,并根据记录数进行降序排序,结果如右图。探索作弊流量的数据特征3.ADSL重新拨号后刷新网页作弊根据ip前3段进行分组统计,统计ip前3段相同的记录数的分布情况,结果如右图。探索作弊流量的数据特征1探索分析广告流量数据目录分析需求2预处理数据并构建特征3构建与评估分类模型4在上一小节的数据探索分析中,了解到一些数据字段存在大量的缺失值,同时一些字段为说明性数据字段,不足以直接作为特征进行训练并构建模型。本节的任务如下。根据上一小节的探索分析结果对数据进行处理,删除缺失率较高的数据字段;构建相应的新特征;对特征进行数据标准化。任务描述为了减小缺失数据对模型产生的影响,删除缺失率过高的mac、creativeid、mobile_os、mobile_type、app_key_md5、app_name_md5、os_type等字段。删除缺失率高的字段。将处理后的数据保存至Hive中。先在Hive中创建数据库ad_traffic,使用saveAsTable()方法将处理后的数据保存至Hive的ad_traffic数据库中,表名为AdData,通过mode()方法设置保存模式为覆盖保存。删除缺失值字段分别构建N、N1、N2、N3特征,如下表。构建广告流量作弊识别特征特征构建方法说明N统计在5小时内,原始数据集中,同一ip、cookie的记录的出现次数ip和cookie不变的情况下,出现的记录次数指标:NN1统计在5小时内,原始数据集中,同一个ip对应的不同cookie的数量ip不变,对应的不同cookie出现的次数指标:N1N2统计在5小时内,原始数据集中,ip前2段相同的记录的出现次数ip前2段相同的次数指标:N2N3统计在5小时内,原始数据集中,ip前3段相同的记录的出现次数ip前3段相同的次数指标:N3range()方法可以在自定义的区间内,以规定的间隔将自定义的区间等分切割成不同的小区间。选取timestamps字段,并将其转换为Int类型数据,使用max()和min()方法分别求出数据中的最大时间点和最小时间点,使用range()方法对区间进行分割,最终得到一个时间分割点列表,结果如下图。构建广告流量作弊识别特征1.划分时间区间得到时间分割点列表后,需要根据时间分割点列表取出前25小时的数据。使用for循环,再通过filter()方法筛选出timestamps字段在相应区间内的数据。筛选得到前25小时内的数据后,以5小时的区间对数据进行特征构建,构建特征N、N1、N2、N3。在得到4个特征数据集后,将这些数据集根据ranks字段进行合并得到含ranks和4个特征的完整特征数据集,将此数据集以Append的方式写入Hive表中,这时Hive表中就会存在前5小时数据的特征数据集。之后进行下一次的循环,4个独立的特征数据集将会被重新赋值、合并,添加至Hive表中。构建广告流量作弊识别特征2.构建特征在Hive的ad_traffic数据库中查询TimeFeatures表的前10行,并查看表中的字段名称及类型结果。构建广告流量作弊识别特征完成特征构建后,读取TimeFeatures表和AdData表的数据并根据ranks字段进行连接,选取4个特征字段、dt字段和label字段,并保存至FeaturesData表中。在Hive中查询FeaturesData表的数据、字段名称及类型。构建广告流量作弊识别特征将需要进行归一化的字段合并至同一个向量中,再使用MinMaxScaler()方法对其进行处理。进行数据归一化后,使用randomSplite()方法将数据按7:3进行划分,分别保存为modelData模型训练数据和testData模型测试数据,modelData用于后续的模型构建与评估,testData则用于模拟真实的模型应用阶段。构建广告流量作弊识别特征3.特征标准化1探索分析广告流量数据目录分析需求2预处理数据并构建特征3构建与评估分类模型4本节的任务如下。使用逻辑回归算法和随机森林算法构建分类模型;进行模型预测与评估;经过对不同模型的效果对比,选择效果较好的模型并应用至实际的模型加载及预测中。任务描述通过观察label字段可以看出,广告流量作弊识别为经典的二分类问题,即该广告访问记录是否为作弊访问记录。逻辑回归是解决二分类问题的一个经典模型,而且逻辑回归的原理简单,对于二分类问题的预测准确率也较高。在模型构建与评估中,编写的Spark程序将不以本地模式运行,而是对Spark程序进行编译打包,使用集群模式将程序上传至集群中运行,因此在IntelliJIDEA中的SparkSession的实例化和部分参数的设置将会被调整。构建与评估逻辑回归模型使用LogisticRegression()方法设置相关正则化系数和最大迭代次数等相关参数。经过参数调优,发现将最大迭代次数设置为15,正则化系数设为0.03,其余相关参数为默认值时,模型效果较好。使用randomSplit()方法先将数据集按7:3的比例随机划分为训练集和测试集,调用LogisticRegression()方法进行模型构建,该方法所使用的数据类型为LablePoint类型。LogisticRegression()方法会自动将列名为features的字段作为特征字段,将列名为label的字段作为标签字段,因此构建模型时无须进行特征字段和标签字段的参数设置。构建与评估逻辑回归模型1.构建逻辑回归模型模型训练好后对测试数据进行预测,SparkMLlib为模型提供多种评估标准,本文选择较为直观的accuracy(准确率)进行评估,使用MulticlassClassificationEvaluator对象构建模型评估器,设置标签字段名称和预测标签字段名称,并设置评估标准为accuracy,对测试数据的预测结果进行准确率计算。当对模型完成构建、训练、评估一系列操作后,可以对效果优良的模型进行保存。构建与评估逻辑回归模型2.评估逻辑回归模型将工程编译打包,命名为Mode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 维保报价合同范本
- 学生保险合同范本
- 公司合作办厂合同范本
- 邻村库房转租合同范本
- 宣传版制作合同范本
- 2025劳务合同模板(28篇)
- 重度肝病护理方案
- 2025年春一年级语文上册 17 小猴子下山(+公开课一等奖创新教案+素材)
- 防护安全培训
- 音乐专业工作总结
- 专升本计算机教学课件-第一章-计算机基础知识(2023新版大纲)
- GB/T 23587-2024淀粉制品质量通则
- DL∕T 1120-2018 水轮机调节系统测试与实时仿真装置技术规程
- 公积金归集委托协议
- JTG D30-2015 公路路基设计规范
- 一年级下册口算题卡大全(50套直接打印版)
- 慢性肾脏病英文
- 涉密文件失泄密应急预案
- 智联招聘测评题库2024答案
- 农业社会化服务体系课件
- WS 10013-2023 公共场所集中空调通风系统卫生规范
评论
0/150
提交评论