人们总是问我如何有效的成为一名数据科学家。我的经历是先成为一名软件工程师,然后读了数据科学相关的PhD (是在它变成热点之前)。在这篇文章里,基于我在这个领域的经验总结,给出了成为数据学家的首要步骤,目的是为了帮助那些想从纯软件工程领域转行到数据科学。
当我们就读PhD 课程的过程中,如果你已经明确要成为一名数据科学家,那么我并不建议使用传统的学习方法。当我们自主学习时,我们可以从互联网上找到大量可用的学习资料。事实上,我们可以比读一个PhD进步的更快,因为PhD项目有很多循规蹈矩的事情花费我们大量的精力。
这篇文章由五个相关步骤构成。尽管我列出了顺序,但是很多步骤可以同时进行。
第一步:从解决一个难题开始
尽管你对于数据科学领域的机器学习和数据方面一无所知,从解决一个难题开始非常重要。理想化的,你可以找一些自己感兴趣的东西,因为这样做起来会更有激情。
你可以用一些原有的难题,例如 Kaggle competition 或者 UCI datasets. 或者你也可以自己搜集数据分析,这样会更具挑战。
当时,我的兴趣点是 natural language processing 和 user modeling. 我的导师被授予一批经费对调查问卷进行情感分析,那也成为了我研究的方向。这个课题很快被着眼于研究作者和他们表达情感的方式之间的关系上面,同时也被应用于提高情感分析算法的准确性上面。为了达到研究目的,我收集了大量IMDb用户的文本数据。难点在于结合这些用户自己的评论去推断他们的等级,假设考虑作者的身份的方法比忽略其身份背景更有用。
第二步:跨越你知识的屏障
无论你选择了什么问题,你都会面对跨领域知识的学习,像维基百科,教材和网上课程都会是类似机器学习和数据,最好的基础教程。当你面对一个具体的难题时,阅读专业论文将会有助于你更好地理解眼下这个难题。
读PhD就是给了我宝贵的时间,例如用一个月时间去阅读文献。我阅读地200多页地论文中大部分都是有关情感分析的,那让我对于这个领域地成就有了全面的了解。然而,最有效的方法时停止阅读,开始动手解决问题。这也是我认为最好的建议:没有比亲自动手解决困难更有效的学习方法了。
第三步:弄“脏”你的手
当选好的课题和跨领域学习都已经基本完成,是时候做一个计划并且努力实现它。由于我的背景是软件工程师以及对于early collaborative filtering approaches to recommender systems的尝试,我的计划很大程度上就像 Leo Breiman 所说的算法模型文化。那就是:我将更多关注于开发处理搜集数据过程的建模算法。该方法更像是由直线思维的软件工程师提出来的,而不像是数学家或者数据学家的方法。
这个计划非常的简单:
• 复制结果,结果显示rating inference 模型是由很多目标群体提供的文本测试过的(i.e.,写了文本的作者的等级是我们用来预测的);outperform 模型有更多多样性的客户提供的文本测试过的。
• 用一种被联合筛选的方法,以目标客户提供的文本为基础,把许多单一作者的模型和infer rating 的模型就目标群体的共同点进行对比。
• 多种相似的实验方法基于训练和目标客户提供的大量文本中各种各样的限制条件。
• 重复这些方法直到结果出来。
这个计划的原理是:因为不同的人表达情绪的方法不同,而相似的人表达情绪的方法相似(e.g.,不同文化背景下描述事物的方法不同)。最主要的推动因素是 Pang 和 Lee 的发现-在同一目标试验足够的文本量的模型是最好的。
我当时用来实现这项计划的方式与今天我将怎么做截然不同。那是2009年,结合 Weka package 用Java 的主要模型看起来比我以前用的C/C++是显著的提高。我很大程度上依赖于学校网络去运行实验和写一大堆代码去处理试验逻辑,包括一些 Perl 脚本 for post-processing。 虽然结果很复杂,但是那样确实很奏效并且我得到了可以用来发表文章的结果。如果我当时做像今天这样的工作,我会把 Python用于所有的事情。 IPyhon Notebook 是跟踪实验过程很好的方法,以及Python packages 例如 pandas, scikit-learn, gensim, TextBlob, 等,都是对于数据科学入门简单而成熟的方法。
第四步:发表你的结果
制定一个发表结果的期限的确很有压力,但是它会有两个积极的效应。第一,把你的实验结果公布开来可以让你得到有价值的反馈。第二,艰难的截止日期可以有助于你制定切实的目标。你可以一直保持收获无数细小的进步,但是出版截止日期可以强制你停下来。
我的例子是,UMAP 2010 会议是我的截止日期,会议承诺的免费去夏威夷履行也称为了一个很好的激励因素。但是及时你没有精力和时间去发表一篇专业论文,你也应该给自己制定一个发表一些东西在博客或者论坛的截止时间;也或者是一个导师可以关注到你工作的报告。得到持续不断的反馈是进步的主要因素,所以应该尽早公布,经常公布。
第五步:完善你的结果并且继续前进
恭喜你!你已经把你的努力公之于众了。接下来应该干什么?你可以继续专注于同一个难题-探索更多的方法,加入更多的数据,改善限制条件,等。你也可以着眼于其他你感兴趣的难题。
我的例子是,因为我接下来要学习的东西与我第一篇论文的试验结果有关,我不得不再次回到那个议题。结果是我把所有的实验材料都组织整理好去支撑我的论文(写一篇论文是读PhD的首要任务)。如果我可以选择,我将不会那样做。我将追求如何有效地加强我的论文,例如用一个客户为主体,使用更多的切实全面有效地方法,和测试不同方法而不是仅仅去支持矢量机器。因此,我仍然在审视核心观点-在情感分析当中,客户的身份背景应该被考虑进去,这个方法直到今天仍然切实有效。但是我已经采取了自己地方法并且继续进行下去。
更多阅读: