社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

腾讯2018广告算法大赛思路解析(python)

大数据挖掘DT数据分析 • 7 年前 • 854 次点击  

 向AI转型的程序员都关注了这个号👇👇👇


大数据挖掘DT数据分析  公众号: datadw


赛题官网:algo.qq.com/person/mobile/landingPage?from=dsbryan

由于本次比赛我属于内部员工不得参赛,所以我尽量写一些思路解析,为大家提供一个baseline

    代码详见github:

https://github.com/YouChouNoBB/2018-tencent-ad-competition-baseline

1.首先处理4个G的用户特征

    因为数据太大,而且不是能直接pandas读取的格式,所以需要做格式转换,用dict的方式来初始化DataFrame

2.拼接用户特征,广告特征

   训练数据中负样本的标签给的是-1,需要先转成0,预测数据的标签置为-1,方便合并后区分数据集。将缺失值填充为 '-1' ,为什么不是数值的-1呢?因为在LabelEncoder的时候需要对数据排序,同时存在string和int类型是无法比较的。所以需要填充为string类型的 ‘-1’。

3.将单取值的离散特征使用稀疏方式one-hot

   为什么要先将数据划分为训练集和测试集呢,因为稀疏的数据是无法分片的,所以只能先划分数据,分别拼接稀疏特征。如果使用pd.get_dummy()来获取onehot特征,生成的数据是可以用来分片的,但是稠密存储是个致命弱点。

    github上很多人问我train_x=train[['creativeSize']] 这句是什么意思,其实creativeSize这个特征是数值特征,不需要进行特别的处理,如果想处理的话可以考虑pd.cut来分段离散化。另一个原因是把这个特征拿出来构造一个新的DataFrame,方便和后面生成的稀疏特征进行拼接。所以使用的是[[]]来取值获得一个DataFrame,而不是[]取值来或者一个Seris

4.将多取值的离散特征使用稀疏方式向量化

   这个操作估计很多同学之前没有见过,一般出现在自然语言处理中,计算TF-IDF,LDA等时候使用,但是同样可以用来生成一个稀疏向量,作为新的特征,同时可以一个特征生成多个特征,比单独的处理更加方便。

    如果65行报错:empty vocabulary; perhaps the documents only contain stop words  ,初始化可以使用CountVectorizer(token_pattern='(?u)\\b\\w+\\b')

5.线下测试

    使用train_test_split划分数据,这行注释掉了。

6.线上提交

    线上预测的时候,模型训练中early_stopping_rounds 这个参数没什么用,参数n_estimatorsxu需要根据线下测试来重新指定。我看到有些同学设置为10000取得了0.74的成绩。。。。

via https://blog.csdn.net/bryan__/article/details/79623239#comments


人工智能大数据与深度学习

搜索添加微信公众号:weic2c

长按图片,识别二维码,点关注



大数据挖掘DT数据分析

搜索添加微信公众号:datadw


教你机器学习,教你数据挖掘

长按图片,识别二维码,点关注


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/jrS22O3Ssb
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11839
 
854 次点击