加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

我,一个数据科学家的三大弱点

发布时间:2018-11-19 18:00:22 所属栏目:教程 来源:大数据文摘
导读:大数据文摘出品 编译:李雷、韦梦夙、胡笳 如果说现代工作面试教会了我们什么,那就是你最大的弱点是什么?的正确回答是我工作太努力了。 显然,真的要去谈论我们的弱点是很荒唐可笑的,我们为什么要提我们做不到的事情?虽然工作申请和LinkedIn不鼓励我们披

虽然你可以自学数据科学中的所有内容,但付诸实践部分有一些限制。其中一个是难以将分析或预测模型扩展到大型数据集。我们大多数人无法访问计算集群,又不想存钱购买个人超级计算机。这意味着当我们学习新算法时,我们倾向于将它们应用于小型,表现良好的数据集。

不幸的是,现实世界里的数据集不会对数据量大小或者数据干净程度有严格限制,所以,你必须使用不同的方法去解决数据量过大、脏数据等问题。首先,你或许需要突破个人电脑的安全限制,使用一个远程的实例,例如亚马逊的AWS EC2 甚至是多台机器。这意味着,你必须学习怎样远程连接机器和敲写命令行,因为你的EC2实例不能使用鼠标也没有操作界面。

当学习数据科学相关课程的时候,我使用亚马逊云的免费服务或者免费积分(如果你有多个邮箱可以注册多个账户来获得更多免费服务)在EC2机器做练习。这样能帮助我熟悉敲写命令行。然而,我还没有解决第二个问题——数据集大小能够超过机器的内存。我意识到这个限制让我回到了原点,现在是学习处理更大的数据集的时候了。

你甚至不用在电脑资源上花费数以千计美金,就可以实践这些超出内存限制的数据集的处理方法。这些方法包括每次遍历一个大数据集的一部分、把一个大数据集拆分成许多小数据集或者使用像Dask这种能够让你掌握大数据集处理细节的工具

我目前的方法是,对于内部项目数据集和外部开源数据集,都把单个数据集拆分成多个子集,开发一个能够处理子集数据的pipeline(程序、脚本等),然后用Dask 或者PSpark通过pipeline并行跑这些子集。这个方法不需要拥有超级电脑或者集群——你可以利用计算机的多核架构并行操作普通电脑。当你拥有更多资源的时候,你就可以自由的拓展程序规模。

幸亏有像Kaggle这样的数据宝藏,我已经找到了一些相当大的数据集,并且学习其他数据科学家处理它们的方法。我从中找到了很多有用的建议,例如,把数据类型改成dataframe以减小内存消耗。这些方法能帮助我更高效地处理各种数量级的数据集。

我,一个数据科学家的三大弱点

美国国会图书馆“只有”3PB的材料

虽然还没有处理过TB级的数据集,这些方法已经帮助我学到了处理大数据的基本策略。在最近的一些项目中,我已经能够运用所学技能在AWS的集群上做分析。希望接下来的几个月,我能逐步在更大的数据集上做分析。可以肯定的是在将来的分析中,数据集会越来越大,我还需要继续提高处理更大数据集的技能。

深度学习

虽然人工智能在繁荣和萧条中更迭,但是它最近在计算机视觉、自然语言处理、深度强化学习等领域的成功应用让我确信基于神经网络的深度学习不是昙花一现。

与软件工程和数据科学拓展领域不同,我现在的职位不需要任何深度学习知识:传统机器技术更能有效解决我们客户的问题。然而,我发现并不是每一个数据集都是行列结构化的,神经网络是文本或图像项目的最佳选择(目前来看)。我会继续利用已有技能解决当前的问题,但是,尤其在职业生涯早期,探索性课题同样拥有巨大的潜在价值。

我,一个数据科学家的三大弱点

探索和利用的权衡在强化学习和你的生活中的应用

深度学习里有很多不同的分支领域,非常难分辨哪个方法和库将最后胜出。虽然如此,我认为熟悉深度学习某一个领域并能实现其中某些技术,会让一个人能够解决问题的范围更广。解决问题驱使我更深入学习数据科学,所以把深度学习加入我的技能库是一项有价值的投资。

我对于深度学习的学习计划和当初把自己变成数据科学家的方法一样:

  • 阅读着重部署应用的书籍和教程
  • 在真实项目中练习技术和方法
  • 通过写作分享和解释我的项目

当我学习一个技术课题时,一个有效的方法是边学边做。这意味起步时不是通过基础理论而是通过找到实际应用方法去解决问题。这个自上而下的方法意味着我要把许多精力放在着重于动手带有许多代码样例的工具书上。在我明白技术的实际应用以后,我再回到基础理论中,这样,我能够更高效的使用这些技术。

虽然没有机会在工作中学习到其他人的神经网络,要靠自己自学,但是在数据科学领域有着丰富的资源和广阔的社区。对于深度学习,我最初依赖这三部书:

  • 《Deep Learning Cookbook》,作者Douwe Osinga
  • 《Deep Learning with Python》,作者Francois Chollet
  • 《Deep Learning》,作者Ian Goodfellow, Yoshua Bengio, and Aaron Courville

前两本书着重于通过神经网络实现解决方案,而第三本更偏向深入理论。只要情况允许,可以边读边在键盘上敲代码,这会将读技术文章变为有趣的体验。前两本书中的代码示例非常棒:我通常是在Jupiter Notebook中逐行敲写和运行,探究代码如何工作,并记录知识细节。

此外,我不仅仅是复制这些代码,而是尝试在自己的项目中实践它们。我在近期工作的一个实践项目是构建一个图书推荐系统,该系统是根据《Deep Learning Cookbook》中的类似示例代码改编的。从头开始创建自己的项目可能令人生畏,如果你想提升自己,可以从别人的轮子上搭起。

最后,学习某个主题的最有效方法之一是把这个知识教给别人。从经验来看,如果我不能用简单的语句解释给别人,那么我就还没有完全理解这个知识。随着学习深度学习的每个主题,我将保持写作,并分析技术实现细节和概念性解释。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读