热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

诺道医学算法工程师王则远:2017全球高校学生数据科学大赛(DSG)经验分享

雷锋网(公众号:雷锋网)AI科技评论消息,由法国萨克雷大学主办的2017全球高校学生数据科学大赛(DataScienceGame2017)近日落下帷幕。在初赛上,来自中国的Medi

诺道医学算法工程师王则远:2017全球高校学生数据科学大赛(DSG)经验分享

雷锋网(公众号:雷锋网) AI科技评论消息,由法国萨克雷大学主办的2017全球高校学生数据科学大赛(Data Science Game 2017)近日落下帷幕。在初赛上,来自中国的Medicinovo Inc.(诺道医学)团队一路过关斩将,最终获得全球第八、全美第一的佳绩;决赛中酣战20多个小时,Medicinovo Inc.(诺道医学)团队成功挤进全球前20强。

雷锋网 AI科技评论第一时间联系到团队成员王则远,就他在参赛过程中的一些诀窍和经验展开了探讨。

他们团队共有四名成员,大家都为美国史蒂文森理工大学商业智能与分析专业(数据科学方向)硕士生,其他三名队员分别是张仁宇、刘畅、张璐。

在比赛过程中,王则远主要负责确定初步的算法思路以及数据的一些处理方式,另外的同学主要负责编写爬虫,实现并行运算,处理缺失值和变量等。大家在比赛中分工合作,并结合自己的经验进行了充分探讨。

诺道医学算法工程师王则远:2017全球高校学生数据科学大赛(DSG)经验分享

上图从左至右:张仁宇,张璐,王则远,刘畅

试题讨论

据王则远介绍,在初赛中,主办方为选手提供了Deezer上用户一个月的听歌历史数据,通过分析历史数据,他们需要预测用户是否会喜欢Deezer推荐的歌曲。这个问题被归纳为二分类问题,与广告点击率、用户的购买行为预测等系统类似。

“目前业界对这类问题的关注很多,例如腾讯的社交广告算法大赛,阿里云的广告点击率预估算法等。不过音乐跟前面提到的广告算法其实还是有一些差别的,很典型的一点就是音乐需要考虑的维度更多,比如说歌曲特性、歌手特性,甚至是语言,另外还有国家、地区的特性,用户的喜好等。这次比赛提供的数据集就覆盖了欧洲、美洲、非洲以及一些西班牙语地区等。”

音乐推荐系统中需要关注的点有这么多,那么Medicinovo Inc.(诺道医学)团队在这次比赛中是如何考虑的呢?

在与雷锋网 AI科技评论的交流中,王则远表示,总的来说,这次比赛需要考虑的特性可以归为用户、歌曲和歌手这三个大的维度。此外他也向记者阐述了这次比赛与广告算法、用户购买推荐系统具体的不同点:

音乐需要考虑到歌手的特性,而广告算法需要考虑的可能只是广告特性和用户特性,大家不用考虑广告制作人的特性。另外用户购买行为推荐系统也是一样,并不会说喜欢某个人做的推荐系统算法,就会喜欢这个人做的算法推荐出来的东西。

比赛过程

主办方提供的基础数据集有30多个变量,原始数据有500多万条,这些数据大概涉及到3万多个用户。除了这些基础数据,主办方还另外公布了一个API链接,里面涉及到音乐网站上相对而言不那么重要的数据。

“参赛选手需要编写爬虫下载这些数据,然后再把所有的数据结合起来,得到整体数据集。”王则远说道。

拿到整体数据集之后,他们就开始进行一系列预处理操作了,包括缺失值的检验、变量间的相互独立性、偏斜性,还有一些异常值的检测、降维等。

他们团队在降维过程中具体用到什么算法?有什么经验可以分享呢?

王则远对AI科技评论讲解到,

“这次比赛用的降维算法主要是PCA和高斯映射。在进行降维时有一个小诀窍,在把各个非连续变量拟合成连续变量的时候,不要只用PC拟合出主成分,可以试一试把主成分放回到原有数据当中,比如原来有一百个变量,拟合出一个主成分,将主成分再放回数据集,变成101个变量,然后再进行结果的预测,可能会发现意想不到的效果。”

数据预处理之后呢?王则远表示,他们把所有数据结合起来之后,只得到了40个左右的变量。“用这些变量肯定没办法跟其他选手进行PK,所以需要利用变量工程挖掘出一些新的深度信息。”

他进一步阐述到,在这次比赛当中,变量工程主要是提取歌曲、歌手特性等。“例如我们需要对歌手名字进行解析,去看这个名字是属于什么语言,然后再把歌手与国家结合起来,挖掘出一些更深度的特性。歌手的性别、风格,在哪段时间最火,这些也要考虑到。”

歌手风格是如何提取的呢?在推荐系统中能起到什么作用?王则远说道:

歌手可能会分为乡村、民谣、摇滚等风格,但我们无法提取出风格,不过可以提取用户在不同的时间段(如上午、下午、晚上)分别喜欢听什么歌,然后再把歌手对应起来。在早上上班或是精力比较旺盛的时候,大家可能会想听一听摇滚风的歌手,而在晚上比较累的时候,大家可能就会想听一些舒缓的歌,就可以为大家推荐舒缓曲风的歌手。

谈完歌手之后,他也详述了在歌曲的处理中所使用的一些方法。

“其实歌曲和歌手的特性很接近,不过歌曲会存在专辑和播放时间的问题。歌曲的时长分布基本属于正态分布曲线,大致集中在一到三分钟之间。对于歌曲的时长,我们会设定一个阈值,比赛当中设定的是小于30秒和大于十分钟,小于30秒的歌曲全部会归为30秒,大于十分钟的全部归为十分钟。”

在变量工程中,他们还发现了哪些有意思的事情呢?

王则远表示,在这次比赛中,他们发现把歌曲在专辑中的位置跟歌曲特性结合起来,对识别主打歌作用很大。而这也带来了新的思考:这些特性的发现,都需要大家不断去想,不断去尝试。

另外,他也提到实验中这一阶段的一些小诀窍:

“做变量工程的时候,需要分开去试。我们在实验中会先提取一些深度特性,然后是一次加三个新特征,再看删去哪一个精度会上涨,通过这种方式一点点去删除,这样才形成最后的那套数据集。”

变量工程是实验中需要重点考虑的一环,除了变量工程,还有哪些是需要重点考虑到的呢?

据AI科技评论了解,这次比赛历时只有一个多月,远远短于Kaggle上的大多数比赛,对于这种时间紧、任务重的比赛,所以也需要考虑到速度。

王则远表示,他们试过在Kaggle比赛中使用频率较高的XGboost,但要想跑完数据集需要30个小时左右,这样会对后续的调参影响很大,而LightGBM能把时间压缩到三个小时,因此在模型训练阶段最终使用的是LightGBM。另外,在Stacking阶段他们也选了一些速度比较快的算法,这样能相对快速去进行调参。他同时也提到一点,在选取Stacking算法的时候也需要考虑到数据集的大小以及算法的多样性。

除了对模型和算法的考虑,他们还集合大家所有的计算资源,搭建了一个局域并行环境。

“在搭建小型局域网络之后,相当于把数据分拆成四个部分,然后分别放到四台电脑上去。这样去跑模型会稍微快一点。”他对AI科技评论这样说道。

除了前面提到的这些工作,像这种大量数据集,最容易遇见的问题肯定是过拟合了。那么,为了防止过拟合,他们做了哪些工作呢?

“调参的目的是为了防止过拟合。对于过拟合问题的话,我们需要进行正则化。加正则项之后,我们每次不会考虑所有的样本,可能会抽取80%进行考虑。在实验中的调参阶段,我们先调的是subsample和d-level这两个参数,最后调学习率。”

他进一步说道,“另外还有树的深度和广度。像这种比赛中树的深度一般是在3、4、5这三个数之间,广度基本上默认的就OK。”

此外,他表示,为了防止过拟合,在实验中也需要跑交叉验证。这次实验他们选择的是5-fold交叉验证,在数据集中,每次抽20%,连抽五份,抽出来部分的当测试集,剩下四个当训练集。

比赛中碰到的问题

在这次比赛中,会碰到哪些比较罕见的情况呢?他们又是怎么处理的?

王则远对AI科技评论说道,在这次比赛的测试集中,一个用户只放了一个ID,不像平常是随机抽取测试集的,这样的话ID有可能有重复,因此很容易对模型成大量干扰,产生过拟合。

“这种情况我们见得比较少,这可能是符合真实世界的一种情形,我们也试了很多种特征工程方法。最开始原始数据里没有排行榜,比如歌曲的年度推荐排行榜或者月度推荐排行榜,但是里面有这首歌被听的时间,那我们就可以提取出时间信息做出排行榜。基本上比赛的最后阶段我们都在做特征工程,也试了很多方法,才一点一点把问题攻克掉。”

他也提到,在这种情况出现的时候,他们当时还发现了一个神奇变量——歌曲月度推荐排行榜。加入这个变量之后,影响非常大,实验的精度提高了很多。

对大家的建议

在采访的最后,他也分享了他的一些比赛经验:

  • 首先来说,类似这种比赛的数据集,其实70%的努力都是在变量工程上。如果变量工程做得好,最后的结果一定不会很差,它的重要性要远比建立一个好的模型要高,所以建议大家把精力大部分都要放在变量工程上面。

如何做好变量工程呢?AI科技评论对他提出了这个问题。

这个其实也没有定式,是要充满想象力一些,提取出变量的深度特性。我们现在所有的模型都是在关注列,但要以行为基准去进行变量工程的操作。在这个过程中,还是以group by为主,把行进行拟合变换。这是一种很好的方式。另外还有现在的降维算法,大家也要多多考虑。

  • 另外,这个比赛的数据是非连续变量,非连续变量与连续变量相比,相当于是损失了一部分信息,难度会稍微大一些。它的维度很高,对于模型的判别存在很大的干扰,噪音数据的量可能稍微大一些,降维的时候也比较费劲。总的来说非连续变量存在很多问题,提取深度特征的时候也比较难。现在市面上有很多的方法,大家需要多多关注,在非连续变量有着天生缺陷的情况下,通过特征工程如何把它拟合成一个新的连续变量去处理。

  • 最后,现在国内的比赛也在慢慢变多,但我觉得大家对这种类型的比赛重视程度稍微差一些,这个比赛其实跟真实世界很像。大家后续可以多关注一下这类比赛,多多参与,多多积累经验。

比赛扩展

除了对比赛的一些经验分享,他也对比赛和现在的实际情况提出了自己的看法:

这次比赛中遇到的问题确实是现在实际应用当中的一个痛点,包括各大公司做的比赛也都专注在这个方面,进行用户个性化推荐系统的定制。但推荐系统现在整体的精度不是那么好,现在市面上一些音乐系统可以优化的地方还有很多,例如在真实世界的情况下,如何做好间接性推荐,这也是对推荐精度存在着影响的一个因素。

关于诺道医学:诺道医学是一家医疗人工智能领域的创业企业,开发的人工智能辅助诊断产品覆盖影像、心血管病、消化系统疾病、神经病学、临床药学等多个领域。


诺道医学算法工程师王则远:2017全球高校学生数据科学大赛(DSG)经验分享


推荐阅读
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 在 iOS 设备上使用系统 API 进行视图截图时,有时会遇到图片拼接处出现白边的问题。 ... [详细]
  • 本文介绍了实现人工智能的多种方法,并重点探讨了当前最热门的技术——通过深度学习训练神经网络。文章通过具体实例详细解释了神经网络的基本原理及其应用。 ... [详细]
  • PHP 使用 Cookie 进行访问授权的方法
    本文介绍了如何使用 PHP 和 Cookie 实现访问授权,包括表单验证、数据库查询和会话管理等关键步骤。 ... [详细]
author-avatar
灬哭着说再见灬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有