热门标签 | 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)经验分享


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
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社区 版权所有