如何成为一名数据科学家

我觉得主要有几个方面。

1)学习python。

现在几乎所有公司的数据都可以通过api给你,python有强大便捷的数据处理能力。另外,在机器学习的很多算法中,python是独一无二的。另外就是简单方便快速的迭代开发,15分钟写一个算法就能看到效果。

另外py有一种很酷的感觉。任何程序都可以用matlab和c++编写,但我真的不知道有哪个D愿意把自己扔进那个不酷的盒子里:D。

处理不规则输入也给python带来了巨大的优势。一般来说,在我的日常工作中,所有的数据都是以原始文本但无格式数据的形式存储的。问题是这些文本不能直接作为各种算法的输入,你需要。

分区、子句

提取特征

整理丢失的数据

去掉离群值。

在这些时候,python就是一个神器。1-4可以直接在scikit-learn中找到,甚至你想写一个定制的算法来处理一些特殊的需求,也就是100行代码。

简而言之,python可以帮助你在短时间内解决数据科学面临的挑战,而不用担心太多的实现细节。

2)学好统计学。

略显尴尬。统计学习的概念是“统计机器学习方法”。

统计学和计算机科学在最初的几十年里是并行的,创造了一系列彼此创造的工具和算法。但直到最近,人们才开始注意到,计算机科学家所谓的机器学习,其实就是统计学中的预测。因此,两个学科开始重新融合。

为什么统计学习很重要?

因为纯机器学习注重的是算法的预测能力和实现,而统计学一直强调的是“可解释性”。比如,鉴于今天微博的股票发行涨了20%,你把你的两个模型放到新浪的例子上预测股票是涨是跌,然后给你老板看。

Model-1有99%的预测能力,即在99%的情况下预测正确,Model-2有95%,但它有一个例外的附加属性——它可以告诉你股票为什么上涨或下跌。

你的老板会先来哪一个?问问你自己你会选择哪一个?

显然是后者。因为前者虽然有很强的预测力(机器学习),但没有解释力(统计解释)。

作为一名数据科学家,80%的时间你需要解释为什么A行得通,B行不通。如果你告诉他们,“我现在的神经网络可以预测得这么好,但我根本无法解释”,那么没有人会愿意相信你。

具体来说,如何学习统计学习?

先学基础概率。如果把大学里的学生还给老师(就像我一样),可以从麻省理工的概率论教材1开始。阅读并完成第1章到第9章的所有练习。P.S .在面试Twitter的时候被问到一个关于考后拿球概率的问题,摘自这本书。

了解基本的统计测试及其假设,以及何时可以使用它们。

要快速理解统计学习中使用的术语以及它们的用途,请阅读本书5。

学习基本的统计学思想。有频数统计和贝叶斯统计。前者的代表作是2部,后者是3部。前者是统计学习的圣书,偏于frequentist,后者是模式识别的圣书,几乎是从纯贝叶斯的角度。注意是有免费版的,作者都放网上了。而且还有简易版,如果你觉得不能直接看2,那么可以从它的简易版入手。简单版4是笔者在coursera上开始上课的热门教材,简单很多(但还是有很多亮点,容易理解)。对于3来说,一开始很难直接咀嚼,但会受益匪浅。

注意,上面的书几乎都可以在网上搜索到别人上传的pdf。有条件的同学可以买个纸盘子阅读,体验更好,支持作者。我买的书都是纸质的,但是我知道在国内买一本书有多不方便(还有原版书有多贵)。

阅读以上书籍是一个漫长的过程。但是看了一遍,个人觉得非常值得。如果你只知道如何使用一些软件包,你永远不会成为一名合格的数据科学家。因为只要问题稍有变化,你都不知道怎么解决。

如果你觉得自己是一个二流的数据科学家(我也是),那就提出以下问题。如果你不能回答两个问题,那么你就和我一样,真的只是一个二流的数据科学家。不断学习。

为什么特征需要在神经网络中标准化而不是直接抛出?

是否需要对随机森林进行交叉验证以避免过度拟合?

用朴素贝叶斯理论打包是个坏选择吗?为什么?

在使用ensembe方法时,特别是在使用梯度提升树时,我需要使树结构更复杂(高方差,低偏差)还是更简单(低方差,高偏差)?为什么?

如果你是刚入门,没关系。你回答不了这些问题很正常。如果你是个傻逼,明白自己为什么还落后于一流的数据科学家——因为你不知道每个算法是如何工作的。当你想用那个算法解决你的问题时,你会无从下手,有无数的细节。

对了,我很欣赏一家叫Jiro的寿司店,店长在东京?)一个最不起眼的地铁站开了世界上最贵的餐厅,要提前三个月预定。你是怎么做到的?练习寿司70年。70年!除了葬礼之外的节假日,店长每天都会来,工作8小时后继续练寿司。

其实学数据科学也是一样,静下心来练手艺吧。

3)学习数据处理

该步骤不需要独立于2)进行。很明显,当你看这些书的时候,你会开始遇到各种算法,各种数据都会在这里的书里提到。但这个时代最不值钱的就是数据(拜托,为什么要用80年代的“加州房价数据”?),有价值的是数据分析后提供给决策的价值。因此,与其纠结于如此悲惨的80年代数据集,为什么不自己收集一些呢?

开始写一个小程序,用API把Twitter(或者微博)上的随机推文爬下来。。。)

对这些推文的文本进行分词,处理噪音(比如广告)。

用一些现成的标签作为标签。比如这条推文在推文中会被转发几次。

试着写一个算法来预测一条推文会被转发多少次。

对看不见的数据集进行测试

以上过程非一日之功,尤其是刚开始的时候。慢慢来,耐心大于进步。

4)成为全栈工程师。

在公司环境下,作为一个新的新手,当你需要写一个数据可视化的时候,你不可能有优待去找一个同事帮你做。当您需要在数据库中写入和保存数据时,请另一位同事为您代劳。

况且就算你有这个条件,频繁切换上下文也会浪费更多时间。比如你让同事上午把数据塞进数据库,他下午就给你做好了。或者你需要很长时间跟他解释什么是逻辑,怎么挽回。

最好的改革,就是把自己武装成一个全才。你不需要成为各方面的专家,但你必须对各方面都略知一二。查单据的时候可以用。

可以用NoSQL。尤其是MongoDB

学习基本的可视化,使用基本的html和javascript,了解可视化库d36和highchart7。

学习基本算法和算法分析,知道如何分析算法复杂度。平均复杂度,最差复杂度。每次写完一个程序,我都会估算自己需要的时间(用算法分析来预测)。推荐普林斯顿的算法类8(注意可以从算法1开始,有两个版本)

写一个基本的服务器,用flask9的基本模板写一个主干,可以让你做可视化分析。

学会使用方便的IDE、VIM或pycharm。

4)读,读,读!

除了闭门造车,你还需要知道其他数据科学家在做什么。你需要与各种新技术、新思想、新人交流,拓展自己的知识面,以便更好地应对新的工作挑战。

通常非常厉害的数据科学家都会把自己的博客放到网上,供大家访问和膜拜。推荐一些我经常看的。另外,学术圈有很多厉害的数据科学家,不要怕看论文。看了几篇,你会觉得:哈!我也能想到

读博客的一个好处是,如果你和他们有很好的沟通,你甚至可以从他们那里获得实习机会!