[猜你喜欢]“临兵斗列”分享|数据竞赛其实并不难_临兵斗列
  1 说在前面   在看过了yin和神秘的yesboy!的赛后分享后,我们小组都从中学到了很多。算法部分已有很好的分享了,我们小组就不在班门弄斧了。我们小组就主要分享下我们在数据分析和一些赛后感言。

 

 

2 数据分析

 

首先对训练数据和测试数据的数据分布进行分析,见表2-1,其中有效长度为数据项值的非空统计得到。

 

2-1数据分布分析

 

train

test

 

uid

iid

time

uid

iid

最小值

0

0

0

0

0

最大值

223969

14725

1346

223969

14725

有效长度

157949

14620

1347

142740

12321

 

 

从表2-1可以看出,训练数据比较稀疏,并不是每个用户ID都有对应的训练数据。

 

接下来对训练数据和待预测数据进行绘图分析:图2-1为用户已评分物品统计图,其横轴为用户uid,纵轴对应为用户以评分物品的个数(从train.csv统计);图2-2为用户待预测物品统计图,其横轴为用户uid,纵轴对应为用户待评分物品的个数(test.csv统计);图2-3为已评分物品频次图,其横轴为物品iid,纵轴对应为物品以评分次数(train.csv统计);图2-4为评分时间频次图,其横轴为评分时间,纵轴对应为该时间评分的物品个数(train.csv统计)

 

 

1-4中的水平直线表示对应的均值,图2-3中的曲线为排序后的结果。

 

 

[猜你喜欢]“临兵斗列”分享|数据竞赛其实并不难_临兵斗列_02

2-3以评分物品频次图

 

 

[猜你喜欢]“临兵斗列”分享|数据竞赛其实并不难_临兵斗列_03

2-4评分时间与评分次数统计图

 

从初步的分析得出,数据集的整体分布满足80/20规律,说明数据集分布均匀,使用常用的推荐系统方法可以得到目标结果。但与Movielens数据集相比,比赛数据集在规模上更大,包含的信息量也更多。

 

 

3 解决方案   我们小组最初尝试使用平均值来代替预测结果,最优得分是7.59。之后使用了SVDLFM来进行尝试,得分在7.8。在yin分享代码之后,我们使用模型结果平均加权,得到的结果是7.859

 

 

4 比赛回归和感言   其实我们小组花在比赛上面的时间并不多,要感谢yin分享的代码,让我们躺进了前五名。在比赛过程中我们也积累了很多想法,走过很多弯路,从最开始对推荐系统的模糊认识到思路的清晰理解,有很多值得总结的地方:

(1)  书本教材很重要,但不会涉及到复杂的或近期出现的算法,导致上升空间很小。还需要阅读开源项目已经相关的学术论文,否则很难有满意的成绩。

(2)  线下评测环境非常重要,是直接衡量算法优劣和调整算法的依据。每天的提交次数有限,要抓住宝贵的评测机会。线下评测环境也是直接评价算法拟合和过拟合的依据,所以非常重要。

(3)  做好文档记录,每种算法的实现以及提交的结果文件,都需要组好记录,方便算法模型改进和模型融合。

(4)  算法运行过程中,尽量保存中间计算结果,缩短计算时间。

(5)  比赛算法都是有相关论文的,所以比赛并不难,难的是积极思考和脚踏实地。

 

 

 

[猜你喜欢]“临兵斗列”分享|数据竞赛其实并不难_临兵斗列_04

[猜你喜欢]竞赛分享

- DataCastle -

 

 

[猜你喜欢]“临兵斗列”分享|数据竞赛其实并不难_临兵斗列_05