write down,forget
adidas eqt support ultra primeknit vintage white coming soon adidas eqt support ultra boost primeknit adidas eqt support ultra pk vintage white available now adidas eqt support ultra primeknit vintage white sz adidas eqt support ultra boost primeknit adidas eqt adv support primeknit adidas eqt support ultra boost turbo red white adidas eqt support ultra boost turbo red white adidas eqt support ultra boost turbo red adidas eqt support ultra whiteturbo adidas eqt support ultra boost off white more images adidas eqt support ultra boost white tactile green adidas eqt support ultra boost beige adidas eqt support ultra boost beige adidas eqt support refined camo drop adidas eqt support refined camo drop adidas eqt support refined running whitecamo adidas eqt support 93 primeknit og colorway ba7506 adidas eqt running support 93 adidas eqt support 93

第一届全国大学生数据挖掘邀请赛-数据集分析篇

<Category: 小道消息, 数据仓库, 数据挖掘> 查看评论

今天下午有点时间,研究了下#第一届大学生全国数据挖掘邀请赛#的数据集,顺便写个酱油贴。

数据集版权归 上海花千树信息科技有限公司 世纪佳缘交友网站 http://www.love21cn.com 所有

此处省略相关废话51句,详细介绍走这边,http://www.statmodelingcompetition.com

咱们先了解下这次比较的评分标准:

Normalized Discounted Cumulative Gain(NDCG
有关NDCG评分,具体看这里http://www.statmodelingcompetition.com/explain.html


NDCG@10简单来说:
click得1分/msg得2分
取10个你的推荐人(有顺序的哦),对照实际的用户的反馈(rec/click/msg),结合上面的公式,算出你NDCG@10分数。
最理想的情况就是你推荐的每个人,他都发站内消息(注,spammer不算),即NDCG理想得分:1.0,当然这是不可能的,目前排行榜上最高也就.24左右

介绍下下载下来的数据:

data目录:
profile_f.txt,女性会员的资料,203843条数据
profile_m.txt,男性会员的资料,344552条数据
test.txt,
train.txt,原始数据,事实表,格式[USER_ID_A USER_ID_B ROUND ACTION],用户A在第几轮推荐的时候给用户B的反应(不理、点击查看资料、发站内消息)
字段列表.xlsx,这个不要解释,省去废话5字

python目录:(具体看里面的使用方法,这里简单提一下)
evaluate.py,本地计算NDCG分数的脚本
labels_train.txt,由data目录的train.txt数据转换而来,将同一用户的对其他后续人的推荐反馈做的一个聚合,注意,这里已经将推荐轮数给抹掉,分析的时候,推荐轮数可能有点影响。
yourranks.txt,这文件里默认给了一个随机的数据,主要是指导你上传提交的数据格式,每一行,每一列和labels_train.txt的文件里的数据是一一对应的,表示的是labels_train.txt里面的候选人(推荐给用户A的)最合理的推荐顺序(这个其实就是我们需要做的,那个最有可能被用户A看上,当然第一时间推给他,如此。。,注,可能你会奇怪为什么每行的数据不一样,没有办法,因为每一个用户的候选推荐人数列表就是不一样的,有可能是推荐轮数的问题,有可能是给我们的数据的稀疏性造成的,这些都不是问题,只有我们保证前10个,最多20个是非常精确的就行)
使用方法.txt,pass。。。

其实数据挖掘,对数据的理解很重要,并且还需要理解数据之上的业务,然后再建模分析,不断调整优化。

先八卦一下,看哪个人接受的推荐次数最多。
简单对train.txt里面的数据进行处理,得到按推荐次数排序的人员列表:
python脚本:

结果,按升序:

找到这条记录:

参照excel表格,还原下数据,我们来看一下:

这只是单个的特征而已,只能说明个体,我们要了解整体的情况,这么分析不死人吗,还是先入库吧。
先来Profile表的

导入方法:
sqlserver》建表》数据库右键选择import data》选择数据源:flat file source》选择txt文件》目标表选我们上面定义的表,column自动mapping》导》done

其他表类似,建之。。。,典型的星型结构,简单。

入库之后,数据好分析多了,可以发现很多脏数据,需要做些清洗。

先分析下数据吧,看看数据集都有些什么特征:
首先,可以看到,这个数据集都是浙江的会员
地区:浙江、杭州市

分析注册时间(将unixtime转换成datetime):

截取片段

从注册时间可以看用户的会员资格,注册时间那么久,还米有找到意中人?神马情况?最后一次登陆时间还是03年,神马意思?
单看上面的数据可以得到一些有用的信息,另外结合评分的数据,创建维度表,根据需要建立各种分析模型,进行分析。

星座,年龄,登陆次数,是否有房,行业。。。这里面大有文章,一个引子,先到这里,希望对你有用。

本文来自: 第一届全国大学生数据挖掘邀请赛-数据集分析篇


  1. 用什么算法进行评分的,算法需要学习吗?

  2. 哦,忘了看简介。各特征值有没有权重之说,有没有参考资料

  3. 我想问下你写那个新浪RSS生成器
    怎么让时间显示正确或者去掉时间?
    老是在1970年···

    medcl Reply:

    @宋若愚, 没有看到显示1970啊

    宋若愚 Reply:

    @medcl, 我现在是改的用月光的代码了
    其实你那个很方便
    不过就是插入后时间都是1970.01.01,调用到独立博客时