赛题

商场中精确定位用户所在店铺

冠军

冠军代码

思考

关于特征

在大数据、数据挖掘类的比赛中特征才是最重要的,其次用树模型就能达到就好的结果。

自己

  1. 在多分类中,只使用了记录中的wifi特征(只保留wifi出现次数大于20的wifi_id),以及将时间转换成星期几,一天中的第几个小时这样的信息
  2. 在二分类中,hour/week特征,wifi_id 特征,有用户id,人与商店距离信息,商店类型特征,商店销售量特征,商店价格特征,只要涉及商店信息的特征都无法在多分类中进行提出 所以要想利用更多的信息,二分类是更好的选择

他人

  1. 标记特征
  2. 总量-比例”特征
  3. 差值特征
  4. 距离特征
  5. 其他特征(特征中还包括多分类的输出概率。另外,还有一些利用规则定义的距离特征)
  6. 具体细节直接参考冠军代码的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