Kaggle大师系列–笔记本大师Mobassir Hossen从软件工程师到数据科学的旅程
为了实现过渡到数据科学或成为大师的目标,除了要成为动态学习者之外,还需要投入大量的精力和自学知识。不论您的背景是什么。
不知道从哪里开始?
好吧,听到另一位Kaggle Grandmaster的声音怎么样?没错-我们很荣幸能在我们的Kaggle Grandmaster系列中与笔记本Grandmaster Mobassir Hossen一起展示这第三部分!
数据科学采访Mobassir Hossen
Mobassir是Kaggle排名为#44的Kaggle笔记本电脑大师。他还是Kaggle讨论大师和Kaggle竞赛专家。此外,他还获得了达芙奥迪国际大学(DIU)的软件工程学位,并且目前在Markopolo.ai担任数据科学家。
从软件工程到数据科学的旅程?这是很多人希望了解的更多信息!
在这次采访中,我们涵盖了一系列主题,包括:
Mobassir Hossen从软件工程师到数据科学的过渡
Mobassir的NLP旅程及其对NLP爱好者的建议
莫瓦西尔(Mobassir)从头开始成为大师级的Kaggle旅程
因此,请接受这次采访,并全力以赴!
Mobassir Hossen从软件工程到数据科学的过渡
software_engineering_machine_learning
Analytics Vidhya(AV):您在软件工程专业获得了学士学位,那么您是如何从SWE过渡到数据科学的呢?
Mobassir Hossen(MH):软件工程师有许多不同的领域,而我对其中的许多领域感到着迷。因此,我在软件安全性,物联网,嵌入式系统设计等方面投入了大量时间。我正从这样的一艘船跳到另一艘船,无法为自己的职业选择固定的领域。
主要问题是“我感到对所有这些部门的热爱,因此我很难为他们的职业选择一个部门”。有一天,在阅读有关“物联网(IoT)”的论文时,我发现了一个关于项目的想法,我认为如果能够实现这一想法将很酷。我的想法是设计一个可以检测房间中一氧化碳(CO)百分比的系统,因为我在一些论文中发现,如果一氧化碳百分比超过某个限制阈值,那么它将杀死住在该房间中的人。
因此,我开始寻找一种可以尝试解决此问题的解决方案。然后我在某处听到有人在谈论一种称为SVM(支持向量机)的算法,该算法在使用Arduino从传感器获取数据后可用于对CO进行分类。我在Google上的下一个搜索是“什么是SVM?”。Google告诉我这是一种机器学习算法。那就是我开始了解机器学习的时候。当时我在三年级的第一学期。我开始参加机器学习课程,以理解诸如SVM之类的算法来解决我脑海中的IoT问题,从某种意义上说,我感到非常沉迷于机器学习,并开始投入太多时间来学习与
机器学习相关的知识。这就是我放弃物联网项目并选择数据科学作为我的职业的方式。
AV:由于软件工程师已经知道要编程,因此为了进行这种过渡,他们还应该重点关注什么?
MH:软件工程师知道软件1.0所需的编程,而数据科学则需要软件2.0的编程技能。在软件工程方面,我们掌握了统计学和数学知识,这对我的过渡很有帮助。除此之外,我认为以下几点在您从SWE到DS的过渡中也起作用:
适应性:与软件工程相比,数据科学需要不同的编码技能和分析技能,并且要实现所有这些,我们需要像在本科期间解决软件1.0相关问题那样大量地“练习”这些新技能。
动态学习者:我认为大多数优秀的软件工程师已经具备了这一技能,并且该技能也已经在数据科学领域有所帮助。您将不得不进行大量的Google搜索,阅读SOTA论文并及时了解最新作品。在数据科学领域,很多人不这样做,但是我认为这是非常重要的技能。
我见过很多顶尖的软件工程师,他们不想学习数据科学,因为这个领域正在日新月异,这就是为什么我认为“我们需要成为一个动态学习者”。我的意思是,这个DS领域正在变化每天,我们都需要了解最新的研究动态,并且许多软件工程师都不想这样做,因此他们不决定选择DS。
Mobassir对医疗保健的兴趣和经验
数据科学访谈Mobassir Hossen-医疗保健
AV:我注意到您对医疗保健初创公司感兴趣。当您在医疗保健初创企业中寻找机器学习用例时,您要寻找什么?
MH:当我在医疗保健初创企业中寻找机器学习用例时,我特别注意以下几点:
以“挽救生命”为目标的特定疾病的早期发现和预测
诸如气胸检测之类的许多疾病确实非常具有挑战性,即使具有多年经验的放射线医师也可能会犯错,所以我计划设计一种工具,通过提供智能的数据驱动解决方案来协助放射线医师/医生
我正在寻找一种方法来协助医生并减少“错误的治疗”或错误的阴性,错误的阳性评分,以便我们可以挽救生命,很多人每天由于错误的治疗而死亡(例如,在患者早期阶段将其标记为安全的) /她的疾病,但后来却要丧命,因为医生像我们所有人一样犯了错误)
AV:您能提出一些对医疗保健感兴趣的人可以参加的良好数据集或竞赛吗?
MH:这取决于。如果有人愿意解决表格数据问题,那么:
乳腺癌威斯康星州(诊断)数据集
心脏病UCI
行动机制(MoA)预测
宫颈癌风险分类
利物浦大学–离子转换预测等
如果有人愿意解决与放射学/计算机视觉相关的问题,则:
Nih胸部X光片
RSNA肺炎检测挑战
SIIM-ACR气胸分割术等
为了协助皮肤科医生,可以从“ SIIM-ISIC黑色素瘤分类”开始
此外,英特尔和MobileODT宫颈癌筛查和APTOS 2019失明检测也是不错的数据集。
实际上,这取决于个人的兴趣,存在很多医疗数据问题。您需要问自己“您最想解决哪种医学问题?” 您可以从那里开始。正如我所说的,这是一个“动态过程”。您可以从一个问题开始,然后意识到“嗯,我对这个问题不太了解,也不知道如何通过数据驱动的方法解决这个问题,但是现在我很感兴趣”。您可以从零知识开始最终还是成为职业选手。您几乎拥有所需的所有资源。您需要做的只是花费大量时间在Google上搜寻,阅读论文,笔记本,书籍等。
Mobassir的成为大师的Kaggle旅程
卡格勒
AV:您是孟加拉国的第一位Kaggle笔记本电脑大师,这一定会让您感到非常愉快。您在此旅程中面临什么挑战?
MH:我仍然记得这一切是如何开始的。当我还是3年级本科生时,我花了77天的时间完成了Andrew Ng的“机器学习”课程课程。我对机器学习沉迷不已,以至于我放弃了大学测验,演示,考试等,即使那时我的CGPA很高。
我为什么要这么做?这些天他们称之为“激情”??
当我第一次开始ML之旅时,当时在我的大学里,每个CS学生都在忙于解决竞争性编程问题,但是我发现机器学习非常有趣。所以我想学习ML,但是我周围没有人甚至不具备ML的基本知识。因此,周围没有人可以很好地指导我进行机器学习。
在进入ML的最初几天,我收到的与职业相关的关键问题的答案非常令人沮丧。
我的问题是:“我对机器学习感兴趣。我想成为一名数据科学家。这是错误的想法/决定吗?”
答案1:“ Mobassir,机器学习现在是最热门的话题,但是如果10年后某些其他技术取代机器学习会怎样呢?你会怎么做?代码强制竞争也是如此”
答案2:“在孟加拉国,从事机器学习问题的公司很少。您不太可能在这里找到具有这种技能的工作,因此请学习Web / android框架并仅定期解决竞争性问题。”
答案3:“如果您不具备大量的数学/统计知识,那么就不要去机器学习”
这些答复确实让我感到担心,并引发了很多自我怀疑。但是无论如何,我两年前在kaggle签约,并成为一个社区的一部分,社区如此多元且相互协作,以至于再也没有回头路了。今天,我为自己拒绝所有周围人的指导而遵循我对“我的激情”的指导感到非常自豪。
AV:我确定您必须参加讨论和竞赛,但是您最终是如何进入Kaggle的Notebook领域的,甚至获得了Grandmaster头衔?
MH:当我开始数据科学之旅时,我已经有一个非常繁忙的学习日程。因此,我不能花太多时间在Kaggle上。我从“参与讨论”开始,因为我来自SWE背景,这有助于我快速学习。我在论坛上与人们合作,后来其中一些人成为我的好伙伴,我仍然与他们在Kaggle竞争。
正如我所说,这一领域要求人们具有“动态学习态度”。我没有特殊才能,但是我意识到我有一种“动态学习态度”,这就是为什么在经历了如此多的波动之后,我决定在DS领域建立自己的职业,这导致我在内核/笔记本部分投入了大量时间。随后是Kaggle的GrandMaster头衔。我可以向您保证,我写过的笔记本至少有70%“我从零知识开始  ,做了很多Google搜索并阅读了其他人的解决方案,讨论,当我写完这些内核的最后几行时,我已经知道了一些”这就是为什么我认为“保持动态很重要,尤其是对于DS领域而言”。
AV:在创建笔记本时,您是否遵循某些步骤?可以分享吗?
MH:是的,我过去从经验丰富的Kagglers中学到了一些技术,并且我大部分时间都在尝试应用这些技术。它们如下:
不要打印太多的日志信息,如果某个特定的代码单元正在打印太多的日志信息,那么很可能有很多人不会完全阅读您的笔记本,他们只是不喜欢“永远滚动”
人们来自不同背景的DS领域,并不是每个人都有很好的编码背景,所以我尝试用视觉图形或文字来解释特定代码块在做什么,以便每个人都能理解。我看到很多人会编写漂亮的代码,但不会描述他/她的代码在做什么。他们只是想向世界展示“他们可以编写漂亮的代码”
在创建笔记本时,我检查了几乎所有相关的笔记本,并尝试找出差距。如果我发现差距或发现“没有人尝试过”的东西,那么我只是尝试将其实现并带入我的笔记本,这更像是(研发过程)
我总是提供我从其他地方获取的内容和代码的参考,因此我的作品总是有一个参考部分,但是我看到很多人不这样做,有时他们只会更改变量名,函数名等,并且假装好像这是他/她的工作,这是非常糟糕的做法,我在创建笔记本时请牢记这一点
在数据科学问题中,“缺乏领域知识”是一个大问题,每个数据问题都要求不同的领域知识。因此,有时我会在笔记本中尝试共享特定数据问题的领域知识,并通过“搜索”来学习它们,并且共享它们意味着为他人节省了大量时间?
我尝试编写简洁的代码,但有时会陷入困境
AV:如果有人从头开始,并且想要创建行业就绪型笔记本,您能分享他们应该牢记的五个要点吗?
MH:标记和注释中每个段的清晰文档,描述了为什么需要功能而不是功能
编写可重用的组件/避免代码重复,并始终使用描述性变量名
没有使笔记本超长/最好不要创建可重用组件的本地库并在笔记本中调用它们。将函数/例程转换并保存,将类转换为.py文件,然后从本地模块调用它们
为了不仅能够将笔记本用于快速原型设计,而且还能够长期使用,必须记录某些过程事件,以便例如可以更轻松地诊断错误并监视整个过程。
练习正确的单元测试
题库