我和你一样,自己承担起改变职业道路进入不断发展的数据科学领域的责任。作为背景知识,我在一个神经科学研究实验室工作,研究等位基因变异对阿尔茨海默病和创伤后应激障碍啮齿动物模型中蛋白质转运的影响。我是一个称职的 R、bash 和 Matlab 黑客,并且懂一点 C 和 Java。当我开始申请神经科学博士课程时,我改变了主意。
在接下来的一年里,我参加了一些研究生级别的统计课程,并恢复了我的一些编程技能。去年,我为 CS 开设了一个 MS 课程,目的是 1) 获得一份行业数据科学家的工作 2) 学习如何从算法/数学上思考数据 3) 真正提高我的基本 CS 技能 4) 在过程。
我不会列出有帮助的具体课程,但对我来说主要的获奖主题是:
算法
- 两种基本算法
- 复杂性分析、排序和搜索、图算法、动态规划、随机算法等。Tim Roughgarden有一个很好的课程。
- 数据挖掘/海量数据集/流算法
- 局部敏感散列、草图算法、kd/ball 树、水库采样、滑动窗口方法等。
数据库/数据流:
- noSQL、SQL、hadoop 等。使用它们会迫使您开始意识到您将使用的大多数数据绝对不适合内存,并且需要独特的方法来不仅从中提取信息,而且只是为了使用它并检查它。通过构建网络爬虫或数据收集器来填充数据库(或者您想要的其他任何内容......),了解如何使用它
机器学习
- 学习该领域的基本方法,例如基于树的方法、优化、神经网络、支持向量机、回归、马尔可夫链、图形方法、集成方法、过拟合、正则化、聚类、k-means、knn 等。如上所述,Andrew Ng 的 coursera 课程可能是最好的开源解决方案。
- 编辑:如果你用真实版本的东西(讲座,笔记)补充它,Coursera 课程就很好。我认为 coursera 课程有点轻,是对 ML 主题的一个很好的概述,但对这些主题的机制还不够深入。Tom Mitchell 的书也是一个很好的资源。
数据可视化
- 没有什么特别花哨的东西是完全必要的,但是知道如何可视化多维数据是非常有用的。学习一个好的绘图包,也许可以尝试其他技术,如 D3.js 或映射可视化。如果你在这方面做得很好,你可能会永远拥有一份出色的工作。
“真实世界”体验
- 我在一家从事数据科学的大型网络公司的三个月内学到的知识,与我在过去 1.5 年的研究生学习和自学中学到的一样多。这可以通过参加 Kaggle 比赛等来近似,但老实说,野外数据比Kaggle 上的大多数数据更难处理(请注意,微软恶意软件检测项目或一些计算机视觉项目是对于学习处理也相当“大”的凌乱数据更有用)。
请注意,我没有提到诸如“学习 R 它是最好的”或“学习 python 它比 R 更好”之类的东西。在我的大部分工作和当前研究中,我使用 Python、C、MySQL、MongoDB 和 R(尽管这些天我真的更喜欢 Python 生态系统)。我确信这在未来会有所改变。
这有点超出了你的问题,但作为一名行业数据科学家,最关键的事情可能是能够以一种几乎不受监督的方式工作,并将结果/方法清楚地传达给非专家团队。拥有科学研究背景有助于解决此问题,因为您试图回答的问题很困难,通常是非结构化的,并且通常处于您所在领域知识边缘的边缘。我的朋友、熟人和过去在工业界担任数据科学家的同事几乎都是拥有硕士或博士学位并至少发表过一些出版物的前学术人员。我绝对不相信这是一个严格的要求,如果我在招聘职位上,我绝不会因为某人没有高级学位而选择过滤掉他们,
请记住,所有这一切都来自于一个不知从何而来的家伙,他们没有直接在该领域工作那么久,但他们的过渡似乎进展顺利。