文档章节

2017 知乎看山杯机器学习挑战赛经验总结(一)

q
 qinhui99
发布于 2017/07/31 09:09
字数 1152
阅读 172
收藏 1
点赞 1
评论 0

 

2017 知乎看山杯机器学习挑战赛是一个文本多标签预测分类的比赛,属于NLP(自然语言处理)的范畴。它提供了300万训练数据,24万左右的线上预测数据。需要你从1999个话题分类标签里,为每个问题抽取5个最相关的话题。为了防作弊和隐私安全考虑,提供的文本数据都做了特殊转换和词向量化。这些处理都为比赛带来了一定的技术门槛。知乎比赛传送门:https://biendata.com/competition/zhihu/leaderboard/

 

对于我这样的NLP的初学者(参赛前只做过几个NLP的例子程序)来说,刚开始被这些特殊处理过的文本难住了。以往的经验都是拿到中文文本,先使用结巴分词这样的工具去除停用词,然后分词抽取。这样得到的内容你想怎么处理都方便。现在这块没掉了,看到像'w1','w2'这样的数据,真地头疼。说实话,国内的比赛很缺乏对初学者的照顾,不像国外的KAGGLE比赛,经常有前辈给初学者提供一些如何开始比赛的程序或者建议,让初学者也能顺利地完成比赛。所以,我看到知乎比赛有将近900个参赛队伍,结果只有200个左右的队伍提交了成果。我估计有很多初学者都被技术门槛卡住了,没法做下去。

 

因为这个比赛是我第一次参加机器学习比赛,所以我坚持了下来。在尝试了多种不同的工具和模型后,得到了一些东西,并记录下来。

 

比赛第一阶段:

文本未经处理,直接送模型处理。例如,直接把’w1,w2’这样的文本信息送到RNN或者MLP进行训练处理。这样处理的结果,test准确率只有千分之4到百分之4.  这就是比赛排行榜上末尾看到结果。就因为这样,很多初学者放弃了比赛,结果太难堪了。

 

第二阶段:

 把’w1,w2’这样的文本信息分别转成256维的词向量,然后把词向量累加再求平均值。经过词向量平均值处理后,再送到MLP、RNN、 SVM等模型进行处理,test准确率在13%到23%之间。其中,linear svm准确率最高,泛化能力最好。

 

第三阶段:

把’w1,w2’这样的文本信息分别转成256维的词向量后不再求平均值,而是用词向量依次排列组成句子,再送到双向LSTM+GRU模型处理,test准确率提高到了27.3%。这个模型的缺点是消耗大量的GPU内存,只能用词向量组成40个词左右进行训练,否则,6G的显存都不够用。

使用投票法则,把前面只有百分之20几准确率的十几个模型集成起来,一起预测。线上得分刚好超过30%。

 

第四阶段:

听一些搞NLP的前辈们说想要拿高分,只有用ATTENTION模式。据说有人用ATTENTION模式训练出单模型40%准确率的。

我水平有限,搞不出能用的ATTENTION模型,只好参考别人的代码。参考开源的https://github.com/ilivans/tf-rnn-attention

 

把’w1,w2,w11’这样的文本信息做处理,去掉前面的’w’字符,变成’1,2,11’这样的数字,然后送到RNN+ATTENTION模型处理。这个模型得到的test准确率在30.6%左右。

再次用投票集成的办法,得到了线上成绩32%左右的结果。

 

这次比赛,我尝试过的机器学习工具包括:sklearn、mxnet、tensorflow、keras、xgboost、lightgbm等等。感觉最容易使用和最有帮助的是sklearn和keras,最难用的是tensorflow。用tensorflow实现模型,评估模型和预测都非常麻烦,都要自己写,缺乏效率。 Mxnet写的程序性能很好,但是真地太缺乏例子和文档了,我用它写不出来RNN+ATTENTION模型,浪费了。

 

知乎比赛还有15天就结束了,我也不打算再提交了。等到比赛结束了,看看有没有大神开源他们的方案。如果有的话,要好好看看他们是怎么做的。我很好奇能达到42%准确率的方案是怎么搞出来的。

 

© 著作权归作者所有

共有 人打赏支持
q
粉丝 63
博文 72
码字总数 32863
作品 0
深圳
程序员
高手问答 | 聊聊饱受 Pythoner 好评的深度学习框架 PyTorch

OSCHINA 本期高手问答(1 月 10 日 - 1 月 16 日)我们请来了@tmux 陈云为大家解答关于深度学习框架 PyTorch 方面的问题。 陈云,Python 程序员、Linux 爱好者和 PyTorch 源码贡献者。主要研究...

局长 ⋅ 01/09 ⋅ 21

有关知识表示的一些形而上的思考

今天在知乎盐沙龙知乎盐沙龙:基于人工智能的自然语言处理 暨知乎看山杯机器学习大赛颁奖仪式上,以《知识表示与自然语言理解:通用人工智能的必由之路》为题,做了一个简短的分享,主要关注...

王咏刚 ⋅ 2017/09/02 ⋅ 0

2017知乎看山杯总结(多标签文本分类)

关于比赛详情,请戳:2017 知乎看山杯机器学习挑战赛 代码:https://github.com/yongyehuang/zhihu-text-classification 基于:python 2.7, TensorFlow 1.2.1 任务描述:参赛者需要根据知乎...

jerr__y ⋅ 2017/08/31 ⋅ 0

天池大数据竞赛历次资料集锦(持续更新中)

作为天池老选手,一直想着要把收集的天池平台上举办的历次大数据竞赛的决赛答辩资料以及开源的代码等收集起来作为集锦,贡献给各位大数据竞赛特别是天池平台的选手和爱好者。怎奈一直琐事烦身...

金陵书生 ⋅ 2017/02/04 ⋅ 0

谷歌第二届大规模视频理解挑战赛开赛,7 月底截止报名

雷锋网(公众号:雷锋网) AI 研习社按,谷歌第二届 YouTube-8M 大规模视频理解挑战赛开赛啦,除了这次比赛,他们还将在 ECCV 2018 上举办视频理解研讨会,欢迎大家踊跃参赛,投递论文。 雷锋网...

思颖 ⋅ 06/06 ⋅ 0

被出轨的程序员

今天惊闻一篇文章《为什么程序员是出轨率最高的群体(支持双十一程序员脱单专场)》。本身言论自由,总是有傻逼会发出傻逼的言论,不过文章满篇胡言,像我这种还没女朋友的就被出轨了感觉实在生...

tiny_whale ⋅ 2017/12/12 ⋅ 0

GeekPwn大赛百万悬赏AI黑客 CAAD攻防赛聚焦大热对抗样本

  在人类的不懈努力下,AI 越来越像人,连犯的错误都像。   过去几年中,被喻为“新电力”的人工智能已经走出科幻小说,成为新一代”网红“。      这里称其“网红”,并不是想贬低那...

遇见人工智能 ⋅ 05/03 ⋅ 0

2018汤尤杯分析和预测 冠军会花落谁家?

2018年的汤尤杯,本月将在泰国曼谷举行。2016年中国汤杯失利,尤杯已经三连冠。今年的形式很严峻,我们来分析和预测下 汤姆斯杯 传统豪强,包括亚洲的中国、日本、韩国、印尼、马来西亚,欧洲...

小特羽毛球 ⋅ 05/06 ⋅ 0

2017最后一天

Hey大家好,虽然好久没更新了,但我的确还“活着”哈哈哈。 转眼2017年就过去了,这一年我毕业了,入职了某公司,圆梦成功,成为一名机器学习算法工程师。 之前看知乎总结,今年写了8万字,涨...

Mr.张 ⋅ 2017/12/31 ⋅ 0

CTF入门指南(0基础)

ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows、linux、小型机等 misc 杂项,隐写,数据还原,脑洞、社会工程、与信...

angel_kitty ⋅ 2017/04/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部