特征经验分享以及管理文件,远程运行的小技巧

来源:互联网 发布:淘宝刷流量平台 编辑:程序博客网 时间:2024/06/11 03:24

首先,我是通过腾讯这次比赛第一次接触数据挖掘,机器学习这一块内容的,也是为了这个比赛学的python。说出来你们都不信,我是用Matlab提交的第一次成绩,因为当时还不会python。
接下来我会介绍我的一些小心得,马上要期末考了,打算拿个小礼品撤退。明年见,哈哈。

关于特征

A) 简单提取一下数据集提供的特征,会发现绝大部分都是类别型的特征。类别型的特征直接拿来训练效果比较差,所以用one-hot或者统计来做会有很好的收益。而统计和one-hot可以理解成用另外一种表达方式来表达这些特征,所以如果用了统计,实际上没有必要保留之前的类别特征。
B) 我们也可以尝试从数据集中提取一些特征,比如把hometown提取出省和市,但要注意,实际上数据集给出的hometown就是“市”一级的编码了。也可以尝试将clickTime分箱,当然具体有没有用要试了才知道。
C) 另外有一个特征,就是时间特征,这个特征不好处理,我的理解是,使用滑窗统计实际上是应用了间接的使用了时间特征。

这里写图片描述

我是这样滑窗的,从第26天开始,统计前面7天的特征出现的ClickNum 和 ChangeNum 还有历史转化率(不能直接使用,要滑窗)。至于为什么从26开始,是因为数据集中可以看到16,17天有异常波动。当然这样做,有个不足,也是我一直在寻找解决方法的地方,就是30天的噪声问题。
决赛中数据集过大,我只采用26,27,28,31 这四天进行统计。
D)还有一个要注意的点就是重复点击这个强特征,要注意这31天的数据是连续的,所以测试集开头的那几个点击可能是前一天训练集的重复点击,所以最好是先append之后再去提取重复点击的特征。
E)关于组合特征,实际上没必要也没办法做到所有特征组合一遍

这里写图片描述

我把特征分成这四类,然后用userID 和后三类进行组合统计,用app ID和第1,3,4类进行组合统计,用positionID和第1,2,4类组合统计,依次类推。效果还不错。
F)关于installedapps表,我简单统计发现 appPlatform=2的平台一条数据都没有,这也导致空缺值过大,具体怎么利用这一点我还没想到。

关于一些算法问题

A) 由于决赛训练集过大,基本上我认为一个程序运行时间过长,那8成是你的代码不够优化。所以我宁可花时间修改程序,也不愿意等程序跑。这里的建议是使用pandas Dataframe的时候尽量采用行操作,实际上pandas 行操作应对千万级别的数据的时候还是完全没问题的。
B) 如果不得不用迭代,比如重复点击的trick,我想了很多办法让它通过行操作实现,结果一直行不通。网上很多人会建议说用iterows,实际上即使是n级别的iterows都挺慢的。更好的方法是把Dataframe转换成dict,一个用10小时才能iterrows完的Dataframe,转换成dict可能只要1,2分钟可以迭代完。
这里写图片描述

关于文件管理

这个是我个人的一个摸索出来的一个方式,也不知道专不专业。我的整个目录是

final 放决赛的数据集,然后chmod –R 555,即没有写入权限,可以保护数据集。然后data再来放中间产生的数据集,然后code里面会有以数据集命名的代码先对每个表做一些简单处理,这样在之后的测试训练过程中,不用反复运行一些重复多余的运算。例如: ad.py
这里写图片描述

关于Linux 系统远程登陆跑程序

想必很多人都是采用远程Linux系统来跑程序,有时候跑模型时间比较久,最悲哀的莫过于跑到最后几次迭代的时候电脑断网了。
解决的方法实际上很简单,使用nohup命令,让程序在后台运行: nohup python *.py
,之后你就可以做自己的事情,直到差不多了,再连接ssh进入工作目录 vim nohup.out 它会记录程序的输出,或者直接tail nohup.out看看迭代到第几次了。

阅读全文
0 0
原创粉丝点击