开发者社区> 问答> 正文

小白PythonPandasTensorflow实现

0. 结果
F1:1.65 Accuracy: 0.01



代码请见github:github.com/jady3356/MachineLearning/tree/master/Tianchi/fresh_offline
(注:几乎每行都有注释,但是不能直接跑,注释掉了很多特征提取的代码)
这样的结果几乎可以用excel过滤来得到,由于我是ML,数据挖掘,python都是业余小白,仅仅是做练习用,请轻拍~


1. 动机


看了Ng老师的视频,做了练习拿了证书,看了看Tensorflow的基础,玩了玩阿里的PI,也拿别人的代码跑了一些预测。总感觉没有属于自己的入手的实际的toy project。突然看到有个天池大赛,里面有新人离线赛。感觉可以练练手。

2. 初探


第一感觉挺简单的,这种推荐系统都是ML人不屑于搞的东东,推荐算法也算是ML的一个应用奇葩吧。但是,我拿到这个题目的时候根本没想清楚是解决一个什么问题,应该如何建模,只知道应该是一个逻辑回归的问题。然后一股脑的把user_id, item_id, geo_hash, time, item_cat,都作为特征,把behaviro_type作为label. 当然还花了大力气把time和geo_hash数字化,做到最后却不知道怎么预测。。。渐渐发现自己根本没有入门,要学的东西太多了。如何处理csv, 如何做特征工程,倒是是要解决什么问题,怎么建立模型...统统都是小白。

3. 入门


(1) Pandas
pd貌似是ML特征处理比较流行的工具,看到大师貌似都用spark, sql. 完全不懂, 感觉pd比较容易上手。主要用到的功能有,读写csv, 数据类型转换,去重, 统计,过滤,groupby, merge, join...要提前的特征并不复杂,但是基本上要用到pd常用的功能。我没有专门去学习每一个方法,都是每要实现一点就去百度,很多方法用的很多遍都还是不理解。不过最后各个问题都有解决办法了。过程是艰难的,曾经几度想放弃。
(2)模型构建
刚开始,自己一直想不明白怎么建模。百度了一圈,主要参考三个大神的帖子:
oilbeater.com/%E9%98%BF%E9%87%8C%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%AF%94%E8%B5%9B/2014/04/04/the-bigdata-race-3.html
blog.csdn.net/wy250229163/article/details/53046006
blog.csdn.net/Snoopy_Yuan/article/details/75105724
首先,用1216-1217的特征和1218是否购买(label)构成了一个训练模型。然后把1217-1218的相同的特征代入训练好的模型(各种feature的weight)来预测1219是否购买。一种简单的建模就是:
index                     features        label
user_id, item_id     feature          1/0
index可以理解为总的输入数据的index, 类似与图像识别的每张图片的index, 不能算作特征。
feature就是购买行为,时间与user_id, item_id之前的对应的数据中提取出来的列。简单理解就是通过大量的用户-商品与特征的关系的模型。
比如,用户在1216和1217点击了且加了购物车,那么1218购买的概率就很大。表现在逻辑回归的角度来看就是点击和加购物车的weight就会很大,其他收藏,购买的weight很小,甚至为负的,因为买过的人就很可能不会再买了。

4. 总结


(1) 特征还可以扩充到100维,成绩应该还可以提高,有时间再研究;
(2) 特征工程占80%的工作量一点都不假;
(3) 最后提交结果一直是0,百度了一下用notepad++打开对比了样列,发现user_id和item_id保存成了float, 弄了好几天还以为是模型或者格式不对,超囧~
(4) 大神貌似都用spark+sklearn,有空应该再学习。
(5)tensorflow建的模型或者参数初始化有点问题,貌似有梯度消失的问题,训练到30次左右,accuracy就不变了,而且不稳定,有时候很差;

展开
收起
jady3356 2018-05-15 09:52:06 3853 0
1 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
中文:即学即用的Pandas入门与时间序列分析 立即下载
Python系列直播第一讲——Python中的一切皆对象 立即下载