第一次参加DC比赛,选择一个不太难的“游戏玩家付费金额预测大赛”进行,虽说看了各种’top 1%’、’top 10%’、’top 5%’等文章,成绩依然还是不理想。总结原因发现还是在对数据的了解和特征工程技巧上没有下足功夫或者没有足够的经验,下面就细节问题和环节作简要总结。
对于数据的了解
数据的第一映像非常重要,决定了下一步数据处理和特征工程的方向,所以一定要详细充分的查看数据后再下手。
熟悉数据分为两步:
1. 数据形态(均值、最值、分布等),数据某些特征的有哪些有意思的信息(时间、坐标)
2. 数据有哪些特征(高维度、稀疏),是否需要预处理(nan、inf、离群点)
这里有个浅显的例子,适合初学者入门:
感兴趣的特征都有哪些信息,几个特征放一起能够发现什么,特征之间有无关联,最好能画张图,更加清晰直观些。这些都是需要在了解数据时有一个初步分认识。
特征工程的技巧
对于时间特征的处理技巧:
- 熟悉数据类型转换
float转datatime,datatime转string,string转float - 特征切片,一转多
创建特征常用方法小结
- 经纬度坐标转极坐标(以某一点为圆心)
- 统计某一特征在参考下的数量,作为新特征。以‘>某阈值’得到布尔型数据,再用
values_counts()
合成新特征。 - 特征之间通过运算得到新的特征,比如资源获取量除以在线时长得到单位时间获取速率。在特征作除法容易产生NAN\INF,要注意作筛选:
data['pve_win_percent']=data.apply(lambda x:x['pve_win_count']/x['pve_lanch_count'] if x['pve_lanch_count']!=0 else 0, axis=