好久不见,最近在忙天池的竞赛,两个星期真的好累。
在这里依旧感谢@麦芽的baseline,不管最终结果如何,没有他的开源程序我在算法学到的东西少之甚少
如下我将在这里罗列出我的整个比赛想法与代码作为这次比赛的总结
必须申明,因精力优先,所有的参数在我心里并没有调试好。
我上传的ipny文件其实十分简单,并且这是我最早期用来可视化的用途,其中含有数据集的形式可供参考
对于数据分析我主要做了三点
wifi具有强度,名称,是否连接的属性。第一我获取了频次,对于频次过于低的wifi,我认为是不重要的所以除去。
第二我保留强度前2的wifi,并且对于连接上的wifi的强度进行了重新赋值。
第三我考虑了公共wifi,即高于多少频次认为是公共wifi(但是在计算时我并没有删除)
我求取了店铺经纬度与用户经纬度之间的真实距离,发现含有距离过远的用户,即异常值
那么我的做法是对于这些异常值重设了经纬度,其赋值为店铺的经纬度并加上一点点距离
同时我发现某些店铺对应的用户只有一个,这可能导致数据的不平衡,但我没有解决
我变换了时间为周几,小时,分钟
但是在训练的过程中,我发现没有很大的影响
又出于计算成本的考虑,并没有加入时间
同时,时间的抽取是按分钟的,出现了同一时间同一店铺同一用户不同位置的情况。认为是不利于训练故放弃
在获取保留wifi或者经纬度距离保留值参数我使用了lightgbm
但是因为对于lightgbm的调參没有找到相应的资料
在模型训练中选择了xgboost
但是我认为并没有做到对于xgboost百分百的优化
同时我将用于验证集的early_stop用于了训练,因为了多个样本,我并不知道这是否合适
其中一个问题是训练是针对于商场展开的,一个商场一个模型
这样对于机器的硬件要求降低,但不一定是一个好模型
这是一次特别有意思的经历,但是这里我只说说哪里可以进行改进的
1.准确率的暴跌,我不知道是测试集数据改变引起的还是我的预处理出了大问题,估计是得不到解答了
2.模型参数的优化真的不知道怎么做,有时没有耐心就反复的取消
3.还是在想我的预处理明明很完美,为什么准确率就下降了呢。。。
1.我的思维局限在了一个商场一个model,这样其实出现了每个模型的参数是不一样的,对于参数的优化的难度大大提高。
2.对于有些商铺出现的数据量过小的问题我也不知道怎么解决,或者说没有尝试。
3.对于代码水平的限制,往往完成一个目标没有做好规划,对于之后的功能连接没有设想,应该现在草稿纸上写好思路再进行。同时强调DEBUG的重要性。
5.对于数据分析的经验不足,应该看完所有的数据,并对数据进行分类(如以商场为单位,以商店为单位,对于距离、wifi计数、时间进行分类)
6.对于算法的认知限制,不得不承认,在数据挖掘方面,传统学习方法比深度学习优秀的多,这真的对我启发很大。