随身云数据挖掘竞赛解题思路

本文介绍了一次数据挖掘竞赛的经历,通过分析用户在社交平台的行为数据来预测用户对新帖子的态度。采用关键词提取、用户偏好建模及余弦相似度计算等技术手段。

随身云数据挖掘竞赛解题思路

前阵子参加牛客网举办的数据挖掘竞赛,数据源源自中华万年历的“生活圈”数据,类似于朋友圈,用户可以发表各种帖子,也可以对帖子内容进行赞踩等行为。数据内容是用户11月份的帖子浏览记录,以及前27天对帖子的赞踩记录,共约8G。目标任务是根据用户11月份的浏览记录,以及前27天赞踩记录,挖掘出用户的个人喜好,然后预测用户对月末28,29,30这三天出现的帖子的赞踩行为。详细数据如下:

用户11月份浏览记录,记为A,内容为用户id,帖子id,用户对帖子的浏览次数和点击查看详情次数,数据量约为6g,分在了8个文件里。
帖子具体内容数据,记为B,内容为帖子id,帖子标题(可能为空),帖子内容;
用户11月份前27天赞踩记录,记为C,内容为用户id,帖子id,赞踩(用1/0表示)。

当时限于计算资源和自身能力不足,未能处理完全部数据,颇有遗憾,故想在放假前这段时间,利用hadoop试着处理下全部数据。

解决方案

此次竞赛要求参赛者在线提交28,29,30的预测数据,举办方利用真实数据进行比对,计算F1值进行排名。现在比赛结束,无法线上提交数据,由于举办方提供了前27天的赞踩行为数据,故自己将目标任务改为根据11月份前24天预测25,26,27日的赞踩行为,然后根据25,26,27日的真实数据计算F1值,线下判断模型优劣。

1)  赞/踩影响因素分析:

根据举办方提供的数据,赞踩影响因素可确定为帖子的内容及帖子浏览次数。明显,帖子内容为主要影响因素,更能体现用户个人喜好。限于时间关系,这里主要考虑帖子内容。解题大体思路就是对帖子内容进行关键词提取,构造用户喜好特征向量,然后在测试数据上计算帖子相似度,越相似越有相同喜好。

2)  我们要预测25,26,27日的赞踩行为,就得先提取出测试数据和训练数据以及真实数据。

测试数据:在数据集A中提取出25,26,27日用户帖子浏览记录。
训练数据:在数据集A提取前24天的浏览记录。
真实数据:在数据集C中提取出25,26,27日赞踩行为数据。

3)  帖子类型分析

帖子类型分为两种,长文本和短文本。长文本由于其文本够长,特征够多,故采用正常的分词方法就可以提取出特征。但是对于短文本,由于其口语化严重,特征稀疏,得做文本扩充处理。思路为对用户点赞(踩)的帖子进行汇总构建帖子集合,然后在这个集合上进行特征提取,表示用户喜好。

4)  帖子相似度匹配

训练数据里用户喜好特征向量构建好后,在测试数据进行相似度计算,采用余弦相似度计算,然后按相似度进行排名,取topK。
5)  K值如何确定呢?提出点赞(踩)比概念。

假设当前用户点赞帖子共有20条,那么在这20条帖子提取出特征向量后,在用户历史帖子浏览记录中找寻与特征向量相似的帖子,假设有100条,那么点赞比就为20/100=1/5。那么在测试数据计算目标帖子相似性时假设有80条,那么认为其会对top16的帖子点赞,K=80*1/5。

6)  F1值公式计算

对测试数据进行预测后,得与真实数据进行比对,算出F1值。比赛时这是举办方计算的,在这里得需要自己想怎么计算测试数据和真实数据的F1值。计算出正确率和召回率,目前还没有想这块。

7)  计算难度

由于数据集A是按照时间排序给出的浏览记录,要想得到某个用户这一个月的记录,得按用户进行排序。即使分成了8个文件,那对每个文件按用户进行排序后还要进行合并,6G的文件工作量会很大。
在用R进行提取关键字时,遇到一个问题,它可以对一个字符串提取关键字,例如“我爱北京天安门”,可以提取出来关键字“北京”“天安门”。可是当对文件的某一行进行关键字提取时出不来结果,即使文件的该行也改成了字符串格式。这个问题困挠了我好久,实在不行就试试用java的Ansj或者jcseg分词包。

实验步骤

1)  搭建R+hadoop环境,我在自己的电脑上搭建过hadoop环境,但是用的cygwin,没用虚拟机,但是我觉得过程差不多。搭建完全分布,再结合R估计得用2天时间。
2)  本地调试代码,成功后在hadoop上执行,目前不清楚的是R如何远程调用hadoop。大概需要5天时间。
3)  分析实验结果。大概需要1天时间。

预期效果
比赛排名第一的F1值约为0.2,希望我的方法结果也能接近0.2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值