阿里的大数据赛题

2014-03-19 20:52:50 +08:00
 buptlee
阿里最近搞了个大数据竞赛,赛题在这里:
http://102.alibaba.com/competition/addDiscovery/gameTopic.htm
阿里提供了4个月的用户数据,格式是这样的一个EXCEL表:
11158000 5043 0 5月9日
11158000 5043 0 7月22日
11158000 5043 0 7月14日
11158000 5043 0 5月11日
11158000 5043 1 5月5日
第一列是用户ID,第二列是商品品牌ID,第三列是用户行为(0,1,2,3分别代表点击,购买,收藏,购物车)。需要我们预测下个月的用户购买行为,评价标准是准确率和召回率以及两者的调和平均值。
我试了几个方案,发现直接将收藏和购物车作为用户购买行为的依据却是最好的方法,简单粗暴,难道这就是所谓的奥卡姆剃刀?不过,也有可能是我另外的方案设计得不好。
熟悉推荐算法的同学给点建议吧,最好要简单点,实现起来比较方便,代码量在几百行级别最好,毕竟只是个竞赛呢。谢过啦。
5918 次点击
所在节点    程序员
23 条回复
casparchen
2014-03-19 21:16:10 +08:00
我觉得还是综合几种建模方式的结果比较靠谱。比如
建模1:针对每个品牌,该品牌的不同用户点击/收藏/购买肯定是有规律的
建模2:针对每个用户,该用户对品牌的购买情况是有规律的。
比如以上两种建模方式,1的效果我猜是大于2的,因此可以取{建模1结果:建模2结果}={2:1}
webjin
2014-03-19 21:55:36 +08:00
http://gtms02.alicdn.com/tps/i2/T11omZFu0XXXaTF0MH-435-146.png 知道这是什么编辑器吗?那中间的->线是什么弄出来的
yelite
2014-03-19 22:12:21 +08:00
@webjin 那个是制表符
编辑器目测是notepad++
ihacku
2014-03-19 22:12:42 +08:00
@webjin 这不是notepad++么
ljcarsenal
2014-03-19 22:14:33 +08:00
@webjin notepad++吧
vbs
2014-03-19 22:31:12 +08:00
这比赛挺好的,可惜只许在校生参加
sobigfish
2014-03-19 22:42:56 +08:00
只有报名了才下载的到数据么?
ericls
2014-03-19 22:47:17 +08:00
数学建模上吧
webjin
2014-03-19 23:58:13 +08:00
@yelite 哦 我也感觉是notepad++ 但是那制表符是怎么弄出来的
yangff
2014-03-20 00:17:33 +08:00
看起来像马尔科夫链……假如上个月对品牌A做了操作B导致下个月对品牌C操作D的概率啥的。。
66beta
2014-03-20 10:32:11 +08:00
@webjin 觉得是gedit
66beta
2014-03-20 10:33:05 +08:00
delo
2014-03-20 10:36:41 +08:00
@webjin npp里有个显示所有字符的功能
Lucius
2014-03-20 10:56:53 +08:00
@66beta notepad++无疑 而且是默认配色
ericls
2014-03-20 20:52:33 +08:00
这就是一个不折不扣的数学建模题啊
armysheng
2014-03-20 22:36:40 +08:00
@buptlee 直接将收藏和购物车作为用户购买行为的依据却是最好么?
如果用前三个月做测试,后1个月做校验,按照你说的直接选有收藏和购物车我算的结果是
predict num is 2858
hit num is 185
total brand is 18537
precision is 0.0647305808258
call rate is 0.00998003992016
F1 is 0.0172937602244
F1才1.7%啊?
buptlee
2014-03-21 08:53:55 +08:00
@armysheng 要不show me your code?
armysheng
2014-03-21 15:02:32 +08:00
@buptlee 额,上面说的好像搞错了。上午改了一下,但是如果纯按是否有收藏和购物车来判的话,F1貌似还是不高啊
predict num is 491
hit num is 2
total brand is 1377
precision is 0.0040733197556
call rate is 0.00145243282498
F1 is 0.00214132762313
判断条件的代码是这样的:
if int(op3[2])|int(op3[3]) |int(op2[2])|int(op2[3])|int(op1[2])|int(op1[3]):
predict_temp.write(uid +"," + bid + "\n")
armysheng
2014-03-22 10:01:25 +08:00
@buptlee 方便私底下交流么,没人可以讨论真是尴尬
lj
2014-03-22 13:06:39 +08:00
@armysheng 官方论坛里还是蛮多人在讨论的,看了一圈清晰了很多。P.S. 我也觉得2、3效果有限而且毕竟数据量太小,0和1的correlation比2、3的大多了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/105026

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX