学习数据科学

在我之前的几篇文章中,我写了关于数据科学和机器学习的内容。如果我的热情在我的写作中还不够明显,那么让我直白地说:自从我上次遇到一项如此有可能彻底改变我们所处世界的技术以来,已经过了很长时间。

想想看:您可以免费下载、安装和使用开源数据科学库。您可以免费下载几乎所有您能想到的主题的丰富数据集。您可以分析这些数据,将其发布在博客上,并获得来自政府和公司的反馈。

我记得在高中时学到,言论自由和新闻自由之间的区别在于并非每个人都拥有印刷机。互联网不仅为每个人提供了相当于印刷机的东西,而且还赋予我们进行分析的能力,而这种分析直到最近还 только 供政府和富裕公司独享。

在过去一年中,我越来越多地听说数据科学是 21 世纪最性感的职业,也是需求量最大的职业之一。不用说,这两件事构成了一个非常有吸引力的组合!难怪我看到越来越多的公司邀请我就这个主题进行教学。

结果是,您——是的,您,亲爱的读者——应该在未来的几个月、几周和几年里花时间学习尽可能多关于数据科学的知识。这并不是因为您会换工作并成为一名数据科学家。相反,这是因为每个人都将成为数据科学家。无论您做什么工作,您都会做得更好,因为您将能够使用数据科学工具来分析过去的表现并根据其做出预测。

当我开始开发 Web 应用程序时,拥有一个数据库团队来创建表和查询是常态。如今,尽管肯定有一些地方有专职数据库人员,但假设是每个开发人员至少对关系型(甚至 NoSQL)数据库以及如何使用它们有初步的了解。正如了解数据库的开发人员比不了解数据库的开发人员更强大一样,计算机领域中了解数据科学的人比不了解数据科学的人更强大。

不过,在这方面有一个坏消息。如果您认为编程和 Web 领域的技术变革步伐飞快,那么您还没见过什么!数据科学的世界——工具、算法、应用程序——正以惊人的速度发展。好消息是每个人都在努力跟上,这意味着如果您发现自己不知所措,那么您可能处在一个非常好的群体中。只需确保不断前进,努力增加您对数据科学家使用的理论、算法、技术和软件的理解。

您应该从哪里开始?在本文中,我描述了一些我在深入数据科学领域时发现最有帮助的资源。

统计学

这是不可避免的。如果您要从事数据科学,您将需要学习一些统计学知识。我在研究生院学习了一年,然后作为我的论文的一部分做了一些分析,但我有很多不了解的地方,所以我一直在努力提高我的理解。哪怕一点点帮助也好!无论您只是学习贝叶斯定理、弄清楚线性回归的工作原理,还是学习如何修改数据以最大限度地减少误差,统计学都是其中至关重要的部分。

那么,您从哪里开始呢?在 edX、Udemy 和 Coursera 上有许多课程,通常是免费的或成本非常低廉的。斯坦福大学教授吴恩达通过 Coursera 教授的机器学习入门课程尤其受欢迎,其中包括您需要的基本统计知识。如果您正在寻找更硬核的东西,我绝对推荐 LazyProgrammer 的 Udemy 课程。

关于该主题的两本优秀标准教科书是 统计学习导论(作者:James、Witten、Hastie 和 Tibshirani)和 统计学习要素(作者:Hastie、Tibshirani 和 Friedman)。这两本书都由 Springer 出版,并且都以 PDF 格式提供,可免费下载。您可能应该下载并阅读这些书;随着时间的推移,它们描述的思想和方法将帮助您推理您正在做的事情。

我还想推荐 Jason Brownlee 在他的 网站上提供的各种书籍和课程。他的写作清晰明了,并且他试图非常实际地展示他所展示的内容。特别是如果您正在使用 Python 进行机器学习,他的书是入门和提高理解力的绝佳方式。

请注意,您绝对不应该等到读完书、观看完讲座和上完课程才开始玩机器学习。这就像说您应该在掌握一门语言的语法之后才尝试学习这门语言一样。与语言一样,您应该在学习它的工作原理的同时尝试使用它。

除了理解数学之外,对世界持有一种良好的怀疑主义的统计视角也很重要。Jake VanderPlas 有一个名为“黑客统计学”的演讲,它不仅将数学思想转化为代码,而且还专注于数据科学中最可能感兴趣的方面。

另外两本值得一提的书是 统计学卡通指南(作者:Larry Gotnick 和 Woollcott Smith)和 统计学做错了(作者:Alex Reinhart)。这两本书都很好地让您以这种方式思考——我的意思是,当有人向您展示数据,或者当您即将向他人展示数据时,您至少会发现论点中的一些漏洞或您提出的替代解释。

数据科学理论

虽然统计学当然是数据科学的重要组成部分,但它不是唯一的部分。事实上,有许多非统计模型类型,例如 K 最近邻。

了解可用的不同算法类型、每种算法的适用时间和如何调整它们将是非常宝贵的。在许多情况下,您只想将一堆算法抛给问题——如果您的数据集很小和/或易于理解,那就很好。但是,如果训练模型需要很长时间,那么尝试十几种不同的算法既不明智也不有效。正如一位专业厨师知道该用哪把刀一样,一位优秀的程序员应该知道哪种语言适合给定的任务,构建机器学习模型的人应该知道哪些算法更有可能有用。(这并不总是 100% 显而易见的,但您确实想缩小您的起始集合。)

除了我上面提到的书之外,还有一些其他书也值得阅读和回顾。Cathy O'Neil 和 Rachel Schutt 的 数据科学入门 以及 Jake VanderPlas 的 Python 数据科学手册 介绍了数据科学背后的思想,但它们也包括您可以并且应该使用的工作代码和示例。

一个非凡的资源是 Analysis Vidhya 网站,该网站以真正惊人的技术、算法和理论数量进行总结、描述和指导。来自该网站的每日电子邮件消息总是很有趣且有用——坦率地说,它们的数量和范围令人应接不暇。

数据科学黑客技术

虽然统计学家多年来一直在使用软件,但统计学和数据科学之间的主要区别之一是后者需要编程知识。鉴于其浅显的学习曲线和庞大友好的社区,Python 已成为数据科学的首选语言,这不足为奇。如果您选择使用 Python(我绝对推荐),您将需要学习许多不总是遵循标准 Python 方式的库:NumPy 和 Pandas 提供数据结构,然后还有 scikit-learn,它提供算法和机器学习支持。

这些软件包的网站,尤其是 scikit-learn 的网站,非常庞大,它们可能会让您认为您永远无法学会所有内容。实际上,没有人期望您用心记住这些软件包可以做的所有事情。但是随着时间的推移,您将被期望理解越来越多的算法和思想,以及如何实现它们。

如果您使用 Python,Jupyter Notebook 很可能成为您日常使用的工具。Jupyter 继续扩展其令人印象深刻的功能,每隔几周就会发布新版本。如果您是 Python 或动态语言的新手,Jupyter 可能会感觉有点奇怪,但它很快就会让您喜欢上它,并将成为您日常工作流程的自然组成部分。

如您所见,实践非常重要。我经常说编程语言就像人类(自然)语言,您需要练习使用它们才能真正流利。数据科学也是如此,但它也有所不同,因为您需要精通几个相关学科才能成功。

幸运的是,数据科学的世界是庞大且不断发展的,为人们提供了许多有趣的数据集来分析,既可以为了乐趣和练习,也可以为了严肃的用途。"I Quant NY" 是一个博客,它不仅提供了关于纽约市的有趣信息(来自城市提供的数据集),而且还展示了数据科学家如何提出问题并提供影响许多人的答案。如果您正在寻找数据集,很难知道从哪里开始或哪种类型的分析最合适。Jeremy Singer-Vine 的每周新闻通讯 "Data is Plural""数据集" subreddit (Data.World 都提供了大量关于各种主题的数据集。选择您感兴趣的东西,看看您可以提出和回答什么问题。

如果我不提及我收听的一些播客,那将是我的疏忽。它们不仅为我提供了来自数据科学领域的最新新闻、信息、轶事和更新,而且还让我更好地了解趋势——例如,对神经网络和深度学习的偏爱。"Partially Derivative""Linear Digressions" 是我最喜欢的两个,但还有其他一些,例如 "Data Science at Home""Data Skeptic"。播客不会帮助您更好地编码;只有更多的编码才能真正做到这一点。但它们会给您视角和理解,使代码更清晰。

最后,虽然我相信数据科学正在让我们的世界变得更好,但我们确实需要警惕潜在的问题。Cathy O'Neil 的书《数学杀器》是任何进入这个世界的人的必读书籍。即使您没有编写会影响数百万人的算法,也要意识到我们作为人类的偏见,以及我们在通过机器实施政策时需要保持透明,这一点非常重要。这绝对是我近几年读过的最好的书之一。

鉴于数据科学对开发人员的重要性,我将来肯定会回到数据科学主题。但在我的下一篇文章中,我计划回到 Web 应用程序和数据库的世界,研究我们用来创建现代应用程序的语言、库和软件包。

Reuven Lerner 在世界各地向公司教授 Python、数据科学和 Git。您可以订阅他的免费每周“更好的开发者”电子邮件列表,并从他的书籍和课程中学习,网址为 http://lerner.co.il。Reuven 与他的妻子和孩子住在以色列的莫迪因。

加载 Disqus 评论