阿里数据挖掘
前段时间阿里巴巴组织了一个大数据的竞赛,全国高校积极响应,报名者、参与者、提交者众多,最好成绩也一直在刷新当中。初赛选出 Top500 进入复赛,其他人就炮灰了。
虽然是搞图像的,但念在未来图像不太好就业,而大数据是现在及未来的热门,正巧在修习一门《数据挖掘》课程,就把阿里这个题目作为大作业的题目了。
###题目介绍
题目大意是这样的:
给定 4.15-7.15 这四个月的用户数据作为训练数据,大概18万条。然后预测下一个月哪些用户会购买哪些品牌。数据提交到阿里的竞赛平台,阿里会给出准确率、召回率和 F1值。
数据的说明如图:
准确率、召回率就不解释了,大多数预测性的实验都以此作为评价指标。阿里用这两个值计算一个综合的评价指标 F1 作为排名依据。
###思路
从这个题目,可以直观地想到我们机器学习中的Supervised Learning。另外,这是一个推荐问题,由此可以联系到亚马逊、Netflix 的推荐系统,想到 SVD等用户关联和协同过滤方法。此外,还可以发现一些经验规则,比如周期性、重复购买性等等。
协同过滤,一个非常直观的方法是用二部图得到推荐系数,同学用这个来做,效果不错。
我开始用的逻辑回归,但效果不好。现在想想,方法没问题,问题出在了特征的处理和最后推荐结果的选择上。
现在使用的是感知器,由于阿里初赛已经结束,无法提交结果以测试实验效果,只能把有限的本地数据分割成训练集和测试集来做。目前取得的 F1 为 4.3% 。虽然还很低,但至少证明思路是对的。
感知器属于线性分类器,也可以理解为最简单的神经网络。它非常直观,通过训练集,训练出每个特征对应的权值。
具体就不介绍了,可以参考 wikipedia。
###程序
程序代码用 Python 完成。如果去掉注释行、没有使用的函数,总共100行左右。使用了第三方包sklearn
。
代码已经上传到Github,欢迎讨论和给出建议。代码中做了注释,就不再多做解释了。