经过4年的数据科学生涯,以下是我学到的知识

经过4年的数据科学生涯,以下是我学到的知识

回想2017年,大数据、数据科学和机器学习成为主流,我也想成为其中一员。然而,经过几年的编程和机器学习工作,我的确进入了这个新的行业,但我意识到我不是喜欢为别人做数据;相反,我更喜欢为自己做数据。原因是,日常的工作量很高,同时,没有数据背景的经理也很难理解“数据”的真正含义。下面是我在数据职业的道路上学到的一些东西,如果你打算进入数据科学领域,希望它们能帮助你。如果你想了解更多数据分析相关内容,可以阅读以下这些文章:
数据岗位大合集|DS、DA、BA和DE的区别及求职面试重点
Data in HR Management:商科社科人文科数据分析求职新方向–人力资源管理
数据科学家求职必备编程技巧
四个数据科学求职者的常见失误

1.真的不需要太钻研编程

当我第一次开始学习数据时,我试过通过约翰·霍普金斯大学在Coursera上的“数据科学”课程来自学R。不少人说,这将是未来最好的数据科学语言,因为它是免费的,是以统计学为基础的,所以它自然地适合机器学习。

但实际上,我认为Python更好,因为它更容易使用。深度学习的API通常都会用Python编写,云计算也基本上会用Python。如果你在网上调查一下就会发现,现在最多使用的语言就是Python,其次是JavaScript。

一开始写R会很难,但随着我练习和使用StackOverflow的次数的增加,它逐渐变得容易了。我开始使用TidyR,停用了base R,因为TidyR有更好的语法,而且我发现base R太冗长了。

然而,当我开始尝试使用深度学习时,我发现大型深度学习库(如Tensorflow、Pytorch库)只为Python用户设计,所以我不得不学习一种新语言。

数据语言都有一个共同点,不论是那种语言,你都需要清理数据来适应这门语言。例如,在创建稀疏数据框架时,R和Python会使用不同的对象类型。在语言之间不停切换时,学习机器学习可能会很麻烦。

考虑到我的日常工作并不需要太多的机器学习,我基本上只会用Excel的PowerQuery来处理我的大部分数据,因为它比编程容易。有时候,我会用R或Python来处理更复杂的事情。顺便一提,在PowerBI中,你也不需要学习如何编写代码,也可以清理数据并使用机器学习。你甚至还可以用Google Sheets进行数据清理,使用Weka进行机器学习,这也是完全免费的选项。

2.机器学习最难的部分是数据类型

图源:Unsplash 摄影:Tianyi Ma

总结来讲,机器学习并没有那么难。你需要做的就是导入数据、去掉多余的数据列、填充空值、one-hot编码、将数据分成训练和测试数据集、根据你选择的算法去训练你的训练集、最后在测试集上预测。开个玩笑,可能确实没那么容易,但相信我,这也并不难。

但是,我发现机器学习最难的是去理解哪些数据类型应该用在哪些算法。当然你也可以去阅读官方的 “帮助文档”,但我觉得这些页面有点冗长。

下面我举例了一些机器学习算法和最佳数据类型的示例:当仅仅使用数字数据时,K-means效果最佳;当所有内容都在factors(在R中)或categories(在Python中)中时,Xgboost工作得最好;最后,Tensorflow要求将所有内容转换为某种类型的数字,然后需要在使用之前,在所有列中进行精度调整。

3.机器学习最好用于自动化“普遍性”思维或日常任务

我的第一个数据科学项目是建立一个精确预测房价的算法。对于我的数据集,我使用了土地面积、房间数量、浴室数量、郊区等等数据,并将所有这些变量放入Xgboost模型。我觉得我做得很好。

但实际上,Xgboost模型出来的并没有那么好。事实证明,如果我找到的只是房屋的经纬度坐标,并将它们放入聚类模型,结果也会一样好。这是因为,机器学习所做的就是根据房子的位置进行排序,并根据房子的当前状态(原配、翻新或新建)对房子进行定价。经过深思熟虑,比起需要使用机器学习,我可以通过查询某一特定街道最近售出的房屋的价格,就能很好地预测房价。

我花了一段时间才意识到机器学习的好处。它不是预测事物;相反,它擅长模仿世界目前对事物的看法,并将其自动化。

4.我大部分时间都在StackOverflow上寻找答案

图源:Unsplash 摄影:Sufyan

自学数据科学时,我大部分时间都是把报错的代码复制到谷歌浏览器上,看看我能从StackOverflow中找到什么答案。大多数时候,我可以很幸运直接得到答案。其他时候,我不得不自己解决问题。例如,为什么我不能将数据加载到我的Xgboost模型中?答案其实很简单,我没有创建稀疏的数据框架。

有一些是在机器学习“操作指南”中已明确指出的小问题,但我当时的知识非常薄弱,以至于我无法从根本理解自己在做什么,还需要多个StackOverflow的答案来告诉我。

现在,因为经验的累积,我不再像以前那样频繁地使用这个平台,但它仍然有它的用途。例如,当我想做一些特别的事情,比如用一些随机变量对ID进行分组,并对这种分组的第一个实例进行分割时,我也会用到StackOverflow。

5.学习数据工程概念

随着云计算变得越来越重要,我意识到我不再需要在本地化的计算机上进行机器学习,而是可以运行一个云实例来为我工作。我在学习Python for Tensorflow和Sci-kit learn时遇到了很多麻烦,所以我在学习云计算时没有花太多时间。

然而,让来自数据背景的我去做一些软件编程的工作确实让我抓狂。例如,如果要让机器学习算法按指令运行,我必须先写一个脚本、从存储器加载数据、在训练集中训练、从测试集中预测、在实例中输出结果、最后将数据导出到存储器。此外,这些代码还需要作为一个web服务(例如RESTful API)才能完整。一旦学会了应该怎么做,其实它并不太难,但确实需要一段时间才能实现。

经过反思,要成为一名现代的数据科学家,在学习机器学习算法之前,学习基本的云计算和数据存储技能会让你的学习旅程更容易。原因是,从我的经验来看,学习的进步更多是受到了编程技能的限制,而不是对机器学习模型的理解。

结论

我的经历并不是一个典型的数据科学家经历。实际上,我自己更喜欢做一名传统意义上的数据分析师,不必花一整天的时间去清理数据,而且我处理的商业问题很少会真正需要机器学习去解决(至少在我的领域是这样的)

如果你想成为一名数据科学家,我建议你找一个真正的数据科学家来征求第三方意见,也希望这篇文章能让你深入了解如何做数据科学,并尝试扩展你对它的理解。你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Jason Huynh
翻译作者:Chuang Zhang
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://levelup.gitconnected.com/the-2-types-of-software-engineers-every-successful-product-team-needs-11952e937def