对于数据科学来说,现在是发展的黄金时期。这是个新领域,但增长迅速,同时数据科学家的缺口也很大,据说他们的平均年薪可以达到10万美元。哪里有高薪,哪里就吸引人们,但是数据科学技能的差距意味着许多人需要努力学习。
第一步当然是询问“我怎么学习数据科学”,这个问题的答案往往是一长串的课程和书籍阅读,从线性代数到统计数据,这几年我也是这样学习过来的。我没有编程背景,但我知道我喜欢处理数据。
我比较不能理解在完全没有理解别人的背景时就给他一份长长的书单或者技能表。这就类似于一个老师给你一堆教科书然后告诉你“把这些都读完吧”。在学校的时候我就质疑这种方法,当我学习数据科学的时候,我绝不会这样做。
有些人可以通过书来很好的学习,但是我认为最好的学习方法是通过实践,知道自己真的需要学习什么,最重要的是,当你通过这种方式学习,你可以获得立刻就可以用到的技能。这也是我和很多初学者分享的观点。
这就是为什么我不认为你的第一个目标应该是学习线性代数或是统计。如果你想学习大数据,你的第一个目标应该是学会爱数据。
1、学会爱数据
没有人谈论在学习动机。 数据科学是一个广泛而模糊的领域,这使得它很难学习。 没有动力,你最终会中途停止对自己失去信心。
你需要些东西来激励你不断学习,即使是在半夜公式已经开始变的模糊,你还是想探究关于神经网络的意义。你需要些动力来让你发现统计、线性代数和神经网络之间的联系,当你在困惑“下一步我该学习什么?”的时候。
我学习的入口是用数据来预测股市,尽管当时我完全不熟悉。我编码的第一批项目用于预测股票几乎没有统计,但是我知道它们表现的并不好,所以我日以继夜的工作让它们变的更好。
我痴迷于改善程序的性能,我痴迷于股票市场,我学习去爱数据。我去学习一切能让这个项目结果更好的技能。
并不是每个人都会痴迷于股市预测,但重要的是要发现你想学习的东西。
关于全世界移动设备使用情况的地图
数据可以计算出关于你的城市很多新鲜有趣的事情,比如所有设备在互联网上的映射、找到真正的NBA球员的位置,今年又哪些地方有难民,或者是其他事情。数据科学的伟大之处是有无限有趣的东西可以发现——那就是问问题然后找到一个方法来得到答案。
2、在实践中学习
学习神经网络、图像识别和其他尖端技术是很重要的,但大多数数据科学工作不涉及这些:
· 90%的工作将是数据清理。
· 精通几个算法比知道一点许多算法要好。
· 如果你知道线性回归、k - means聚类和逻辑回归,可以解释和诠释他们的研究结果,并可以用这些完成一个项目,你将比如果你知道每一个演算法,但不使用它们更优秀。
· 大多数时候,当你使用一种算法,它将是库中的一个版本(你很少会自己编码支持向量机实现——这需要太长时间)。
所有这些意味着最好的学习方法是在项目工作中学习,通过项目,你可以获得有用的技能。
一种方法是在一个项目中先找到一个你喜欢的数据集,回答一个有趣的问题。
这里有一些好的地方:
· 100+有趣的数据集的统计数据http://rs.io/100-interesting-data-sets-for-statistics/
· 数据集 subreddithttps://www.reddit.com/r/datasets
· UCI机器学习库http://archive.ics.uci.edu/ml/
另一种方法是找到一个深层次的问题,例如预测股票市场,然后分解成小步骤。 我第一次连接到雅虎财经的API,并爬下每日价格数据。然后我创建了一些指标,比如在过去的几天里的平均价格,并用它们来预测未来(这里没有真正的算法,只是技术分析)。这个效果不太好,所以我学会了一些统计知识,然后用线性回归。 然后连接到另一个API,清理每一分钟的数据,并存储在一个SQL数据库。 等等,直到算法效果很好。
这样做的好处是我在一个学习环境中学习。我不仅仅学习了SQL语法,用它来储存价格数据,还比仅仅学习语法多学习了十倍的东西。学习而不应用的知识很难被保留,当你做实际的工作的时候也不会准备好。
3、学会沟通
数据科学家需要不断展示他们的分析结果。这个过程可以区别数据科学家的水平。
交流的一部分是对主题的理解和理论, 另一个是理解如何组织你的结果。最后一部分是能够清楚地解释您的分析。
我很难找到关于有效沟通的概念,但有些事情你该尝试一下:
· 开始写博客。 展示你的数据分析的结果。
· 试着教那些对数据科学技术知识并没有什么概念的人,比如你的朋友和家人这可以可以帮助您理解概念。
· 试着在聚会上演讲。
· 使用github管理你所有的分析。
· 在一些社区中活跃,比如Quora , DataTau , machine learningsubreddit。
4、向同行学习
你根本想不到你会从同行身上学到多少东西,在数据工作中,团队合作非常重要。
· 在聚会中找一些同伴。
· 开源软件包。
· 给哪些写有趣的数据分析博客发消息看有没有合作的可能。
· 尝试参加Kaggle 比赛看看可不可以找到队友。
5、增加难度
你完全熟悉这个项目的工作了? 你最后一次使用一个新概念是在一周前? 那么是时候做些更加困难的挑战了。如果你停止攀登,那么不进则退。
如果你发现自己太舒适,这里有一些建议:
· 处理更大的数据集。 学习使用spark。
· 看看你能不能让你的算法更快。
· 你将如何将算法扩展到多个处理器? 你能做到吗?
· 理解更多的理论算法并使用。这会改变你的假设吗?
· 试图教一个新手去做你现在正在做同样的事情。
上面这些这至少是一个思路告诉你在开始学习数据科学的时候到底要做什么。如果你完成了这些,你将发现你的能力自然而然就提升了。
我不喜欢那些“一个清单”这样的建议,因为这让我很难按部就班去做。我发现很多人在跟着书单或者mooc的课程学习中半途而废。我个人相信如果你有正确的目标任何人都可以学习数据科学。
我还是Dataquest的创始人。这是一个帮助你学习大数据的网站,其中包括了很多优秀的学习经验和讨论。你可以分析一些有趣的数据集,比如美国中央情报局的文件和球员统计。还可以完成一些项目,比如建立一个投资组合。如果你不知道如何分析,这也不是问题,我们会教你python。我们教Python因为它是最初级的友好语言,用于大量生产数据的科学工作,可用于各种各样的应用。
推荐阅读
年薪40+W的大数据开发【教程】,都在这儿!
大数据技术盘点
程序员大数据培训分享Shell中数组讲解
大数据教程:SparkShell和IDEA中编写Spark程序
大数据零基础快速入门教程
Java基础教程
web前端开发基础教程