赛题
冠军
思考
关于特征
在大数据、数据挖掘类的比赛中特征才是最重要的,其次用树模型就能达到就好的结果。
自己
- 在多分类中,只使用了记录中的wifi特征(只保留wifi出现次数大于20的wifi_id),以及将时间转换成星期几,一天中的第几个小时这样的信息
- 在二分类中,hour/week特征,wifi_id 特征,有用户id,人与商店距离信息,商店类型特征,商店销售量特征,商店价格特征,只要涉及商店信息的特征都无法在多分类中进行提出 所以要想利用更多的信息,二分类是更好的选择
他人
- 标记特征
- 总量-比例”特征
- 差值特征
- 距离特征
- 其他特征(特征中还包括多分类的输出概率。另外,还有一些利用规则定义的距离特征)
- 具体细节直接参考冠军代码的readme.md
关于这道题目大家思考的较多的两种方式
多分类问题
- 自己尝试过,最好的结果也是用多分类的思路进行模型的融合,在这个过程中使用了xgb和lightgbm。
- 在冠军代码中,思路是将多分类的得到的概率值作为特征输入到二分类模型中。
二分类问题
- 在二分类问题中,对正负样本的处理和冠军代码一样,都是对训练集负样本进行采样,对测试集保留所有样本。
- 在二分类问题中使用了libffm,貌似忘记使用树模型来做了。
- 冠军代码主要是使用树模型,线上貌似不支持libffm
关于训练集的划分
关于这一块是我每次做比赛最头痛的地方,我很不喜欢切分验证集,但确实是必须要的步骤,要改要改要改!!!直接参考冠军代码中测试集切分。
- 在训练集划分上,我简单的将训练数据的最后七天划分为训练区间,此前的作为特征提取区间。
- 线上预测时使用全部数据作为特征提取区间。
- 本地验证时,直接从训练集中拿出最后三天作为验证集。本地验证时不更新特征提取区间(即仍然使用7.1-8.24作为特征提取区间),降低了实现上的复杂性。
| 时间 | |
|---|---|
| 训练集-特征提取区间 | 7.1-8.24 |
| 训练集 | 8.25-8.32 |
| 线上测试集-特征提取区间 | 7.1-8.31 |
| 线上测试集 | 9.1-9.14 |
| 本地训练区间 | 8.25-8.28 |
| 本地验证区间 | 8.29-8.31 |