2020 年的数据科学趋势
新十年的关键数据科学趋势
弗兰基·查马基在 Unsplash 上拍摄的照片
数据科学是让数据变得有用的学科。
毫无疑问,这十年在人工智能领域购买了大量的创新。除了人工智能,我们还见证了从数千个来源生成的数据的巨大增长。数以百万计的设备造成了如此巨大的数据峰值,这一事实将我们带到了智能利用的话题上。
数据科学领域带来了各种科学工具、流程、算法和从结构化和非结构化数据中提取知识的系统,用于识别其中有意义的模式。
数据科学也有利于数据挖掘和大数据。数据科学在 2001 年成为主流,此后一直在发展,并被评为有史以来最令人兴奋的职业道路之一。
走向数据科学 报道:
- 目前,每天的数据输出超过 2.5 万亿字节。
- 在不久的将来,“地球上的每个人每秒将产生 1.7 Mb 的数据。”
- 各种各样的数据科学角色将推动这些海量数据负载。
谷歌搜索过去 5 年“数据科学”的受欢迎程度。由谷歌趋势生成。
数据科学的趋势
随着数据问题和需求的多样化,出现了各种各样的创新解决方案。这些解决方案通常会带来大量的数据科学趋势,为企业提供所需的灵活性,同时让他们能够更深入地了解自己的数据。下面简要介绍了其中一些顶级数据科学趋势:
1.图表分析
随着数据从各个方向流入,分析变得更加困难。
图形分析旨在通过充当灵活而强大的工具来解决这个问题,该工具使用图形分析复杂的数据点和关系。使用图表背后的意图是抽象地表示复杂的数据,并以一种更容易理解和提供最大洞察力的可视化格式表示。图表分析应用于众多领域,例如:
- 过滤社交媒体上的机器人,以减少虚假信息
- 识别银行业中的欺诈
- 预防金融犯罪
- 分析电力和供水网络,寻找缺陷
2.数据结构
数据结构是一个相对较新的趋势,其核心是封装从大量来源收集的组织数据,如API、可重用数据服务、管道、语义层,提供可转换的数据访问。
创建数据结构是为了帮助数据的业务上下文,并以用户和应用程序都可以理解的方式保存数据,数据结构使您能够在灵活的同时拥有可伸缩的数据。
通过这样做,您可以根据需要以前所未有的方式处理、管理、存储和共享数据。商业智能和数据科学严重依赖于数据结构,因为它可以顺畅、干净地访问大量数据。
数据结构是一种体系结构和一组数据服务,可跨多种选择提供一致的功能…
www.netapp.com](https://www.netapp.com/us/info/what-is-data-fabric.aspx)
3.设计的数据隐私
数据隐私设计的趋势采用了一种更安全、更主动的方法来收集和处理用户数据,同时在其上训练您的机器学习模型。
企业需要用户数据来训练他们在现实世界场景中的模型,他们从各种来源收集数据,如浏览模式和设备。
联合学习背后的想法是收集尽可能少的数据,通过给用户选择退出和随时删除所有收集的数据的选项,让用户了解情况。
虽然数据可能来自大量受众,但出于隐私原因,必须保证不可能对原始数据进行任何逆向工程来识别用户。
4.增强分析
增强分析 是指通过排除任何不正确的结论或偏见,从手头的数据中获得更好的洞察力,以优化决策。通过注入人工智能和机器学习,增强分析帮助用户规划新模型。
通过减少对数据科学家和机器学习专家的依赖,增强分析旨在提供相对更好的数据见解,以帮助整个商业智能流程。
这种人工智能和机器学习的微妙引入通过自动化数据科学的许多方面对传统的洞察发现过程产生了重大影响。增强分析在提供更好的决策,避免分析中的任何错误和偏见方面越来越重要。
5.Python 是数据科学的事实语言
照片由 Hitesh Choudhary 在 Unsplash 上拍摄
Python 是一种绝对的全能编程语言,如果你有兴趣进入人工智能和数据科学的世界,它被认为是一个值得的切入点。
有了支持性的在线社区,您几乎可以立即获得支持,Python 中的集成只是冰山一角。
编写 Python 代码的乐趣应该在于看到短小、简洁、易读的类,这些类用少量清晰的代码表达了大量的动作——而不是让读者厌烦得要死的大量琐碎代码。
——吉多·范·罗苏姆
Python 集成了众多的编程语言 和 库 ,,这使得它成为一个极好的选择,比如说,为手头的问题创建一个快速原型,或者深入大型数据集。
它的一些最流行的库是-
●tensor flow*,用于机器学习工作负载和处理数据集*
●scikit-learn*,用于训练机器学习模型*
●py torch,用于计算机视觉和自然语言处理
●Keras*,作为高度复杂的数学计算和运算的代码接口*
●SparkMLlib*,像 Apache Spark 的机器学习库,用算法、实用程序之类的工具让机器学习变得人人轻松*
Python 初学者课程—
[## 3 免费 Python 初学者课程:2020 版|黑客正午
如果你正在寻找可以用来扩展你的 Python 知识的最好的免费 Python 课程,你已经来到…
hackernoon.com](https://hackernoon.com/3-free-python-courses-for-beginners-2020-edition-j7c23y3u) [## Python 训练营:学习 Python 编程和代码培训
这是 Udemy 上最全面、最直接的 Python 编程语言课程!你是否…
www.udemy.com](https://www.udemy.com/course/complete-python-bootcamp/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-lB6TwxSdouentAk36.qjmw)
6.数据科学中广泛的自动化
时间是至关重要的组成部分,任何时间都不应该花在重复的任务上。
随着人工智能的发展,其自动化能力也在扩大。自动化领域的各种创新正在让许多复杂的人工智能任务变得更加简单。
数据科学领域的自动化已经简化了大部分流程,如果不是全部的话。数据科学的整个过程包括识别问题、数据收集、处理、探索、分析以及将处理后的信息分享给他人。
7.会话分析和自然语言处理
自然语言处理和对话分析通过简化我们与机器互动和在线查找信息的方式,已经在数字世界掀起了巨大的波澜。
NLP 极大地帮助我们进入了一个时代,在这个时代,计算机和人类可以用共同的自然语言进行交流,使两者之间能够进行持续而流畅的对话。
NLP 和对话系统的应用随处可见,比如聊天机器人,智能数字助理。据预测,基于语音的搜索的使用将在很短时间内超过更常用的基于文本的搜索。
8.云中的超大规模数据科学
从那时起,人工智能的出现以及由此产生的数据量一直在飙升。随着企业网上业务的增长,数据量从几千兆字节增长到几百千兆字节。
这种对数据存储和处理能力日益增长的需求催生了数据科学,以实现数据的受控和精确利用,并推动全球范围内的组织选择云解决方案。
各种云解决方案提供商,如 、谷歌 、亚马逊、微软提供大量云计算选项,包括企业级云服务器功能,确保高可扩展性和零停机时间。
9.减轻模型偏差和歧视
没有一个模型完全不受偏见的影响,由于缺乏足够的数据、历史偏见和不正确的数据收集实践等因素,它们可以在任何阶段开始表现出歧视性行为。偏见和歧视是模型的常见问题,并且是一种新兴趋势。如果及时发现,这些偏差可以在三个阶段得到缓解:
- 预处理阶段
- 加工阶段
- 后处理阶段
每个阶段都有自己的一套校正方面,包括算法和技术,以优化模型的公平性,并增加其准确性,以消除任何偏差的机会。
10.内存计算
内存计算 是一种新兴趋势,与我们传统的数据处理方式有很大不同。
内存计算处理存储在内存数据库中的数据,这与使用硬盘和带有查询语言的关系数据库的传统方法相反。该技术允许实时处理和查询数据,以进行即时决策和报告。
随着内存变得越来越便宜,企业越来越依赖于实时结果,内存计算使他们能够拥有更丰富、更具交互性的仪表板应用程序,这些仪表板可以提供更新的数据,并且几乎可以立即准备好进行报告。
11.数据和分析中的区块链
区块链,简单来说,就是由一群计算机管理的带有时间戳的不可变数据集合,而不是由任何单一实体管理。这里的链指的是使用加密算法绑定在一起的每个块之间的连接。
与数据科学逐渐类似,区块链对于维护和验证记录至关重要,而数据科学则致力于数据的收集和信息提取部分。数据科学和区块链是相关的,因为它们都使用算法来管理其处理的各个部分。
结论
随着业务开始增长,他们会产生更多的数据,数据科学可以帮助他们分析他们需要改进的领域。随着上面提到的几个值得注意的数据科学趋势,一些人开始认为数据科学是继经验、理论和计算之后的第四种科学范式。跟上更新的趋势是企业实现最大效率和保持竞争优势的绝对必要条件。
更多资源—
我希望这篇文章对你有用!如果您有兴趣了解更多信息,以下是附加资源:—
走向数据科学——2020 年人工智能趋势精选清单
business 2 community—2020 年值得关注的 10 大数据和分析趋势
Analyticsindiamag—未来 5 年数据科学家的工作趋势
Codeit—2020 年顶级数据分析趋势
关于作者
克莱尔 D 。在digital ogy—是一个内容制作者和营销人员。这是一个技术采购和定制匹配市场,根据全球各地的特定需求,将人们与预先筛选的&顶尖开发人员和设计师联系起来。连接DigitalogyonLinkedinTwitterinsta gram。**
数据科学家 vs 数据分析师。区别就在这里。
数据科学家和数据分析师的主要区别和相同点是什么?阅读下面的概要分析。
克里斯蒂娜@ wocintechchat.com 在Unsplash【1】上的照片。
目录
- 介绍
- 数据科学家
- 数据分析师
- 类似
- 差异
- 摘要
- 参考
介绍
尽管数据科学和机器学习领域在工作描述、雇主和公众之间存在混淆,但数据科学和数据分析之间的差异更容易区分。然而,这两个领域和工作岗位之间仍然存在相似之处和主要差异。有些人会说,要成为数据科学家,数据分析角色是成为数据科学家的先决条件。
本文旨在阐明作为数据科学家和数据分析师意味着什么,以及这两个领域的专业人士。
当我在学习成为一名数据科学家时,作为一名工作数据分析师,我意识到数据科学理论与数据分析理论有很大不同。这并不是说数据科学与数据分析不共享相同的工具和编程语言。人们也可以认为数据科学是数据分析的一种形式,因为最终,你是在与数据打交道——转换、可视化并得出可操作的变化的结论。那么如果它们如此相似或者一个在另一个之下,为什么要写一篇关于这两个热门领域的文章呢?原因是,进入这两个领域的人都可以从这里学到东西——他们将从这两个职业中获得什么——或者人们普遍感到好奇,并进一步展开讨论。下面,我将概述数据科学家或数据分析师的主要相似之处、不同之处,并举例说明这意味着什么。
数据科学家
拟合数据科学模型和预测的示例。作者截图[2]。
惊呼——这个 DS 部分只有我从上一篇关于数据科学与机器学习的文章中收集的一些信息,以及新的信息[3]:
数据科学家和机器学习工程师的主要区别和相同点是什么?阅读以下内容,了解…
towardsdatascience.com](/data-science-vs-machine-learning-heres-the-difference-530883d6de3a)
数据科学可以被描述为一个自动化统计领域,以模型的形式帮助分类和预测结果。以下是成为数据科学家所需的顶级技能:
- Python 或者 R
- SQL
- Jupyter 笔记本
- 算法/建模
Python*——*以我个人的经验,我相信大部分公司都在寻找 Python 多于 R 作为主要编程语言。工作描述可能会列出这两者;但是,大多数和你一起工作的人,像机器学习工程师、数据工程师、软件工程师,都不会对 r 很熟悉,所以,我相信,做一个更整体的数据科学家,Python 会对你更有利。
SQL 起初看起来更像是一种数据分析师技能——的确如此,但它仍然应该是一种用于数据科学的技能。大多数数据集不是在商业环境中给你的(相对于学术环境而言),你必须自己制作——通过 SQL。现在,SQL 有很多子类型;像 PostgreSQL,MySQL,微软 SQL Server T-SQL,Oracle SQL。它们是同一种查询语言的相似形式,由不同的平台托管。因为它们非常相似,所以拥有其中任何一个都是有用的,并且可以很容易地转换成稍微不同形式的 SQL。
Jupyter 笔记本 ,一个数据科学家同时进行编码和建模的游乐场。一个研究环境,如果你愿意的话,允许快速简单的 Python 编码,可以合并代码外的注释,代码本身,以及一个从有用的库中构建和测试模型的平台,如 *sklearn、*和 numpy。
算法 —数据科学家的主要职能是利用算法快速准确地预测、分类和建议数据输出。当您将数据接收到模型中时,就会产生一个新的结果。关键算法类型的例子通常在非监督学习(例如,聚类)和监督学习(例如,分类/回归)中被分类。一些特定的关键算法:
- 随机森林(集合分类)
- 逻辑回归(分类—非回归)
- K-Means ( 聚类)
- k-最近邻(分类/回归)
总体而言,数据科学家可以从事多种工作,但主要职能是:
— meet with stakeholders to define the business problem— pull data (*SQL*)— Exploratory Data Analysis (EDA), feature engineering, model building, & prediction (*Python, Jupyter Notebook, and Algorithms*)— depending on the workplace, compile code to .py format and/or pickled model for production
要了解更多关于什么是数据科学家,他们挣多少钱,该领域的前景,以及更多有用的信息,请点击加州大学伯克利分校的链接这里【4】。
数据分析师
威廉·艾文在Unsplash【5】上拍摄的照片。
数据分析师与业务分析师、商业智能分析师甚至 Tableau 开发人员有着相似的头衔。数据分析的重点是描述和可视化数据的当前状况,向非技术用户报告和解释数据。数据科学交叉职位是执行预测分析的数据分析师,与数据科学家有更多相似之处,但没有输出这些预测的自动化算法方法。
成为数据分析师所需的一些主要技能包括:
- SQL
- Excel
- Tableau(或其他可视化工具——谷歌数据工作室等)
SQL*—*正如数据科学家如何使用上述 SQL 一样,数据分析师也是如此。然而,在这个领域中,人们非常关注 SQL。一些数据科学家可以通过几个连接简单地从表中选择列,而数据分析师可以执行更复杂的查询(*例如,通用表表达式、数据透视表、窗口函数、子查询)。*有时,根据公司的不同,数据分析师可以分享数据工程师和数据科学家之间的更多相似之处。
Excel —老派,没错,但是依然非常强大,甚至可以在这里进行预测分析和趋势分析。主要的缺陷通常是 Excel 的性能比其他使用 Python 的更健壮的工具要慢。
Tableau —我只会说可视化工具,但根据我的经验,大多数公司都将这个工具列为数据分析师的一项特定的顶级技能。将数据拖放到 Tableau 中预先创建的图表是简单而强大的;还有更困难和复杂的功能,如计算字段和连接到动态 SQL 数据库,而不是通过静态 Excel 表进行分析。
总的来说,数据分析师也可以从事多种工作,但主要职能是:
— meet with stakeholders to define the business problem— pull data (*SQL*)— EDA, trend analysis, and visualizations (*Excel and Tableau*)— depending on the workplace, presenting findings and supplying actionable insights those same stakeholders
要了解更多关于什么是数据科学家,他们挣多少钱,该领域的前景,以及更多有用的信息,请点击此处【6】,来自西北大学。
类似
一些相似之处已经在前面的章节中描述过了,但是总结一下,数据科学家在编码语言、平台/工具和问题解决方面有一些共同点。
类似的工具包括但不限于 SQL、Tableau 以及定义问题、分析数据和输出分析结果的相同概念。
差异
虽然有相似之处,但这两个领域和角色之间仍然存在差异。
一些主要差异围绕着分析的自动化,数据科学家专注于使用 Python 等编程语言的算法来自动化分析和预测,而数据分析师使用静态或过去的数据,在某些情况下,会使用 Tableau 和 SQL 等工具来创建预测的场景。
摘要
Filiberto Santillán 在Unsplash【7】上拍摄的照片。
数据科学和数据分析共享的不仅仅是名称(数据),它们还包括一些重要的差异。无论您是想成为数据科学家还是数据分析师,我希望您发现这个关键差异和相似之处的概述是有用的。如果你已经是这两个角色之一,那么我希望我教了你一些新的东西,如果你有任何问题或意见,请在下面提出。
参考
[1]照片由克里斯蒂娜@ wocintechchat.com在Unsplash【1】(2019)上拍摄
[2] M.Przybyla,Jupyter 笔记本截图,(2020)
[3] M.Przybyla,数据科学 vs 机器学习。区别就在这里。,(2020)
[4] UC Berkely,什么是数据科学?(2020 年)
[5]照片由 William Iven 在Unsplash(2015)上拍摄
【6】东北大学,数据分析师是做什么的?,(2019)
[7]由 Filiberto Santillán 在Unsplash(2019)上拍摄的照片
数据科学 vs 机器学习。区别就在这里。
数据科学家和机器学习工程师的主要区别和相同点是什么?阅读下面的概要分析。
克里斯蒂娜@ wocintechchat.com 在Unsplash【1】上的照片。
目录
- 介绍
- 数据科学家
- 机器学习工程师
- 类似
- 差异
- 摘要
- 参考
介绍
似乎就连公司及其职位描述都不清楚什么是数据科学家和机器学习工程师。我在这里提供一些见解,解释为什么它们是分开的,以及角色在哪里可以重叠。
起初,为了成为一名数据科学家,我尴尬的不知道什么是机器学习工程师。我很快意识到这个领域类似于数据科学,但又有很大的不同,需要一套独特的技能。长话短说,数据科学是研究、构建和解释你已经建立的模型,而机器学习是该模型的产物。现在我已经在这个领域工作了几年,在这两个学科都获得了经验,我在下面列出了一个大纲,说明什么是数据科学和机器学习工程师角色,什么不是。
数据科学家
近距离观察数据科学家的 Jupyter 笔记本。作者截图[2]。
统计学家?算是吧。用最简单的术语来说,数据科学可以被描述为一个自动化统计领域,其形式是帮助分类和预测结果的模型。以下是成为数据科学家所需的顶级技能:
- Python 或者 R
- SQL
- Jupyter 笔记本
然而,大多数与你一起工作的人,如机器学习工程师、数据工程师和软件工程师,都不会熟悉 r。因此,我相信,作为一名更全面的数据科学家,Python 对你更有益。
SQL ,起初看起来更像是一个数据分析师的技能——的确如此,但它仍然应该是你在数据科学中使用的技能。大多数数据集不是在商业环境中给你的(而不是学术界),你必须自己制作——通过 SQL。现在,SQL 有很多子类型;像 PostgreSQL,MySQL,微软 SQL Server T-SQL,Oracle SQL。它们是同一种查询语言的相似形式,由不同的平台托管。因为它们非常相似,所以拥有其中任何一个都是有用的,并且可以很容易地转换成稍微不同形式的 SQL。
Jupyter 笔记本 几乎可以和机器学习工程师的工具包完全相反。Jupyter 笔记本是数据科学家进行编码和建模的乐园。一个研究环境,如果你愿意的话,允许快速简单的 Python 编码,可以合并代码外的注释,代码本身,以及一个从有用的库中构建和测试模型的平台,如 *sklearn、*和 numpy。
总的来说,数据科学家可以是多方面的,但主要职能是
—与利益相关者会面以确定业务问题
—提取数据( SQL )
— EDA、特征工程、建模、预测( Python 和 Jupyter 笔记本
—根据工作场所,编译代码以。py 格式和/或酸洗模型
要了解更多关于什么是数据科学家,他们挣多少钱,该领域的前景,以及更多有用的信息,请点击加州大学伯克利分校的链接此处【3】。
机器学习工程师
机器学习工程师常用的 Docker 的设置菜单。作者截图[4]。
现在,在上面的最后一点之后,就是机器学习工程师介入的时候了。主要功能是将模型投入生产。数据科学模型有时可能非常静态,工程师可以帮助自动训练和评估相同的模型。然后,他们会将预测重新插入到您公司的数据仓库/SQL 表中。之后,软件工程师和 UI/UX 设计师将在用户界面上显示预测结果——如果需要的话。正如您所看到的,从业务问题到解决方案的整个过程都是一种可见的、易于使用的格式,这不仅仅是数据科学家的责任(然而,是的,一些数据科学家可以做所有 x 数量的角色)。
机器学习工程师的角色也可以命名为 ML ops(机器学习操作)。他们的工作流程总结如下:
A.数据科学模型的 pkl_file
B.存储桶(GCP——谷歌云编辑器)
C.DAG(用于安排模型的培训者和评估者)
D.气流(可视化流程——ML 管道)
E.Docker(集装箱和虚拟化)
起初,也许数据科学和机器学习可以被视为可互换的头衔和领域;然而,通过仔细观察,我们意识到机器学习更多的是软件工程和数据工程的结合,而不是数据科学。下面,我将概述字段交叉和不交叉的地方。
要了解更多信息、可视化、流程,请点击此处 [5],查看谷歌的机器学习操作概述
类似
数据科学和机器学习最相似的概念可能是它们都接触模型。这两个领域共有的主要技能是:
SQLPythonGitHubConcept of training and evaluating data
比较主要是在编程方面;每个人扮演各自角色所使用的语言。这两个职位都执行某种形式的工程,无论是使用 SQL 查询数据库的数据科学家,还是使用 SQL 将来自模型的建议或预测插入到新标记的列/字段中的机器学习工程师。
这两个领域都需要 Python(或 R)知识,通常还需要版本控制、代码共享和通过 GitHub 拉请求。
例如,机器学习工程师有时可能希望了解 XGBoost 或 Random Forest 等算法是如何工作的,并且需要查看模型的超参数进行调整,以便对内存和大小限制进行研究。虽然数据科学家可以在学术界或工作中构建高度精确的模型,但由于时间、金钱和内存的限制,在工作场所会有更多的限制。
差异
数据科学和机器学习的上述部分已经概述了一些差异,但职业和学术研究都有一些重要的关键特征,需要指出:
Data Science - focuses on statistics and algorithms
- unsupervised and supervised algorithms
- regression and classification
- interprets results
- presents and communicates resultsMachine Learning - focus on software engineering and programming
- automation
- scaling
- scheduling
- incorporating model results into a table/warehouse/UI
教育
这两种角色不仅在工作场所不同,在学术界/教育界也不同。成为数据科学家和机器学习工程师有不同的途径。数据科学家可能专注于学位本身、统计学、数学或精算科学,而机器学习工程师将主要专注于软件工程(一些机构确实专门提供机器学习作为证书或学位)。要了解更多关于成为在线数据科学家的信息,你可以在这里阅读我的另一篇文章【6】:
在线学习的专业数据科学家指导您在家开始数据科学生涯
towardsdatascience.com](/yes-you-can-become-a-data-scientist-online-heres-how-dc73c7faae0f)
摘要
虽然不同的人、公司和职位描述对每一个职业有不同的版本或想法,但我当然相信这两个职位有明显的区别。有些技能确实是重叠的,但一般来说,数据科学家专注于统计、模型构建和结果解释。机器学习工程师将采用该模型,对其进行缩放,并将其部署到生产中。如果你来这里是为了学习或决定你的职业道路,我希望这篇文章有所帮助。感谢您的阅读!
参考
[1] 克里斯蒂娜@ wocintechchat.com上 Unsplash ,(2019)
[2] M.Przybyla,截屏——Jupyter 笔记本,(2020 年)
[3] UC Berkely,什么是数据科学?(2020 年)
[4] M.Przybyla,截图——Docker,(2020 年)
[5]谷歌, MLOps:机器学习中的连续交付和自动化管道,(2020)
[6] M. Przybyla,是的,你可以在网上成为一名数据科学家。以下是方法。,(2020)
数据科学 vs 人工智能世界
让我们试着理解什么是数据科学和人工智能,以及它们是如何交叉的
如果你曾经遇到过这些术语——数据科学、人工智能、机器学习、深度学习等等,请举手。但是它们是什么意思呢?我知道这些术语有些混乱。有人说数据科学和人工智能是同义词,有人说一个是另一个的子集,还有人说这些术语完全不相关。
混淆是由于这些术语的模糊和非技术性使用而产生的。
让我们通过扩展上述术语并了解数据科学如何与人工智能世界相交来进入细节。
什么是数据科学?
数据科学是使用各种技能从数据中提取有意义的见解的研究领域。我很肯定每个人都很清楚这一点。但是数据科学如何帮助世界各地的公司做出关键决策呢?让我们来看看。
XYZ 广场的交通拥堵或道路分流可能不是我们关心的问题,但优步的送餐应用 Uber Eats 非常重要。让热食快速送达是他们的首要目标。然而,要在全国范围内实现这一目标,需要先进的统计模型和更多的东西。为了优化整个配送过程,该团队必须预测每个可能的变量(从风暴到假日抢购)将如何影响交通和烹饪时间。
要了解更多关于数据科学的知识,你可以阅读我之前的博客这里。
来源:保证推特
什么是人工智能?
人工智能是机器,尤其是计算机系统对人类智能过程的模拟。这些过程包括学习、推理和自我修正。构成人工智能的任务有:
- 问题解决
- 知识表达
- 论证
- 决策
- 驱动和感知
资料来源:Agenparl.com
什么是机器学习?
机器学习是机器可以在没有明确编程的情况下自行学习的学习**。它是人工智能的一个应用,为系统提供了自动学习和从经验中改进的能力。**
可以说,现在人工智能的主要驱动力是机器学习。
当我们说某样东西能够“机器学习”时,它的意思是它能够利用提供给它的数据执行某种功能,并随着时间的推移变得越来越好。这就像如果你有一个手电筒,只要你说*“这是黑暗的,”它就会打开,所以它会识别包含单词“黑暗”的不同短语*
来源: SAS
什么是深度学习?
深度学习只是机器学习的一个子集。深度学习在技术上类似于机器学习和功能(这就是为什么这些术语有时会松散地互换)。然而,它的能力是不同的。
虽然基本的机器学习模型确实在它们的功能方面变得越来越好,但它们仍然需要一些指导。如果人工智能算法返回不准确的预测,那么工程师就必须介入并做出调整。通过深度学习模型,算法可以通过其神经网络自行确定预测是否准确。
回到手电筒的例子:它可以被编程为在识别到有人说单词*【黑暗】时打开。随着它继续学习,它可能最终会打开任何包含该词的短语。现在,如果手电筒有一个深度学习模型,它可以计算出当它听到“我看不见”或“灯开关不起作用”*时,它应该打开,也许与光传感器串联。深度学习模型可以通过它的计算方法进行学习——这种技术使它看起来像有大脑一样。
我想你已经知道每个术语的意思了。**但是它们在现实世界中是如何相交的呢?**我们再举一个例子来理解这一点。
假设我是一个板球队的战略家。我的任务是制定一个计划来解雇对方队最好的击球手。可能有成千上万的视频捕捉到击球手的发挥。但重要的是要关注击球手被解雇的视频。收集关于击球手的表现恶化的交付类型的见解。这间接地意味着我需要首先清理数据(删除不相关的视频),并从中推断出有用的见解,以创建一个策略。现在,我需要建立一个人工智能模型,可以针对不同的条件和可视化进行训练,以帮助找出投球手需要投球的区域来解雇击球手。(这里涉及到机器学习和深度学习,因为我们处理的是需要不断馈入模型的实时数据)。
你现在明白数据科学如何与人工智能世界相遇了吗?
然后,举起你的手…
数据科学——它到底意味着什么?
数据科学和机器学习导论
马库斯·斯皮斯克在 Unsplash 上的照片
数据科学——这个术语已经存在了很长时间。那些没有实际接触过数据科学或其各种子领域的人可能会认为它是灵丹妙药或魔杖,可以回答任何业务问题或预测任何事情,而不管底层的假设或要求如何。
我并不自称是数据科学家,但是我很幸运地以这样或那样的方式参与了数据科学的各个方面。这是一个极其复杂、广泛的跨学科领域,包括数学、统计学、编程、数据库、大数据、数据分析、机器学习和数据架构等等。
有人非常简洁地将这一现实表述为:
一个数据科学家比任何软件工程师更擅长数学/统计,比任何数学家或统计学家更擅长软件工程。
我不打算用数据科学的正式定义和解释来烦你;然而,“数据科学”中“科学”一词的出现应该足以让人们理解数据科学领域中隐含的科学复杂性。
我在这里的目的是尝试列出并提供数据科学下所有重要的子领域、概念和技术的高级摘要,希望能够作为任何有抱负的数据科学家或对数据科学感兴趣的人的参考指南。
当向不熟悉数据科学的人解释数据科学领域时,我通常倾向于将其分为三个广泛的领域:
- 核心知识
- 机器学习
- 支持区域
在我们分别深入研究它们之前,让我用一个事实来警告这篇文章
如果没有数据科学家试图解决的特定问题的专业知识,任何数据科学项目都不可能成功。
一些专家非常正确地承认,一名优秀的数据科学家需要对三个广泛的领域有足够深刻的理解:数学和统计、计算机科学或编程,以及领域知识。没有对领域知识的复杂理解,一个人将无法有效地定制、调整和使用他/她所拥有的各种工具和技术。
我打算在这里介绍数据科学的前两个领域:数学和统计学,以及计算机科学/编程。
打下必要的基础后,让我们对数据科学中涉及的内容有更多的了解。
核心知识
数学和统计学
我明白你的意思——从最无聊的学术话题开始并不性感。但事实仍然是,对各种数学和统计模型的理解构成了大多数机器学习和深度学习算法的基础。
人们可能能够在没有任何基础统计概念知识的情况下实现机器学习模型。然而,他/她将无法调试它,得出有意义的见解或推论,微调它,解释结果的局限性,或有效地验证它。
数据科学中使用的一些标准数学和统计概念是:
线性代数
- 向量空间
- 矩阵
- 线性系统
微积分,包括多元微积分
概率论,包括贝叶斯统计、假设检验、各种概率分布等。
经典统计学
- 描述性统计——旨在总结并帮助我们更好地理解样本观察数据。这包括集中趋势的度量(例如,平均值、中值和众数)和可变性的度量(例如,方差、标准偏差、最小和最大值、范围、峰度和偏斜度)
- 推断统计—旨在根据从更广泛的总体中抽取的样本的描述性统计来推断总体的基本属性,例如,通过测试假设和得出估计值
- 探索性数据分析(EDA) —对数据集的描述性属性进行可视化分析,例如,通过直方图、核密度图、箱线图、散点图、热图等。
一些标准的统计测试和程序包括回归分析(线性、逻辑、多项式、非线性、多元、二项式、多项式等。)、方差分析(ANOVA)、卡方检验、相关分析、学生 t 检验、时间序列、联合分析等。
统计决策理论 —结合统计知识做出决策,从而阐明决策中涉及的一些不确定性,如混淆矩阵
编程语言
数据科学家需要一个平台或环境来实现上述所有数学计算和模型。编程语言拯救了我们。
除了主要致力于数据科学领域的特定专用编程语言之外,几种通用编程语言也通过各种开源包和函数发展到包括数据科学特定的功能。
数据科学家使用的一些最常见和最流行的编程语言是:
- Python 可能是当今数据科学家使用的主要编程语言,Python 是一种开源、解释型、高级、通用的动态编程语言。自 1991 年首次发布以来,由于被数据科学家所接受,它获得了巨大的吸引力
- R : R 曾经是数据科学家的领先编程语言,专注于统计计算。像 Python 一样,R 也是 1993 年推出的开源、解释型高级语言
- Scala :运行在 Java 虚拟机(JVM)上的通用开源编程语言。由于 Scala 是为在 JVM 上运行而开发的,它本身就允许与 Java 的互操作性。Apache Spark 是一个集群计算框架,它是用 Scala 编写的,这使得它成为在集群计算框架中处理大数据的理想编程语言
- Julia :一种开源、高级、高性能、动态编程语言,旨在满足高性能数值分析和科学计算的需求。Julia 于 2012 年首次推出,迅速赢得了数据科学家的青睐
- MATLAB / Octave : MATLAB 是 MathWorks 开发的专有数值计算语言,在学术界广泛使用。它被认为是数学家、统计学家和科学家的理想选择,因为它在复杂的数值计算方面具有固有的专业性。GNU Octave 是 MATLAB 的开源替代品之一,主要用于数学计算
机器学习
这才是真正有趣的地方——然而,有几种方法可以将所有可能的概念和技术进行分类。对于这篇文章,我将尽量保持分类足够通用,而我的下一篇文章将重点关注三个主要角度来处理各种机器学习概念。
正如我前面提到的,下面所有的机器学习算法都是基于一个或多个经过验证的数学概念。
监督学习
监督机器学习算法可以进一步分为回归和分类算法。
回归算法
这些算法根据输入到算法的数据中的输入变量(称为特征)预测连续的数值变量,包括:
- 简单(单个输入变量)或多个(多个输入变量)线性回归算法,用于模拟输入和输出变量之间的线性关系
- 最小绝对选择收缩算子(LASSO)回归通过改变模型训练过程来选择最终模型中使用的输入变量的子集而不是全部,从而有助于避免简单线性回归模型的过度拟合。参考相关论文此处
- 当输入变量显示高度多重共线性时,即输入变量之间存在高度相关性时,主要使用岭回归。参考相关论文此处
- 支持向量回归(SVR)利用 SVM 的概念(见下文)来寻找 N 维空间(其中 N 等于输入变量的数量)中的最佳超平面,然后用于预测连续输出变量。参考相关论文此处。
分类算法
这些算法将输出变量(称为目标)分类或归类到给定数量的类中。最常见和众所周知的分类算法是:
- 逻辑回归使用 sigmoid/逻辑函数来预测二元目标变量被分配到两个可能的目标类之一的概率。这种函数估计基于几个输入变量(连续变量或二分变量)和目标输出变量之间的历史关系
- 朴素贝叶斯利用众所周知的贝叶斯定理解决分类问题
- 支持向量机(SVM)的目标是在 N 维空间(其中 N 等于输入变量的数量)中找到最佳超平面,该超平面清楚地分类数据点。参考相关论文此处
两用算法
大多数其他监督机器学习算法可以应用于回归和分类问题,例如:
- 分类和回归树(CART)是一个总括术语,包括分类和回归决策树。决策树利用一组给定的输入属性及其类来生成一系列规则(决策树),这些规则可用于对数据进行分类或预测实际的输出
- k 最近邻(kNN)是一种计算密集型算法(惰性学习),它通过距离度量(最常见的是欧几里德距离)对每个点的 k 最近邻进行简单多数投票,从而对数据进行分类或识别新数据的值。k 的理想值需要通过反复试验或特定的统计方法独立确定。在 kNN 分类中,输出是分类,而在 kNN 回归中,输出是目标的平均属性值
- 随机森林是一种用于分类和回归问题的集成机器学习方法。它们在模型训练时构建多个决策树,并输出作为类的模式(分类)或单个树的均值预测(回归)的类
- 梯度推进算法产生弱预测模型集合形式的预测模型,通常是决策树。目的是减少过度拟合,避免过于复杂的算法,并利用各种弱个体决策树,迭代地识别理想模型。选择理想模型(称为损失函数)的决策标准可以是回归问题的均方误差或分类问题的对数损失
无监督学习
无监督的机器学习算法试图在没有预先存在的标签的数据集中识别和预测以前未检测到的模式;换句话说,我们事先不知道目标变量的正确值。
例如,一家公司可以实施一种无监督的机器学习算法,根据特定的共享特征来识别其客户并将其分组为独特的细分市场。你可以想象,客户没有预先存在的标签将他们分类到特定的细分市场——无监督的算法来拯救我们。
无监督机器学习算法可以进一步分为以下几种:
聚类算法
这些算法将相似的数据点分组或分类到特定的组中,主要通过一些相似性或距离度量。理论上,一个组/群内的观测值将表现出与另一个群不同的相似特性。
一些标准的聚类算法包括:
- k-Means 聚类-也许是最常见和最广泛使用的聚类算法-以最小化每个聚类内各个观察值之间的差异的方式将观察值分配给组
- 基于密度的带噪声应用空间聚类(DBSCAN)是科学文献中引用的另一种传统算法,它将紧密包装在一起的观察值(高密度区)组合在一起,同时将那些单独位于低密度区的观察值标记为异常值。此处的论文中描述了该技术
- 源于图论的谱聚类利用数据相似性矩阵的谱(特征值)来执行降维,然后在更少的维度内对单个观察值进行聚类。该技术在一文中有所描述
- 均值漂移聚类在某种意义上类似于 DBSCAN 算法,它试图找到数据点的密集区域,并相应地对它们进行分组。然而,均值漂移将异常值组合在一个单独的聚类中,而 DBSCAN 同样识别这些异常值。该技术在相关论文中有所描述
- 聚集聚类是一种自下而上的层次聚类,它最初将每个数据点视为单个聚类,然后连续合并(或聚集)聚类对,直到达到所需的聚类数
- 使用层次结构的平衡迭代减少和聚类(BIRCH)递增地和动态地对传入的多维度量数据点进行聚类,以试图利用可用资源(即,可用存储器和时间约束)产生最佳质量的聚类(Zhang,Ramakrishnan 和 Livny,1996)。在的论文中描述了该技术
异常检测
异常检测是从给定数据集中识别异常值的过程,这些异常值被认为与大多数观察值显著不同。异常检测大量用于欺诈检测、结构缺陷、医疗条件等。
用于异常检测的流行的无监督机器学习算法包括:
- 隔离森林算法基于一种基于模型的方法,通过子采样来隔离异常,而不是将观测值与“正常”观测值进行比较的传统技术。该算法在论文中描述,这里
- 一类 SVM 是一种无监督算法,它将新数据分类为与训练集相似或不同。此处的论文中描述了该技术
- 上面解释的一些聚类算法也用于异常检测
降维
这些方法旨在减少数百甚至数千个特征(输入变量)的数量,以便为我们的算法选择最佳的可预测特征,而不会丢失重要信息,同时保持(或潜在地改善)我们模型的性能。
一些降维技术包括:
- 主成分分析(PCA)用于通过从现有的大量变量中提取新的一组变量来减少特征冗余和多重共线性。这些新导出的变量被称为主成分
- 线性判别分析(LDA)在最大化类别可分性的同时,寻找最佳解释数据的变量的线性组合
还可以通过相关性分析(移除高度相关的特征)、方差膨胀因子(VIF)分析、后向特征消除和前向特征构建等来实现维度减少。
时间序列
时间序列预测为我们的数据集增加了一个独特的时间维度,从而带来了观测值之间的时间依赖性。在传统的机器学习算法中,未来是基于历史观察来预测的,其中所有先前的观察被同等对待。然而,时间序列数据集的不同之处在于,它增加了观测值之间的显式顺序相关性:时间维度。
时间序列数据既可以是单变量的(例如,历史日降雨量或产品的日销售额),也可以是多变量的(例如,两种产品的过去常规销售额)。此外,时间序列预测可以是单步或多步预测。单步预测只预测未来的下一个变量,而多步时间序列预测则预测多个未来值。我们预测的未来越远,我们的置信区间就越宽。
以下是时间序列预测实践中常用的一些统计和机器学习概念:
- 使用合适窗口中时间序列值的移动平均(MA)来预测未来值
- 自回归(AR)模型使用以前的时间观测值作为回归方程的输入,来预测下一时间步的值
- 自回归移动平均(ARMA)模型试图在预测时间序列时模拟 AR 和 MA 两个方面
- 自回归综合移动平均(ARIMA)模型建立在 ARMA 模型的基础上,通过添加差异因子(ARIMA 的 I)使时间序列平稳——这是所有基于 AR 和 MA 模型的重要假设
- 季节性自回归综合移动平均(SARIMA)模型建立在 ARIMA 模型的基础上,增加了季节性因素,以适应时间序列中的季节性波动
- 带有外生回归量的季节性自回归综合移动平均(SARIMAX)是在 SARIMA 模型的基础上增加了一个外生变量。这些外生回归变量是平行的时间序列变量,不能通过 AR、I 或 MA 过程直接建模,但可以作为 SARIMAX 模型的加权输入
- 自回归条件异方差(ARCH)对时间序列的方差随时间的变化进行建模。请注意,基于 AR 和 MA 的模型无法处理时间序列中不断变化的方差
- 广义自回归条件异方差(GARCH)模型是 ARCH 模型的扩展,将移动平均分量与自回归分量相结合
- GARCH 模型的其他变体包括非线性 GARCH (NGARCH)和积分 GARCH (IGARCH)
- 长短期记忆(LSTM)是一种递归神经网络,它具有单变量、多变量和多步时间序列预测的能力
推荐系统
推荐系统算法正是顾名思义:根据用户的消费历史和/或偏好,向用户推荐最相关的商品。项目可以是要看的电影(网飞),要听的歌曲(Spotify),要购买的产品(亚马逊和易贝)。
让我们简要回顾一下目前使用的主要推荐系统:
协同过滤方法仅依赖于用户之前的互动(点赞数、用户评分、购买量、阅读文章的时间等)。)与有问题的项目。基本前提是:如果我和我的朋友都喜欢一部特定的电影(基于我们的评级),我最有可能想看另一部我朋友喜欢的电影。
协同过滤方法可以进一步细分为以下几种:
- 基于记忆的方法依赖于先前的用户交互,没有用于推荐的底层模型,使用某种基于距离或邻居的标准
- 另一方面,基于模型的方法依赖于潜在的预测模型进行推荐。这种方法使用了几种模型,包括矩阵分解算法、贝叶斯网络、聚类模型、潜在语义模型等。
基于内容的过滤方法在协作过滤方法的基础上,加入了用户资料、商品描述或两者之间的细微差别。例如,基于内容的电影推荐算法可以利用我的年龄、性别和位置(用户资料)或电影类别、语言和主要演员(项目描述)来推荐我的下一部电影。贝叶斯分类器、聚类分析、决策树和人工神经网络通常用于估计用户喜欢某个项目的可能性。
混合系统利用协作和基于内容的过滤来构建推荐系统。网飞是使用混合推荐系统的一个很好的例子。它的推荐是相似用户的观看和搜索习惯的组合(即,协同过滤)以及推荐与用户过去评价高的电影具有共同特征的电影(基于内容的过滤)。关于网飞推荐系统的更多细节,请参考这篇文章。
人工神经网络
人工神经网络(ANN)的灵感来自于生物大脑如何在生物神经元的帮助下进行复杂的决策过程。人工神经网络和深度学习之间的文献有一些重叠。然而,在本文中,我将把人工神经网络视为一个仅由三层神经元组成的网络:输入层、隐藏层(所有数据和信息处理都由机器学习算法执行)和输出层。人工神经网络被设计成迭代地学习或适应它们自己,并被广泛用于寻找模式或识别图像,这些模式或图像对于人类编程来说太复杂或太耗时。
正如 Howard Rheingold 所说,人工神经网络通过实例学习:
神经网络是一种技术,它不是一种算法,它是一个有权重的网络,你可以调整权重,让它学习。你通过试验来教授它。
深度机器学习
深度机器学习或深度神经网络是具有多个隐藏层的高级 ann,即每个隐藏神经元层可以通过机器学习算法迭代处理信息,以更有效地将输入层映射到输出层。
一些最常见的深度神经网络类型有:
卷积神经网络
CNN 主要用于图像或模式识别、分类和分析问题。CNN 于 1998 年作为 LeNet-5 首次推出。它们不同于常规神经网络(在常规神经网络中,通常每一层都与前一层中的所有神经元完全连接),这些层是以三维(宽度、高度和深度)组织的,并且一层中的神经元仅与下一层中的一小部分区域连接。顾名思义,CNN 中的层是卷积层,在传递到下一层之前,对输入使用卷积操作。
目前在各自领域中使用的一些领先的 CNN 模型实现有:
- 对象识别: AlexNet , GoogLeNet , VGGNet , ResNet
- 对象分割: DeepLab , U-Net , SegNet ,金字塔场景解析网络
- 物体检测: R-CNN ,快速 R-CNN ,更快 R-CNN ,你只看一次(YOLO) ,基于区域的全卷积网络(R-FCN) ,单次多盒检测器(SSD)
生成性对抗网络
GANs 于 2014 年推出,是一种算法架构,以对立的方式使用两个神经网络来生成新的合成数据点,这些数据点非常接近真实数据。它们广泛用于图像生成、视频生成和语音生成。
gan 的工作原理是由一个神经网络(生成器)生成新的数据实例,而另一个神经网络评估它们的真实性(鉴别器)。因此,鉴别器决定它检查的每个数据实例是否属于实际的训练数据集。此处参考原论文。
递归神经网络(RNN)
RNNs 是为序列问题设计的一种特殊类型的神经网络。它们与其他深度神经网络的不同之处在于,前一步的输出是下一步的输入(因此是循环的)。
因此,除了在模型训练步骤中涉及的传统学习之外,rnn 具有额外的学习步骤,由此它们在生成输出的同时记住从先前输入学到的东西。rnn 用于手写识别、语音识别、时间序列预测、自然语言处理等。
一些基于 RNNs 的特定神经网络是:
- 长短期记忆(LSTM)和 GRUs 可以通过门的概念处理 RNN 与消失梯度相关的缺点。网关有助于调节网络中的信息流
- 门控循环单元(GRU)类似于 LSTM,但没有输出门。此处参考原纸的
- 双向 RNN——于 1997 年推出——“可以在不限制使用输入信息的情况下进行训练,直到预设的未来帧。这是通过在正负时间方向上同时训练它来实现的。”。引用原文可在这里查阅
- Hopfield 网络由包含一个或多个完全连接的递归神经元的单层组成。原文可以在这里查阅
自然语言处理
自然语言处理(NLP)是一个宽泛的术语,包括人类语言计算处理的几个方面,无论是处理文本输入(翻译、情感分析等)。),或者通过算法(自然语言生成、自动摘要、聊天机器人等)生成人类可以理解的文本。).
虽然 NLP 算法和方法是基于 ANN 和深度网络的,但我决定单独阐述 NLP,因为大多数最新的 NLP 算法由两种或更多种不同的深度学习算法组成(ANN、RNN、CNN 等)。).
通过深度机器学习算法执行的 NLP 相关功能包括机器翻译、解析、标记、命名实体识别、自然语言生成、聊天机器人、情感分析、总结等。
一些常见的预训练或 NLP 相关模型和库包括:
- Word2Vec 和单词表示的全局向量(GloVe) 是单词嵌入的主要方法。在 NLP 的上下文中,单词嵌入是将单词转换或翻译成向量的过程,其中向量最纯粹的形式就是一组实数。单词的向量表示对于深度学习算法来说非常有用,可以确定单词在句子中的上下文含义
- ELMo——基于 RNN 架构——与 Word2Vec 和 GloVe 相比,提供了卓越的、双向的和上下文相关的单词嵌入。
- 谷歌的 Transformer-XL 建立在原始 Transformer 架构的基础上,通过支持“在不破坏时间连贯性的情况下学习超过固定长度的依赖性”,支持更长的文本序列(引用自链接的原始论文)。
- 谷歌的 BERT 自 2018 年末发布以来,或多或少都是一个启示。它集合了其他 NLP 方法的所有优秀组件,是预先训练的,非定向的,并且基于并行变压器架构。
- 斯坦福的 Stanza 库有几个可以在 NLP 管道中使用的工具,并且支持 70 多种语言。
支持区域
佩里·格罗内在 Unsplash 上的照片
虽然以下支持活动在理论上不属于数据科学的一部分(因为它们中的每一个本身都是一个独立的研究领域和领域),但它们通常通过使我们的工作更加高效和有效来补充机器学习任务。
数据工程
尽管数据工程是一个相当广泛的领域,但为了简洁起见,我将简要地回顾一下数据收集、摄取和清理等概念。所有这些任务构成了任何机器学习管道的基石——没有干净的数据,没有以我们的 ML 算法可以使用的方式转换的数据,就没有机器学习。
数据工程的主要目标是收集数据,并以机器学习算法可读和可用的方式转换数据。
搜索引擎是 NoSQL 的数据库管理系统,方便搜索数据内容。一些常用的搜索和分析引擎包括:
- Elasticsearch 是一个可伸缩的、开源的面向文档的数据库,可以存储、管理和检索文档和半结构化数据。Elasticsearch 用 Java 编写,基于 Apache Lucene,可以执行全文搜索
- Splunk 是一款旨在处理大数据分析的商业应用程序,可以作为搜索引擎来提取存储在其数据库中的数据
- Solr 类似于 Elasticsearch(一个用 Java 编写并基于 Apache Lucene 的开源面向文档的数据存储),它面向静态数据搜索,而 Elasticsearch 具有更多的分析能力。
数据/网页抓取是通过 Scrapy、美汤、硒等工具从网站收集或提取数据的过程。
数据摄取是在执行高级数据分析或将其用于机器学习目的之前,从各种来源(可能通过搜索引擎或网络抓取)收集数据到一个中心点(例如,数据湖或数据仓库)的过程。
数据清理或者说清理形成了机器学习管道的一个关键组成部分(还记得 GIGO 吗?).它包括删除重复、错误或不相关的条目,统一标签,将它们转换为适当的格式,处理缺失数据(完全排除它们或通过其他方式输入它们),以及其他类似的过程,以使原始数据可用于我们的 ML 算法。
数据存储
顾名思义,数据存储就是以可重用和易于访问的形式存储数据的过程。一些传统和非传统的数据存储方法包括:
- SQL 数据库,例如 SQLite、PostgreSQL 和 MySQL
- NoSQL 数据库,如 MongoDB、Apache Cassandra、Redis、Apache Hbase、Couchbase(均为开源)
- 云数据库,例如亚马逊关系数据库、微软 Azure SQL 数据库、甲骨文云、谷歌云 SQL、IBM DB2、亚马逊 DynamoDB (NoSQL 数据库)
大数据
并非所有数据科学项目都涉及大数据,但如果您的项目涉及大数据,以下是一些相关的框架和解决方案。以下大部分是分布式处理框架,它们本身能够以并行方式存储、处理和处理大量结构化和非结构化数据。
Hadoop 是一套开源程序、工具和程序(即完整的大数据框架或生态系统),作为大数据运营的主干。由 Apache 开发,是一个开源框架;然而,各种第三方供应商专门针对您的特定组织要求进行 Hadoop 部署。
Hadoop 的一些最常见的模块是:
- Hadoop 分布式文件系统(HDFS)是 Hadoop 生态系统的支柱,使得高效存储大量数据成为可能
- MapReduce 是 Hadoop 的核心处理组件,允许对分组数据进行数学运算
- Hadoop Common 或 Core 是一组通用实用程序和库,支持 Hadoop 生态系统中其他模块的高效工作
- 另一个资源协商器(YARN)管理用于处理和分配的系统资源,以及处理活动的调度
- Apache Pig 是一种高级过程化数据流语言(具有类似 SQL 的命令结构),用于 Hadoop 中的 ETL、数据处理和分析
- Apache Hive 是 Hadoop 的数据仓库,它使用自己的类似 SQL 的语言 HiveQL 来管理和分析大型数据集
- Apache Mahout 允许在 Hadoop 中开发机器学习应用程序
- Apache h base——运行在 HDFS 之上的 Hadoop 的 NoSQL 数据库
- Apache Zookeeper 用于高效管理和协调任何包含各种 Hadoop 组件或服务的 Hadoop 作业
Spark 是 Apache 开源开发的另一个大数据生态系统。您可能想知道,既然已经有了 Hadoop 形式的大数据框架,Apache 为什么还要开发 Spark。Spark 通常在 Hadoop 的 HDFS 之上实现,以克服 MapReduce 的一些处理缺点,从而将处理速度提高数倍(特别是对于大量的实时数据流)。
虽然 Spark 作为一个集群计算框架,可以在独立的基础上实现。然而,它主要用在 Hadoop 生态系统中,以便两全其美。
数据可视化
数据可视化是数据的图形化表示,有助于更好地理解我们的数据及其各种错综复杂的关系、术语、问题等。
数据科学家可用的一些主要数据可视化工具和解决方案包括:
- 优秀的旧 Microsoft Excel 仍然可以用于初步的数据可视化任务,这些任务不需要过多的数据
- Tableau 是一个商业数据可视化工具,具有交互式可视化和连接到大多数典型数据源的能力
- Python 有自己的内置和开源数据可视化包,包括 Matplotlib(用于快速和基本可视化的默认转到选项)、Plotly(用于更精细和交互式的绘图)、Seaborn(面向详细的统计可视化)
- 与 Python 类似,R 有自己的可视化包,包括 ggplot2、Lattice、Plotly 和 Rshiny 等。Rshiny 还允许开发可以部署在公共 URL 上的交互式 web 应用程序和数据可视化
- 基于 JavaScript 的数据可视化库包括 Chart.js、Timeline.js、Highcharts 和 D3.js 等
结论
至此,我们结束了数据科学的旋风和高级之旅。这是一个极其广泛、多样化和快速发展的领域——以上并不意味着是其所有方面的全面列表。相反,这只是任何初露头角的数据科学家的初级读本。希望它可以作为其他人寻找一些主要组件的高层次解释的参考指南。
我希望在未来写更多关于机器学习方面的文章——请看这个空间。
与此同时,如果你想讨论任何与数据科学相关的问题,特别是机器学习,请随时联系 me 。
参考
[1]张,t .,拉马克里希南,r .,,利夫尼,M. (1996 年 6 月).BIRCH:一种用于超大型数据库的高效数据聚类方法。 ACM SIGMOD 记录,25 (2),第 103–114 页。
数据科学—我从哪里开始?
面向非程序员的数据科学实用入门工具包
作者图片
所以我遇到了很多不同背景的人(电子、机械、本科生(一/二年级)、销售、金融等)。想要探索数据科学领域的人,他们的一些问题是这样的,甚至当我开始时我也在想。—
- 我能进入数据科学领域吗?
- 不编码可以吗?
- 从哪里获取数据?
- 或者更重要的是,我能解决的问题在哪里?
嗯,第一个问题的答案是肯定的。任何人都可以进入这个领域。这都是关于持续的学习和应用逻辑。
对于其他问题,请继续阅读—
- **你肯定需要编码技能。ML 编码水平并没有你成为一名软件工程师所需要的那么高(至少在刚开始的时候)。编码仍然是 ML 不可或缺的一部分,因为无论你一开始使用多少工具,像 Weka 或 Alteryx(它有拖放式 ML),最终从长远来看你需要 R 或 Python。而且 SQL 很重要,**千万不要小看它!
- 有各种各样的学习网站提供关于这些语言/概念的免费课程,比如— Udemy 、 Udacity 、 DataCamp Team 等。这些网站有 Python 的初级、中级、高级课程和数据科学所需的 R 的不同赛道,非常有用。如果你付钱,你甚至可以得到一个证书,你可以把它发布在 Linkedin 上。也有许多 Youtube 频道致力于面向初学者的数据科学课程并且很有帮助。
- 因此,上述课程/渠道的最佳之处在于,它们大多提供了你可以一起探索的数据集。除此之外,现在有很多开放的数据源,你可以从那里下载数据并开始工作。有网站提供了开放数据源的列表,你可以从中选择:【Freecodecamp】【福布斯】学习中心 等。****
- 世界上发生的下一件好事是卡格尔 !对于任何不知道的人(甚至两年前我也不知道,直到我最喜欢的一位教授给了我们一个关于这个的项目), Kaggle 是一个由数据科学家和机器学习实践者组成的在线社区,在那里真正的组织发布他们的问题陈述、数据集和他们想要的东西等。你所需要做的就是创建一个账户(免费的!!)并开始工作。在数据科学领域强烈推荐。任何人都可以参与、下载、分享分析和代码,基本上任何你想在机器学习、深度学习或任何相关领域开始的事情。
来源:Kaggle.com
- 除此之外,还有几个由学习网站提供的训练营和专门课程,提供概念、数据和问题。有时,它们有助于获得可见性。
- 在你使用开放数据集、笔记本等练习了这个过程之后。在接触来自你领域的真实数据时,你会更有信心。对你来说,一个优势是除了 ML 之外,你还会有领域知识,这是解决问题的基础。
- 以上几点都是关于过程的。理解 ML 概念,以及该领域的新趋势,数据操作的技巧等。其中一些网站很有帮助: KDNuggets 、走向数据科学、机器学习大师、 Analytics Vidhya 、数据科学中心等。
好吧,我想我们已经走到尽头了。你知道从哪里学习概念,从哪里练习编码,从哪里获得数据集和问题陈述,甚至代码!你还在等什么?去开始吧!😄
如果有其他同样可以增值的东西,留下回应!😃
还有,如果你想在一个地方了解 ML 的所有步骤,可以去翻翻我之前的故事非数据科学家的数据科学(上)。
数据科学:哪些公共卫生因素对预期寿命影响最大
影响全球预期寿命的公共卫生因素多元线性回归分析
来源: [Roser M.](http://Max Roser, Esteban Ortiz-Ospina and Hannah Ritchie (2020) - “Life Expectancy”. Published online at OurWorldInData.org. Retrieved from: ‘https://ourworldindata.org/life-expectancy’) Via: 数据中的我们的世界
背景:
预期寿命是评估人口健康的基本指标。它告诉我们人口的平均死亡年龄。据估计,在前现代和贫穷的世界里,世界各地的预期寿命是 30 岁。自 1900 年以来,全球平均预期寿命增加了一倍多,现已超过 70 岁。各国之间预期寿命的不平等仍然很大。最近,预期寿命最低的国家是中非共和国,为 53 岁,而日本的预期寿命高出 30 岁。
目的:
这个项目的目的是为了更好地理解各种公共健康因素和全球预期寿命之间的关系。各国如何更好地分配其有限的资源,以提高其人口的总体预期寿命?为了回答这个问题,建立了多元线性回归模型,然后进行评估以确定最佳拟合。 Github 链接
数据源:
世界卫生组织(世卫组织)下属的全球卫生观察站(GHO)数据库跟踪所有国家的健康状况以及许多其他相关因素。最终数据集包含 2939 个观察值,其中每行代表特定年份的一个国家。共有 193 个国家有 2000 年至 2015 年的数据。这些特征包括免疫因素、死亡率因素、经济因素、社会因素和其他健康相关因素。
功能列表:
*营养不良流行率范围是以年龄为单位
最初对于基线模型,文献综述和领域知识被用来选择哪些预测因子对预期寿命有最大的影响。此外,还创造了 4 个可能影响预期寿命和更好地解释数据的特征。
这些工程特性包括:
- 人口规模——建立了一个人口范围,包括三个类别;小号、中号和大号。
- 生活方式——一个将酒精消费和身体质量指数考虑在内的交互变量。
- 经济——人口和国内生产总值(GDP)之间的交互变量。
- 死亡比率——成人和婴儿死亡率之间的比率。
数据争论:
使用了各种 Python 库,如 Pandas 来清理和探索数据。还使用了 Numpy 、 Scipy 和 Sklearn 进行数据分析、描述性统计和建模。
首先,从数据集中移除所有碎片化的观察值。为了查看数据是否符合线性模型假设,为每个带有目标变量的预测值生成散点图并进行评估。必要时,为了满足模型假设,对某些特征进行了转换,以实现更加线性的关系和正态分布。
数据转换成更正态分布
接下来,通过创建相关热图,在选定的预测值之间评估多重共线性模型假设。多重共线性阈值被指定为 0.8,阈值以上的变量被剔除。
评估线性回归中多重共线性假设的相关热图
之后,通过查看盒须图和散点图来评估所有可能的异常情况。扭曲数据的极端观察被删除。
移除异常值后预测变量的散点图
结果:
第一个预测预期寿命的模型使用了这些特征;身体质量指数,艾滋病毒,1-19 岁,国内生产总值,死亡率,生活方式,教育,婴儿死亡率,经济和人口规模。R 的平方等于 0.804。换句话说,最初的模型解释了预期寿命 80%的变化(与平均线相比)。
基线模型的结果
建立了另一个模型,其中数据经过缩放,并移除了基线模型中不重要的预测值(p 值> .05)。由于各种要素具有不同的测量单位,并且数据已经过转换以满足模型假设,因此缩放数据可使结果更具可比性和可解释性。
为了测试另一个线性回归模型假设的模型,评估了同方差的残差分布。残差虽然分散,但确实表明了较小的正线性关系。这种异方差性很可能是由于预测变量分布有偏差,或者可能存在数据集没有信息的缺失要素。
估计残差同方差线性回归模型假设
使用 80%的数据训练模型,剩余 20%用于模型预测的训练测试分割测试也被用于评估模型。该模型的平均绝对误差为 3.02。进行了另一次列车测试分割,其中包括所有特征,甚至包括那些被认为不重要的特征,平均绝对误差略微提高到 2.99。
结论:
对于希望提高全球预期寿命的国家,一个建议是将资源主要集中在提高对艾滋病认识和预防的项目和政策上。有趣的是,尽管艾滋病毒的研究和维护有所增加,但它仍然是发展中国家的一个主要负担。
此外,另一项建议是各国制定更多政策,分配更多资源,增加受教育机会。结果提出了另一个问题:是某些国家没有优先考虑教育,还是它们没有足够的资源来提供更多的教育?这些国家是否过于注重生存,以至于更多的教育是次要的?
下一步可能是将“发展中”和“发达”国家分开,因为影响每一类国家的公共卫生因素可能非常不同。发展中国家仍然缺乏基本资源,而发达国家可能有完全不同的问题,如心血管疾病和癌症(更多数据!).
这里有一个到 Github 库的链接,其中包括代码,并进一步解释了我为这个项目采取的步骤。如果你有任何问题,欢迎留言或在 LinkedIn 上联系我!
在家工作时的数据科学
在家工作时如何跟上数据科学?你的导师比以往任何时候都更忙——但是不要担心,你并不孤单!
西蒙·米加吉在 Unsplash 上的照片
我们生活在一个奇怪的时代!疫情冠状病毒对“办公室工作”的影响超出了任何人的预期。虽然我更喜欢在家工作,但这并不适合所有人。由于缺乏指导,经验较少的数据科学家正经历艰难时期。许多 IT 从业人员都是内向的人,这使得这一点更加明显。
在这篇文章中,我分享了一些资源,您可以自由地使用它们来提问,跟上数据科学的新工具,并加入志同道合者的社区。
这里有几个你可能会感兴趣的链接:
- [Labeling and Data Engineering for Conversational AI and Analytics](https://www.humanfirst.ai/)- [Data Science for Business Leaders](https://imp.i115008.net/c/2402645/880006/11298) [Course]- [Intro to Machine Learning with PyTorch](https://imp.i115008.net/c/2402645/788201/11298) [Course]- [Become a Growth Product Manager](https://imp.i115008.net/c/2402645/803127/11298) [Course]- [Deep Learning (Adaptive Computation and ML series)](https://amzn.to/3ncTG7D) [Ebook]- [Free skill tests for Data Scientists & Machine Learning Engineers](https://aigents.co/skills)
上面的一些链接是附属链接,如果你通过它们进行购买,我会赚取佣金。请记住,我链接课程是因为它们的质量,而不是因为我从你的购买中获得的佣金。
不和谐社区
约翰·施诺布里奇在 Unsplash 上拍摄的照片
Discord 是通过语音、视频和文本进行交流的最简单的方式,无论你是学校俱乐部、夜间游戏小组、全球艺术社区的一员,还是只是想出去玩的几个朋友。
有许多数据科学不和谐服务器,所以我在这里列出了最受欢迎的:
- 数据共享是面向数据科学的官方不和谐社区。你可以在你当前的项目中得到帮助,或者在其他人的学习道路上帮助他们。
- 数据科学是一个由来自不同行业和学术界的数据科学家组成的活跃、有凝聚力的团体,目的是让每个人分享他们的领域专业知识、讨论问题、探索该职业的许多不同学科,并在此过程中建立友谊。
Reddit 社区
Kon Karampelas 在 Unsplash 上拍摄的照片
Reddit 不需要特别介绍,所以我只列出了数据科学中最受欢迎的三个子主题:
- r/MachineLearning —拥有 110 万会员的机器学习社区
- 初学者问愚蠢问题和专家帮助他们的地方!
- r/learnmachinelearning —专门学习机器学习的子编辑器。
Quora 社区
Quora 标志
Quora 是一个获取和分享知识的地方。这是一个提问的平台,可以联系那些提供独特见解和高质量答案的人。
Quora 越来越受欢迎,因此网站上有越来越多的数据科学专家。有两个有趣的话题可以关注或提出问题:
五三八
五个三十八个标志
FiveThirtyEight 是一个 Nate Silver 的博客,使用硬数据进行统计分析,讲述关于政治、体育、科学、经济和文化的引人入胜的故事。
我养成了每天阅读几篇文章而不是阅读新闻网站的习惯。有几次,我从这篇文章中得到了一个适用的想法,帮助我进行分析。
r 博客
R-bloggers 徽标
R-bloggers —如果你使用 R 作为数据科学的主要语言,你应该关注这个博客。它有 R 新闻和由数百个 R 博客贡献的教程。我不使用 R,但我不管不顾地阅读博客,只是为了看看 R 生态系统中正在发生什么。
机器学习掌握
机器学习大师徽标
机器学习大师——MLM 是一个博客,它的主要目的是出售杰森·布朗利的电子书。我是这个博客的忠实读者已经有一段时间了,Jason 在用简单的术语介绍复杂的话题方面做得很好。有几次,我只是让初级数据科学家去 MLM 更新他们关于某个主题的知识。
简单统计
简单统计标志
Simply Statistics 是由三位来自常春藤大学的生物统计学教授撰写的博客。该博客有关于各种主题的高质量帖子,这些帖子都有数字支持。我只阅读(一个更好的词是“学习”)那些最适用于我的工作领域的。
课程
了解如何训练一个机器学习模型,并将其部署到云上(声明:我是该课程的作者)。
一步一步的指导,将告诉你如何训练一个机器学习模型,建立一个网络应用程序,并部署到…
medium.com](https://medium.com/@romanorac/hands-on-data-science-course-e764853f516b)
在你走之前
在推特上关注我,在那里我定期发关于数据科学和机器学习的推特。
照片由Courtney hedge在 Unsplash 上拍摄
Julia 的数据科学:线性代数
Julia 中的线性代数—提示:它甚至比 Numpy 更简单
说到数据科学,没有那么多编程语言可以选择。你可以用 Python 或者 R,或者最近用 Julia。如果你不知道 Julia 是什么,请参考我以前的一篇文章:
[## Julia 简介:数据科学中 Python 和 R 的替代方案
迎接面向科学计算、数据科学和机器学习的 21 世纪编程语言。
towardsdatascience.com](/introducing-julia-an-alternative-to-python-and-r-for-data-science-dcbf98346253)
如果你不想读完整本书(这也很酷),这里有一句总结:
Julia 是一种编程语言,写起来像 Python,但运行起来像 c。
由于这些原因,我想给你,我的读者朋友,一本使用 Julia 编程语言的线性代数入门书。现在,这不是线性代数的完整课程**,因为不可能在 5 分钟内教完(如果你不是你知道谁),但是这篇文章将涵盖如何处理线性代数数据结构——向量和矩阵——以及如何用它们做很酷的事情。**
所以,是的,这篇文章假设你至少知道一些关于这个主题的东西,并且熟悉线性代数运算,比如说 Numpy ,但是渴望看到 Julia 提供的东西。
事不宜迟,我们开始吧!我假设你已经在 Jupyter 这样的环境中安装并运行了 Julia(如果你不参考上面的文章)。您只需要导入一个库,并且您可能会猜到是哪个库:
声明向量和矩阵
如果我们不知道如何声明基本向量和矩阵,谈论特征分解和欧几里德范数是没有意义的。不过这很简单,我要说比用 Python 要简单一点(不确定 R)。
单行矩阵
要创建一个行向量,您需要用方括号将元素括起来,并且不要在元素之间放置逗号(如果放置逗号,您将得不到向量):
列向量
以类似的方式,要生成列向量,您还需要在末尾加上一个单引号,其他事情都与行向量相同:
[数]矩阵
创建矩阵的语法非常相似——您将逐行声明它,将分号(;)来指示元素应该在新的一行上:
零点矩阵
创建一个由零组成的 n*m 矩阵的语法与 Python 中的非常相似,只是没有 Numpy 前缀:
一的矩阵
这同样适用于一的 n*m 矩阵:
对角矩阵
如果你想做一个对角线矩阵,也就是不在对角线上的元素为 0 的矩阵,你可以通过Diagonal()
和传入对角线上元素值的数组来实现:
单位矩阵
以类似的方式,您可以创建一个 n*n 单位矩阵:
随机数矩阵
要创建一个包含均匀分布元素的 n*m 矩阵,可以使用rand()
方法:
随机数矩阵(正态)
或者使用randn()
从标准正态分布(mean = 0,var = 1)中抽取元素:
现在,我们已经做了很多,但仍然没有涉及任何线性代数运算,这将在下一节中介绍。
线性代数运算
在这一节中,我们将讨论矩阵乘法、逆矩阵、行列式、特征分解等等。我们开始吧!
移项
要计算矩阵转置,您可以使用方便的transpose()
函数:
重塑
一个数组也可以被重新整形——这里我创建了一个包含 1 到 10 元素的数组,并将它们重新整形为一个 2 行 5 列的矩阵:
变平
您可以轻松地将 n*m 矩阵展平为一个列向量——这在以后涉及数据科学时会有很多用例:
点积
我相信你能猜到一种计算点积的方法的名字:
矩阵乘法
要执行矩阵乘法,您可以使用乘法符号,而在 Python 中,您使用了 @ 符号:
逐元素乘法
要逐元素相乘,使用。*** 符号:**
矩阵求逆
要计算矩阵的逆矩阵,使用inv()
方法:
决定因素
用det()
法计算行列式:
特征分解
您也可以执行矩阵的特征分解。它会返回特征值和特征向量,所以如果你想存储它们,你需要两个变量:
向量范数
最后,要计算简单的欧几里德范数,您可以使用norm()
方法:
我认为这就足够了,甚至可能有点多。我希望这对你来说不是一个大问题。对我来说,在 Julia 中线性代数感觉很自然,甚至比在 Python 中更自然。让我们希望这种说法在未来处理真实数据集时仍然成立。
下一步是什么
在进入一些“具体的”数据科学之前,具体的意思是 EDA、数据可视化和机器学习,我想确保基础知识得到适当的覆盖。主要原因是——你需要知道你正在使用的语言。在网上寻找答案很酷,但不酷的是不断怀疑自己,因为你不确定自己是否做对了。
这就是为什么您可以期待另外三篇与本文类似的文章,涵盖:
- 结石
- 统计/概率
- 基本数据框架
只有这样,我们才能向应用数据科学迈进一步。感谢阅读,我希望你喜欢它。
喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。
** [## 通过我的推荐链接加入 Medium-Dario rade ci
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
medium.com](https://medium.com/@radecicdario/membership)**
Python 数据科学:入门
启动和运行的基本要素+有用的资源
数据科学已经成为一项革命性的技术,似乎每个人都在谈论它。被誉为“21 世纪最性感的工作”的数据科学是一个时髦词,很少有人真正了解这项技术。虽然许多人希望成为数据科学家,但看到真实情况是必不可少的。
“数据科学是一个跨学科领域,它使用科学方法、流程、算法和系统从许多结构化和非结构化数据中提取知识和见解。”——维基百科
简而言之,数据科学是一个专注于从数据中获取洞察力的研究和实践领域。
数据科学家使用数学、统计学和机器学习技术来挖掘大型数据集,以获得可用于分析过去甚至预测未来的模式。
如果你是所有这些深度学习的新手,不要担心——我会一步一步带你经历这一切。如果你是一个老手,那么你可能想跳过一些文章。然而,我确实假设你已经编码至少一年了,并且(如果你以前没有使用过 Python)你将投入额外的时间去学习你所需要的任何 Python。
如果你有一台电脑,一个互联网连接,并愿意投入工作,这就是你所需要的一切。你不需要很多数据,不需要大学水平的数学,也不需要一个巨大的数据中心。
你会惊讶于入门是多么容易!
需要 GPU 吗?
我写了一篇关于什么是 GPU 以及深度学习需要 GPU 吗的帖子——值得一读
GPU(图形处理单元)是专门为以高帧速率渲染图像而创建的计算机硬件。由于图形纹理和着色需要并行执行的矩阵和向量操作比 CPU(中央处理器)能够合理处理的要多,因此 GPU 可以更有效地执行这些计算。
碰巧深度学习也需要超快的矩阵计算。因此,研究人员将两者结合起来,开始在 GPU 的中训练模型,剩下的就是历史了。深度学习只关心每秒浮点运算(FLOPs)的次数,GPU 为此进行了高度优化。
来源:卡尔鲁普
在上面的图表中,您可以看到 GPU(红色/绿色)理论上可以完成 CPU(蓝色)的 10-15 倍操作。这种加速在实践中也非常适用。
如果你想在深度学习中训练任何有意义的东西,GPU 是你需要的——特别是 NVIDIA GPU(这是目前最快的一种)。
但是,尽管 GPU 看起来非常有利可图,当你开始使用它时,你并不需要它。除非你的项目是如此先进,需要一个吨的计算,你的 CPU 可以处理得很好。然而,如果你确实想要一个 GPU(如果你的电脑没有内置 GPU),我会建议你租用一台已经预装了你需要的所有东西的电脑。在你使用它的时候,费用可以低至每小时 0.25 美元。
在深度学习中,大家似乎都推荐用 GPU。它是什么,没有它你能做什么,它到底是谁…
towardsdatascience.com](/what-is-a-gpu-and-do-you-need-one-in-deep-learning-718b9597aa0d)
代码编辑器和环境
Visual Studio 代码是我的首选代码编辑器
在数据科学中,一般的建议(尤其是如果你是初学者)是使用某种初学者友好的环境,如 Jupyter 或 Anaconda ,但是我使用 VS Code 来支持我的数据科学项目。
这里有一篇文章是关于Jupyter 笔记本的入门文章
Python 的先验知识
资料来源:python.org
这个关于数据科学的迷你系列确实假设你已经编码至少一年了。哪种语言并不重要——只要你有良好的编程经验,你应该没问题。如果您对 Python 一点都不熟悉,不要担心!我会一路链接有用的资源。
如果你没有任何代码经验,我建议你学习 Python。它(真的非常)简单,是我们将在这个数据科学迷你系列中使用的编程语言。
有用的资源
由 Ed Robertson 在 Unsplash 上拍摄的照片
快速获取(或更新)Python 知识的资源
完全初学者:
中级程序员:
高级程序员(但可能是 Python 新手):
Python 数值编程:
无论你是初学者还是高级程序员,这都值得一读。在本系列中,我们将使用大量的数值编程。
这个数据科学小编的介绍到此结束!在下一篇文章中,我们将讨论图像分类。
什么是数据科学中的图像分类和用 Python 构建我们自己的图像分类器
towardsdatascience.com](/image-classification-in-data-science-422855878d2a)
一如既往,非常感谢您的阅读!请告诉我你的想法或者希望我接下来在评论中写些什么。我也乐于接受批评!
下期帖子再见!😄
面向严肃数据科学家的强大学习指南
towardsdatascience.com](/resources-i-wish-i-knew-when-i-started-out-with-data-science-9a8889654c36)
Python 数据科学:如何使用 NumPy 库
NumPy 动手体验。劳伦茨·海曼在 Unsplash 上拍摄的照片
数据科学和机器学习
将这一实践经验加入书签,以了解数据科学和机器学习领域的 NumPy
NumPy (Numerical Python) is a linear algebra library for Python.Almost all of the other libraries in the Python data ecosystem rely on NumPy as one of their main building blocks.This is the reason it is so important for data science. Additionaly, NumPy is incredibly fast and has bindings to C libraries.
要准备好在 Python 发行版中使用 Numpy,请在终端或命令提示符下键入以下命令:
pip install numpy
先决条件
如果你不熟悉 Python,下面的文章会给你一点点 Python 的介绍。
过程化和面向对象之间有点争议,我们为什么要关心它?
towardsdatascience.com](/python-procedural-or-object-oriented-programming-42c66a008676)
—阵列
Numpy 数组本质上有两种风格,一维向量或二维矩阵。它们都可以称为数组。向量是严格的一维数组,矩阵是二维数组。另外,请注意,矩阵仍然只能有一行或一列。
np.array 方法
我们可能会看到 list 可以作为数组使用。此外,我们可以将数组赋给变量。
—阿兰格
这和 Python 内置的 range 函数真的很像。它用语法 np.arrange 表示,然后传入一个开始和停止值。请注意,我们在第三个参数中有一个开始、停止和步长。它将返回给定间隔内均匀分布的值。如果我们只是把它从 0 到 10,记住就像在 Python 中,范围索引从 0 开始。它将返回一个从 0 到 10 的值,但不包括 10。结果,我们将得到一个从 0 一直到 9 的数组,它是一个 10 位数。如果我们想得到从 0 一直到 10 的值,我们必须键入 np.arange(0,11) 。
np.arange 方法
最后,我们可以添加第三个参数,即步长。例如,我们需要一个从 0 到 10 的偶数数组。我们可以插入一个参数 0,11 。跟随步长 2。所以,它会跳两步。总而言之,范围将是使用 NumPy 快速生成数组的最有用的函数之一。
—零和一
NumPy 可以生成另一种类型的数组。例如,如果我们想要生成全 0 的数组,我们可以使用零方法。我们可以传入一位数或元组。对于单个数字,它将给出一个维度向量的结果。另一方面,在 tuple 中,第一个数字表示行数,第二个数字表示列数。例如,要生成 3 行 4 列,我们可以传入元组 (3,4) 。
np.zeros 方法
此外,为了生成纯函数,我们可以调用方法的函数。类似地,我们可以为一维数组传入一个数字,或者为二维矩阵传入一个多维数组。
np.ones 方法
— linspace
另一个真正有用的内置函数是 linspace 。该函数将返回指定间隔内的均匀分布的数字。重要的是不要混淆我们之前讨论过的 linspace 和arrange。我们可以看到, arange 基本上从开始、停止和给定的步长返回整数 out,而 linspace 将把数字的第三个参数作为我们想要的点。
例如,我们在 linspace 中有一个起点 0 和一个终点 5,我们希望得到 0 到 5 之间的 10 个均匀间隔的点。我们可以传入第三个参数 10。该命令将返回一个一维向量,由一组括号表示,括号中有从 0 到 5 的 10 个均匀分布的点。
此外,我们可以将第三个参数更改为任意数字。例如,如果我们想要从 0 到 5 的 100 个均匀间隔的点,我们可以在第三个参数中传递这个数字。这将返回一个更大的一维数组。尽管它看起来像一个二维数组,但由于数组前面只有一个括号,所以它是一维的。
np.linspace 方法
请注意,当我们处理二维空间的时候,我们会看到在两端有两组括号。三维会有三个括号等等。
—眼睛
我们可以使用 eye 用 NumPy 创建一个单位矩阵。我们只需要在参数中传递一个数字。当处理线性代数问题时,单位矩阵是一个有用的矩阵。它基本上是一个二维正方形矩阵,其中行数与列数相同。它的对角线是 1,其他都是 0。这就是它只接受一位数作为参数的原因。单位矩阵必须是正方形作为 np.eye 的输出。
np.eye 方法
— random.rand
NumPy 也有很多方法来创建一个随机数数组。第一个是 random.rand 。这个命令将从给定的形状创建一个数组。它将从 0 到 1 的均匀分布中随机抽取样本。如果我们想要 8 个从 0 到 1 均匀分布的一维随机数数组,我们可以在自变量中给出一个数字 8。但是,我们可以将维度作为单独的参数传入,以获得一个二维数组。例如,如果我们想要一个 5x5 的随机数矩阵,我们在参数中传递 5,5 而不是一个元组。
随机随机方法
— random.randn
其次,不使用 rand ,我们可以使用 randn 从标准正态分布或高斯分布返回一个或多个样本。这不会返回从 0 到 1 的均匀分布的数字,但是,它会返回 0 附近的标准正态分布中心的数字。此外,要得到一个二维数组,我们可以传入二维参数。例如,要生成一个 4x4,我们可以传递一个参数 4,4 。请记住,这个参数是而不是元组。这是一个独立的论点,我们可以从两个括号给出的输出中了解到,这是一个二维矩阵。
随机方法
— random.randint
创建数组的最后一个随机方法是 randint 。这将返回从低到高的随机整数。例如,如果我们在参数中插入 1,100 ,我们将得到一个介于 1 和 100 之间的随机整数。低号是包容性的,高号是排他性的。数字 1 有被选中的机会,但 100 没有。此外,如果我们想要特定数量的随机整数,我们可以在第三个参数中传递参数。
np.random.randint 方法
—重塑
我们可以在数组上使用的最有用的方法之一是 reshape 方法。这个方法将返回一个新形状中包含相同数据的数组。例如,如果我们想要重塑一个包含 24 位数的数组。我们可以使用 reshape to 4x6 array 并在参数中传递行数和列数来重塑 24 位数组。请记住,如果我们不能完全填满矩阵,我们将得到一个错误。例如,如果我们要改变 24 个元素的形状,新形状的总数必须与数组中的 24 个元素相同。
整形方法
—最大和最小
如果我们想找到一个数组中的最大值,我们可以调用 max 方法,这将返回该数组的最大值。同样,如果我们想得到数组的最小值,我们可以调用 min 方法。
最大最小法
— argmax 和 argmin
此外,我们实际上可以通过指定 argmax 或 argmin 方法来计算出最大值或最小值的位置。如果我们想实际知道最大数的索引值是多少,我们可以调用 argmax ,它将返回最大值的索引位置。另一方面,我们可以用最小值做同样的事情。我们可以调用 argmin ,它将返回最小值的索引位置。
argmax 和 argmin 方法
—形状
如果我们想弄清楚向量的形状,我们可以调用方法 shape ,它将返回形状。如果它是一个一维向量,它将给出元素个数的结果,后面跟一个逗号。
形状方法
—数据类型
另一个有用的属性是数组中的数据类型。如果我们对数组中的数据类型感到好奇,我们可以调用 dtype 作为属性,它将返回数组的实际数据类型。
数据类型方法
索引和选择
从 NumPy 数组中获取一个或一些元素的最简单方法是使用括号和切片符号。让我们从声明数组本身的变量名开始;在这种情况下,我们称之为 my_array 。
索引和选择
要从数组的特定索引返回单个值,可以在方括号内定义一个参数,例如, my_array[8] 从索引 8 中获取值。另一方面,要像 python 列表一样获取一个范围内的值,可以使用切片符号。我们需要定义开始索引和停止索引。
例如, my_array[1:5] ,将返回从索引 1 开始的值,一直到索引 5。记住前面的解释,在范围部分,第二个参数值不包括在索引中,因为索引从 0 开始。为了展示另一个例子,您可以键入 my_array[0:5] ,这将返回从索引 0 到索引 5 的值。
您还可以删除停止点或开始点,以表明您想要数组中的所有内容,即数组开头的所有内容。例如,如果您希望所有内容都从索引 5 开始,而不是将起始参数指定为 0,您可以放置 my_array[:5] ,这将返回从数组开始到索引 5 的所有内容。这和调用语法 my_array[0:5]是一回事。
类似地,如果您想从一个特定的索引开始并获取数组末尾的其余值,您可以使用相同的切片符号,例如, my_array[5:] 。
广播
Numpy 数组不同于标准的 Python 列表,因为它具有广播的能力。尝试运行这个语法 my_array[0:5] = 100 。该命令将广播到前五个索引,使它们都为 100。另一方面,您可以创建一个新变量,它等于原始数组中的某个片段。
数字广播
如果这对你来说有点困惑,那也没关系。基本前提是,如果您获取数组的一部分并将其设置为一个变量,而没有明确说明您想要数组的副本,那么您应该记住,您查看的是到原始数组的链接。您所做的更改也会影响原始数组。
矩阵索引
现在,我们将讨论索引 2D 数组,也称为矩阵。我们这里有 my_2d_array 变量,我们有 3 行 3 列。它是一个二维矩阵。从 2D 数组或矩阵中获取元素有两种通用格式。有带逗号的双括号格式和单括号格式,这是推荐使用的格式。
二维索引
假设您不想要单个元素,而是数组的实际块。例如,你想从矩阵中得到一些矩阵。您可以使用冒号作为切片标记来获取整个 2D 数组的某些部分。
获取数组块的切片符号
条件选择
我们可以通过比较运算符用条件选择来获取数组的一些值。
条件选择
这个过程将返回一个完整的布尔数组,指示真和假的结果。这意味着如果你将数组与一个数字进行比较,例如, my_array > 5 ,你将得到一个布尔值数组。这些是真或假的值。当比较为假时返回假,如果比较为真则返回真。您可以将比较运算符分配给变量,并将其用作条件选择。
操作
我们将向您展示您可以在 NumPy 数组上执行的基本操作,例如带有数组操作的数组、带有标量操作的数组以及一些通用的数组函数。您可以使用简单的算术符号执行带有数组运算的数组。
例如,如果你想逐个元素地将两个数组相加,你可以说 my_array + my_array 。本质上,每个数字都翻倍了。减法甚至乘法也可以做同样的过程。
还可以用标量运算执行数组。比如 my_array + 100 ,scalar 的意思是单个数字,NumPy 做的就是把那个数字广播给数组中的每一个元素。这也适用于乘法、除法和减法。也可以用指数做数组,比如 my_array ** 2 ,这是 2 的幂的数组。
NumPy 基本操作
**Please Note:**
Numpy will issue a warning instead of outputting errors on certain mathematical operations, however, you still get an output.For example, **my_array / my_array**.
Any array value divided by 0, will returns:[nan 1\. 1\. 1\. 1\. 1\. 1\. 1\. 1\. 1\. 1.]
***RuntimeWarning: invalid value encountered in true_divide***On the other hand, **1 / my_array.** If 1 divided by 0, you will also get a warning:[ inf 1\. 0.5 0.33333333 0.25 0.2
0.16666667 0.14285714 0.125 0.11111111 0.1 ] ***RuntimeWarning: divide by zero encountered in true_divide***
In this case, it will show infinity instead of nan.
Numpy 附带了许多通用数组函数,这些函数大多只是数学运算。您可以使用它来执行操作,并在整个阵列中传播它。例如,如果你想得到数组中每个元素的平方根,你可以说 np.sqrt ,然后在参数中传递数组。这将使数组中所有元素的平方根。
类似地,您可以说 np.exp 并将数组传入参数以计算指数。甚至可以用三角函数比如 sin 和 cos 。这将把每个元素转换成正弦和余弦。
数字数学运算
动手体验到此结束。如果你用你最喜欢的 IDE 或 Jupyter 笔记本来尝试下面的练习,以了解如何使用 NumPy 来获得数据科学和机器学习的最佳运气,那将是最好的。
我们鼓励你从下面的参考链接中了解更多,以获得更多关于 NumPy 的解释。
**References**#1 [NumPy](http://www.numpy.org/)
#2 [Mathematical Function](https://numpy.org/doc/stable/reference/routines.math.html)
#3 [Cheat Sheet: Data Analysis in Python](https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Numpy_Python_Cheat_Sheet.pdf)***Writer Note:*** *I would love to receive critiques, comments, and suggestions.*
广告业内的数据科学
数据如何推动 6000 亿美元广告业务的预算分配?
你可能听说过数据如何驱动广告投放在脸书或谷歌的广告业务中,通过数据驱动的广告投放我们指的是广告供应商以更高的价格向可能对广告内容感兴趣的消费者展示广告的能力。但除了大型科技公司复杂的广告投放数据驱动系统之外,广告领域还有一个由数据驱动的更加密集、同样相关的企业群体:广告公司。虽然与大型科技公司的方式和目的不同,但各机构利用数据进行一项非常重要的运营,通常由行业外部监督:预算分配。
在高层次上,您可以将广告和营销代理视为负责为客户管理和执行广告活动生命周期的公司。这包括内容创建、营销策略设计、与广告供应商的单点联系、集中账户管理,当然还有数据分析。预计 2020 年广告支出将达到 6150 亿美元,广告公司在像脸书这样的公司如何在广告上建立盈利业务上扮演着关键角色。
图片作者
通过持续评估性能与成本、感觉与年龄和性别接触或转化率与媒体类型的指标,广告公司决定如何动态分配活动资源以满足客户的目标。
知名度和业绩是当今市场中品牌的主导最终目标,这些客户目标定义了活动的目标,从而定义了相关分析所需的数据。把广告想象成一个活动的基本单位,一个活动的广告通常在不同的媒体类型上运行,每个广告可能有不同的目标,合在一起,它们构成了活动的全球意图。例如,活动中的广告可能旨在提高知名度,这意味着它旨在让公众了解所提供的产品/服务,因此我们关心其影响、印象和受众人口统计数据,如年龄和性别。在同一个活动中,可能会有针对性能的广告,这些广告的目的是将受众重新引导到一个他们可以购买所提供的产品或注册所提供的服务的地方。在这种情况下,分析需要跟踪通过点击或点击率点击率和等指标生成的转化率和流量。
各机构在广泛的媒体类型上开展活动,即数字、电影院、广播、电视、新闻和户外。机构内的数据科学家设计数据分析解决方案,能够从不断变化的数据中提取并提供有意义的见解。最终,这些见解旨在支持营销活动生命周期中的关键业务决策,并让客户随时了解他们正在开展的营销活动的各种关键统计数据。
我们在电视上花了太多钱,却没有得到预期的结果,限制他们的预算。
这家名为“脸书”的供应商拥有我们 40%以上的数字产品,难道没有其他供应商了吗?这些人的 Instagram 怎么样?
数据分析解决方案将接收、处理和分析数据,最终以可视化的形式在 DOMO、Amazon Quicksight 或 Power BI 等数据可视化工具上以自动化 方式和在一段时间内按计划交付见解(根据客户预算而定,更长/更短)。获取解决方案原始数据的渠道以及此类数据的形式因机构开展活动的不同媒体类型而异。
数字
互联网内的任何东西。脸书广告,谷歌广告,Youtube 广告和任何其他门户网站的广告通常由像 Teads 这样的主要供应商提供。由于这些主要是技术公司,他们将公开一个 API 来提取运行活动的非关系数据统计,甚至是一些最流行的编程语言的库。
电影
每部电影开始前的 15 分钟加起来就是客户的最终数字。你可能已经注意到电影院的广告内容有更高的标准。
代理商将拥有电影院广告活动的印象数 ( 印象数=复制品,商业术语),主要是因为这些平面文件表是由客户管理人员填写的。
根据代理商的规模,电影公司可能同意提供其销售数据库的摘录,代理商可以利用这些摘录跨越已知的印象数来了解广告的覆盖范围。对于那些迟到 15 分钟的人,我们有一个漏洞。
电视台
和电影里的差不多。这里,reach 字段肯定需要由供应商部分(电视公司)来填充。电视公司每周 7 天、每天 24 小时收集他们的覆盖数据,所以这很可能是他们交给代理商的数据。
广播、新闻和哦
说到这一点,广告公司需要收集原始数据,如计划预算、支出预算、展示量、达到、点击量、供应商、活动感受、、受众人口统计数据、、、转化率等数据分析必须足够复杂,以分析跨不同数据集的通用数据字段的数据。
解决方案
从工程的角度来看,我们希望将所有这些数据按计划以自动化的方式收集到对象存储中,如 AWS S3、微软 Azure Storage Account 或 GCP 云存储。
对于 API,我们可以使用一个脚本,按计划向供应商端点发送请求,并将响应对象推送到我们的云对象存储服务。在我的工作中,我使用无服务器架构,如 AWS Lambda、Azure Functions 或 GCP 云函数。
由于其余的数据是由客户管理和第三方提供给我们的,我们需要一种方法让他们访问我们的对象存储。我们可以让一个 SFTP 服务器连接到我们的存储器,这样服务器每次接收到一个文件,它就把它映射到我们的对象存储器的一个文件夹中的一个对象。
一旦我们将所有这些数据源连接起来,我们就说摄取过程完成了,对象存储将持续接收解决方案需要处理的所有数据。这叫做数据湖。
图片作者
剩下的过程只是一堆 ETL 作业和脚本,将所有数据转换成对分析有意义的形状,这包括字段重命名、数据类型赋值、正则表达式、复杂的连接操作和文件格式转换为类似于 Parquet/ORC 的分析友好格式。这些操作发生在工具框架内,如 Hadoop、Spark 或云管理解决方案,如 AWS Glue、微软 Azure Data Factory 或 GCP Dataproc。你也可以利用开源库,比如 python 的 pandas 。作业和脚本既可以根据事件触发器运行,也可以按计划运行。
最后,解决方案需要将转换后的数据存储到另一个云对象存储中,或者更好的是,像亚马逊红移、微软 Azure Synapse 或 GCP 大查询这样的云托管数据仓库。
机构将从这些数据中选择数据可视化工具,商业智能部门将处理最终的仪表板/可视化设计,假设解决方案在每次有新的原始数据时都会自动更新最终数据集。帐户管理人员主持与客户的跟进会议,围绕这些可视化仪表板,每天都有数千美元的资金得到动态分配,这在很大程度上依赖于数据分析。
数据科学…没有任何数据?!
为什么尽早聘用数据工程师很重要
“你目前正在应对哪些挑战?”我问。这位前学者说,“看起来我被一家没有数据的公司聘为首席数据科学家了。”**
“人类,碗是空的。”—数据科学家。图片:来源。
我不知道该笑还是该哭。你可能认为这是显而易见的,但是没有数据,数据科学就没有任何意义。唉,这不是一个孤立的事件。
没有数据,数据科学就没有任何意义。
所以,让我继续说,这么多雄心勃勃的数据科学家(以及他们未来的雇主)似乎真的需要听到什么。
什么是数据工程?
如果说 数据科学 是**制作数据有用*** 的学科,那么你可以把 数据工程 看成是制作数据有用 的学科。数据工程师是提供幕后基础设施支持的英雄,这些支持使机器日志和庞大的数据存储与数据科学工具包兼容。*
模因:来源。
如果说数据科学是**让数据有用*** 的学科,那么数据工程就是**让数据有用的学科。***
与数据科学家不同,数据工程师往往不会花太多时间查看数据*。相反,他们关注并使用保存数据的基础设施。数据科学家是数据管理者,而数据工程师是数据管道管理者。*
图片:来源。
数据科学家是数据管理者,而数据工程师是数据管道管理者。
数据工程师是做什么的?
数据工程工作有三种主要形式:
- 大规模启用数据存储()和交付( 数据管道 )。**
- 维护推动企业运营的数据流。
- 提供数据集支持数据科学。
数据科学受制于数据工程
没有数据就做不了数据科学。如果你被一个既没有数据也没有数据工程的组织聘为数据科学主管,猜猜谁会成为数据工程师…?你!
没错。
数据工程有什么难的?
如果你只是为自己的晚餐做点什么,杂货店购物是很容易的,但是大规模会把琐碎的事情变得非常困难——你如何获得、储存和加工 20 吨冰淇淋……而不让它们融化?
同样,当你为你的学校项目下载一个小的电子表格时,“数据工程”是相当容易的,但是当你处理 Pb 级的数据时却令人眼花缭乱。规模本身就使它成为一门复杂的工程学科。
图片:来源。
规模本身就使它成为一门复杂的工程学科。
不幸的是,了解这些学科中的一个并不意味着你了解另一个。
两个学科都要学吗?
如果你刚刚感到想要逃离并学习这两个学科的冲动,你可能是数据专业人员必须了解数据的一切(T22、T23)这一信念的受害者。数据世界正在快速扩张,现在是我们开始认识到这个领域有多大的时候了,在其中的一部分工作并不自动要求我们成为所有领域的专家。我甚至可以说,它太大了,即使是最坚定的天才也无法吞下整个。
在数据世界的一部分工作并不自动要求我们成为所有数据的专家。
不要期望数据人员能够做所有的事情,让我们开始问彼此(和我们自己)," 你是哪一种?让我们拥抱一起工作,而不是试图单干。
但是这难道不是一个难以置信的学习机会吗?
也许吧。这取决于你有多热爱你已经知道的学科。数据工程和数据科学是不同的,所以如果你是一个没有接受过数据工程培训的数据科学家,你将不得不从头开始。
建立您的数据工程团队可能需要数年时间。
这可能正是你想要的那种乐趣——只要你睁大眼睛去看。建立您的数据工程团队可能需要数年时间。当然,有一个学习新东西的借口是很好的,但十有八九,你的数据科学肌肉会因此萎缩。
打个比方,假设你是一名日语和英语都很流利的翻译。你得到了一份名为“翻译”的工作(到目前为止,一切顺利),但当你到达工作岗位时,你发现你被雇佣将普通话翻译成斯瓦希里语,而这两种语言你都不会说。抓住机会成为四国语言者可能会很刺激,也很有收获,但是一定要现实地看待你将如何有效地利用初级培训(以及你的第一次绩效评估可能会有多可怕)。
谁不爱一个好的烂的翻译?图片:来源。
换句话说,如果一家公司没有任何数据或数据工程师,那么接受首席数据科学家的角色意味着在你建立数据工程团队的同时,将你的数据科学职业搁置几年,转而从事数据工程职业——你可能不具备这个资格。最终,你会骄傲地注视着你建立的团队,并意识到你自己做细节已经没有意义了。当你的团队对那些酷酷的神经网络或你在博士学位上研究过的花哨的贝叶斯推理已经成熟时,你不得不坐下来看别人得分。
图片:来源。
给数据科学领导者和热爱他们的人的建议
提示#1:知道你将要面对的是什么
如果您正在考虑担任数据科学主管,您的第一个问题应该始终是, " 谁负责确保我的团队拥有数据 ?"如果答案是你,那么,至少你会知道你报名参加的是什么。
在接受一份数据科学的工作之前,一定要问一下数据工程的“谁”。
秘诀 2:记住你是顾客
由于数据科学受制于数据,仅仅有数据工程同事可能还不够。如果那些同事没有认识到你是他们工作的重要客户,你可能会面临一场艰难的斗争。如果他们的态度让你想起更多的博物馆馆长,为了保存数据而保存数据,这是一个不好的迹象。
技巧 3:看到更大的(组织)图景
虽然你确实是数据工程的重要客户,但你可能不是唯一的客户。现代企业使用数据来推动运营,其方式往往可以在没有你干预的情况下很好地运转。当你对企业的贡献是一件好事(而不是关系到你公司的生死存亡)时,表现得好像整个世界都围着你和你的团队转是不明智的。健康的平衡是健康的。
秘诀 4:坚持问责制
让自己对数据工程决策有所影响。
在签约你的新工作之前,考虑协商如何让你的数据工程同事对与你的合作负责。如果将你拒之门外没有任何影响,你的组织就不可能兴旺发达。
感谢阅读!喜欢作者?
如果你渴望阅读更多我的作品,这篇文章中的大部分链接会带你去我的其他思考。不能选择?试试这个:
在求职面试中问这三个问题,以确保你的雇主准备好让数据科学家变得高效
towardsdatascience.com](/the-sexiest-job-of-the-22nd-century-ffe753e1d155)
给大家上一门应用人工智能课程怎么样?
如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:
在这里欣赏整个课程播放列表:【bit.ly/machinefriend
与凯西·科兹尔科夫联系
让我们做朋友吧!你可以在 Twitter 、 YouTube 、 Substack 和 LinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格取得联系。**
数据科学写作是不同的
不要接受非 DS 作者的建议
@ chairufajar _在 Unsplash 上的照片
当你研究如何开始在媒体上写作时,你会感到沮丧吗?你是否发现所有的文章都在告诉你“每天写作”、“每周发表 3 篇博文”或“每天至少写作 2 小时”?
当我第一次决定在媒体上写作时,我读到了同样的建议,并认为我不可能每天都有足够的时间写作。这导致我推迟写作几个月,阻止我开始写作之旅,因为我“从来没有足够的时间”。
如果您正在考虑开始在 Medium 上编写数据科学内容,请不要气馁。您应该意识到的是,数据科学写作的固有性质是不同的,需要打下基础。这不是我们的全职工作,在写出一个句子之前,需要进行数百小时的研究、编码和设计。我花了几个月的时间拖延,然后我最终“偶然发现”了几篇文章,终于弄明白了这一点。
不听从建议
当我终于开始写作时,我忘记了所有的建议,只是在我喜欢和有时间的时候写作。事实上,我的第一篇文章是在一次客户会议上写的,在那次会议上,我受够了被告知“只看数据”,于是我立即挂掉电话,一口气写下了《T4》的全部内容。我并不需要花几天的时间坐下来,在同一时间写同样多的东西——我就是这么想的。
同样的事情发生在我的第二篇文章上;我正在为一个副业项目研究一些技术,偶然发现了这个算法,并决定“我要弄清楚这个东西是做什么的”。我意识到那里没有大量的信息,并看到了为那些可能需要这些信息的人写一些没有很好记录的东西的机会。
我的第三篇文章有点不同——它不是来自内部,而是来自我与朋友和家人的对话。在冠状病毒的最初几个月,我一遍又一遍地听到同一个论点的两个方面:“媒体反应过度”和“我们对此不够认真”。我想“哪一个是真的?”“我能量化媒体反应过度的程度吗?”。我正打算这么做。我收集了数据,做了分析,写了第篇文章——全部在 1-2 周内完成,按照“建议”的标准,这太慢了。
现在这篇文章——一篇我想写很久的文章。如果我遵循了典型的“如何在媒体上成功”文章的建议,这篇文章可能会在几周前就写好了。但说实话,我就是没时间。直到今天,当我读到另一篇文章时,我觉得我需要从写数据科学内容的人的角度说点什么。我打开一个新的草稿,坐在手机上写了这篇文章。
为什么为数据科学写作是不同的
我拼凑的最初几件作品并不是来自每天早上 6 点坐下来连续写两个小时的例行公事。当我在做项目和继续我的学习旅程时,他们来找我。随着我继续写作,我开始意识到为数据科学写作在两个方面是不同的:
- 不是每个人都有时间或精力每天坐下来写作。如果写作是你的主要收入来源,那么是的,你应该这么做。但对其他人(尤其是数据科学家)来说,这只是一种旁门左道,一个作品集的建立者,或者一个创造性的出口——我们不应该觉得有义务或者有压力每天都写东西。
- 最重要的是,重要的是要认识到数据科学写作与生俱来的不同。我们不是那些每天坐下来谈论我们的感受或者这周我们在做什么或者如何更好地提高自己的生活方式博客。我们的写作是技术性的——写一篇 5-10 分钟的文章需要数天或数周的研究或分析(或两者兼而有之)。不要给自己压力,让自己每天甚至每周都发表文章。慢慢开始没关系。关注重要的事情——你正在构建的项目或你正在学习的概念。写作只是你展示发现的最后一部分。这是一个重要的部分,但其他部分也需要时间。
开始吧,不要气馁
我希望这篇文章没有写得太糟糕。相反,我希望它能激励你不要被外面所有的“建议”搞得灰心丧气,告诉你要做得更多。大多数作者不需要坐下来研究算法的目标函数或者用 Jupyter 写 1000 行代码。当你想开始时就开始,坚持到底,不要听噪音——写作和连贯性最终会随之而来。
感谢阅读!如果你想更新我正在写的东西、我正在构建的项目或我觉得有趣的文章,请随时加入我的时事通讯—。
数据科学家——一个值得追求的职业?
让我们透过美化的噪音找出真相。
图片来源: Unsplash
绝对是!如果说有什么不同的话,那就是成为数据科学家的最佳时机。如今,不仅对熟练数据科学家的需求旺盛,而且在供应方面也存在巨大缺口。这只能说明你有广阔的空间去追求这个非常抢手的职业,以及赚比目前任何其他领域都多的钱。
鉴于世界事务的多样性和我们对不断增强的技术的日益依赖,数据科学专业知识,如大数据、人工智能、机器学习等。只会越来越多。至少在今后的几十年里,你处于一个安全的位置,可以保持作为一名杰出的数据科学家的声望。
据报道,著名经济学家和作家安德鲁·弗劳尔斯说过:
越来越多的雇主希望雇佣数据科学家。
正如 Forrester Research 分析师 Brandon Purcell 认为的那样
“对数据科学家的需求只会增长,因为组织越来越依赖于数据驱动的见解。
我们可以联系更多来自著名统计学家的类似支持、预测和观察,得出同样的看法,即数据科学正在塑造我们共同的未来。
那么,是什么让数据科学成为最令人兴奋的职业选择呢?让我们看看。
为什么数据科学具有刺激性?
图片来源: Unsplash
增加数据科学显著性的主要因素是它为个人打开的门的数量。不像其他任何领域,如果你在其他行业徘徊,你会觉得,被认为,被当作一个不知情的外国人。你是。老实说。你是。例如,医生只知道他/她在为人们服务时所使用的先进技术,但他/她不知道创造这种特殊设备的硬件/软件开发。
然而,无论你的工作性质如何,数据科学专业知识都可以在你的职业发展中发挥重要作用。无论是商业营销、城市规划、网络零售、医疗保健、体育、安全等。,数据驱动的分析和物流正迅速成为支撑每个职业的支柱。
人们普遍认为数据科学只在技术领域有价值。这与事实相去甚远。事实上,脸书、微软、苹果、谷歌和亚马逊这五大科技公司只雇佣了美国 1%的员工。这验证了数据科学的多功能角色。
此外,自动化、人工智能、机器或深度学习、机器人等。通过简单地用更合格和更复杂的版本来代替这些方法,取代了许多职业的冗长和危险的本质。这种大规模转变的兴起使得数据科学家成为获得和保持进步的关键。
因此,如果你对计算机、数学以及通过数据分析寻找主要和次要问题的解决方案充满热情,那么追求数据科学高级教育是你成为一名熟练的数据科学家的唯一合理步骤。
根据詹姆斯·库克大学协调员里卡多·坎佩洛的说法:
一名合格的数据科学家擅长跨学科技能的核心集合,这些技能构成了数据的整个生命周期。他们在计算、数学、统计和面向商业的主题中接受培训,这使他们能够与几乎所有领域的领域专家一起工作。在我看来,跨学科背景是一个人简历中最重要的资产。
在数据科学领域从事职业非常值得付出每一点努力和投资。这不仅是一个明智的选择和丰厚的回报,而且数据还被定位为整个经济即将运转的枢纽。
数据科学家技能
图片来源: Unsplash
数据科学家都受过良好教育,88%拥有硕士学位,46%拥有博士学位。强大的教育背景是执行所有复杂任务所需的深入知识所必需的。数据科学是一个多学科领域,与数学、统计学、编程等平行。
为了满足高度专业化的需求,数据科学家必须精通分析数据的技术技能。数据科学家还需要对编程语言以及数据构造和解构有特别的理解。
尽管由于不同领域的相反性质,数据科学家没有明确的技能集,但大多数数据驱动的职责都需要一些常见的技术/非技术技能。例如,大多数数据科学家负责将不同数量的原始数据转化为可读的见解,从而实现分析预测和操作。为了做到这一点,如果您考虑从事数据科学职业,您必须精通以下领域:
统计与数学:你需要在数学、概率、统计、多元微积分、算法等方面有很高的造诣。,创建数据的统计模型。
编程语言 : Python、SAS、SQL 和 R 是数据科学应用中最常用的编程语言,无论你打算在哪个领域前进。
数据 : 原因很明显!一个有经验的数据科学家平均花费 80%的时间处理不同的数据类型,以创建分析模型并获得有价值的洞察力。
沟通技巧:如果你不能交流你的成果和见解,技术术语只能带你走这么远,那你再怎么努力也没用。你应该能够以一种容易理解的方式交流你的发现。
数据科学家工资
有几个因素会影响数据科学家的薪酬待遇,例如教育、经验、领域、职位、地区,最重要的是,聘用数据科学家的机构的规模和概况。然而,根据 Glassdoor 的信息,平均金额在 95,000 美元至 250,000 美元之间波动。这似乎是对数据科学家通过数据科学家的许多职责带来的巨大价值的公平补偿。
了解大数据影响力的雇主很难找到一位能够应对工作所需所有挑战的专业人士。这反过来又成为高工资背后的驱动因素。数据科学专业人员的供需缺口甚至让刚刚起步的无经验人士受益。
我们这里有一份根据上述因素,基于 O’Reilly 的数据科学薪资调查 & BurtchWorks 报告的数据科学家薪资包明细。
经验工资
尽管已经有相当多的早期职业专业人员入职,但即使是入门级的数据科学家的薪酬待遇也高达 95,000 美元。虽然中级数据科学家的薪酬待遇起价为 128,750 美元,但如果这个阶段的数据科学家也参与管理任务,薪酬将增加到 185,000 美元。经验丰富的数据科学家从中级专业人员增加的工资开始,他们最终通过这里的管理角色和那里的额外任务赚到 25 万美元。
职位工资
以下是数据驱动型组织中最受有志和有经验的数据科学专业人士欢迎的职位。
数据科学家:8.5 万至 17 万美元
数据分析师:7.5 万至 11 万美元
数据科学/分析经理:9 万至 14 万美元
大数据工程师:11.5 万美元至 16.5 万美元
按领域列出的薪金
以下是数据科学家和其他数据科学专业人员收入最高的一些领域:
- 云服务、托管、软件和 CDN
- 研究和分析
- 网络社交
- 商业智能
- 银行和金融
- 安全性
- 主流媒体
教育工资
最高的薪水并不属于那些拥有博士或硕士学位的人,尽管它肯定给入门级的数据科学家一个体面的开始。拥有定量学科高水平教育的专业人士薪酬最高,如:
数据科学
应用数学
统计数字
计算机科学
工程
经济学
运筹学
以及技术技能,如:
掌握 4 种以上的计算机编程语言
掌握处理大数据的技术
精通开源工具
深入的云计算知识
数据可视化能力
拥有所有的专业知识仍然不足以成为一名成功的数据科学家。你需要知道如何最好地运用你的知识和工具,以便从公司整体的改善中获得可操作的见解。精明的商业判断、科学兴趣和令人信服的沟通技巧是在成功的职业生涯中大有帮助的额外属性。
根据公司规模和概况的薪酬
薪酬最高的数据科学家受雇于备受瞩目的领先科技公司,这一点也不奇怪。以下是其中一些公司的名称:
谷歌:152856 美元
推特:135360 美元
苹果:145974 美元
脸书:134715 美元
微软:123328 美元
贝宝:13.2909 万美元
Airbnb:127852 美元
要记住的事情
一段时间以来,数据科学一直是最热门的讨论话题。它在科学、技术、经济、就业等许多论坛上一直处于领先地位。大部分是因为好的原因,但是如果没有一点缺点,那就太好了,不像是真的。尽管数据科学领域充满荣耀和潜力,但很少有人真正成为成功的数据科学家。有没有想过为什么会这样?对此没有简单明了的答案。
我们将列出一些关于欺诈网站上点击诱饵内容暗示的“即时”概念的真相。随着一些被打破的神话,再次由不真诚的平台灌输,误导许多有抱负的数据科学家怀有错误的期望。当他们面对严酷的现实时,他们最终会失去动力,除了辞职什么都不做。这很不幸。
你需要绝对清楚的第一件事是,学习数据科学很难。你将不得不投入大量的努力和时间来获得任何像样的技能。
无论你做什么,不要陷入“在 15 天内掌握数据科学的艺术”的陷阱它的所有版本都是在利用你的热情和出生来赚快钱。
您需要真正的数据科学教育,而不是学习它,而是不断提高您的技能,以跟上技术和科学世界不断变化的维度。
比当前的数据科学和分析生态系统信息更注重培养直觉技能。机制容易改变,而技能不会,所以请帮自己一个忙,不要迷失在这个包和这个片段的细节中。
数据科学不仅仅是长期以来与之相关的时髦词汇。如果你准备好看着屏幕上杂乱无章的数字和符号,那么只有到那时,你才应该向学习数据科学迈出真正的第一步。因为作为一名数据科学家,数据清理正是您将花费大部分时间去做的事情。
不要害怕笨拙的错误!数据科学并不像他们看起来那样清晰和聪明。所有炙手可热的数据科学家都是从充满错误的代码编译或混乱的数据服务器开始的。他们通过实践获得成功,所以犯错误,从中吸取教训,不要再犯同样的错误。
最后,问问自己,数据科学真的适合我吗?我有那种坚持,努力,投入,和需要的时间吗?如果你的回答都是肯定的,那就继续下一步。
首次出版;操行科学
数据科学家:从零到英雄
马库斯·斯皮斯克在 Unsplash 上的照片
如何成为一名伟大的数据科学家:从在线资源中学习,了解新概念、最先进的算法和最新的技术。
如何成为一名数据科学家?在本文中,我提供了一个假设的成为数据科学家的学习途径。该指南主要由在线免费资源组成,是为想要学习数据科学的人制作的。如果您已经是数据专家,那么您可以忽略第一部分,直接跳到包含最新资源的部分。和所有的清单一样,这份清单并不完整。如果你有好的建议,请留下评论!
等等!什么是数据科学?放心吧!维基百科是你的朋友!简而言之,我们可以将数据科学定义为通过使用算法和工具从数据中提取洞察力的跨学科领域。您可以将数据科学想象为数学、统计学和计算机科学的融合。此外,数据科学还应用于几个领域:哪里有数据,哪里就有数据!
先说学数据科学的步骤吧!
1.发展环境
要执行分析,您需要用特定的编程语言编写代码。
不要相信不懂编码的数据科学家!
使用最多的语言是 R 和 Python 。需要指出的是,它们并不相互排斥。r 更适合统计分析,而 Python 更适合机器学习。这并不意味着你不能用 R 进行机器学习或者用 Python 进行统计分析。就我个人而言,我主要使用 Python,但有时我们会部署用 r 编写的包,这取决于行业和你的(未来)公司生产环境的标准。我的推荐是两个都学!
两种语言都配备了广泛的软件包:查看 CRAN 任务视图和 PyPI 。对于 R 来说,最好的 IDE 是 RStudio ,而对于 Python 来说,你有一些替代方案,比如 Visual Studio Code 、 PyCharm 、 Spyder 或 Jupyter (尽管它并不是一个真正的 IDE)。学习这些语言,谷歌一下“R 入门”或者“Python 入门”就够了。对这些语言的任何合理介绍对我们的目的来说已经很好了!你不需要成为一个专业的程序员,在这个阶段知道一些基础知识就足够了:例如,如何定义一个函数,如何编写一个循环,如何绘制基本图,如何调试,等等。
作为你的操作系统,我的建议是不惜一切代价避开 Windows!如果您还没有安装,安装一个 Linux 发行版(例如, Ubuntu 、 Manjaro 或 Fedora )并开始使用一个类似 Unix 的操作系统!你会发现有多少事情只能在一个终端内完成。
[## 每个数据科学家都应该知道的基本 Linux 控制台命令
对数据科学家最有用的终端命令列表:文件管理、系统管理和文本文件…
towardsdatascience.com](/linux-console-commands-data-scientist-566744ef1fb0)
最后,使用 git 。它是一个广泛应用于数据科学项目的版本控制系统。在 GitHub 或 Bitbucket 上打开一个个人资料页面,开始版本化您的代码!
2.数据操作和清理
在开始拟合模型之前,你需要对数据操作非常有信心!可以和熊猫(Python 中的)和dplyr(R 中的)一起练习。需要性能?检查 Dask 和数据表。
照片由 Sid Balachandran 在 Unsplash 上拍摄
在许多情况下,您将需要编写纯粹的 SQL 查询来检查数据。因此,了解主 SQL 语句会有所帮助!
请记住,在现实环境中,大量的时间将投入到数据清理中。因此,即使这不是最奇特的任务,它也是数据科学项目取得好成果的必要条件!
3.主要机器学习算法综述
准备好开发环境,让我们学习最常用的机器学习算法,以及如何在 R 或 Python 中应用它们。机器学习 A-Z 是一个很好的起点。该课程非常实用,尽管没有深入解释模型,但对于每个模型,您都有 Python 和 r 语言的示例代码。另一个通用在线课程是机器学习。它比前一个更加理论化,并且提供了 Octave/MatLab 中的实践练习。我的建议是跟着理论视频走,然后尝试用 Python 或者 r 解决习题,当然还有很多其他的在线课程,你可以自由选择适合自己需求的。
另一方面,如果你更喜欢看书,我建议:
在这一点上,你应该有信心使用主要的数据科学软件包(例如, caret 或 scikit-learn )。你可以在一些公共数据集上测试你学过的算法: UCI 数据集、 Kaggle 数据集或者直接在谷歌数据集搜索上找一个。
4.填补空白!
到现在为止,你已经学会了基础。根据你所受的教育,你可能会错过一些数学、统计学或计算机科学的基本概念。例如,计算机科学学生可能不知道如何进行最大似然估计,或者数学学生可能不知道如何计算算法的复杂性。绝对正常!数据科学是一个非常广泛的领域,不可能什么都知道!
无所不知的数据科学家是不存在的!
记住:数据科学不仅仅是关于模型和性能!你可能有世界上最好的想法,但你不知道如何形式化它,你可能能够编写解决每个问题的算法,但该算法可能效率低下,需要太多的资源来运行。了解不同领域的基础知识将有助于您提供更有效的解决方案和可操作的见解。
基础数学课程包括线性代数、实分析和数值分析。基础统计学课程包括描述统计学、推断统计学、贝叶斯统计学。计算机科学的基本概念包括:时间和空间的复杂性,数据结构,排序和搜索算法,图上的算法和算法设计。你可以在任何本科教材中找到所有这些论点。当然,谷歌是你的朋友!
5.深度学习
因此,如果你来到这里,你已经知道了一堆建立模型的算法,你有信心用众所周知的软件包开发一个数据科学项目,并且你已经对神经网络如何工作有了一个概念。是时候完全沉浸到深度学习中了!关于深度学习的常见误解是,它只是一系列可以预测任何事情的神经元层,就像魔法一样。
完全错了!关于这个主题有密集的文献:如何训练神经网络,哪种类型的网络在特定的竞赛中起作用,训练一定规模的神经网络所需的硬件架构是什么。首先,你可以从深度学习专业开始学习课程,同时作为教科书检查深度学习。构建人工神经网络最常用的两个框架是 TensorFlow 和 PyTorch 。网上有很多资料都是从他们的官网开始的。
[## Keras 中的自定义神经网络:街头战士构建图表指南
如何建立具有自定义结构和层的神经网络:Keras 中的图形卷积神经网络(GCNN)。
towardsdatascience.com](/custom-neural-networks-in-keras-a-street-fighters-guide-to-build-a-graphcnn-e91f6b05f12e)
如果没有 GPU,可以用 Google Colab 做原型!
[## 类固醇上的 Colab:带 SSH 访问和 Visual Studio 代码服务器的免费 GPU 实例
一步一步地引导 SSH 进入 Google Colab 提供的免费 GPU 实例,并安装 Visual Studio Code Server。
towardsdatascience.com](/colab-free-gpu-ssh-visual-studio-code-server-36fe1d3c5243)
6.数据可视化
大多数时候,数据科学项目的关键部分是数据可视化。数据科学家应该能够通过有效的图表传达其见解,或者通过仪表板使结果可供企业使用。如果你用的是 Python, matplotlib , plotly , seaborn 和 streamlit 是常用的选择。R 中有 ggplot2 和闪亮仪表盘。如果你喜欢来硬的,可以试试 D3.js 。您会发现有几种数据可视化解决方案,并且不可能学会使用所有的解决方案!我的哲学是学习其中的几个,准备好创建一个原型来展示结果。在许多项目中,已经选择了最终的数据可视化解决方案,因为它是现有工作流的一部分,您只需要创建端点来交付您的模型的输出。
7.卡格尔
如果你到了这里,你就差不多准备好了!您应该已经用可重用的代码、有趣的用例以及应用程序示例填满了您的 GitHub 存储库!在 Kaggle 上参加在线竞赛!你可以赢钱!:)最重要的是,在 Kaggle 上你可以向其他人学习各种各样的问题设置!您将意识到,您所知道的只是数据科学社区开发的工具、方法和算法的一小部分。
永远不要停止学习!否则,你将被淘汰!
8.大数据
我想专门用一节来介绍大数据项目。通常,要在大数据背景下训练机器学习模型,传统数据科学项目的基本包是不够的!
你将面临不同的技术来摄取和操纵大数据。我们正处于数据科学家和数据工程师之间的边界。通常,大数据开发环境是由工程师建立的,但数据科学家应该知道如何使用这些新工具!于是,学会使用卡夫卡、 Spark 、 Scala 、 Neo4j !
[## Apache Kafka: Docker 容器和 Python 中的例子
如何使用 Docker 安装 Kafka 并在 Python 中产生/消费消息
towardsdatascience.com](/kafka-docker-python-408baf0e1088) [## 如何从 Python 查询 Neo4j
在 Python 中使用 Neo4j:Neo4j Python 驱动程序和 Cypher 查询语言的快速入门。
towardsdatascience.com](/neo4j-cypher-python-7a919a372be7)
9.云服务
近年来,一个日益增长的趋势是由谷歌、微软和其他参与者提供的数据科学项目开发的在线平台。这些平台主要提供开发环境和已经训练好的模型作为服务。同样,这些环境的设置主要由数据工程师完成,但了解某些类型的服务已经在线存在,以及哪些类型的预培训模型可以作为服务使用,可以提高您的工作效率并缩短交付时间!因此,请关注这些云平台,因为许多公司已经在使用它们了!
10.真实世界的体验
希望当你读到这一部分时,你已经是一名数据科学家了。通过在真实环境中工作,你会发现技术知识并不是数据科学项目的唯一部分。软技能和经验是完成一个成功项目的主要因素!作为一名数据科学家,您将与业务部门互动,将业务需求转化为技术需求,您将与其他专业人员(例如,数据工程师、仪表板设计师等)一起在团队中工作。)并能够以技术和非技术的方式分享您的发现。此外,正如你已经意识到的,对于每个问题设置,测试方法的数量总是比你完成项目的时间要多。
培养一种第六感的最佳方式是“尝试、失败、重复”,这种第六感能告诉我们什么可行,什么不可行。
只有在经历了相当多的成功和失败之后,你才能避免第一眼看到的非最优解!
11.专门化
到目前为止,你一直在学习成为一名普通的数据科学家。你什么都懂一点,但你不是任何事情的专家!当你在这里学习所有的东西时,其他成千上万的人也在做同样的事情!所以如果你想和其他人不一样,你需要专攻某样东西!你可能是一名 NLP 专家,一名 CV 专家,一名网络科学专家,或者一名数据可视化专家……这个名单可能会很长,但是请记住:专业不应该仅仅是技术方面的,也应该是商业领域的!很容易找到一个时间序列预测方面的数据科学家专家,但如果数据科学家也是股票市场方面的专家,就不那么容易了。
12.概念和工具
作为成为伟大的数据科学家指南的最后一点,我想指出概念和工具之间的区别。这些概念在你学会之后仍然存在,但是工具在将来可能会改变。神经网络如何工作是一个概念,但它的实现可以在 Tensorflow、PyTorch 或任何其他框架中完成。数据科学家应该对创新持开放态度。如果一门新的语言更适合你的项目,那就学习它,并使用它!不要依赖于你的工具!尝试新的东西!
到目前为止,我们已经看到了成为伟大的数据科学家的学习途径。这个清单远非完整,它是基于我的个人经验。如果你有任何建议,请给我留言!当然,这个列表的顺序只是推荐,你可以根据自己的需要随意调整!
在文章的这一部分,我将分享一些保持与新概念、最先进的算法和最新技术保持同步的方法。这些建议也可以在你学习文章的第一部分时使用!
A.加入当地社区,参加研讨会
了解当地是否有数据科学家社区,并加入他们!参加 meetup,认识不同行业的人。不要低估网络的力量!在其他情况下成功应用的解决方案也可以适用于你的问题!
如果住在大学附近,说不定也有专门研究数据科学的研究部门!通常,研究中心会组织研讨会和会议。要求参加这些活动!这是一个很好的方式来保持最新的趋势研究课题和最先进的解决方案!
B.看报纸
谷歌学术提供了在某个特定研究者的新论文发表时被通知的可能性。dblp 和 arXiv 是搜索新论文的其他来源。它们都是继续你的专业或找到特定问题的解决方案的好方法!如果你需要一个程序来组织你阅读的论文,使用门德利的推荐系统,它会根据你的兴趣推荐相关的论文。
C.关注在线网站
走向数据科学、 Analytics Vidhya 、和走向 AI 都是有效的媒介出版物。大部分文章都是带动手例子的教程!所以你已经有了代码的草稿!
除了媒体出版物,来自谷歌、脸书、微软和 OpenAI 的研究博客是机器学习/人工智能领域的另一个新闻来源。
其他有趣的网站有:
D.订阅时事通讯
不想经常查看网页?你更喜欢电子邮件通知吗?订阅以下一些时事通讯!
E.在 Telegram 上关注数据科学小组
有专门研究数据科学的电报频道/群组。我在这里报告其中一些:
F.使用社交网络和 YouTube
你可以在 Twitter 或 LinkedIn 上关注并与许多专家数据科学家或机器学习巨星互动(只需寻找他们!).在 LinkedIn 上,即使你不想换工作,你也可以关注机器学习公司的招聘信息:从需求中,你可以了解生产环境中使用的技术的趋势!此外,YouTube 频道也可以有趣地跟上潮流!我在这里报告一些渠道:
G.个人项目
在许多数据科学项目中,可用的时间很短,但要做的事情很多。在这种情况下,数据科学家倾向于抑制某些方法或忽略可能的改进。创造次优产品的感觉可能会令人沮丧!
作为这个列表的最后一点,我建议开始一个你喜欢的个人项目。在这个项目中慢慢来,不要设置任何期限。通过测试每一种新方法来享受这个项目的每一部分!
数据科学家的工作—值得做出牺牲吗?
意见
长话短说——的确如此(至少对我来说)
迈克尔·朗米尔在 Unsplash 上的照片
你打开网页,发现数据科学家是最性感的工作。
网上说,作为数据科学家,你将获得每年约 10 万美元的报酬。
您对前景感兴趣,并开始寻找成为数据科学家的方法。
打开每个网页标签,
看了很多文章,
收集了无数的电子书,
给 LinkedIn 上的人发消息,
在 YouTube 视频上观看课程,
报名参加网络课程,
参加线下数据科学训练营,
参加卡格尔比赛,
诸如此类。
你牺牲了很多——时间、金钱、睡眠、精神、关系等等。
然后你觉得自己已经准备好成为一名数据科学家了。
你填写工作申请表——有数千人申请的入门级工作,
等待电话,
很少有公司打电话来或者根本没有,
被拒绝了,
你变得更有创造力,
试着找到一种社会联系,
或者申请实习,
继续努力。
即使牺牲了这么多东西,唯一能保住工作的人还是寥寥无几。
许多人要么需要等待另一次机会,要么干脆放弃。
不是每个人都在经历类似的磨难,但有些人会感到熟悉。
值得做出的牺牲吗?
让我试着解释一下成为一名数据科学家需要什么。
“那么,也许,仅仅是也许,数据科学家是一份值得你为之牺牲的工作.”
成为数据科学家需要什么?
成为一名数据科学家有许多必备技能,但哪一项才是精华呢?。让我们来看看 KDNuggets 民意调查中的 10 大技能。
来源:创建自https://www . kdnugges . com/2019/09/core-hot-data-science-skills . html
不出所料,很多技能都是技术技能。Python 和数据可视化都位居第一和第二,批判性思维技能紧随其后。暂时,让我们忽略非技术技能,如批判性思维和商业理解。我们究竟花了多长时间学会了所有这些技能,需要付出多少代价?我们去那里取些样本。
在线课程
假设我们每周学习 4 个小时(这通常是在线课程推荐的时间)。
- IBM 数据科学课程 在 Coursera 提供了 Python & SQL 的课程,分析&可视化数据,建立机器学习模型。~ **10 个月。**费用:每月 39 美元
- 数据科学在线训练营 在 Udemy 承诺学习数学、统计学、Python、Python 中的高级统计学、机器&深度学习。~28 小时在线视频。如果我们每周学习 4 小时,那将需要 2 个月。成本:~ 200 美元,但通常时间折扣为~ 12 美元
- Data camp 上的数据科学赛道**其中的课程包括 Python、数据可视化、SQL、机器学习和统计学。100 小时~ **7 个月。费用:标准订阅每月 25 美元或每年 300 美元
训练营
和培训师一起进行线下(或者线上,但是广泛的)训练营怎么样?他们承诺你可以成为数据科学家多久?
- **美国 Metis 数据科学训练营 课程说你会学习 Python、SQL、机器学习、统计学(还有很多)。 **~12 周或 3 个月。费用:全额学费 17000 美元
- **纽约数据科学院 课程包括 Python(和 R)、数据可视化、SQL、机器学习。 **~12 周或 3 个月。费用:全额学费 17600 美元
- **跳板数据科学赛道 设有课程 Python、数据可视化、SQL、机器学习。 **~6 个月。成本:预付 7500 美元
- 新加坡 Hackwagon 数据科学课程 拥有 Python、数据可视化、机器学习、数学、统计学的完整课程。 ~7 周 x 3 个疗程或左右~ 5 个月~ 6 个月。费用:;每门课程 2000 新元 x3 = 6000 新元****
从上面的例子中,我们可以看到在线课程为你提供了许多小时的在线视频或课程。许多人建议学习六个月以上(这取决于你想每周花多长时间)。这是合理的,因为在线课程是静态的,没有任何与导师的互动,所以你需要更长的时间来理解每个概念。网络课程的主要优势是便宜;几乎每个人都可以负担得起,如果他们有多余的钱,虽然这也成为一个问题。虽然它很便宜,但它只是在没有适当指导的情况下为你建立了短暂的知识——没有方向。
此外,许多雇主不认为在线课程是一种资产,除非你已经有相关的学位或经验。在我个人看来,在线课程的价值与其价格相当——提高/回顾你的技能是好事,但不要仅仅依靠这一点来成为数据科学家。你可以尝试通过使用各种书籍或者只是阅读文档来学习这些技巧,但是我不确定掌握必要的技巧需要多长时间。
训练营怎么样?我们可以看到它要贵得多。非常贵。这是因为 Bootcamp 提供了一些在线课程没有的东西,即专业讲师、个人指导、密集的时间表和联系(尽管我知道一些 Bootcamp 没有经验丰富的员工和/或联系)。问题是值得吗?答案是肯定的,也是否定的。肯定的,因为对于一个新手来说,你需要一个方向、专业的评论和关系才能进入数据科学。否定的,因为你可以从书籍或在线课程中获得所有必要的技能。进一步考虑,在今天的条件下很难保证有人就业,就像训练营承诺你完成课程后有工作一样;对此半信半疑。
现在,我之前解释的都是关于技术技能的。你从哪里获得的非技术性技能,如批判性思维、沟通和商业理解?没有在线课程或训练营教你这些。对于这一点,我还没有提到获得必要技能的其他方法;就是通过获得学位和/或专业就业**,就像我一样。**
为什么许多员工喜欢有抱负的数据科学家持有学位?这是因为有些技能只有通过在学院/大学里学习才能获得。我并不一定意味着你需要一个博士学位才能成为一名优秀的数据科学家——如果你正确地学习课程,即使是学士学位也足够了。它会教你批判性思维和如何沟通,如果你的学位与雇主的业务相符,也许还会教你商业。虽然,这将需要更长的时间和更高的成本相比,我放下以上。我获得硕士学位的教育时间花了六年,其中三四年是作为研究人员的专业时间,在成为数据科学家之前,我花了几个月的时间再次复习我的技术技能。是的,总的来说,我需要大约 9-10 年的准备时间来步入数据科学的世界。
无论你选择哪种方式,都要准备好花费大量的时间和金钱来获得必要的技能。毕竟没有免费的午餐。你需要付出才能得到。此外,在所有这些之后,也不能保证能得到一份数据科学家的工作。你需要做好应对拒绝的心理准备。
值得牺牲吗?
我牺牲了很多钱,时间,睡眠,关系。我花了很多钱和时间在错误的地方。我放弃了与朋友甚至是一段关系出去玩的提议,只是为了专注于学习线性代数。我醒着的时候只是为了提高我的技能。这一切值得吗?
现在,如果你的唯一目标是薪水,数据科学家根本不值得牺牲。仍然有许多工作在花费相似或更少的时间和金钱来掌握技能(或甚至更少的技能来学习)的情况下报酬更高。比如软件工程师,全栈开发者,律师,药剂师,甚至飞行员。仍然有许多种类的工作,更好的是花时间在更好的薪水和听起来很棒的名字上。
如果你成为一名数据科学家,你的工作流程大致如下。
来源:我自己创作
不要想象作为一名数据科学家,我们会致力于创建一个机器学习模型,或者神奇地预测接下来会发生什么。大多数时候,我们只是收集数据,创建报告,使用统计数据来理解发生的事情,演示和探索数据。还是要看你的公司是什么业务,但是很多时候,只看上面的。
如果你不能想象自己一直在收集和查看数据,那就不要做数据科学家。机器学习模型很酷,但不要坚持你会后悔的工作。牺牲实在太大了。
然而,如果你喜欢观察模式,不要介意弄脏假设,对探索数据有耐心,喜欢分析,有数据素养天赋,并且擅长沟通。那么,也许,仅仅是也许,数据科学家是你值得牺牲的工作。在做出这种牺牲之前,你需要知道你签约到底是为了什么。
结论
我热爱我的职业,因为我喜欢探索我的数据,观察模式,获得一条新信息,创建一个假设,测试我的建议,以及其他许多我可以用数据做的事情。是的,我也喜欢玩机器学习,但这不仅仅是我工作中的乐趣。当然,职业前景也很好。
我想说的是,进入数据科学需要很多牺牲。在你做这一切之前,确保这种牺牲是值得的。对我来说,这是值得的。
如果你喜欢我的内容,并想获得更多关于数据或作为数据科学家的日常生活的深入知识,请考虑在这里订阅我的时事通讯。
如果您没有订阅为中等会员,请考虑通过我的推荐订阅。
数据科学家必须知道:商业 x 统计
为什么业务和统计之间集成对于数据科学家来说至关重要
露丝·齐默曼在 Unsplash 上拍摄的照片
根据定义,统计学是一门处理数据的收集、分类、分析和解释的科学。该领域通常由概率数学理论的使用来支持,并用于评估特定的假设。
这个定义听起来已经很专业了,而且似乎与商业没有任何关系。此外,为什么数据科学家需要知道这两件事?
嗯,统计学不仅仅是一门高等数学课。这是每个企业从竞争中获得优势的必由之路。我认为,许多伟大的商业领袖做出的商业决策不仅来自他们的直觉,也有统计数据的支持。
任何数据科学家项目都是解决公司任何问题的数据项目。如果你的高级深度学习模型有 99%的精度,并能猜出每个经过房间的人,这并不重要;如果它不能解决业务问题,那它就是无用的。
问题是,统计对业务到底有多重要,为什么我们作为数据科学家需要了解统计和业务的两个方面?这是你可能会疑惑的问题。好吧,让我向您解释更多关于数据科学家的业务和统计信息。
商业 x 统计
商业和统计看起来像两个不同的世界,不会融合,但它是重要的整合。你怎么问?下面我用几段话告诉你。
数据驱动的业务和统计
您可能经常在许多文章或其他数据科学相关的学习材料中听到术语**“数据驱动”**。它可能会说一些类似的话,比如“这个业务是数据驱动的”,或者“决策是基于数据的,所以它是数据驱动的”,等等。
在这里,您可能认为使用数据进行业务决策意味着您是数据驱动的。是真的吗?如果按数据,就是只看数字,根据数据快照执行决策,那么就是一个
否。
数据驱动的业务不仅仅如此。公司可能包含大量的数据,但是如果这些信息与当前的业务无关,那么它们就是无用的。
例如,已经成立十年的公司 A 想在新的市场销售一种新产品。他们要求他们的数据团队根据他们拥有的数据为他们的新产品描绘一个新的细分市场,他们声称拥有大量数据。该团队然后查看他们的公司数据,发现“大量数据”意味着许多电子表格数据只包含无用的属性,如 id、姓名、电子邮件和电话号码。
以上是一个无法解决您的业务问题的数据示例,但是如果我们有一个“可能的”数据集来细分新客户呢?先说他们的工资,职业,喜好,年龄。在这一点上,我们的业务需要统计数据来评估数据质量,并帮助公司决定采取何种业务战略。
考虑商业中的统计
我已经简单解释了为什么统计数据在商业中至关重要,但是什么样的统计数据在商业中特别重要。这里,我们需要回到业务的核心**“你的业务问题中最重要的是什么?”;是销售数字,还是利润,或者任何你可以问的问题。这就是我们所说的关键指标**。
例如,公司 A 的关键指标是他们的月销售额。在这种情况下,公司 A 需要解决的是他们希望从他们的关键指标中得到什么样的分析。嗯,最明显的一个是这些年来的月销售额。下面我举一个数据例子。
作者创建的数据示例图
现在,通过一个简单的统计和分析,我们可以看到销售数量一直在增加,直到二月份,每年的销售额都在大幅下降。在这种情况下,统计数据可以提供每年下降的准确百分比,从业务角度来看,值得调查以确定下降的原因。
这就是统计如何帮助企业;这不仅仅是指出公司存在的问题,帮助企业做出商业决策,还包括了解企业的销售状况。
数据科学家的商业和统计
那么,数据科学家呢?我上面解释的似乎只适用于业务,不适用于数据科学家。嗯,我们可能需要定义数据科学家大部分时间做什么。
由作者创建的学术数据科学家图表
上图是数据科学家每天进行的理论活动。虽然这没有错,但工作环境中的现实却大相径庭。
作者创建的真实数据科学家活动图
在上图中,我们可以看到,这不仅仅是清理和准备数据,我们还需要遵守数据合规性和道德规范,以及将我们的任何数据项目与业务问题相集成。
任何数据科学家项目都是解决公司任何问题的数据项目。如果你的高级深度学习模型有 99%的精度,并能猜出每个经过房间的人,这并不重要;如果它不解决商业问题,它就是无用的。
每一个数据科学家都需要了解你的公司正在从事什么样的业务,以及你试图解决什么样的业务问题。当你在公司工作时,与其他部门的互动是不可避免的。
例如,销售部门想要增加销售数量。为此,销售团队要求数据科学团队创建一个新的客户预测模型。你可能会认为只需提取数据并将其训练到任何机器学习模型,对吗?
不,事实往往不是这样。你首先需要做的是说服销售部门这个项目是否可行,并设定一个合理的目标。这就是为什么数据科学家也需要了解业务和统计方面。
要确定您是否可以执行数据项目,您需要有用的数据。在这种情况下,你需要一个统计来评估你的数据质量。
而且,经常,不处理数据的人会设立一个不合理的目标。例如,销售部门希望下个月的销售数字增加 100%。要证明这个目标是否合理,需要从你目前的数据来评估。简单的趋势分析和估计就可以了,但是你只有理解了统计数据和业务才能做到这一点**。**
你可能会说,“难道机器学习模型不是为了提高销量而创建的吗?如果是这样,这种估计就没用了”。当然,拥有机器学习模型的目的是为了解决业务问题,比如增加销售数量。虽然这是事实,但你仍然需要将你的目标控制在一个合理的数字之下。
会有一个你的机器学习模型无法预见的问题;比如业务员辞职、部门重组、配送事故等等。有雄心壮志固然很好,但要努力在合理的范围内实现你承诺的目标。
选择适当的关键指标也可能是数据科学家的责任,尤其是当公司刚刚涉足数据驱动型业务时。在这种情况下,商业和统计会成为你最好的朋友。
结论
不了解业务和统计数据,数据科学家就无法工作。这两个方面都是数据科学家的工作装备,了解这些可以让你成为更好的数据科学家。
作为一名数据科学家,您需要了解业务和统计方面,因为:
- 数据项目不仅仅是清理数据和创建模型,它还涉及解决业务问题,
- 评估数据项目对于解决业务问题是否可行需要统计,
- 统计还需要为您的数据项目设定一个合理的目标,因为您的机器学习模型无法预见一切,而且
- 商业和统计是你可以用来提高你在公司中的地位的知识,或者当你申请数据科学家职位时。
希望有帮助!
如果您喜欢我的内容,并希望获得更多关于数据或数据科学家日常生活的深入知识,请考虑在此订阅我的简讯。
如果您没有订阅为中等会员,请考虑通过我的介绍订阅。