数据科学术语表:常用数据科学术语的定义
原文:https://web.archive.org/web/20221129050302/https://www.datacamp.com/blog/data-science-glossary
[假阳性(FP,I 型错误)](#false-positive-(fp,-type-i-error)
A
准确度分数
准确度分数是一种评估指标,用于评估机器学习模型的性能,并显示正确预测数与预测总数的比率。
激活功能
在人工神经网络(ANN) 中使用一个激活函数,该函数根据来自前一层(或输入层)的输入,通过计算其到下一个隐藏层(或输出层)的输出来确定是否激活一个神经元。激活函数负责神经网络的非线性转换。
算法
算法是一系列可重复的步骤,通常以数学方式表达,由人类编写并由计算机执行,以解决特定类型的数据科学问题。算法的范围从非常简单到极其复杂。不同的算法适用于不同的任务和技术。主要概念是算法接受一些输入并产生一个输出,相同的输入将总是产生相同的输出。在机器学习中,算法以数据和超参数的形式接受输入,从数据中识别和学习常见模式,并以预测的形式产生输出。
阿帕奇火花
Apache Spark 是一个开源的多功能并行处理框架,用于分析和建模大数据。Spark 允许您将数据和计算分散到具有多个节点的集群上(将每个节点想象成一台独立的计算机)。拆分数据可以更容易地处理非常大的数据集,因为每个节点只处理少量的数据。由于每个节点处理其自己的总数据子集,它还执行所需的总计算的一部分,因此数据处理和计算都与集群中的节点并行执行。事实上,并行计算可以使某些类型的编程任务更快。
应用程序接口
API 是应用程序编程接口的首字母缩写,是一种确保应用程序或计算机之间连接的软件中介。API 的一个例子是在 Rideshare 应用程序中嵌入谷歌地图。数据科学家通常使用 API 来访问数据(例如,下载推文的 Twitter API),或者打包他们制作的解决方案(例如,在生产中调用机器学习模型的 API)。
人工智能
人工智能是计算机科学的一个分支,涉及使用机器学习、编程和数据科学技术,使计算机能够智能地运行。人工智能系统是广泛的,具有不同程度的复杂性。它们可以是基于规则的系统,也可以是基于机器学习的系统,并且可以执行诸如欺诈检测、对象识别、语言翻译、股票价格预测等功能。
人工神经网络
人工神经网络是一种机器学习模型,它大致受人脑中生物神经网络的启发。神经网络由数百层称为神经元的互连单元组成。从概念上讲,人工神经网络有以下类型的层:输入层、输出层和隐藏层,用于过滤数据,用激活函数处理数据,并在输出端进行预测。人工神经网络是称为深度学习的机器学习子集的构建模块,深度学习提供复杂的输出,如图像或声音识别、对象检测、语言翻译等。
B
反向传播
反向传播是一种用于训练深度学习网络的技术,基于实现梯度下降来迭代调整权重和偏差,以提高网络的准确性。该算法在每次训练迭代中计算输出的误差,然后将其传播回网络,从而使其能够在未来的训练迭代中最小化误差。
贝叶斯网络
贝叶斯网络是显示不确定域的随机变量之间的关系的概率图,其中图节点表示这些变量,每对节点(边)之间的链接表示相应变量的条件概率。贝叶斯网络的一个例子是在医疗诊断中,研究人员预测健康结果,同时考虑所有可能影响结果的因素。
贝叶斯定理
贝叶斯定理是用于计算条件概率的数学等式,即,在相关事件 A 已经发生的情况下,事件 B 发生的概率。这个定理在数据科学中的应用之一是为大型数据集构建贝叶斯网络。
偏见
偏差是指模型对数据拟合不足的趋势,导致机器学习和数据科学中的预测不准确。这是在偏差-方差权衡中经常讨论的偏差定义。此外,偏见也可能意味着算法偏见——这是指机器学习模型通过基于受保护的属性(如种族、性取向、性别认同、年龄、怀孕、退伍军人身份等)不同地对待不同的个人群体来复制有害的社会偏见的倾向。
偏差-方差权衡
偏差-方差权衡是在创建机器学习模型时在偏差和方差之间的权衡。在创建机器学习模型时,偏差和方差是两种类型的预测误差,其中高偏差表示模型欠拟合,高方差表示模型过拟合。将这两个因素最小化到最佳水平会降低预测的总体误差。
大数据
大数据是围绕处理、处理和从数据集中提取信息的领域,这些数据集对于传统的数据处理工具来说太大或太复杂。大数据由五个 v 定义;速度——数据生成的速度;卷—生成的数据量;多样性—数据类型的多样性,例如文本、图像、表格数据等。;准确性——数据的质量和真实性;和价值—数据转化为有价值的业务见解的倾向。
二项分布
二项式分布是独立试验结果的离散概率分布,有两个互斥的可能结果(成功和失败),试验次数有限,成功概率恒定。简而言之,二项式分布可以被认为是重复多次的事件中特定结果(成功或失败)的概率(例如,在掷出 5 次的骰子中得到 3 的概率)。
商业分析员
业务分析师负责将数据洞察与可提高盈利能力或效率的可操作结果联系起来。他们对业务领域有深入的了解,经常使用 SQL 和非编码工具来交流从数据中获得的见解。
商业分析(文学学士)
业务分析是一个分析子领域,专注于使用历史和当前数据来发现有价值的运营见解,预测未来可能的趋势,并做出数据驱动的业务决策。商业分析的工具包通常包括统计分析、描述性分析和数据可视化,并且可能会交叉到预测分析和机器学习中。
商业智能(BI)
商业智能是一个分析子领域,结合了描述性分析、商业分析、数据可视化、统计分析、报告等等。旨在帮助组织做出数据驱动的决策。BI 通常利用 Tableau 和 Power BI 等非编码工具来探索历史和当前数据的趋势。与业务分析不同,BI 的主要焦点是描述性分析。
C
分类变量
分类变量是可以有有限数量的可能值(类别)之一的变量,不涉及任何内在排序。分类变量的一个例子是婚姻状况(例如,已婚、单身、离婚)。它也被称为名义变量或定性变量。
分类
当需要根据输入特征预测分类结果时,分类是一个监督学习问题。分类问题的例子是欺诈检测(例如,给定输入特征集,该交易是欺诈的吗?)和垃圾邮件过滤器(例如,这是否是垃圾邮件?).常用的分类算法有 k 近邻、决策树、随机森林等。
使聚集
聚类是一个无监督的学习问题,涉及根据一些共同特征的相似性对数据集的所有观察值进行分组。与分类问题不同,这些组(称为聚类)不是由人类预先定义的,而是由机器学习算法在学习输入数据时识别的。每个簇中的元素彼此相似,但与所有其他元素不同。常见的聚类算法有 k-means、层次聚类、谱聚类等…
计算机科学
计算机科学是一个多方面的研究领域,主要集中在数字计算机信息处理、计算机硬件和软件设计以及计算机应用的理论和实践方面。特别是,计算机科学涉及人工智能、计算系统、算法、数据结构、数据建模、安全、计算机和网络设计等…
计算机视觉
计算机视觉是计算机科学的一个领域,涉及使计算机能够从数字图像或视频中获得高级理解,接近人类可以看到的程度。随着深度学习的发展和大数据的积累,计算机视觉变得特别受欢迎。它的一些应用包括物体和面部识别、运动分析、自动驾驶汽车和光学字符识别。
混淆矩阵
混淆矩阵是说明分类模型的预测性能的表格。通常,为二进制输出创建混淆矩阵(即,仅具有两种类型预测的预测问题,例如,交易是否是欺诈性的),因此结果表是一个二乘二的表。混淆矩阵表示两个类别的预测与实际标签之间的关系。它很容易显示准确预测的数量(真阳性和真阴性),以及假阳性(I 型错误)和假阴性(II 型错误)的数量。
连续变量
连续变量是可以在特定范围内取无限多值的变量。连续变量的例子有身高和体重。
相互关系
相关性是两个或多个变量之间关系的强度和方向,用相关系数或皮尔逊系数来衡量。从统计学上讲,相关系数是两个变量的协方差与它们的标准偏差的乘积之比。它可以取从-1(完全负相关)到 1(完全正相关)的值。两个变量之间存在相关性并不意味着因果关系。
价值函数
成本函数是一种机器学习函数,用于测量训练集的预测值和实际值之间的平均差异,并且应该最小化。
协方差
协方差是两个变量之间关系的度量。与测量同一变量内部变化的方差不同,协方差显示一个变量的变化如何影响第二个变量的变化。协方差用于计算相关系数。
交叉验证(未验证)
交叉验证是训练机器学习模型时的一种重采样方法,它将标记的数据分成训练集和测试集。在交叉验证的每次迭代中,数据的不同部分用于训练和测试模型。训练集用于训练模型,测试集用于进行预测并将其与这些条目的实际标签进行比较。随后,计算总体准确性度量,以估计所得模型的预测性能。
D
仪表盘
仪表板是一个交互式的图形用户界面,用于可视化、汇总和报告关键绩效指标(KPI)、进度指标和业务流程相关信息,使目标受众能够轻松掌握许多层面上最重要的见解。仪表板是使用非编码工具(如 Excel、Tableau 或 PowerBI)甚至编码工具(如 Python 和 r)构建的。仪表板通常链接到定期更新的数据库和服务。
数据分析
数据分析是一门专注于清理、转换、可视化和探索数据的学科,目的是提取有意义的模式和见解,并将结果传达给相关方。数据分析通常是所有数据科学项目的第一个里程碑,但它也可以代表一个独立的项目。但与数据科学不同,它更多地处理描述性分析,而不是预测性分析。
数据分析师
数据分析师类似于业务分析师,数据分析师负责分析数据并报告他们的分析见解。他们对数据分析工作流有着深刻的理解,并使用编码和非编码工具的组合来得出和报告他们的见解。
数据库ˌ资料库
数据库是一个结构化的存储空间,其中的数据以某种方式组织在许多不同的表中,以便可以轻松地访问和汇总必要的信息。数据库通常与关系数据库管理系统一起使用,如 Oracle 或 PostgreSQL。用于与数据库中的数据进行交互的最常见的编程语言是 SQL。
数据库管理系统
数据库管理系统是一个软件包,用于轻松地对数据执行不同的操作:访问、操作、检索、管理和存储数据库中的数据。根据数据组织和结构的方式,有不同类型的数据库管理系统:关系型、图形型、层次型等…DBMS 的一些例子:Oracle,MySQL,PostgreSQL,Microsoft SQL Server,MongoDB。
数据消费者
数据消费者通常担任非技术角色,但使用数据专业人员提供的数据见解和分析来做出数据驱动的决策。数据消费者通常需要与数据专业人员进行对话,并且应该能够区分数据何时可以、何时不可以用于回答业务问题。
数据工程师
数据工程师是负责向数据科学家和数据分析师提供正确数据的专家。他们设计并维护存储基础架构和数据管道,这些数据管道将来自不同来源的大量原始数据放入一个集中的位置,其中包含与组织相关的干净、格式正确的数据。
数据工程
数据工程是专注于在组织内扩展数据访问的专业。数据工程师致力于数据采集、收集、管理和存储,以及建立数据管道并将数据转化为高质量、可供组织其他部门使用的数据。
数据丰富
数据丰富是增强、提炼和扩充原始数据的过程,以使其对组织更有用,从而获得更有意义的业务洞察力并优化预测分析。
数据帧
dataframe 是表格数据结构,带有潜在不同类型的标记轴(行和列)。
数据治理
DAMA 将数据治理定义为“对数据和数据相关来源的管理进行规划、监督和控制”。数据治理设置了角色、职责和流程,以确保数据的可用性、相关性、质量、可用性、完整性和安全性。数据治理包括治理机构、满足公司信息需求的规则和实践框架,以及执行这些实践的计划。
数据新闻
数据新闻是一种与处理和分析大量数字数据有关的新闻,目的是创造一个关于数据的故事,或从数据中获得的信息。这一角色的出现是由于持续增长的信息流以及现代新闻业与统计、IT 技术和数据科学等领域日益增加的互动。
数据湖
数据湖是一个单一的存储库,包含来自各种来源的大量未经处理的原始数据,这些数据还没有明确的用途。数据湖既包括不同结构的结构化数据(彼此之间没有任何关系),也包括非结构化数据(如文档和文本文件)。原始数据作为原始信息源保存,除非需要数据,否则没有必要对其进行结构化和争论。
数据素养
数据素养是对数据进行读取、写入、分析、交流和推理以做出更好的数据驱动型决策的能力。从组织的角度来看,它是一系列数据技能,从数据驱动的决策制定,到数据科学、数据工程和机器学习中的高级技术技能,使组织中的每个人都拥有相关的能力,并从大规模数据中产生价值。
数据挖掘
数据挖掘是从各种来源收集相关数据、清理数据并将其转换为正确格式、检测和提取数据之间有意义的隐藏趋势、模式和相互联系,以及传达可操作的见解以帮助组织做出数据驱动的决策和制定更好的战略的过程。为此,使用了各种分析和建模技术,包括统计分析、数据可视化、回归和分类。
数据建模
数据建模是开发整个 IT 系统或其中一部分的可视化表示的过程,用于交流数据点和结构之间的连接。数据模型展示了系统中使用和存储的数据类型、这些不同数据源之间的关系,以及如何根据不同的属性和特征对数据进行分组。在数据科学中,您可能会遇到一个稍加调整的数据建模定义:构建可靠的模型,将原始数据转化为预测性、一致性和可操作性的见解。主要目的是清楚地了解关键的业务需求、可用的数据源和截止日期,并提供一个相关的数据驱动和格式正确的框架来满足这些需求。
数据管道
数据管道是一组相互链接的数据处理脚本,从而使数据在组织中自动流动,在组织中,数据被提取、转换和加载,以便随时可以使用。
数据科学
数据科学是一个多方面的跨学科研究领域,它使用各种科学方法、高级分析技术和预测建模算法来从数据中提取有意义的见解,以帮助回答许多领域的战略业务或科学问题。它结合了广泛的技术和非技术技能,通常需要在其应用的特定行业中具有扎实的领域知识,以便能够正确地解释可用数据和获得的结果。
数据科学家
数据科学家调查、提取并报告组织数据中有意义的见解。他们将这些见解传达给非技术利益相关者,并对机器学习工作流以及如何将它们与业务应用联系起来有很好的理解。他们几乎只使用编码工具,进行分析,并且经常使用大数据工具。
资料组
数据集是一种或多种类型的数据集合,代表现实生活或合成生成的观察结果,用于统计分析或数据建模。数据集的数据可以从许多来源收集,通常存储在某种数据结构中,最常见的是表,其中列对应于不同的变量,行对应于不同的数据条目。
数据结构
数据结构是一种组织和存储数据的方式,以便可以有效地访问和处理数据。数据结构定义了数据和可以对数据执行的操作之间的关系。数据科学中常见的数据结构有数据帧、列表、数组等等。
数据可视化
数据可视化是一个跨学科的领域,它处理以可视格式压缩和表示信息。数据可以根据各种图表(如地图、直方图、条形图和折线图)进行可视化,并可以组合成信息图、仪表板等。数据可视化通常用于帮助目标受众更好地理解底层数据和获得的结果。
数据仓库
数据仓库是一个中央存储库,用于存储通过 ETL (提取、转换、加载)过程从多个来源收集的结构化、清理和转换的数据。数据专业人员可以通过商业智能工具、SQL 查询等轻松访问数据仓库中的必要信息。,并使用它进行进一步的分析和建模,以回答业务问题。
数据争论
数据争论也称为数据管理。数据争论任务涉及数据清理、重组、合并、聚合,以及为特定目的转换成适当的格式。总而言之,这是一个数据准备的过程,以便于进一步的访问和数据分析。
决策图表
决策树是一种受监督的机器学习算法,主要用于分类,但也用于回归问题。决策树对单个特征提出一系列 if-else 问题,目的是推断类别标签。决策树得益于可能的图形树状表示、对人类决策能力的模仿以及直观可理解的逻辑,但这种类型的模型往往会过度拟合。
深度学习
深度学习是基于多层人工神经网络(ANN) 的机器学习算法的子集,主要受大脑结构的启发。人工神经网络非常灵活,可以从大量数据中学习,以提供高度准确的输出。它们通常是一些数据科学和机器学习用例的背后,如图像或声音识别、语言翻译和其他高级问题。
降维
降维是减少训练集的特征数量的过程,只留下捕获大多数变化的最相关的特征,以便增强模型的性能。降维对于包含大量变量的大型数据集尤其有用。它有助于优化存储空间和计算时间,还修复了多重共线性问题。最流行的降维技术是 PCA (主成分分析)。
E
电子设计自动化(Electronic Design Automation)
EDA 是探索性数据分析的首字母缩写,指的是数据分析的第一阶段,侧重于对可用数据的基本探索;总结其主要特征,并找到初始模式和趋势、要解决的问题以及要进一步研究的问题。在这个阶段,数据分析师或数据科学家对数据有一个大致的了解,作为后续更详细的数据分析的基础。
英语教学
ELT(提取、加载、转换)是由数据工程师设计的数据管道系统,是更流行的方法 ETL (提取、转换、加载)的替代方案。在应用任何转换之前,原始数据被加载到数据湖,然后就地转换。与 ETL 相比,ELT 的优势在于它需要的时间更少,适合处理大型数据集,并且更具成本效益。
抽取、转换、加载至目的端(extract-transform-load 的缩写)
ETL (extract,transform,load)是由数据工程师设计的数据管道系统。从多个来源提取数据,将其从原始形式转换成适当的格式以与其他来源的数据保持一致,并加载到目标数据仓库。从这里,它可以用于进一步的数据分析和建模,以解决各种业务问题。
评估指标
评估指标是用于评估统计或机器学习模型性能的指标集合。评估指标的一些例子是准确度分数、 f 分数、召回和 RMSE 。
F
假阴性(FN,II 型错误)
当分类模型错误地预测二元目标变量的负面类别时,就会产生假阴性(例如,如果我们预测客户流失,假阴性会生成“不会流失”的预测,而实际标签是“会流失”)。
假阳性(FP,I 型错误)
假阳性是当分类模型错误地预测二元目标变量的阳性类别时的结果。例如,如果我们预测客户流失,误报会生成“将流失”预测,而实际标签是“不会流失”。
特征
特征是在机器学习模型中用作输入的独立变量。例如,如果我们使用身高、体重和糖摄入量来预测患糖尿病的可能性,身高、体重和糖摄入量都是特征。
特征工程
特征工程是使用领域知识和主题专业知识将原始特征转换成更好地反映潜在问题并且更适合机器学习算法的特征的过程。它包括从可用数据中提取新要素,或操作现有要素。例如,如果我们试图预测健康结果,如患糖尿病的可能性,使用身高和体重特征计算身体质量指数特征就是特征工程。
特征选择
特征选择是从数据集中选择与预测目标变量最相关的特征子集的过程。智能特征选择过程对于大型数据集尤其重要,因为它降低了模型复杂性、过拟合和计算时间,并提高了模型准确性。
f 分数
F-Score 是用于评估模型性能的评估指标,它结合了精度和召回。通常,使用 F1 分数,它是精确度和召回率的调和平均值。更一般的情况是 Fβ,其中额外的权重应用于精确度或召回率。
G
梯度下降
梯度下降是机器学习中使用的迭代优化过程,通过找到函数参数的最佳值来最小化成本函数。
H
Hadoop
Hadoop 是一个基于 Java 的开源软件框架,支持在许多计算机集群之间并行处理和分布式存储大数据。与仅使用一台计算机相比,Hadoop 可以节省时间并处理更大量的数据。
超参数
超参数是属于机器学习模型的属性,其值是在开始训练过程之前手动设置的。与其他参数不同,超参数不能直接从数据中估计或学习。调整超参数并估计最终的模型性能,我们可以确定它们的最佳值以获得最精确的模型。直观地说,调谐超参数类似于在试图获得完美信号时调谐收音机旋钮。超参数的一个例子是随机森林算法中的树的数量。
假设
假设是关于某个问题或事件的假设,这个假设必须被检验,并且根据实验的结果,被证明或被拒绝。
我
归罪
插补是填补数据集中缺失值的过程。插补技术可以是统计技术(均值/众数插补)或机器学习技术(KNN 插补)。
K
k 均值
K-Means 是最流行的聚类算法,它使用数据中的暂定坐标来识别 K 个聚类中心(称为质心),并基于其特征将每个观察值迭代地分配给质心之一,直到质心收敛。一个聚类中的数据点是相似的,而其他聚类中的数据点是不同的。
k-最近邻(KNN)
k-最近邻是监督学习算法,它根据观察值与其最近邻的相似性对观察值进行分类。可以调整的 KNN 最重要的参数是最近邻的数量和距离度量(闵可夫斯基、欧几里德、曼哈顿等。).
L
线性代数
线性代数是数学的一个分支,研究线性系统:直线、平面、向量空间、矩阵及其运算,如加法或乘法。线性代数在数据科学和机器学习中非常有用,因为数据集和许多机器学习模型可以用矩阵形式表示。
线性回归
线性回归是一种回归算法,用于处理连续目标变量与一个或多个连续特征之间的线性关系建模。使用线性回归的数据科学的一个典型例子是基于各种输入属性的价格预测。
逻辑回归
逻辑回归是一种回归算法,它对输入要素使用逻辑函数来预测类概率或直接预测目标变量的类标注。在第二种情况下,输出表示一组类别而不是连续值,这意味着逻辑回归在这里充当分类技术。逻辑回归的典型数据科学用例是预测客户流失的可能性。
M
机器学习
机器学习是人工智能(AI)的一个分支,它提供了一套旨在从历史数据中学习模式和趋势的算法。ML 的目的是预测未来的结果,并在没有明确编程的情况下对训练集的数据点进行归纳。有两种主要类型的机器学习算法:监督的和非监督的,每种算法都由适用于不同用例的众多技术来表示。
平均
平均值是一组数的算术平均值,即所有值的总和除以值的个数。它通常与其他统计数据一起使用,以获得对整个数据集的总体了解。
平均绝对误差
平均绝对误差(MAE)是预测值与实际值相比的所有绝对误差的算术平均值。
均方误差
均方误差(MSE)是预测值与实际值相比的所有误差平方的算术平均值。
中位数
中位数是一组按升序或降序排序的数字的中间值。如果集合中有偶数个值,则中位数是两个中间值的算术平均值。中位数通常与其他统计数据一起使用,以获得对整个数据集的整体了解,对于检测可能的异常值尤其有用。
方式
众数是一组数据中最频繁出现的值。
模型调整
模型调整是调整超参数的过程,目的是在不过度拟合的情况下最大化模型的精确度。
多元建模
多变量建模是对在特征选择步骤中定义的多个变量(预测值)和目标变量之间的关系进行建模的过程。
普通
朴素贝叶斯
朴素贝叶斯是一组基于贝叶斯定理和分类器中使用的特征之间的独立性假设的分类算法。尽管在现实中,特征并不总是独立的,朴素贝叶斯算法可以成功地应用于各种数据科学用例,如垃圾邮件过滤或情感分析。
自然语言处理
自然语言处理(NLP)是计算机科学的一个分支,致力于使计算机应用程序理解和分析书面或口头人类语言。NLP 技术获取输入文本数据(通常是非结构化的),将其转换为结构化形式,寻找语言和上下文模式,对它们进行分类,并从这些数据中提取有价值的见解。NLP 还涉及利用机器学习和深度学习来生成语言,对其进行分类,并使用语言完成其他认知任务。NLP 应用的一些例子是聊天机器人、语音到文本转换器、情感分析和自动翻译。
正常化
规范化是重新调整数据比例以使所有属性具有相同比例的过程。归一化对于在属性之间进行有意义的比较是必要的,并且对于一些机器学习算法也是必需的。
NoSQL
NoSQL 代表“不仅仅是 SQL”。一种数据库管理系统,用于存储和检索非关系(即非表格)数据库。非关系数据模型的一些例子是图形、文档和键值数据库。NoSQL 系统受益于高灵活性和操作速度,以及跨许多服务器扩展的可能性”。
虚假设
零假设是一种假设,它陈述了要检验的替代假设的相反情况,即两个变量之间不存在显著的统计关系,并且观察结果都是基于概率的。在统计实验中,可以拒绝或确认无效假设。
O
开放源码
开源是指可用于进一步修改和共享的免费许可软件和资源。开源工具促进了用户之间的合作,并且通常更加稳定,因为研究人员可以添加新的、有用的功能,或者修复社区报告的技术问题和错误。
序数变量
序数变量是一种变量,它可以具有有限数量的可能值中的一个,并包含内在的排序。一个例子是调查响应栏,其中响应按强度排序(例如,“强烈不同意”、“不同意”、“中立”、“同意”或“强烈同意”)。
局外人
异常值是数据集中与其余观察值相差很大的异常值。异常值可能是测量错误或异常事件的证据。
过度拟合
过度拟合指的是模型从训练集中学习了过多的信息,包括潜在的噪声和离群值。结果,它变得太复杂,太受特定训练集的限制,并且无法在看不见的数据上充分执行。过度拟合导致偏差-方差权衡的高方差。
P
参数
在编程和数据科学中,参数是传递给函数的命名变量。在机器学习中,参数是要从数据中学习的算法的内部组件。一些机器学习算法是参数化的,具有固定的参数集(例如,线性和逻辑回归),而其他算法是非参数化的(例如,k-最近邻)。
精确
精度是一种评估指标,用于评估机器学习模型的性能,显示正确预测的正例数与预测的正例总数的比率。
预测分析
预测分析是使用各种统计分析、数据挖掘、数据可视化和机器学习工具分析历史数据的过程,以预测特定业务中的未来事件。
主成分分析
主成分分析(PCA)是一种因子分析和降维的统计技术,将一组可能相关的初始特征转化为一组较小的线性不相关特征,称为主成分。通过这种方式,PCA 尽可能多地保留数据集中的差异,同时最大限度地减少特征的数量。
计算机编程语言
Python 是一种开源、面向对象的高级编程语言。Python 在数据科学领域非常流行,但也广泛用于计算机科学中的通用编程。它直观易懂,易于学习和使用,同时仍然是解决复杂问题的强大资源。Python 提供了广泛的标准库和许多额外的有用模块,并且在不断地开发、改进和扩展。
稀有
稀有
r 是一种流行的编程语言和免费软件,广泛用于解决数据科学和机器学习问题,尤其以其统计计算能力和令人敬畏的数据可视化解决方案而闻名。它包括许多数据科学工具和软件包,可以在许多操作系统中使用,并且有一个强大的在线社区。
随机森林
随机森林是一种用于回归或分类问题的监督学习算法,随机森林将许多决策树的输出组合在一个模型中。随机森林的预测基本上代表了所有决策树的平均结果,因此该算法提供了比单个决策树更准确的结果。
回忆
召回是一种用于评估机器学习模型性能的评估指标,显示正确预测的阳性病例数与实际阳性病例总数的比率。
回归
回归是一个监督学习问题,需要根据输入特征预测连续结果。回归模型学习一个或几个独立特征和目标变量之间的关系,然后使用建立的函数来预测看不见的数据。回归算法的例子有线性回归和岭回归。一个典型的回归问题是价格预测。
强化学习
强化学习(RL)是机器学习的一个独立分支(既没有监督也没有非监督),其中算法通过与环境交互来逐渐学习。RL 根据其过去的经验做出决策,决定哪些行动可以使其更接近既定目标。通过对正确行为的奖励和对错误行为的惩罚,该算法找出最佳策略来最大化其性能。RL 算法的例子包括玩游戏的机器学习系统,例如国际象棋引擎和视频游戏代理。
关系数据库
关系数据库是一种通过唯一的 id(键)将数据存储在几个彼此相关的表中的数据库,可以通过不同的方式从这些表中访问、提取、汇总或重组数据。
均方根误差(RMSE)
均方根误差(RMSE)是均方误差的平方根。这种评估指标比 MSE 更直观,因为使用与原始数据相同的测量单位,结果更容易理解。
S
抽样误差
抽样误差是数据的整个总体与其子集(样本)之间的统计差异,因为样本不包括整个总体的所有元素。
结构化查询语言
SQL(结构化查询语言)是一种编程语言,旨在与关系数据库管理系统交互。SQL 有几种风格,包括 SQLite、PostgreSQL 和 MySQL。其中一些是免费和开源的。所有的风格都有相当相似的语法,在附加功能上有微小的变化。
标准偏差
标准差是总体的方差的平方根。标准差显示值的离差量,比方差更直观,因为它与数据采用相同的测量单位。
监督学习
监督学习是机器学习的一个分支,涉及在历史数据的标记训练集上教授模型。监督学习学习输入和输出之间的关系,然后测量它预测具有已知实际输出的测试集的输出的准确程度。通过这种方式,以后可以使用它对全新的数据进行预测。监督学习算法包括线性和逻辑回归、决策树和 SVM。常见任务的例子包括预测房价和将消息分类为垃圾邮件或火腿。
SVM
SVM(支持向量机)是一种监督学习算法,主要用于分类,但也用于回归问题。在分类问题中,SVM 提供了一个最佳超平面,它将两个类别的观测值分开(在多类别分类的情况下,该算法将问题分解为一组二元问题)。在回归问题中,SVM 在定义的阈值内提供最佳拟合超平面。
综合数据
合成数据是人工创造的数据。合成数据通常反映了初始数据集的统计属性,因此它们可用于高隐私领域,如银行和医疗保健,或者用其他具有统计代表性的数据观察来扩充现有数据集。
T
目标变量
目标变量(也称为因变量)是通过使用特征在机器学习算法中预测的变量,例如,如果我们使用身高、体重和糖摄入量来预测糖尿病的可能性,糖尿病状态就是我们想要预测的目标变量。
测试装置
测试集是在建立模型之前隔离的可用数据的子集,通常占整个数据集的 20%到 30%。测试集用于评估适合训练集的模型的准确性。
时间序列
时间序列是在不同时间对一个变量进行的一系列观察,并按时间顺序排列。通常,时间序列测量是在连续的、等距的时间点进行的。时间序列的一些例子是股票市场价格或一段时间内的温度。
训练集
训练集是在建立模型之前隔离的可用数据的子集,通常占整个数据集的 70%到 80%。训练集用于拟合稍后将在测试集上测试的模型。
真阴性(TN)
真阴性(TN)是模型正确预测二元目标变量的阴性类别的结果(即,它预测“假”为假的实际标签)。
真阳性(TP)
真阳性(TP)是模型正确预测二元目标变量的阳性类别的结果(即,它预测实际标签为真的“真”)。
U
欠拟合
欠拟合是指模型无法从训练集中检测到模式,因为它建立在不充分的信息上。因此,模型过于简单,无法在看不见的数据上表现良好,训练集本身也是如此。欠装配模型具有高偏差。
单变量建模
单变量建模是对单个变量(预测值)和目标变量之间的关系进行建模的过程。单变量建模通常与时间序列一起使用。
非结构化数据
非结构化数据是不符合预定义数据结构的任何数据,例如数据库的典型行列结构。这种数据的例子是图像、电子邮件、文本文档、视频和音频。
无监督学习
无监督学习是一类机器学习算法,在没有提供目标变量的情况下学习数据集的底层结构。无监督学习用于发现数据中的常见模式,根据属性对值进行分组,然后对看不见的数据进行预测。最常见的无监督学习算法是 k-means。常见任务的示例有异常检测和基于常见特征的客户细分。
V
差异
方差是数学和统计学中单个值与整组值的平均值之间的平均平方差。换句话说,方差显示了值的分布情况。在机器学习中,方差是由模型对训练集中微小变化的敏感性引起的误差。高方差反映了模型从输入要素中获取随机噪声的趋势,从而导致模型过度拟合。
W
网页抓取
Web 抓取是从网站中提取特定数据以供进一步使用的过程。Web 抓取可以通过编写程序从网站上获取必要的信息来自动完成。
Z
z 分数
Z 得分(也称为标准化得分、标准得分或正常得分)是数据观测值高于或低于整组值的平均值的标准差单位数。z 得分等于 0 意味着数据观测值接近平均值。
银行业的数据科学:欺诈检测
原文:https://web.archive.org/web/20221129050302/https://www.datacamp.com/blog/data-science-in-banking
银行业是历史上收集大量结构化数据的幸运领域之一,也是最先应用数据科学技术的领域之一。
数据科学在银行业是如何运用的?如今,数据已经成为这个领域最有价值的资产。数据科学是银行跟上竞争对手、吸引更多客户、提高现有客户忠诚度、做出更高效的数据驱动型决策、增强业务能力、提高运营效率、改进现有服务/产品并推出新产品、增强安全性以及获得更多收入的必要条件。不足为奇的是,大部分数据科学工作需求来自银行业。
数据科学让银行业能够成功执行众多任务,包括:
- 投资风险分析
- 客户终身价值预测
- 客户细分
- 客户流失率预测
- 个性化营销
- 客户情绪分析
- 虚拟助手和聊天机器人
下面,我们将详细了解银行业中最常见的数据科学用例之一。
银行业中的数据科学用例:检测欺诈
欺诈活动不仅在银行业,而且在政府、保险、公共部门、销售和医疗保健等许多其他领域都是一个具有挑战性的问题。任何处理大量在线交易的企业都有很大的欺诈风险。金融犯罪有多种形式,包括欺诈性信用卡交易、伪造银行支票、逃税、洗钱、网络攻击、客户账户盗窃、合成身份、虚假申请和诈骗。
欺诈检测是一套主动措施,用于识别和防止欺诈活动和财务损失。其主要分析技术可分为两组:
- 统计:统计参数计算、回归、概率分布、数据匹配
- 人工智能(AI):数据挖掘、机器学习、深度学习
机器学习是欺诈检测的重要支柱。它的工具包提供了两种方法:
- 监督方法:k 近邻、逻辑回归、支持向量机、决策树、随机森林、时间序列分析、神经网络等。
- 无监督方法:聚类分析、链接分析、自组织映射、主成分分析、异常识别等。
欺诈检测没有通用可靠的机器学习算法。相反,对于真实世界的数据科学用例,通常会测试几种技术或它们的组合,计算模型预测准确性,并选择最佳方法。
欺诈检测系统的主要挑战是快速适应不断变化的欺诈模式和欺诈者的策略,并及时发现新的和日益复杂的计划。欺诈案件总是占少数,并且在真实交易中隐藏得很好。
准备数据集
让我们使用 Python 编程语言来探索信用卡欺诈检测的机器学习实现。我们将在 creditcard_data 数据集上工作,这是从关于信用卡欺诈检测的 Kaggle 数据集修改而来的样本。原始数据代表了 2013 年 9 月两天内欧洲持卡人的信用卡交易。
让我们导入数据并快速查看一下:
import pandas as pd
creditcard_data = pd.read_csv('creditcard_data.csv', index_col=0)
print(creditcard_data.info())
print('\n')
pd.options.display.max_columns = len(creditcard_data)
print(creditcard_data.head(3))
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5050 entries, 0 to 5049
Data columns (total 30 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 V1 5050 non-null float64
1 V2 5050 non-null float64
2 V3 5050 non-null float64
3 V4 5050 non-null float64
4 V5 5050 non-null float64
5 V6 5050 non-null float64
6 V7 5050 non-null float64
7 V8 5050 non-null float64
8 V9 5050 non-null float64
9 V10 5050 non-null float64
10 V11 5050 non-null float64
11 V12 5050 non-null float64
12 V13 5050 non-null float64
13 V14 5050 non-null float64
14 V15 5050 non-null float64
15 V16 5050 non-null float64
16 V17 5050 non-null float64
17 V18 5050 non-null float64
18 V19 5050 non-null float64
19 V20 5050 non-null float64
20 V21 5050 non-null float64
21 V22 5050 non-null float64
22 V23 5050 non-null float64
23 V24 5050 non-null float64
24 V25 5050 non-null float64
25 V26 5050 non-null float64
26 V27 5050 non-null float64
27 V28 5050 non-null float64
28 Amount 5050 non-null float64
29 Class 5050 non-null int64
dtypes: float64(29), int64(1)
memory usage: 1.2 MB
V1 V2 V3 V4 V5 V6 V7 \
0 1.725265 -1.337256 -1.012687 -0.361656 -1.431611 -1.098681 -0.842274
1 0.683254 -1.681875 0.533349 -0.326064 -1.455603 0.101832 -0.520590
2 1.067973 -0.656667 1.029738 0.253899 -1.172715 0.073232 -0.745771
V8 V9 V10 V11 V12 V13 V14 \
0 -0.026594 -0.032409 0.215113 1.618952 -0.654046 -1.442665 -1.546538
1 0.114036 -0.601760 0.444011 1.521570 0.499202 -0.127849 -0.237253
2 0.249803 1.383057 -0.483771 -0.782780 0.005242 -1.273288 -0.269260
V15 V16 V17 V18 V19 V20 V21 \
0 -0.230008 1.785539 1.419793 0.071666 0.233031 0.275911 0.414524
1 -0.752351 0.667190 0.724785 -1.736615 0.702088 0.638186 0.116898
2 0.091287 -0.347973 0.495328 -0.925949 0.099138 -0.083859 -0.189315
V22 V23 V24 V25 V26 V27 V28 \
0 0.793434 0.028887 0.419421 -0.367529 -0.155634 -0.015768 0.010790
1 -0.304605 -0.125547 0.244848 0.069163 -0.460712 -0.017068 0.063542
2 -0.426743 0.079539 0.129692 0.002778 0.970498 -0.035056 0.017313
Amount Class
0 189.00 0
1 315.17 0
2 59.98 0
数据集包含以下变量:
- 数字编码的变量 V1 到 V28 是从 PCA 变换中获得的主要成分。由于保密问题,没有提供关于原始功能的背景信息。
- Amount 变量表示交易金额。
- Class 变量显示交易是欺诈(1)还是非欺诈(0)。
就其性质而言,在所有交易中,欺诈事件幸运地是极少数。然而,当数据集中包含的不同类或多或少同等存在时,机器学习算法通常工作得最好。否则,很少有数据可以借鉴。这个问题叫做阶级不平衡。
计算数据集中的欺诈
让我们计算欺诈交易占数据集中交易总数的百分比:
round(creditcard_data['Class'].value_counts()*100/len(creditcard_data)).convert_dtypes()
0 99
1 1
Name: Class, dtype: Int64
并创建一个图表,将欺诈可视化为非欺诈数据点:
import matplotlib.pyplot as plt
import numpy as np
def prep_data(df):
X = df.iloc[:, 1:28]
X = np.array(X).astype(float)
y = df.iloc[:, 29]
y = np.array(y).astype(float)
return X, y
def plot_data(X, y):
plt.scatter(X[y==0, 0], X[y==0, 1], label='Class #0', alpha=0.5, linewidth=0.15)
plt.scatter(X[y==1, 0], X[y==1, 1], label='Class #1', alpha=0.5, linewidth=0.15, c='r')
plt.legend()
return plt.show()
X, y = prep_data(creditcard_data)
plot_data(X, y)
使用 SMOTE 重新平衡数据
我们现在可以确认,欺诈交易的比例非常低,我们有一个阶级不平衡的问题。为了解决这个问题,我们可以使用合成少数过采样技术(SMOTE)来重新平衡数据。与随机过采样不同,SMOTE 稍微复杂一些,因为它不只是创建观察值的精确副本。相反,它使用欺诈案例的最近邻居的特征来创建新的合成样本,这些样本与少数类中现有的观察结果非常相似。让我们将 SMOTE 应用于我们的信用卡数据:
from imblearn.over_sampling import SMOTE
method = SMOTE()
X_resampled, y_resampled = method.fit_resample(X, y)
plot_data(X_resampled, y_resampled)
正如我们所看到的,使用 SMOTE 突然给了我们更多关于少数民族的观察。为了更好地了解这种方法的结果,我们将把它们与原始数据进行比较:
def compare_plot(X, y, X_resampled, y_resampled, method):
f, (ax1, ax2) = plt.subplots(1, 2)
c0 = ax1.scatter(X[y==0, 0], X[y==0, 1], label='Class #0',alpha=0.5)
c1 = ax1.scatter(X[y==1, 0], X[y==1, 1], label='Class #1',alpha=0.5, c='r')
ax1.set_title('Original set')
ax2.scatter(X_resampled[y_resampled==0, 0], X_resampled[y_resampled==0, 1], label='Class #0', alpha=.5)
ax2.scatter(X_resampled[y_resampled==1, 0], X_resampled[y_resampled==1, 1], label='Class #1', alpha=.5,c='r')
ax2.set_title(method)
plt.figlegend((c0, c1), ('Class #0', 'Class #1'), loc='lower center', ncol=2, labelspacing=0.)
plt.tight_layout(pad=3)
return plt.show()
print(f'Original set:\n'
f'{pd.value_counts(pd.Series(y))}\n\n'
f'SMOTE:\n'
f'{pd.value_counts(pd.Series(y_resampled))}\n')
compare_plot(X, y, X_resampled, y_resampled, method='SMOTE')
Original set:
0.0 5000
1.0 50
dtype: int64
SMOTE:
0.0 5000
1.0 5000
dtype: int64
因此,SMOTE 方法完全平衡了我们的数据,现在少数类的大小与多数类相等。
我们将很快回到 SMOTE 方法的实际应用,但是现在,让我们回到原始数据并尝试检测欺诈案例。按照“老派”的方式,我们必须创建一些规则来捕捉欺诈。例如,这些规则可能涉及异常的交易地点或可疑的频繁交易。这个想法是基于普通统计定义阈值,通常基于观察的平均值,并在我们的特征上使用这些阈值来检测欺诈。
print(creditcard_data.groupby('Class').mean().round(3)[['V1', 'V3']])
V1 V3
Class
0 0.035 0.037
1 -4.985 -7.294
在我们的特殊情况下,让我们应用以下条件:V1 < -3 和 V3 < -5。然后,为了评估这种方法的性能,我们将标记的欺诈案例与实际案例进行比较:
creditcard_data['flag_as_fraud'] = np.where(np.logical_and(creditcard_data['V1']<-3, creditcard_data['V3']<-5), 1, 0)
print(pd.crosstab(creditcard_data['Class'], creditcard_data['flag_as_fraud'], rownames=['Actual Fraud'], colnames=['Flagged Fraud']))
Flagged Fraud 0 1
Actual Fraud
0 4984 16
1 28 22
应用逻辑回归
我们检测到了 50 个欺诈案例中的 22 个,但无法检测到另外 28 个,并且得到了 16 个误报。让我们看看使用机器学习技术是否能击败这些结果。
我们现在将对我们的信用卡数据实施简单的逻辑回归分类算法,以识别欺诈事件,然后在混淆矩阵上显示结果:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
lr = LogisticRegression()
lr.fit(X_train, y_train)
predictions = lr.predict(X_test)
print(pd.crosstab(y_test, predictions, rownames=['Actual Fraud'], colnames=['Flagged Fraud']))
Flagged Fraud 0.0 1.0
Actual Fraud
0.0 1504 1
1.0 1 9
值得注意的是,这里我们在混淆矩阵中要查看的观察值较少,因为我们仅使用测试集来计算模型结果,即仅占整个数据集的 30%。
我们发现了更高比例的欺诈案件:90%(10 起中有 9 起),而之前的结果是 44%(50 起中有 22 起)。我们得到的误报也比以前少得多,所以这是一个进步。
现在,让我们回到之前讨论的类别不平衡问题,并探索我们是否可以通过将逻辑回归模型与 SMOTE 重采样方法相结合来进一步增强预测结果。为了高效地一次性完成,我们需要定义一个管道,并在我们的数据上运行它:
from imblearn.pipeline import Pipeline
# Defining which resampling method and which ML model to use in the pipeline
resampling = SMOTE()
lr = LogisticRegression()
pipeline = Pipeline([('SMOTE', resampling), ('Logistic Regression', lr)])
pipeline.fit(X_train, y_train)
predictions = pipeline.predict(X_test)
print(pd.crosstab(y_test, predictions, rownames=['Actual Fraud'], colnames=['Flagged Fraud']))
Flagged Fraud 0.0 1.0
Actual Fraud
0.0 1496 9
1.0 1 9
正如我们所看到的,在我们的案例中,SMOTE 没有带来任何改进:我们仍然捕获了 90%的欺诈事件,而且,我们的误报数量略高。这里的解释是,重采样不一定在所有情况下都能得到更好的结果。当欺诈案例在数据中非常分散时,它们的最近邻居不一定也是欺诈案例,因此使用 SMOTE 会引入偏差。
结论
作为一种可能的方法,为了增加逻辑回归模型的准确性,我们可以调整一些算法参数。也可以考虑 k 倍交叉验证,而不仅仅是将数据集分成两部分。最后,我们可以尝试一些其他的机器学习算法(例如,决策树或随机森林),看看它们是否能给出更好的结果。
如果您想了解更多关于欺诈检测模型实现的理论和技术方面的知识,您可以探索 Python 课程中的欺诈检测的资料。
当今保险业中的数据科学
如今,高绩效的保险组织正在利用数据科学在竞争激烈的环境中推进其业务。在最近的一次网络研讨会中,安联比荷卢经济联盟的区域首席数据和分析官 Sudaman Thoppan Mohanchandralal 讨论了保险领域数据科学的现状以及该行业中令人兴奋的机器学习用例。
为什么数据科学在当今的保险行业很有价值
最近,该行业的需求已经转向更加个性化的服务,而不是那些吸引大众市场的服务。麦肯锡的这份报告描述了苏达曼提到的这种转变。它解释了如何通过战略性个性化营销和服务产品与大规模消费者建立深厚的一对一关系。
个人客户可用数据的大规模增长以及机器学习和资源的进步,使得需求和关系的这些变化成为可能。在本文的中,IBM 讨论了保险公司在创建相对于吸引大众的产品的个性化服务时,如何观察到盈利时间提高了 22-25%。这些产品只能使用机器学习进行规模化开发。
保险数据科学的现状
Sudaman 在网上研讨会中解释说,当机器学习用于预测而不是因果推理时,以及当问题足够独立时,它会提供价值。截至今天,当组织试图将这些算法用作水晶球或黑盒,而不是告知人类探索方向的工具时,机器学习失败了。以下是网上研讨会中涉及的一些使用案例:
1.保险索赔中的欺诈检测
机器学习在有大量数据的预测任务上表现非常好。因此,欺诈检测是训练和部署逻辑回归或决策树等分类算法的绝佳用例。这个系统可以用来标记看起来可疑的索赔。这使得欺诈预防对分析师来说变得更加易于管理,因为它将通过暴露最有可能是欺诈的索赔来增强他们的工作流程。
2.为保留活动识别客户
提高任何组织规模的另一个重要用例是提高客户保持率。机器学习可以帮助识别哪些客户有离开您组织的风险。从长远来看,大规模识别这些客户并为他们留下来提供激励将带来更好的客户终身价值,从而实现更深层次的个性化。
3.利用时间序列数据优化定价(风险溢价建模)
了解客户提出索赔的风险对于确定正确的价格和提供索赔的计划结构至关重要。所有的保险公司都在某种程度上这样做。随着可用数据的扩展,可以提高确定客户风险状况的模型准确性,从而为个人提供更具竞争力的价格。
4.未来疾病预测
与前面的用例类似,了解未来的疾病风险在投资组合优化和定价中至关重要。讨论保险业将如何支付超过 1000 亿美元的 COVID 相关索赔。虽然提前预测疫情具有挑战性,但了解和预测健康结果将使保险公司能够优先考虑和个性化他们的服务。
5.投资组合优化
我们将讨论的最后一个用例是投资组合优化。投资组合管理由几个步骤组成:识别要分析的有意义的风险分组,通知最优决策,以及识别机会。这些子任务都可以通过数据科学优化技术解决。
如果您想了解更多关于保险数据科学的未来,请点击此处收听网络研讨会。
营销中的数据科学:客户流失率预测
介绍
在过去的 10-15 年里,随着数字技术的进步,营销策略发生了很大的变化。知名品牌和较小的市场已经收集了大量关于交易、客户购买、偏好、购买力、购买活动、人口统计、评论等的数据。所有这些数据都可以帮助营销人员了解客户在不同阶段的行为,从购买意图到真正购买并成为固定客户。这就是数据科学发挥潜力的地方。
数据科学将营销大数据转化为可操作的见解,即使有时乍一看不太直观,例如,一些不明显的消费者行为模式和共现现象。因此,营销人员可以更清楚地了解他们的目标受众,吸引新客户并留住现有客户,优化他们的营销策略,提高公司的知名度,创建更成功的广告活动,涉及新的渠道,并反过来使公司的收入最大化。
营销中最典型的数据科学用例之一是客户流失率预测。让我们更详细地讨论这个话题。
营销中的数据科学用例:客户流失率预测
客户流失是指客户取消他们一直在使用的服务的订阅,并因此不再是该服务的客户。客户流失率是在预定义的时间间隔内流失客户的百分比。这与追踪新客户的客户增长率相反。
客户流失率是客户满意度和公司整体业务健康的一个非常重要的指标。除了在任何业务中都会发生的自然流失,或者某些服务的典型季节性流失,还有其他因素可能意味着公司出现了问题,应该加以解决。这些因素是:
- 缺乏或低质量的客户支持,
- 负面的客户体验,
- 转向条件或价格策略更好的竞争对手,
- 顾客的优先考虑改变了,
- 长期客户不会感到满意,
- 服务没有达到顾客的期望,
- 财务问题,
- 对客户付款的欺诈保护。
高客户流失率对任何公司来说都是一个严重的问题,原因如下:
- 它与公司的收入损失相关。
- 获得新客户比留住现有客户要花费更多的钱。对于竞争激烈的市场来说尤其如此。
- 在因为糟糕的客户服务而导致客户流失的情况下,公司的声誉可能会因为不满意的前客户在社交媒体或评论网站上留下的负面评论而严重受损。
对于所有基于订阅的服务来说,客户维系是业务战略的一个重要组成部分。为了预测客户流失率并采取相应的预防措施,有必要收集和分析有关客户行为的信息(购买间隔、成为客户的总时间、取消、后续电话和信息、在线活动),并找出哪些属性及其组合是有离开风险的客户的特征。提前知道哪些客户可能会很快流失,尤其是在高收入或长期客户的情况下,可以帮助公司准确地关注他们,并制定有效的策略来试图说服他们留下来。该方法可以包括给这样的客户打电话,提供礼物、折扣、相同价格的订购升级或任何其他定制的体验。
从技术上讲,客户流失预测是一个典型的机器学习分类问题,当客户根据是否有流失风险被标记为“是”或“否”时。让我们在真实世界的数据上研究一下 Python 中的这个用例。
我们将在电信业务模型中对客户流失进行建模,在这种模型中,客户可以在一个主协议下拥有一家电信公司的多种服务。该数据集包含已清理客户活动的特征和指定客户是否流失的流失标签。
让我们来看看数据,探索流失率分布:
import pandas as pd
telcom = pd.read_csv('telco.csv')
print(f'Number of customers: {telcom.shape[0]:,}\n'
f'Churn values: {set(telcom['Churn'])}\n\n'
f'Churn distribution, %:\n{round(telcom.groupby(['Churn']).size()/telcom.shape[0]*100).convert_dtypes()}')
Number of customers: 7,032
Churn values: {0, 1}
Churn distribution, %:
Churn
0 73
1 27
dtype: float64
27%的客户翻盘,这是一个相当高的比率。但是,与之前的数据科学用例相比,这个数据集似乎没有严重的类别不平衡问题。
现在,我们将对数据进行预处理,以便进一步应用机器学习技术来执行流失预测。这包括将数据分成训练集和测试集,并提取特征和目标变量:
from sklearn.model_selection import train_test_split
target = ['Churn']
custid = ['customerID']
cols = [col for col in telcom.columns if col not in custid + target]
X = telcom[cols]
y = telcom[target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
我们将用于预测流失标签和估计结果准确性的第一个建模算法是一个简单的逻辑回归分类模型:
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
lr = LogisticRegression()
lr.fit(X_train, y_train)
predictions = lr.predict(X_test)
print(f'Test accuracy: {round(accuracy_score(y_test, predictions), 4)}')
Test accuracy: 0.8009
接下来,让我们向我们的逻辑回归模型添加一个功能,即在 L1 正则化的缩放数据上运行它,以在模型构建的同时执行特征选择。C 参数(正则化强度的倒数)的不同值对模型精度有影响。现在,让我们将 C 值设置为 0.025:
lr = LogisticRegression(penalty='l1', C=0.025, solver='liblinear')
lr.fit(X_train, y_train)
predictions = lr.predict(X_test)
print(f'Test accuracy: {round(accuracy_score(y_test, predictions), 4)}')
Test accuracy: 0.7969
现在,我们将调整 L1 正则化的 C 参数,以发现降低模型复杂性的最佳值,同时保持良好的模型性能指标。为此,我们将遍历不同的 C 值,在每个值上构建逻辑回归实例,并计算性能指标。
列表 C 是预先用参数的可能值创建的。l1_metrics 数组由 3 列组成,第一列是 C 值,接下来的两列是非零系数计数和模型精确度分数的占位符。让我们试试这种方法:
C Non-Zero Coeffs Accuracy
0 1.0000 23.0 0.801479
1 0.5000 22.0 0.799204
2 0.2500 21.0 0.802048
3 0.1000 20.0 0.802617
4 0.0500 18.0 0.802048
5 0.0250 13.0 0.796928
6 0.0100 5.0 0.790102
7 0.0050 3.0 0.783276
8 0.0025 2.0 0.745734
我们可以看到,较低的 C 值减少了非零系数(即,用于建模的特征)的数量,从而降低了模型的复杂性,但是它们也降低了模型的准确性。似乎 0.05 的 C 值是最佳值:它将特征的数量减少到 18 个,同时给出比非正则化模型中略高的准确度分数。
现在,让我们尝试另一种建模算法—决策树模型:
from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
print(f'Test accuracy: {round(accuracy_score(y_test, predictions), 4)}')
Test accuracy: 0.7275
为了选择更精确的模型,同时避免过度拟合,我们可以尝试调整树深度(max_depth 参数)并确定其最佳值。从技术上讲,这个过程与上面选择逻辑回归模型的最佳 C 参数的过程非常相似:在这里,我们将遍历 max_depth 参数的多个值,为每个值拟合一个决策树,然后计算性能指标。
已经预先用参数的可能值创建了列表 depth_list。depth_tuning 数组由两列组成,第一列填充深度候选值,另一列是准确度分数的占位符。让我们应用这种方法,找到最佳树深度:
depth_list = list(range(2, 15))
depth_tuning = np.zeros((len(depth_list), 2))
depth_tuning[:, 0] = depth_list
for index in range(len(depth_list)):
clf = DecisionTreeClassifier(max_depth=depth_list[index])
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
depth_tuning[index, 1] = accuracy_score(y_test, predictions)
col_names = ['Max_Depth', 'Accuracy']
print(pd.DataFrame(depth_tuning, columns=col_names))
Max_Depth Accuracy
0 2.0 0.756542
1 3.0 0.783276
2 4.0 0.782708
3 5.0 0.791809
4 6.0 0.778157
5 7.0 0.780432
6 8.0 0.757110
7 9.0 0.762230
8 10.0 0.763936
9 11.0 0.752560
10 12.0 0.745165
11 13.0 0.732651
12 14.0 0.727531
因此,准确度分数首先随着深度增加而增加,然后开始下降。在 max_depth 为 5 时,树显示最高的准确度分数,因此我们可以将该值视为最佳树深度。
在确定逻辑回归和决策树模型的最佳参数值后,让我们重新构建这些模型,然后检测和解释推动客户流失上升或下降的主要因素。
对于逻辑回归模型,我们将提取并研究结果系数的指数:
# Reconstructing the best model
lr = LogisticRegression(penalty='l1', C=0.05, solver='liblinear')
lr.fit(X_train, y_train)
predictions = lr.predict(X_test)
# Combining feature names and coefficients into one dataframe
feature_names = pd.DataFrame(X_train.columns, columns=['Feature'])
log_coef = pd.DataFrame(np.transpose(lr.coef_), columns=['Coefficient'])
coefficients = pd.concat([feature_names, log_coef], axis=1)
# Calculating exponents of the coefficients
coefficients['Exp_Coefficient'] = np.exp(coefficients['Coefficient'])
# Removing coefficients that are equal to zero
coefficients = coefficients[coefficients['Coefficient']!=0]
print(coefficients.sort_values(by=['Exp_Coefficient']))
Feature Coefficient Exp_Coefficient
21 tenure -0.907750 0.403431
4 PhoneService_Yes -0.820517 0.440204
17 Contract_Two year -0.595271 0.551413
8 TechSupport_Yes -0.418254 0.658195
16 Contract_One year -0.414158 0.660896
5 OnlineSecurity_Yes -0.412228 0.662173
6 OnlineBackup_Yes -0.143100 0.866667
3 Dependents_Yes -0.039299 0.961463
7 DeviceProtection_Yes -0.017465 0.982687
11 PaperlessBilling_Yes 0.071389 1.073999
1 SeniorCitizen_Yes 0.097904 1.102857
19 PaymentMethod_Electronic check 0.188533 1.207477
22 MonthlyCharges 0.901454 2.463182
我们可以看到,对变动几率影响最大的特征是任期。一般来说,系数指数低于 1 会降低赔率,而高于 1 会增加赔率。
对于决策树模型,我们将提取并绘制 if-else 规则:
# Reconstructing the best model
clf = DecisionTreeClassifier(max_depth=5)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
from sklearn import tree
import graphviz
# Exporting a graphviz object from the trained decision tree
exported = tree.export_graphviz(decision_tree=clf,
out_file=None,
feature_names=cols,
precision=1,
class_names=['Not churn', 'Churn'],
filled=True)
graph = graphviz.Source(exported)
display(graph)
我们获得了一个好看的决策树可视化,可以解释为一组从顶部开始的 if-else 规则。我们再次看到,客户任期是推动客户流失的最重要的变量。决策树可以构建成更多层,这将提供对其他变量的更多洞察。
作为潜在的前进方向,我们可以尝试进一步调整模型参数,使用不同的训练/测试分割方法,应用和比较其他机器学习算法,并分析各种分数类型来评估模型性能。
如果你想更深入地研究客户流失率预测和数据科学在营销中的其他应用,这门关于用 Python 进行营销的机器学习的课程可能是一个很好的起点。
销售中的数据科学:客户情绪分析
数据科学用例几乎可以与任何积累了大量数据的行业相关。商店和电子商务网站是被营销活动吸引的人们的真实客户体验发生的地方,也是收集特定品牌或公司的有价值的购买数据的地方。在这里,人们做出最终决定,他们是否真的想购买某种产品,他们是否有兴趣购买他们之前没有计划的其他东西,他们准备支付多少钱,他们是否会回到这家商店,以及他们会留下什么关于他们的客户体验的评论。
事实上,客户评论构成了分析和理解在整个销售过程中可以改变或加强的数据的坚实来源。以这种方式分析数据可以降低成本、提高运营效率、改善客户体验、发现新机会、发展业务并最终增加收入。让我们仔细看看如何使用数据科学算法对这些宝贵的信息进行分析和建模,以获得隐藏的见解,并从每个客户那里捕捉整体信息。
销售中的数据科学用例:分析客户情绪
客户情感分析是在客户使用某家公司的服务或产品时,识别客户情感的自动化过程。这通常是从在线调查、社交媒体、支持票、反馈表、产品评论、论坛、电话、电子邮件和聊天机器人中收集的非结构化文本数据。在机器学习中,客户情绪分析是通过自然语言处理(NLP)进行的,NLP 应用统计和语言方法直接从文本数据中提取积极、消极和中性的情绪。本质上,它输出两个参数:
- 极性:表明一种情绪是积极的还是消极的。
- 数量:表明该情绪的强度。
客户情绪分析是任何现代企业的一个关键工具,因为它有助于获得可操作的见解,发现并解决让客户感到不愉快的关键重复问题,强化导致客户积极情绪的产品或服务功能,并在整体上做出更有效的数据驱动型决策。在更精细的层面上,客户情绪分析使我们能够:
- 改善客户服务,从而改善客户体验,
- 提高客户忠诚度,
- 降低流失率,
- 及时升级产品和服务,
- 优化营销活动,
- 预测新的趋势和市场,
- 维护我们公司的高声誉,
- 增加利润。
与任何文本分析任务一样,在进行客户情感分析时会遇到一些陷阱。例如,NLP 算法没有捕捉到一些评论中的讽刺,并将它们错误地分类。它有时也无法破译非常具体的缩写或很少使用的俚语。
准备数据集
让我们使用 IMDB 电影评论数据集来探索客户情绪分析在实践中是如何工作的:
import pandas as pd
movies = pd.read_csv('movies.csv', index_col=0).reset_index(drop=True)
print(f'Number of reviews: {movies.shape[0]:,}\n')
print(movies.head())
Number of reviews: 7,501
review label
0 This short spoof can be found on Elite's Mille... 0
1 A singularly unfunny musical comedy that artif... 0
2 An excellent series, masterfully acted and dir... 1
3 The master of movie spectacle Cecil B. De Mill... 1
4 I was gifted with this movie as it had such a ... 0
我们有两列:一列是每个评论的文本,另一列是对整体情绪的估计:正面(1)或负面(0)。
让我们来计算正面和负面评论的百分比:
round(movies['label'].value_counts()*100/len(movies['label'])).convert_dtypes()
0 50
1 50
Name: label, dtype: Int64
因此,我们有几乎相等比例的正面和负面评论。
运用弓法
我们的下一步将是将文本数据转换为数字形式,因为机器学习模型只能处理数字特征。特别是,我们将创建计算每个单词在各自的评论中出现的次数的功能。用于此目的的最基本和最直接的方法被称为词袋(BOW ),它建立文档中出现的所有词的词汇表,并统计每个词在每个评论中的频率。因此,我们将获得新的特征,每个单词一个,具有相应的频率。
让我们将 BOW 方法应用于我们的数据集:
from sklearn.feature_extraction.text import CountVectorizer
# Creating new features
vect = CountVectorizer(max_features=200)
vect.fit(movies.review)
X_review = vect.transform(movies.review)
X_df = pd.DataFrame(X_review.toarray(), columns=vect.get_feature_names())
# Combining the new features with the label
movies_bow = pd.concat([movies['label'], X_df], axis=1)
print(movies_bow.head())
label 10 about acting action actors actually after again all ... \
0 0 0 0 0 0 0 0 0 0 0 ...
1 0 1 0 1 0 1 0 0 0 3 ...
2 1 0 0 0 0 0 0 1 0 0 ...
3 1 0 0 0 1 0 0 0 0 0 ...
4 0 1 0 0 1 0 0 0 0 3 ...
will with without work world would years you young your
0 0 1 0 0 0 1 0 0 0 0
1 2 7 1 0 0 2 0 3 0 2
2 0 2 0 0 0 0 0 0 1 0
3 0 0 0 0 0 0 0 1 1 0
4 0 2 0 1 0 0 0 0 0 0
[5 rows x 201 columns]
上面,我们应用了一个可选参数 max_features,只考虑 200 个最常用的单词,避免潜在的模型过拟合。
使用监督机器学习模型来预测情感
现在,我们将使用监督机器学习模型来预测情绪。因为我们想要基于已经标记的评论来估计来自新评论的情感是属于积极的还是消极的类别,所以我们不得不再次处理分类问题。同样,让我们使用逻辑回归算法并测量模型准确性:
Accuracy score: 0.754
Confusion matrix:
[[37.62772101 13.23856064]
[11.32829853 37.80541981]]
我们看到,该模型将所有积极的评论中的 11%标记为消极的,将 13%标记为积极的,尽管它们是消极的。作为提高模型准确性的可能方法,我们可以考虑排除停用词(即,出现太频繁的低信息量词,例如“about”、“will”、“you”等)。)和增加词汇量。
当我们应用 BOW 方法时,我们可能会在我们的数据框架中有数百甚至数千个新特征。这会导致创建一个过于复杂的模型:过度拟合,有太多不必要的特征和参数。解决这个问题的一个方法是使用正则化,正则化会限制模型的功能。这里要调整的参数是 C,代表正则化的强度。让我们测试这个参数的两个值:100 和 0.1,看看哪一个在测试数据上给我们最好的模型性能:
lr_1 = LogisticRegression(C=100)
lr_1.fit(X_train, y_train)
predictions_1 = lr_1.predict(X_test)
lr_2 = LogisticRegression(C=0.1)
lr_2.fit(X_train, y_train)
predictions_2 = lr_2.predict(X_test)
print(f'Accuracy score, lr_1 model: {round(accuracy_score(y_test, predictions_1), 3)}\n'
f'Accuracy score, lr_2 model: {round(accuracy_score(y_test, predictions_2), 3)}\n\n'
f'Confusion matrix for lr_1 model, %:\n{confusion_matrix(y_test, predictions_1)/len(y_test)*100}\n\n'
f'Confusion matrix for lr_2 model, %:\n{confusion_matrix(y_test, predictions_2)/len(y_test)*100}')
Accuracy score, lr_1 model: 0.753
Accuracy score, lr_2 model: 0.756
Confusion matrix for lr_1 model, %:
[[37.53887161 13.32741004]
[11.32829853 37.80541981]]
Confusion matrix for lr_2 model, %:
[[37.67214571 13.19413594]
[11.19502443 37.93869391]]
当使用参数 C 的选定值时,模型精度的差异是不明显的。通过进一步试验这个参数的更多值,我们可能会找到一个更能提高模型性能的参数。然而,这里我们只有 200 个新特征,所以我们的模型并不复杂,正则化步骤在我们的例子中并不真正需要。
可以使用 predict_proba 来预测情感概率,而不是使用 predict 函数来预测标签 0 或 1。这里,我们必须记住,我们不能直接将准确度分数或混淆矩阵应用于预测的概率,因为这些度量标准只对类有效。因此,我们需要将它们进一步编码为类。默认情况下,大于或等于 0.5 的概率转换为 1 类,否则转换为 0 类。
lr = LogisticRegression()
lr.fit(X_train, y_train)
# Predicting the probability of the 0 class
predictions_prob_0 = lr.predict_proba(X_test)[:, 0]
# Predicting the probability of the 1 class
predictions_prob_1 = lr.predict_proba(X_test)[:, 1]
print(f'First 10 predicted probabilities of class 0: {predictions_prob_0[:10].round(3)}\n'
f'First 10 predicted probabilities of class 1: {predictions_prob_1[:10].round(3)}')
First 10 predicted probabilities of class 0: [0.246 0.143 0.123 0.708 0.001 0.828 0.204 0.531 0.121 0.515]
First 10 predicted probabilities of class 1: [0.754 0.857 0.877 0.292 0.999 0.172 0.796 0.469 0.879 0.485]
结论
还有许多其他有用的方法可以应用于我们的数据集,以进行更精细的情感分析:
- 使用 n 元语法(单词的组合)而不仅仅是单个单词来保留上下文,
- 排除停用词,
- 基于较高或较低频率值限制词汇的大小,
- 创建描述每个评论的长度或标点符号数量的数字额外特征(后者有时可以与情感的大小相关联),
- 排除数字,某些字符,一定长度的单词,或者考虑更复杂的单词模式,
- 应用词干化和词汇化,即将单词简化到它们的词根,
- 使用更复杂的方法而不是 BOW 来创建词汇表,例如 TfIdf(术语频率逆文档频率),其说明一个单词相对于其余评论在评论中出现的频率。
- 使用一些专门为情感分析设计的库,如 TextBlob、SentiWordNet、VADER(价感知词典和情感推理器)。
如果你有兴趣探索这些和其他有用的技术来进行深刻的情感分析,请查看 Python 中的情感分析课程。
“数据科学家”头衔之外的数据科学角色
2011 年,《哈佛商业评论》称数据科学为“21 世纪最性感的工作”。此后,对数据科学的需求不断增长。《财富》报道称,自 2016 年以来,数据科学家的职位空缺增加了 480%。这种增长如此巨大,以至于到 2020 年仍然缺少 25 万名数据科学专业人员。
不幸的是,那些渴望在数据科学中发挥作用的人可能会发现自己受到了打击。浏览一下数据科学的工作描述就会发现一系列令人生畏的技能。数据科学职位的激烈竞争也让一些申请者被他们梦想的工作拒绝。
然而,许多人没有意识到数据科学家的职业轨迹可能是非线性的。没有“数据科学家”头衔的工作也能让一个人具备宝贵的数据科学技能!这些技能包括统计学、数据处理、机器学习、编程、商业敏锐度和讲故事的技能——所有这些对于数据科学家来说都是必不可少的。
这里有几个角色可以成为你成为数据科学家的垫脚石。这些技术性和非技术性的角色可以帮助你打入这个行业。
非技术数据角色
数据/分析翻译
被麦肯锡称为“新的必备角色”的分析翻译器帮助企业领导人优先考虑他们的业务问题,然后将这些业务目标传达给数据专业人员。分析翻译得到业务领导的认可,并确保数据团队构建的解决方案产生商业价值。
“你不断打破技术概念,让每个人都说同一种语言,”Fortive 的技术分析师 Gruschow 说,她描述她的角色。根据麦肯锡的说法,一个优秀的分析翻译候选人应该具有企业家精神、良好的项目管理技能和一般的技术流利性(尽管编程专业知识是可选的)。如果你有这些技能,分析翻译的角色可能会适合你。
数据科学产品经理
数据科学产品经理(PM)拥有数据科学产品从概念化到发布的路线图。他们与业务团队合作,确定数据科学如何解决业务难题。然后,项目经理与数据专业人员和开发人员密切合作,制定产品需求,监督产品开发,并定义成功标准。
一个产品经理经常与各种各样的利益相关者沟通(来源 )
每个公司都有自己独特的数据科学产品。商业智能公司的数据科学产品经理可能监督数据可视化工具的开发,而流媒体公司的另一位产品经理可能拥有应用内推荐功能的路线图。那些对利益相关者管理有诀窍并且对数据科学有广泛理解的人适合这个角色。
数据战略顾问
数据策略顾问设计、构建和实施提高业务绩效的数据策略。顾问与企业领导者合作,评估公司的数据能力,并为数据驱动型组织提出路线图。
一名顾问确定了公司如何利用数据技术来解决他们的问题。根据公司的成熟程度,战略可能会有所不同。对于一个年轻的组织,顾问可能会建议实施数据管理和治理工具。对于成熟的组织,顾问可能会建议使用创新的云解决方案。那些有咨询背景的人可能会觉得这个职位很有吸引力。最重要的是,那些对各种数据框架(如数据治理、数据管理、商业智能、高级分析、机器学习和云平台)有一些实际知识的人被认为非常适合这个角色。
技术项目经理
技术项目经理计划、组织和指导技术数据科学项目。项目经理管理项目可用的资源,确保项目在预算范围内按时交付。
当项目经理从概念到启动监督一个项目时,他们的角色相当多样化。他们计划项目大纲,安排项目任务,评估项目阶段,与利益相关者沟通,并管理产品愿景。为了管理跨职能的项目团队,他们使用像 Scrum 和 Agile 这样的开发方法。
敏捷方法论(来源 )
技术项目的角色适合那些有管理经验的人。拥有数据科学、软件工程或 UI/UX 技术背景的候选人很可能在获得技术项目经理的职位方面具有优势。
技术作家
随着数据科学产品数量和规模的增长,对技术文档的需求也在增长。正确而简洁的文档是开发人员向最终用户传达指令的最佳方式之一。
Twilio 的技术文件示例(来源 )
技术作家通过提供入门指南、深入的产品文档和关于技术产品的 API 参考资料来填补这一空白。他们还与开发工程师、产品经理和项目经理密切合作来设计文档。技术作者应该有技术背景,这样他们就可以很容易地与技术团队互动。如果你对技术写作感兴趣,在开始找工作之前,你可能想在你的文件夹中包含份你的技术写作样本。
技术数据角色
商业智能分析师
商业智能分析师使用数据分析和可视化来帮助组织做出数据驱动的业务决策。商业智能分析师的日常工作包括解释关键数据以获得洞察力。为了传达这些见解,BI 分析师以仪表板或演示幻灯片的形式维护指标和可视化。因此,BI 分析师精通数据库工具(SQL)、商业智能工具(如 Tableau)和电子表格工具(如 Excel)。
BI 分析师的一个令人兴奋的项目是自动化现有的报告流程。例如,HelloFresh 的 BI 分析师通过创建实时仪表板消除了手动数据报告的需要。然后,营销团队利用这些报告优化营销活动,进而提高客户保留率。
power bi 仪表板示例
数据分析师
数据分析师与 BI 分析师有许多相似之处。像 BI 分析师一样,数据分析师负责提供准确的业务指标,并为业务利益相关者提取可操作的见解,以做出数据驱动的决策。
在一些公司,数据分析师可能会参与高级分析项目。此类项目可能需要数据分析师与产品、业务和工程团队合作,以推动关键的业务决策。例如,数据分析师的任务可能是创建一个客户细分,这可以用来制定特定于细分的策略。
数据分析师可以执行客户细分( 来源 )
根据工作范围的不同,数据分析师可能不仅需要了解 SQL、BI 工具和电子表格工具,还需要了解编程语言(如 Python 或 R)。在从事高级分析项目时,扎实的统计知识也将有助于数据分析师。
市场部分析师
营销运营分析师实施营销流程并分析营销绩效。此类流程可以包括使用 CRM 软件的销售线索管理和客户参与。营销分析师分析客户和供应商数据,以发现机会并优化营销流程。例如,分析师可能会进行漏斗分析,以找到客户转化过程中最薄弱的环节。
漏斗分析示例(来源: Clevertap )
此外,营销运营分析师可以执行假设测试来优化营销绩效。通过适当的 A/B 测试,分析师可能会发现电子邮件标题中的表情符号会显著提高年轻受众的点击率。这个角色对于那些擅长营销的人来说是一个很好的敲门砖。它也是应届毕业生的理想选择,因为 NCSU 报告称,高达 45%的营销运营分析师职位要求不到两年的工作经验,80%的职位要求学士学位。
金融分析师
财务分析师检查财务数据,识别投资机会,并评估业务建议的结果。具体来说,他们分析宏观经济因素、微观经济条件和公司基本面之间的相互作用。金融数字是金融分析师的饭碗。为了评估一家公司的健康状况,他们会检查毛利率、净利润率、增长率、股本回报率和每股收益等指标。
分析师还使用统计方法(如回归分析)和高级财务模型(如贴现现金流分析)对公司的未来业绩和价值进行预测。
财务分析师执行的简单回归分析示例(来源 )
据 Investopedia 称,拥有学士学位(最好是会计、经济学、金融或统计学)或 MBA 学位的人很有可能成为金融分析师。
机器学习工程师
根据 LinkedIn 的数据,MLE 是 2022 年增长最快的 25 个职位之一。MLEs 设计、构建和生产机器学习模型。因此,他们精通设计模型架构,编排机器学习管道,以及监控生产中的 ML 解决方案。
例如,在打车公司工作的 MLE 可能会监控其生产匹配人工智能将司机与骑手匹配起来所用的时间。MLE 与数据科学家合作,确保时间不超过预定义的阈值。MLE 角色适合那些具有强大编程能力的人,比如软件工程师或数据工程师。MLEs 还应该有很强的数学和统计学基础,对机器学习模型有很扎实的理解。
打造您的数据职业生涯
专注于数据科学家这一角色的热切求职者可能会在求职过程中忽略这些头衔。我们的建议?如果你能在工作中学习数据科学技能,不要害怕追求数据科学家以外的职位。正如史蒂夫·乔布斯优雅地说的,“你不能向前看把点点滴滴连接起来…所以你必须相信这些点点滴滴会在你的未来以某种方式连接起来。”
本文最初发布在 DataCamp 认证社区上,这是一个专为所有成功完成 DataCamp 认证的学员提供的平台。要访问该社区以获取更多有助于您站在数据行业前沿的内容, 立即获得认证 !
Raven is DataCamp’s Certified Community Manager. As a trained anthropologist and a lover of people, Raven believes in the power of coming together to foster connections, learning, growth, and belonging.
2022 年数据科学薪资预期
原文:https://web.archive.org/web/20221129041532/https://www.datacamp.com/blog/data-science-salaries
在寻找新的工作机会时,薪资预期始终是一个关键因素,如果你正在考虑进入数据科学领域,这里有一个好消息:数据科学家以及其他与数据相关的工作在科技行业中拥有最高的薪资。
根据 2020 LinkedIn 美国新兴工作报告,数据科学近年来经历了大规模的持续增长。几乎在每个行业,组织都在争夺数据科学专业人员,以利用他们的数据并推动明智的业务决策。然而,由于数据专业人员的供应尚未赶上需求,与其他科技行业相比,公司之间在招聘这些专业人员方面的竞争非常激烈。因此,雇主愿意向有才华的数据科学家支付高薪。
尽管这一领域正在经历有利可图的蜜月期,但值得注意的是,数据科学专业人员的薪酬差异很大。雇主在决定支付多少薪酬时会考虑几个因素,包括经验、技能、职称或公司规模。
在本文中,我们将提供 2022 年数据科学薪酬的概述。我们将根据几个工作门户网站(如 Glassdoor 和 PayScale)的数据、美国劳工统计局的公开数据以及工作调查(如 O’Reilly Data Science 薪资调查)来研究影响薪资的不同标准。为了缩小我们的主题,我们将只关注美国的薪酬状况。
数据科学经验工资
一个数据科学家平均收入多少?根据 Glassdoor 的数据,美国数据科学家的平均基本工资是每年 117,212 美元。这一估计的可信度很高,因为它是根据 18,000 份薪金样本计算的。
来源:Glassdoor
从 PayScale 的数据来看,这个数字有点低,根据 7280 份薪资档案,这个数字给出的平均年薪估计为 97318 美元。
资料来源:薪级表
但是,一个数据科学家的平均工资是随着经验的高低而变化的。根据 PayScale 的报道,如果你是一名有抱负的数据科学家,正在寻找你在该领域的第一份工作,你可以期望平均工资为 85,000 美元。另一方面,具有 1-4 年经验的数据科学家可以期望获得 9.6 万美元的总薪酬,而 5-9 年的经验意味着平均薪酬在 11.1 万美元左右。工资只会随着资历的增加而增加。例如,拥有 20 多年经验的数据科学家的平均工资可以达到每年 13.6 万美元。
资料来源:薪级表
工资中位数随着经验水平的变化而变化,这并不奇怪。根据 PayScale 的报告,一名初级数据科学家(经验不足一年)的平均工资为 85,096 美元。另一方面,拥有 1-4 年经验的数据科学家可以预期总薪酬中位数为 95,067 美元,而 5-9 年的经验意味着收入为 109,743 美元。然而,高级数据科学家的平均年薪超过 121,759 美元。
这些估计与 O’Reilly 2021 数据/人工智能薪酬调查的结果一致,该调查估计,数据科学/人工智能领域过去三年的平均薪酬变化为 9252 美元,相当于每年增长 2.25%。
按职位分类的数据科学工资
数据专业人员是一个包含多个角色的称谓,包括数据科学家、数据工程师、数据分析师和机器学习工程师。这些专业人士的职责、资格以及最终的薪水差别很大。一般来说,数据科学专业人员承担的管理责任越多(例如,领导团队项目和直接与客户沟通),薪酬就越高。
根据 Glassdoor 的数据,以下是数据科学专业人士的薪资范围和平均值列表,按平均薪资排序:
-
数据科学经理。她有一个涉及决策的管理角色。她负责项目运营,充当分析师、科学家和数据架构师团队与客户之间的中间人。她也了解这项技术,尽管她并不负责这项技术的开发。平均薪资:16.1 万美元。薪资范围:11.3 万美元至 23 万美元。
-
机器学习工程师。机器学习工程师是高度熟练的程序员,他们开发使用大型数据集来研究、开发和生成可以学习和进行预测的算法的模型。这是数据科学中最复杂、最赚钱的职业之一。首先,我们强烈建议注册我们的机器学习科学家 Python 职业跟踪。平均薪资:13.1 万美元。薪资范围:88K-195K 美元。
-
数据科学家。数据科学家研究、提取并报告数据中有意义的见解。为此,数据科学家使用计算机和编程语言来处理所有信息,进行复杂的计算,创建有用的数据可视化,并获得结果。你想成为一名数据科学家吗?Datacamp 有很好的职业道路成为其中之一,无论是与 Python 还是 R 。平均薪资:11.7 万美元。薪资范围:82K-167 美元。
-
数据工程师。数据工程师负责为组织中数据的获取、存储、转换和管理奠定基础。这是数据科学领域最受欢迎的职业之一。平均薪资:11.2 万美元。薪资范围:7.6 万美元到 16.6 万美元。
-
云工程师。云工程师是处理云相关工作的数据专家。通常,这包括云系统的管理、规划、架构和监控。越来越多的公司转向云服务。如果你想开始学习这个备受追捧的学科,我们的课程了解云计算是一个很好的起点。平均薪资:11.1 万美元。薪资范围:7.3 万美元至 16.9 万美元。
-
数据分析师。他们负责处理公司已经拥有的数据。他们的常规任务之一是使用数据库制作报告和仪表板。如果你对成为数据分析师感兴趣,请查看我们的数据分析师 Python 职业轨迹。平均工资:7 万美元。薪资范围:46K-106K 美元。
-
数据管家。该专家负责确保数据的质量、安全性和可用性。数据管家是管理和监控组织的数据资产的关键角色,有助于为业务人员提供可访问性高的高质量数据。平均工资:6.5 万美元。薪资范围:37K-112K 美元。
按公司规模划分的数据科学薪酬
公司的规模是影响数据科学薪酬的另一个相关因素:一般来说,组织越大,薪酬越高。 O’Reilly 2016 年薪资数据科学薪资报告阐明了这一因素。
根据他们的出版物,在员工超过 1,000 人的公司工作的数据科学家的工资中位数在 9 万美元到 11 万美元之间,而在中型公司(26 到 1,000 名成员)工作的数据专业人员的工资中位数在 8 万美元左右。在小公司和创业公司(2-25 名成员)工作的员工往往具有较低的中位数工资,约为 6 万美元。
来源:奥莱利
自由职业者的数据科学薪水
随着在家工作的好处越来越多,越来越多的人想知道现在是否是尝试自由职业的合适时机。数据专业人员也不例外。最近几个月,在流行的自由职业者平台上,如 Upwork ,数据科学工作的数量激增。
如果你正在考虑这个选择,你可能想知道自由数据科学家赚多少钱。据 Glassdoor 报道,他们在美国的平均工资是 122778 美元。但是,没有足够的数据来显示一个工资范围。
无论如何,很难提供一个明确的估计,因为自由职业数据科学家的收入高度依赖于他们的技能、经验和评论等因素。因此,初级和高级数据科学家之间的工资差距非常大。例如,这项基于 Upwork 数据的研究显示,一名新手自由职业数据科学家每小时收费 50 美元,而一名经验丰富的数据科学家每小时收费高达 150-200 美元。
各行业的数据科学薪酬
几乎每个行业都需要数据科学家,但有些人有更大的需求,并愿意提供更有吸引力的薪水。同样,O’Reilly 2021 数据/人工智能薪资调查是比较各行业薪资的有用资源。
总体而言,在计算机行业工作的数据专业人员,如计算机硬件、云服务、网络安全或软件开发,报告的平均薪酬最高,从 171,000 美元(计算机硬件)到 164,000 美元(软件)不等。尽管如此,该数据还显示,除计算机行业外,包括银行、零售、时尚和保险在内的其他行业的薪酬极具竞争力(超过 10 万美元)。此图与美国劳工统计局发布的最新职业数据一致。
来源:奥莱利
数据科学技能工资
数据科学是一个快速发展的领域。新技术和软件不断涌现。这使得培训不仅是赶上创新的一个重要方面,也是与更高的工资、被雇用的能力和工作保障密切相关的一个因素。
总的来说,一些罕见的、受欢迎的能力允许数据科学家大幅提高他们的工资要求。计算机编程、掌握大数据工具、云计算和数据可视化是最有价值的技能。同样,科学好奇心、商业头脑、沟通技巧和领导力等个人品质也能大幅提高薪酬。根据工资等级,你可以在下面找到影响数据科学家工资的技能列表:
资料来源:薪级表
根据 O’Reilly 2021 年数据/人工智能工资调查,云培训,尤其是亚马逊网络服务(AWS)和微软 Azure 的云培训,是与更高的工资增长最密切相关的技能。受访者提到的其他重要技能是机器学习、容器技术(如 Docker 和 Kubernetes)、MLOps 和数据科学管道工具,如 Kafka。关于编程语言,调查显示,数据科学中不太常见的语言,如 Rust、Go 或 Scale,也与高工资密切相关。
问题:未来一年,哪些技术对薪酬的影响最大?
来源:奥莱利
按地点列出的数据科学工资
数据科学的薪水也很大程度上取决于地理位置。美国劳工统计局的数据显示,美国国内的平均薪酬差别很大。
总体而言,东西海岸各州的平均工资往往较高,平均工资最高的是华盛顿(133,900 美元)、加州(133,110 美元)、特拉华州(127,810 美元)、纽约州(122,540 美元)和新泽西州(120,240 美元)。
这并不令人惊讶:引用的州与美国一些最大的科技热点地区一致,包括圣何塞(也被称为硅谷之都)、旧金山、西雅图和纽约,在这些地方,数据科学专业人员通常可以获得六位数的高薪。
资料来源:美国劳工统计局
你能做些什么来增加你的薪水
数据科学本身是一个充满活力和高度破坏性的领域。生态系统正在快速变化,新技术、工具和软件不断推出,这使得预测 10 年后的情况变得非常困难。
在这种环境下,持续培训是数据专业人员的关键不仅要跟上创新的速度,还要实现加薪或升职。事实上,学习新技能和提高旧技能被认为是晋升的最佳途径之一。此外,鉴于合格的数据科学专业人员的短缺,投资培训项目是雇主在内部发展数据科学和机器学习团队的首选和最可行的策略。
提高技能的最佳途径是什么?根据你的时间和你的公司愿意在你的教育上投资多少,你可以考虑以下选择:
-
数据科学的正式学位。参加高级教育计划,比如数据科学或相关领域的博士或硕士学位,是提升组织级别的好方法。大多数大型科技公司都鼓励员工参与这类项目。
-
数据科学平台。如果你想成为一名学科专家,提高你的编码技能,或者学习新技术,你可能正在寻找一门课程。有很多选择,包括 DataCamp。不要错过探索我们庞大的课程目录的机会,或者报名参加我们的技能课程以拓展您的专业领域。
-
数据科学认证。获得认证正成为获取或提高新数据科学技能的最常见、最快速的方式之一。认证列表正在快速增长,从一般的数据科学认证到特定于供应商和特定于技术的认证。根据 O’Reilly 2021 年数据/人工智能薪酬调查,云认证,特别是 AWS 和微软 Azure,与薪酬增长最相关。
未来趋势
数据科学生活在一个黄金时代。各行各业的公司都迫切需要能够利用数据的力量来推动明智决策的数据专业人士。根据 LinkedIn 2021 年关于就业增长的报告,2019 年至 2020 年期间,数据科学家和机器学习职位的招聘分别增长了 46%和 32%。
然而,数据专业人员的供应尚未赶上需求。合格数据科学家的短缺转化为公司之间的激烈竞争,这些公司提供极具竞争力的薪酬来获得难以聘用的人才。
在未来我们能期待什么?最有可能的是,在 10 年后,对数据专业人员的需求将显著增加。这一预测的一个重要因素是新冠肺炎疫情,它加速了各个行业和国家的企业数字化转型。这意味着现在每个公司都有在线业务,每个公司都需要一名熟练的数据专家来帮助他们存储和处理数据,以便做出明智的决策。随着增长步入正轨,具备适当技能和能力的数据科学家很容易在未来几年获得六位数的薪水。
结论
我们希望你喜欢这篇文章。数据科学正在蓬勃发展,对于那些有兴趣进入该领域的人来说,机会很多,利润也很高。如果您正在考虑在激动人心的数据世界中开始新的冒险,Datacamp 是开始的最佳地方。查看我们的数据科学课程目录,立即开始您的学习之旅。
数据科学使用案例指南
数据科学:定义和实际应用
数据科学是一个相对较新但发展迅速的多方面研究领域,应用于许多领域。它使用各种高级分析技术和预测建模算法从数据中提取有意义的见解,以帮助回答战略性业务或科学问题。数据科学结合了广泛的技能,从技术(编程、线性代数、统计和建模)到非技术(结果的有效表示和交流)。此外,根据应用数据科学的行业,有必要具备扎实的领域知识,以便能够正确解释可用信息和获得的见解。
数据科学算法可以成功应用于收集或可以收集大量数据的各种环境:金融、商业、营销、项目管理、保险、医学、教育、制造、人力资源、语言学、社会学等。实际上,任何行业或科学都可以从收集、收集、分析和建模他们的数据中受益匪浅。
什么是数据科学用例?
数据科学用例是使用可用数据解决的具体现实任务。在特定公司的框架中,在公司特定行业的背景下,使用数据科学技术来分析许多变量。数据科学用例可以是待解决的问题、待检验的假设或待回答的问题。本质上,做数据科学就是解决真实世界的用例。
尽管每个用例的内容可能会非常不同,但有一些共同的事情要始终记住:
- 数据科学用例规划是:概述明确的目标和预期结果,了解工作范围,评估可用资源,提供所需数据,评估风险,并将 KPI 定义为成功的衡量标准。
- 解决数据科学用例最常见的方法是:预测、分类、模式和异常检测、建议和图像识别。
- 一些数据科学用例代表不同领域的典型任务,您可以依靠类似的方法来解决它们,例如客户流失率预测、客户细分、欺诈检测、推荐系统和价格优化。
我如何解决数据科学案例研究?
这个问题的答案是非常具体的案例,由公司的业务战略驱动,并取决于案例研究本身的核心。但是,概述任何数据科学使用情形都要遵循的一般路线图可能会有所帮助:
- 提出正确的问题。这第一步非常重要,包括审查可用的文献和现有的案例研究,修改最佳实践,阐述相关的理论和工作假设,以及填补领域专业知识的潜在空白。因此,我们应该在感兴趣的案例研究中提出一个需要回答的明确问题。
- 数据收集。在这一步,我们执行数据清点和收集流程。在现实生活中,我们经常会遇到不具代表性、不完整、有缺陷和非结构化的数据,也就是说,远远不是一个易于阅读和分析的完整信息表。因此,我们必须搜索和识别所有可能对我们的主题有用的数据源。必要的数据可以在公司的档案中找到,从网上搜集,或者从赞助商那里获得,等等。
- 数据角力。这通常是任何数据科学项目中最耗费时间和资源的部分。评估所收集数据的质量和代表性,并进行初步数据探索。对数据进行清理、预处理、转换、操作,并将其从原始形式映射为更合适的格式。
- 数据分析和建模。清理后的数据从其当前状态的角度进行分析,然后适合选定的预测统计模型。评估模型精度,如果不满意,则尝试其他建模方法。重复这一过程,直到获得以最高精度预测未来情景的模型。因此,这个过程和前面所有的过程一样,可能是反复的。
- 结果沟通。与前面的步骤相比,这一步需要更多的沟通和软技能,而不是编程和技术专业知识。它包括与管理层、股东和任何其他相关方分享最重要的发现和最终结论。这些见解通常以报告、文章和演示幻灯片的形式呈现,概述潜在的前进方向。
按行业划分的数据科学使用案例
数据科学用例几乎可以与任何积累了大量数据的行业相关。在本章中,我们将讨论以下需求最大的领域中的一些典型数据科学用例:物流、医疗保健和电信。我们要考虑的一些用例是跨学科的,很容易在其他领域遇到。这使得它们更加通用和适用,因此了解解决它们的总体方法是值得的。此外,对于每个选定的行业,我们将概述一些可以用数据科学方法建模的其他可能的主题。
医疗保健中的数据科学
在前三章中,我们讨论了数据科学方法如何帮助不同行业的公司增加收入。就医疗保健而言,正确使用和解释可用数据不仅有利于该领域的营销人员,而且有助于及时诊断严重疾病,甚至挽救人们的生命。
医药和医疗保健提供商从众多来源收集大量数据:电子健康记录(EHR)系统、可穿戴设备数据、医学研究和账单文档。利用创新的数据科学和数据分析技术正在逐步革新整个医疗保健行业,为其未来发展提供最有前途和最有影响力的解决方案。特别是,一些高度专业化的医疗保健领域,如遗传学、生殖医学、肿瘤学、生物技术、放射学、预测诊断学和药剂学,由于释放了数据的全部潜力,已经发展到了一个全新的水平。
为了更好地理解数据科学在医学中的价值,让我们来关注一个最经典的用例。
医疗保健中的数据科学用例:乳腺癌预测
根据世界癌症研究基金会的数据,乳腺癌是女性中最常见的癌症,也是第二常见的癌症。及时诊断乳腺病变(良性或恶性)极其重要,因为它显著增加了成功治疗的机会和存活率。这就是数据科学的用武之地。
数据挖掘方法与机器学习算法相结合的进展,使得预测乳腺癌的风险,在早期阶段检测任何潜在的异常,估计其动态,并因此制定最佳计划来对抗该疾病成为可能。本质上是典型的机器学习的分类问题。好消息是,由于这种类型的肿瘤在世界各地都很常见,因此世界各地都进行了大量的彻底调查,结果,从全球各地的患者那里积累了大量的数据。
在分类器中使用这种数据集的主要问题是它们可能非常不平衡。例如,在结果以癌症/非癌症的形式表示的情况下,具有病理(属于少数类的那些数据集条目)的概率显著低于没有任何病理(属于多数类的条目)的概率。因此,该算法倾向于将新病例归类为非病理性病例。因此,为了更有效地评估这种模型的准确性,应用 F1 分数作为评估度量是有意义的,因为它估计假阳性(I 型错误)和假阴性(II 型错误),而不是算法正确分类条目时的情况。
让我们来看看来自美国一个州的关于乳腺癌的真实数据集。文档中详细描述了这些特征,但简而言之,它们是显示女性乳腺肿块细胞核的每个数字化图像的属性的平均值、标准误差和最大值。来自数据集的每个条目对应于患有恶性或良性肿瘤的女性(即,所有被讨论的女性都患有某种肿瘤)。这些属性包括单元半径、纹理、平滑度、紧密度、凹度、对称性等…
import pandas as pd
cancer_data = pd.read_csv('data.csv')
pd.options.display.max_columns = len(cancer_data)
print(f'Number of entries: {cancer_data.shape[0]:,}\n'
f'Number of features: {cancer_data.shape[1]:,}\n\n'
f'Number of missing values: {cancer_data.isnull().sum().sum()}\n\n'
f'{cancer_data.head(2)}')
Number of entries: 569
Number of features: 33
Number of missing values: 569
id diagnosis radius_mean texture_mean perimeter_mean area_mean \
0 842302 M 17.99 10.38 122.8 1001.0
1 842517 M 20.57 17.77 132.9 1326.0
smoothness_mean compactness_mean concavity_mean concave points_mean \
0 0.11840 0.27760 0.3001 0.14710
1 0.08474 0.07864 0.0869 0.07017
symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se \
0 0.2419 0.07871 1.0950 0.9053 8.589
1 0.1812 0.05667 0.5435 0.7339 3.398
area_se smoothness_se compactness_se concavity_se concave points_se \
0 153.40 0.006399 0.04904 0.05373 0.01587
1 74.08 0.005225 0.01308 0.01860 0.01340
symmetry_se fractal_dimension_se radius_worst texture_worst \
0 0.03003 0.006193 25.38 17.33
1 0.01389 0.003532 24.99 23.41
perimeter_worst area_worst smoothness_worst compactness_worst \
0 184.6 2019.0 0.1622 0.6656
1 158.8 1956.0 0.1238 0.1866
concavity_worst concave points_worst symmetry_worst \
0 0.7119 0.2654 0.4601
1 0.2416 0.1860 0.2750
fractal_dimension_worst Unnamed: 32
0 0.11890 NaN
1 0.08902 NaN
让我们删除只包含缺失值的最后一列:
cancer_data = cancer_data.drop('Unnamed: 32', axis=1)
有多少女性确诊患有癌症(恶性乳腺肿瘤)?
round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B 63
M 37
Name: diagnosis, dtype: Int64
37%的受访者患有乳腺癌,因此数据集实际上相当平衡。
由于诊断变量的值是分类的,我们必须将它们编码成数字形式,以便在机器学习中进一步使用。在此之前,让我们将数据分为预测要素和目标变量诊断:
X = cancer_data.iloc[:, 2:32].values
y = cancer_data.iloc[:, 1].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
现在,让我们创建训练集和测试集,然后扩展功能:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
为了对我们的数据进行建模,让我们应用以下建模算法及其默认参数:k-最近邻(KNN)和逻辑回归:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
# KNN
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_predictions = knn.predict(X_test)
# Logistic regression
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_predictions = lr.predict(X_test)
我们之前看到,我们的数据集相当平衡,因此我们可以使用准确性得分评估指标来确定最准确的模型:
from sklearn.metrics import accuracy_score
print(f'Accuracy scores:\n'
f'KNN model:\t\t {accuracy_score(y_test, knn_predictions):.3f}\n'
f'Logistic regression model: {accuracy_score(y_test, lr_predictions):.3f}')
Accuracy scores:
KNN model: 0.956
Logistic regression model: 0.974
基于我们的数据,当对检测到任何性质的乳腺病变的妇女预测恶性/良性乳腺肿瘤时,逻辑回归模型表现最佳。
作为潜在的前进方向,考虑到逻辑回归算法没有任何要调整的关键参数,我们可以尝试不同的方法来训练/测试分裂和/或各种预测建模技术。
医疗保健领域的其他常见数据科学使用案例:
- 监控来自可穿戴设备的实时数据
- 预测分析
- 医学图像分析
- 药物发现
- 遗传学研究
- 虚拟助手
- 客户数据管理
运输和物流中的数据科学
物流是将产品从一个地方交付到另一个地方的过程的组织,而运输意味着运输客户或货物的行为。根据公司活动的概况(例如,午餐递送、邮件服务、国际货运、航空公司以及出租车或公共汽车服务),数据源可以用时间表、时间表、路线详细信息、仓库库存明细、报告、合同、协议、法律文件和客户反馈来表示。数据本身可以是结构化或非结构化的,包括时间、路线、路线、坐标、客户数据、商品详情、成本和价格等信息。
供应链和运输部门的业务效率并不总是一帆风顺的,它取决于许多因素:不可预见的交通问题、路线质量、天气条件、紧急情况、燃料价格波动、仓库库存短缺、技术损坏、与安全有关的运输延误、政府法规和制裁以及许多其他因素。此外,近年来市场上出现了许多新公司,这个行业的竞争变得相当激烈。因此,为了跟上竞争对手并提高运营效率,分析大数据并将其转化为有意义的见解已成为每个物流/运输公司的必备条件。
数据科学对运输和物流行业究竟有什么帮助?以下是其潜在应用的不完整列表:
- 全程跟踪整个运输过程,
- 使所有活动完全自动化和透明,
- 准时交货,
- 路线优化,
- 动态定价,
- 维持供应品的库存,
- 保护易腐烂的货物,
- 监控车辆状况,
- 改善生产网络,
- 改善客户服务。
运输和物流中的数据科学用例:确定出租车车辆的最佳位置
优步技术公司,或优步,是一家提供各种物流和运输服务的美国公司。在本案例研究中,我们将对优步拼车 GPS 数据进行聚类,以确定出租车车辆的最佳位置。特别是,它可用于以下目的:
- 每个新的乘车请求都被分配到最近的聚类,因此优步会将该聚类中最近的汽车发送到客户的位置。
- 从工作负荷的角度分析确定的集群,可选地按小时或星期几,优步可以提前重新分配车辆,并将它们发送到客户需求最大的战略位置。
- 根据不同集群中的需求/供给比率,公司可以动态调整价格费率。
我们将使用 2014 年 4 月在纽约优步旅行的五月三十八日的数据集:
import pandas as pd
uber_data = pd.read_csv('uber-raw-data-apr14.csv')
print(f'Number of trips: {uber_data.shape[0]:,}\n\n'
f'{uber_data.head()}')
Number of trips: 564,516
Date/Time Lat Lon Base
0 4/1/2014 0:11:00 40.7690 -73.9549 B02512
1 4/1/2014 0:17:00 40.7267 -74.0345 B02512
2 4/1/2014 0:21:00 40.7316 -73.9873 B02512
3 4/1/2014 0:28:00 40.7588 -73.9776 B02512
4 4/1/2014 0:33:00 40.7594 -73.9722 B02512
考虑到经度对应于 x 轴,纬度对应于 y 轴,让我们以示意图方式显示所有拾取点:
import matplotlib.pyplot as plt
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()
为了对这些数据进行聚类,让我们使用一种叫做 k-means 聚类的机器学习无监督算法。这种方法背后的思想是将所有的数据样本分成几个方差相等的组。本质上,它接受集群的数量 n_clusters(默认情况下为 8)并相应地分离数据。为了计算出最佳的集群数量,使用了一种图形肘方法。它包括以下步骤:
- 用不同数量的聚类训练几个模型,并收集每个模型的 WCSS 值(在聚类平方和内),这意味着从其最近的聚类质心的观察值的平方距离之和。
- 相对于相应的集群数量值绘制 WCSS 值。
- 选择发生 WCSS 显著降低的最低数量的聚类。
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=1)
kmeans.fit(uber_data[['Lat', 'Lon']])
wcss.append(kmeans.inertia_)
plt.figure(figsize=(12, 5))
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method', fontsize=25)
plt.xlabel('Number of clusters', fontsize=18)
plt.ylabel('WCSS', fontsize=18)
plt.xticks(ticks=list(range(1, 11)),
labels=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'])
plt.show()
在我们的例子中,最合适的集群数似乎是 7。让我们使用该值来拟合模型,并预测每个拾取点的聚类数。此外,我们将再次以图形方式说明数据条目,这次添加了七个群集质心的位置:
kmeans = KMeans(n_clusters=7, random_state=1)
kmeans.fit_predict(df[['Lat', 'Lon']])
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.scatter(kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 0], s=100, c='lime')
plt.show()
现在,我们将提取所有质心的精确坐标,并单独显示它们,不包括数据本身:
centroids = pd.DataFrame(kmeans.cluster_centers_)
centroids.columns = ['Lat', 'Lon']
print(centroids)
plt.scatter(centroids['Lon'], centroids['Lat'])
plt.show()
Lat Lon
0 40.688588 -73.965694
1 40.765423 -73.973165
2 40.788001 -73.879858
3 40.656997 -73.780035
4 40.731074 -73.998644
5 40.700541 -74.201673
6 40.971229 -73.611288
在纽约市地图上显示这些质心更能说明问题:
import folium
centroids_values = centroids.values.tolist()
nyc_map = folium.Map(location=[40.79659011772687, -73.87341741832425], zoom_start=50000)
for point in range(0, len(centroids_values)):
folium.Marker(centroids_values[point], popup=centroids_values[point]).add_to(nyc_map)
nyc_map
使用我们的模型,我们可以预测用地理坐标表示的纽约任何位置的最近的聚类。实际上,这意味着优步将从最近的地点派出出租车,更快地为客户服务。
让我们在曼哈顿区寻找距离林肯表演艺术中心最近的集群:
lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])
皇后区的霍华德海滩:
howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])
作为潜在的前进方向,我们可以考虑应用其他机器学习聚类算法,分析不同的数据片段(按一周/一月中的小时/天),找到负载最多和最少的聚类,或者从数据帧中找出已识别的聚类和基本变量之间的关系。
运输和物流领域的其他常见数据科学用例:
- 供求动态价格匹配
- 预估需水量
- 手动操作的自动化
- 自动驾驶车辆
- 供应链可见性
- 损伤检测
- 仓库管理
- 客户情绪分析
- 客服聊天机器人
电信中的数据科学
在过去的几十年里,电信技术以令人难以置信的速度发展,并进入了一个新的发展阶段。如今,我们被各种各样的电子设备所包围,许多人已经变得依赖互联网,特别是社交网络和信使。有时,这种设备成瘾被批评为取代了真正的面对面交流。然而,我们不得不承认,电信使我们的生活变得更加容易,让我们在几秒钟内就能与世界各地的人联系起来。
在新冠肺炎疫情时期,当许多公司和学校采用远程工作或学习计划时,这一点变得尤其真实。在这样一个快速变化的现实中,数字连接的质量和流畅度在所有领域都具有前所未有的重要性。封锁期使得人们有必要比以前更频繁地给同事、亲戚和朋友打电话和发短信。所有这些新趋势导致了电信量的巨大增长,这反过来又导致了该行业中大量数据的产生。
使用数据科学方法处理积累的数据可以在许多方面帮助电信行业:
- 简化操作,
- 优化网络,
- 过滤掉垃圾邮件,
- 改善数据传输,
- 执行实时分析,
- 制定有效的商业策略,
- 创造成功的营销活动,
- 增加收入。
让我们更详细地探讨一下电信行业中一项常见的数据科学任务,即检测和过滤掉不想要的消息。
电信领域的数据科学用例:构建垃圾邮件过滤器
垃圾邮件过滤是所有现代书面沟通渠道的重要功能,因为它保护我们免受试图诈骗我们钱财的日常电子邮件的轰炸。从技术上讲,这是分类问题的另一个例子:根据历史数据,每个新输入的消息都被标记为 ham(即正常消息),然后它直接到达收件人,或者作为垃圾邮件,然后它被阻止或到达垃圾邮件文件夹。
为此,一种流行的监督机器学习算法是朴素贝叶斯分类器。它基于概率论中的同音异义定理,而“天真”是基于每条消息中的所有单词都是相互独立的假设。这种假设并不完全正确,因为它忽略了自然单词嵌入和上下文的不可避免的存在。然而,在大多数低数据文本分类任务中,这种方法似乎工作得很好,并且做出准确的预测。
朴素贝叶斯分类器有多个版本,每个版本都有自己的适用情况:多项式、伯努利、高斯和灵活贝叶斯。对于我们的情况(垃圾邮件检测)最好的类型是多项式朴素贝叶斯分类器。它基于代表每封邮件字数的分类或连续特征的离散频率计数。
让我们将多项式朴素贝叶斯垃圾邮件过滤应用于来自 UCI 机器学习库的垃圾短信收集数据集。
import pandas as pd
sms_data = pd.read_csv('SMSSpamCollection', sep='\t', header=None, names=['Label', 'SMS'])
print(f'Number of messages: {sms_data.shape[0]:,}\n\n'
f'{sms_data.head()}')
Number of messages: 5,572
Label SMS
0 ham Go until jurong point, crazy.. Available only ...
1 ham Ok lar... Joking wif u oni...
2 spam Free entry in 2 a wkly comp to win FA Cup fina...
3 ham U dun say so early hor... U c already then say...
4 ham Nah I don't think he goes to usf, he lives aro...
有 5572 条人类分类信息。其中有多少(百分比)是垃圾邮件?
round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham 87
spam 13
Name: Label, dtype: Int64
13%的短信被人工识别为垃圾短信。
要为多项式朴素贝叶斯分类准备数据,我们首先必须完成以下步骤:
- 将标签从字符串编码为数字格式。在我们的例子中,标签是二进制的,因此我们将它们编码为 0/1。
- 提取预测变量和目标变量。
- 将数据分成训练集和测试集
- 对来自预测器训练集和测试集的 SMS 列的字符串进行矢量化,以获得 CSR(压缩稀疏行)矩阵。
第四步需要一些更详细的解释。在这里,我们创建一个矩阵对象,将其与词汇字典(预测器训练集的所有消息中的所有唯一单词及其相应的频率)相匹配,然后将预测器训练集和测试集转换为矩阵。结果将是预测器训练集和测试集的两个矩阵,其中列对应于来自预测器训练集的所有消息的每个唯一单词,行对应于相应的消息本身,并且单元格中的值对应于每个消息的词频计数。
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
# Encoding labels
sms_data = sms_data.replace('ham', 0).replace('spam', 1)
X = sms_data['SMS'].values
y = sms_data['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Vectorizing strings from the 'SMS' column
cv = CountVectorizer(max_df=0.95)
cv.fit(X_train)
X_train_csr_matrix = cv.transform(X_train)
X_test_csr_matrix = cv.transform(X_test)
接下来,我们将使用默认参数构建一个多项式朴素贝叶斯分类器,并检查其准确性:
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, f1_score
clf = MultinomialNB()
clf.fit(X_train_csr_matrix, y_train)
predictions = clf.predict(X_test_csr_matrix)
print(f'Model accuracy:\n'
f'Accuracy score: {accuracy_score(y_test, predictions):.3f}\n'
f'F1-score: {f1_score(y_test, predictions):.3f}\n')
Model accuracy:
Accuracy score: 0.990
F1-score: 0.962
因此,我们获得了高度准确的垃圾邮件过滤器。
此处的潜在前进方式可以是尝试其他训练/测试分割方法,通过调整其众多参数中的一些参数(例如,垃圾邮件和业余爱好者邮件中过于频繁的词的截止值)来改善矢量化过程,并检查分类器错误检测邮件的极少数情况,并尝试了解其发生的原因。此外,我们可以使用诸如词云的方法(在初步数据清理并排除所有停用词或低信息量词之后)来可视化垃圾邮件和业余爱好者消息中最频繁出现的词。最后,我们可以应用其他机器或深度学习算法(支持向量机、决策树、神经网络),并将结果与朴素贝叶斯方法进行比较。
电信行业中其他常见的数据科学使用案例:
- 客户细分
- 产品开发
- 呼叫详细记录分析
- 推荐系统
- 客户流失率预测
- 目标营销
- 欺诈检测
- 网络管理和优化
- 提高网络安全性
- 价格优化
- 客户终身价值预测
数据科学案例研究:课程
迄今为止,我们已经走过了漫长的道路,并详细探索了数据科学在不同领域的众多应用。现在,如果您想学习更多基于真实数据集的数据科学使用案例,并能够应用您的新知识和技术技能来解决您所在领域的实际任务,您可能会发现以下关于各种数据科学案例研究的初学者友好型短期课程很有帮助:
-
案例研究:利用 Python 中的机器学习进行学校预算。在本课程中,基于 DrivenData 上的一个机器学习竞赛的案例研究,您将探索一个与学区预算相关的问题,以及如何让学校更容易、更快地与其他学校比较支出。应用一些自然语言技术,您将准备学校预算并构建一个模型来自动分类他们的项目,从简单的版本开始,逐渐进行到更高级的版本。此外,您将能够查看和分析竞赛获胜者的解决方案,以及查看其他参与者的提交内容。
-
用熊猫分析营销活动。Pandas 是最受欢迎的 Python 库,使用它的工具包开发扎实的技能是任何数据科学家的必备技能。在这门实践性很强的课程中,您将在在线订阅业务中使用一个虚假的营销数据集,以 Python 和 pandas 基础知识(添加新列、合并/切片数据集、使用日期列、在 matplotlib 中可视化结果)为基础。你将练习将典型的营销问题转化为可衡量的价值。你需要回答的一些问题是:“这个活动表现如何?”,“为什么某个渠道表现不佳?”,“哪个渠道推荐的用户最多?”等。
-
用 Python 分析美国人口普查数据。在本课程中,您将学习如何轻松浏览十年一次的人口普查和年度美国社区调查,并从中提取各种人口统计和社会经济数据,如家庭收入、通勤、种族和家庭结构。您将使用 Python 从 Census API 和 pandas 库请求不同地理位置的数据,以操作收集的数据并从中获得有意义的见解。此外,您将练习使用 geopandas 库进行制图。
-
案例研究:R 中的探索性数据分析。如果您已经对 r 中的数据操作和可视化工具有了一些基本的了解,那么这个短期课程将是您的理想选择。学习本课程的材料后,您将在真实数据集上实践您的技能,探索联合国大会的历史投票数据。特别是,你将分析不同国家、不同时间和不同国际问题的投票倾向。本案例研究将允许您从头到尾进行探索性数据分析,获得更多关于 dplyr 和 ggplot2 包的实践,并学习一些新技能。
-
人力资源分析:探索 R 中的员工数据。众所周知,r 比 Python 更适合于统计分析。在本课程中,您将利用 R 的这一优势对一系列人力资源分析案例研究进行操作、可视化和执行统计测试。数据科学技术最近才出现在人力资源部门。然而,如今它们代表了一个非常有前途的方向,因为许多公司越来越依赖于他们的人力资源部门使用他们的员工数据库来提供可操作的见解和建议。
-
SQL 中的数据驱动决策。在本课程中,您将学习如何使用 SQL 来支持决策并向管理层报告结果。感兴趣的案例研究集中在一个在线电影租赁公司,该公司有一个关于客户数据、电影评级、演员背景信息等的数据库…一些任务将应用 SQL 查询来研究客户偏好、客户参与和销售发展。您将了解用于在线分析处理的 SQL 扩展,它有助于从复杂的多维数据中获得关键见解。
无论您想要成为数据科学领域的高级专家,还是您的意图只是学习有用的编码技能以提取自己研究领域中有价值的数据驱动洞察,上面的资源都是一个很好的起点。
结论
总之,在本文中,我们从多个角度研究了什么是数据科学,它与数据分析有何不同,它适用于哪些领域,什么是数据科学用例,以及成功解决它的一般路线图。我们讨论了数据科学如何在一些需求行业的实际任务中发挥作用。在概述许多现有和潜在应用的同时,我们重点关注了每个热门领域中最常见的使用案例,并展示了如何使用数据科学和数据分析算法解决每个问题。如果您想了解更多其他行业的用例,请查看我们在银行、营销和销售中的用例文章。最后,我们回顾了一些有用的在线课程,以便更深入地研究其他一些数据科学案例。
最后一个有趣的观察:我们在这项工作中考虑的领域没有一个是全新的。事实上,其中一些,如医药和销售,已经存在了几个世纪。在他们的整个历史中,远在我们全球数字化的新时代开始之前,这些行业的数据也以这样或那样的形式被收集;写在书和文件里,保存在档案馆和图书馆里。近年来,随着新技术的出现,真正发生巨大变化的是对隐藏在任何数据中的巨大潜力的基本理解,以及正确注册、收集和存储数据的至关重要性。应用这些努力并不断改进数据管理系统,使得积累所有行业的大数据以进行进一步分析和预测成为可能。
数据科学家 vs 数据工程师
关于数据科学角色的讨论并不新鲜(记得 DataCamp 在 2015 年推出的数据科学行业信息图):公司对获取数据科学人才的日益关注似乎与一系列全新的数据科学角色和职位的创建齐头并进。在第一篇文章发表两年后,这种情况仍在继续!
最近,有很多关于不同数据科学角色之间的区别的文章,更具体地说,是关于数据科学家和数据工程师之间的区别。也许兴趣的激增是因为这些年来观点确实发生了变化:几年前,人们更关注从数据中检索有价值的见解,而数据管理的重要性已经慢慢开始在行业中深入人心。因为最终,“垃圾进,垃圾出”的原则仍然适用:你可以建立最好的模型,但是如果你的数据不是定性的,你的结果将会很弱。
数据工程师的角色逐渐成为人们关注的焦点。
今天的博客文章将展示数据科学家和数据工程师之间最重要的区别,重点是职责、工具、语言&软件、教育背景、薪水&招聘、工作前景和资源,您可以使用它们开始数据科学或工程工作!
如果您更喜欢看可视化演示和参考资料,请务必查看相应的信息图“数据工程与数据科学”。
责任
数据工程师的职责
数据工程师是开发、构建、测试和维护架构的人,例如数据库和大规模处理系统。另一方面,数据科学家是清理、处理和组织(大)数据的人。
您可能会发现动词“按摩”的选择特别奇怪,但它更多地反映了数据工程师和数据科学家之间的差异。
一般来说,双方为获得可用格式的数据所做的努力是相当不同的。
数据工程师处理包含人为、机器或仪器误差的原始数据。数据可能未经验证,并且包含可疑记录;它是无格式的,可以包含特定于系统的代码。
数据工程师需要推荐并有时实施提高数据可靠性、效率和质量的方法。为此,他们需要使用各种语言和工具将系统结合在一起,或者尝试寻找机会从其他系统获取新数据,以便特定于系统的代码可以成为数据科学家进一步处理的信息。
与这两者密切相关的事实是,数据工程师需要确保现有的架构支持数据科学家和利益相关者(业务)的需求。
最后,为了将数据交付给数据科学团队,数据工程团队需要为数据建模、挖掘和生产开发数据集流程。
数据科学家的责任
数据科学家通常已经获得了通过第一轮清理和处理的数据,他们可以使用这些数据来输入复杂的分析程序和机器学习及统计方法,为预测和说明性建模准备数据。当然,为了构建模型,他们需要研究行业和业务问题,并且他们需要利用来自内部和外部来源的大量数据来满足业务需求。这有时也包括探索和检查数据以发现隐藏的模式。
一旦数据科学家完成了分析,他们将需要向关键利益相关者展示一个清晰的故事,当结果被接受时,他们将需要确保工作自动化,以便可以每天、每月或每年向业务利益相关者提供见解。
很明显,双方需要共同努力来争论数据,并为关键业务决策提供见解。技能组合有明显的重叠,但这两者在行业中逐渐变得更加不同:数据工程师将使用数据库系统、数据 API 和工具进行 ETL,并将参与数据建模和建立数据仓库解决方案,而数据科学家需要了解统计、数学和机器学习以建立预测模型。
数据科学家需要了解分布式计算,因为他需要访问已经由数据工程团队处理过的数据,但是他或她还需要能够向业务利益相关者报告:关注讲故事和可视化是必不可少的。
就关注数据科学工作流程的步骤而言,这意味着什么,您可以在下图中看到:
语言、工具和软件
当然,这种技能上的差异会转化为双方使用的语言、工具和软件的差异。下面的概述包括商业和开放源码的替代品。
尽管双方使用的工具在很大程度上取决于角色在公司环境中的构想,但您会经常看到数据工程师使用 SAP、Oracle、Cassandra、MySQL、Redis、Riak、PostgreSQL、MongoDB、neo4j、Hive 和 Sqoop 等工具。
数据科学家将利用 SPSS、R、Python、SAS、Stata 和 Julia 等语言建立模型。毫无疑问,这里最受欢迎的工具是 Python 和 R。当您使用 Python 和 R 进行数据科学研究时,您最常求助于 ggplot2 之类的包,以便在 R 或 Python 数据操作库 Pandas 中实现令人惊叹的数据可视化。当然,当您在从事数据科学项目时,还有许多软件包会派上用场,如 Scikit-Learn、NumPy、Matplotlib、Statsmodels 等。
在这个行业中,你还会发现商业 SAS 和 SPSS 做得很好,但其他工具,如 Tableau、Rapidminer、Matlab、Excel、Gephi 也将成为数据科学家的工具箱。
你再次看到数据工程师和数据科学家之间的一个主要区别,对数据可视化和讲故事的强调,反映在提到的工具中。
你可能已经猜到了,双方共有的工具、语言和软件是 Scala、Java 和 C#。
这些语言不一定同时受数据科学家和工程师的欢迎:你可以说 Scala 更受数据工程师的欢迎,因为与 Spark 的集成对于设置大型 ETL 流特别方便。
Java 语言也是如此:目前,它在数据科学家中的受欢迎程度正在上升,但总的来说,它并没有被专业人员广泛地用于日常生活。但是,总的来说,你会看到这些语言出现在这两个职位的空缺职位上。对于双方可能共有的工具也可以这么说,比如 Hadoop、Storm 和 Spark。
当然,工具、语言和软件方面的比较需要在您工作的具体环境中以及您如何解释所讨论的数据科学角色中进行;在某些特定的情况下,数据科学和数据工程可以紧密地结合在一起,在这种情况下,数据科学和数据工程团队之间的区别确实很小,有时,这两个团队会被合并。
这是否是一个伟大的想法是足够的材料进行另一场讨论,这不是今天的博客的范围。
学历
除此之外,数据科学家和数据工程师可能还有一些共同点:他们的计算机科学背景。这个研究领域在两种职业中都很受欢迎。当然,你也会看到数据科学家经常学习计量经济学、数学、统计学和运筹学。他们通常比数据工程师更有商业头脑。你经常会看到数据工程师也有工程背景,而且更多的时候,他们已经接受了一些计算机工程方面的教育。
然而,所有这些并不意味着你找不到从以前的研究中积累了运营知识和商业头脑的数据工程师。
您必须认识到,一般来说,数据科学行业是由来自各种不同背景的专业人士组成的:物理学家、生物学家或气象学家找到数据科学之路并不罕见。其他人的职业转向了数据科学,他们来自 web 开发、数据库管理等领域。
薪资和招聘
谈到工资,数据科学家的中等市场平均年薪为 135,000 美元。最低为 43,000 美元,最高为 364,000 美元。对于数据工程师来说,中型市场稍低一些:他们的平均收入为 124,000 美元,他们的最低和最高工资也低得多:最低为每年 34,000 美元,最高为 341,000 美元。
薪酬差距的确切来源尚不完全清楚,但这可能与空缺职位的数量有关:根据 indeed.com 的数据,数据工程师的空缺职位约为 8.5 万个,而市场上数据科学家的空缺职位约为 11 万个。
目前希望聘用数据工程师的公司有 PlayStation、纽约时报、彭博和威瑞森,但在过去,Spotify、脸书和亚马逊等公司也聘用过数据工程师。另一方面,数据科学家目前在 Dropbox、微软、德勤和沃尔玛等公司都很受欢迎。
就业前景
如前所述,角色和头衔的创建需要反映不断变化的需求,但其他时候,它们是作为一种区别于其他招聘公司的方式而创建的。
除了对数据管理问题的兴趣增加之外,公司还在寻找更便宜、灵活和可扩展的解决方案来存储和管理他们的数据。他们希望将数据迁移到云中,为此,他们需要构建“数据湖”,作为对现有数据仓库的补充,或者作为运营数据存储(ODS)的替代。
在未来几年中,数据流将需要被重定向和替换,因此,招聘数据工程师的职位发布的关注和数量在这些年中逐渐增加。
自从炒作开始以来,数据科学家的角色就一直很受欢迎,但如今,公司正在寻求组成数据科学团队,而不是雇佣拥有沟通技能、创造力、聪明、好奇心、技术专长等的独角兽数据科学家。对于招聘人员来说,很难找到体现公司所寻找的所有品质的人,而且需求显然超过了供应。
你可能会认为“数据科学家泡沫”已经破裂。也可能以后还是会爆。
有一件事将贯穿始终:对热衷于数据科学主题的专家的需求将一直存在。这些专家的工作前景非常乐观:据麦肯锡(McKinsey)称,2018 年,美国可能会缺少 14 万至 19 万名具有深度分析技能的人,以及 150 万名知道如何利用(大)数据分析做出有效决策的经理和分析师。
数据工程和数据科学入门
你看,有足够多的理由开始使用数据。:)而这恰恰是不会成为大问题的事情。
在 DataCamp,如果你想开始学习数据工程,我们有理想的课程,例如,DataCamp 的在 Python 中导入数据和在 R 中导入数据课程。
但是,当然,对于那些想要开始学习数据科学的人来说,还有探索性数据分析、数据科学的R 简介、机器学习工具箱和数据科学的Python 简介课程。
今天就开始互动学习吧!
数据工程师是开发、构建、测试和维护架构的人,例如数据库和大规模处理系统。数据工程师处理包含人为、机器或仪器错误的原始数据,他们的主要职责之一是清理数据,以便数据科学家可以对其进行分析。