企业数据的机器学习技术。
文章目录
1 前言
数据科学的未来肯人工智能没有如此的光明。AI 现在在游戏领域击败人类,从紧张的,反射性的乒乓游戏到升入思考的围棋。深度学习模型认别到的物体几乎与人一样。自动驾驶平台甚至比分心的人类表现的好。
过去数10年数据量,存储能力,计算能力快速的进步,在数据科学方面。
当然,科技已经渗透到业务的方方面面(从金融,到销售,到生产,到物流),尽管如此,你的业务都有受到AI和数据科学的影响? 好象并不是,但他们可能是极好的,如果你并不设计自动驾驶车,要么预测客户习惯,你可能并不能使用这些技术。
许多组织可能通过ERP系统访问业务数据,比如说SAP,你的组织可能也不例外。来自像SAP这样的业务系统的数据在很大程度上是完美的,因为在允许将其保存到数据库之前,通常需要进行验证和检查.而且,数据科学家清理数据最重要也是回报最少的任务之一…他的意思是,SAP中的ERP数据已经成熟,可以采摘了,而数据科学已经开始收割了.
让我们假设一个场景。BigBonanza Warehouse的SAP团队一直处于流程改进的状态. 他们知道如何配置他们的SAP系统来完成用户想要的任务,他们像摆弄小提琴一样摆弄这个系统,尽职地接受请求并交付解决方案.
然而,报告和分析存在一些问题;他们有一个数据仓库和一个商业智能系统,但开发报告需要几个月的时间.团队经常使用标准的ALV (ABAP List Viewer)报告,这在功能上是非常有限的,因为它们需要开发人员编写代码;此外,很难利用可与SAP一起使用的大量公共数据.就像其他无数企业一样,Big Bonanza Warehouse的SAP数据是一个孤岛,孤立在自己的系统中。不与SAP合作的团队不知道里面有什么,而与SAP合作的团队花了太多时间维护系统,以至于他们没有机会看到外部.
不过,SAP数据不应该是一个孤岛。该团队知道他们的数据,如何找到它,以及他们想用它做什么。然而,在分析这些数据时,数月的报告开发过程束缚了每个人的手脚.
听起来是不是很熟悉?这是我们曾经共事过的几乎所有SAP商店的故事。在我们30多年的经验中,这已经是很多了.
我们希望为SAP团队(以及您的团队)提供一些现代的洞察工具和技术,他们无需定义数据立方体、数据仓库对象或学习复杂的前端报告就可以使用.在本书中,我们将介绍一些简单的场景,例如将数据直接从sap转储到一个平面文件中,也将转储到一个报告中.这对于特别报告和调查很有用。我们还将考虑更复杂的场景,包括在云中使用提取器工具和神经网络模型来分析数据,这在SAP或现代数据仓库中是不可能的.
a. 如何读这本书
你需要从概念的角度来读这本书。我们将介绍用于分析业务数据的替代技术。我们要求——不,我们恳求——读者以新颖有趣的方式思考业务数据(特别是SAP数据)。这本书旨在唤醒关于如何在您的特定业务数据和先进的数据科学之间架起桥梁的想法。你不需要是神经网络中计算梯度下降的复杂算法的专家,你也不需要成为业务数据方面的专家。但你确实需要有跨越这两个领域的愿望,并在这个过程中获得乐趣.
从数据科学家的角度来看,本书中的数据科学原理是一个介绍,如果你能在50步之内发现一个sigmoid, tanh或relu激活函数,你就可以跳过这些部分,但我们打赌,如果你的大师水平在数据科学上有那么高,在SAP这方面你还是个新手。把重点放在SAP故事上,向您展示如何取出东西,并演示在系统中如何使用真正的业务数据.
从SAP专业人士的角度来看,您将突破传统的报告和分析模型.您将学习用机器和深度学习的术语来思考业务应用程序和报告.这可能听起来很神秘,但在本书的结尾,你会有必要的工具采取这一步。通过这种方式,你可以自动检测销售数据中的异常情况,从过去的数据中预测未来,将文本处理为自然语言,将客户划分为智能群体,把所有这些都可视化,教僵尸们如何使用商业数据。
在我们这个人工智能和数据科学的世界里,问同样的数据问题是过时的、幼稚的,而且(坦白地说)很无聊的。我们想让你对你的数据提出你甚至不知道你可以问的问题。也许中国茶叶的价格确实对你们的销售有很大影响。
从开发人员的角度来看,你们渴望去学习像Python和r这样美妙的编程语言。我们不会教你们这些语言,但是我们挑战你去尝试这些温暖和沸腾的水.如果您已经是一名有经验的R或python开发人员,那么对于代码部分您已经有了很好的准备。对于新手,我们将为您提供一些资源以帮助您入门.如果您倾向于使用Java等另一种语言,请不要感到被遗漏.本书的“元”目标是让您思考如何以不同的方式看待业务数据,如果这意味着您想要使用Java,请务必这样做。
数据化科学本身就是一本书.我们将经常谈到如何运作我们提出的想法,但深入探讨如何创建机器的管道超出了本书的范围.
数据科学家或许可以跳过第2章。对于SAP专业人士,您可能会跳过第3章。我们稍后在书中讲述的故事将这两个学科合并在一起,所以我们希望来自其中一方或另一方的读者能够对我们将如何探索、发挥我们的魔力有一个公正的理解.
c.使用代码例子
这本书是用来帮助你完成工作的。一般来说,如果本书提供了示例代码,您可以在您的程序和文档中使用它。你不需要联系我们的许可,除非你正在复制代码的一个重要部分.例如,编写一个使用本书中的几个代码块的程序不需要权限.出售或分发O 'Reillybooks范例的CD-ROM确实需要获得许可.通过引用本书和示例代码来回答问题并不需要获得许可.将本书中大量的示例代码合并到你的产品文档中确实需要许可.
我们欣赏,但不要求,归属。一个署名通常包括标题、作者、出版商和ISBN.例如:Greg Foss和Paul Modderman(O 'Reilly)的SAP实用数据科学。版权所有2019年Greg Foss和PaulModderman, 978-1-492-04644-8。” .如果您觉得您对代码示例的使用超出了合理使用或上述许可范围,请随时联系我们:permissions@oreilly.com。
2.1 介绍
告诉更好的数据故事
废弃的来及,我们说的还不够。
Ira glass .
我们都见过。令人生畏的powerpoint演示文稿,上面有大量的要点.通常,演讲者甚至会为幻灯片太忙而道歉,然后继续演讲,并将幻灯片上的每一个字都准确地读出来.你开始怀疑昨晚是不是忘了关烤箱。我们都喜欢故事.一个结构良好的故事,以电影、书籍、电视节目或播客的形式,像毯子一样包裹着我们,吸引着我们的注意力.弹痕累累的幻灯片…….随着互联网和物联网的到来,数据如洪水般涌来,我们禁不住想在展示中抛出一些发现,擦擦手,然后说“就是这样”。然而,作为数据专业人士,我们不能只是将数据发现洒落在我们的观众身上.普遍的建议是,你必须用数据来讲述一个故事——确保它是人们想听的引人入胜的故事。不要否认讲故事的乐趣。要讲一个引人入胜的故事,你必须识别它。对我的资料有什么要求?我的用户在寻找什么见解?一家专门提供服务和设备的公司可能会问,什么设备最需要最多的维修? 什么设备需要最少的维修.设备类型和部件更换之间是否有关联?在同一家公司,财务部门的人可能会说,我们怎样才能更准确地预测手头的现金?在销售中,问题可能是,“我有什么样的客户流失?”
在你确定了你的故事之后,你需要找到你的受众。这里有许多方法来分解它们,但通常您的受众包括高管、业务专业人员和技术专业人员.虽然他们可能管理或指导许多业务流程,但管理人员通常对此类流程的日常功能知之甚少. 细节对他们来说是无关紧要的(或者可能是令人困惑的)——他们想知道用粗体字写的故事。业务专业人员是业务流程的日常管理员,例如超级用户和业务分析师。他们知道流程的细节,可以理解原始的表格数据.专业技术人员是你的受众中最小的一部分;他们通常包括数据分析和数据科学团队的同事.这一组需要较少的业务和流程背景和更多的技术细节,如回归的均方根误差或神经网络的架构。
一旦你的故事和观众都准备好了,你就需要继续你的旅程中最困难和脆弱的部分:找到数据. 没有数据支持你的故事,你的旅程很快就会结束.假设你想讲述太阳黑子是如何与北半球帽子和手套的销售相关的故事. 令人惊讶的是,太阳黑子数据很容易获得.你明白我的意思。然而,你只有帽子的销售细节,没有手套.你找不到数据。这里需要谨慎行事.你会改变你的故事以符合数据,还是放弃诱饵,去找另一个故事?逆转这个过程是可以做到的,但这是一种滑坡效应。这是一个普遍的规则,不要改变你的假设来匹配你的数据.在你完全相信这些数据之前,你需要对其进行审查,并开始问一些问题:
来源是否有信誉?你是从网站上的表格上抓取的数据吗?该网站使用的数据来源是什么?这些数据是如何获得的?像data .gov、ProPublica、美国人口普查局和gapminder这样的信息来源是值得信赖的,但其他信息来源可能需要谨慎一些.你有太多的数据吗?有没有容易辨认的、毫无价值的特征?寻找明显相关的特征.在前面提到的太阳黑子数据中,也许你有UTC时间戳特性和日期和时间的其他两个特性.您可以使用我们稍后将讨论的技术来快速查看相关性,以帮助您识别何时两个特性之间的相关性太过密切而导致两者都不有用.数据是否完整?使用一些初步的数据工具,以确保您的数据没有遗漏太多信息。稍后我们将更详细地讨论这个过程.故事已经准备好,观众已经确定,数据也经过了审查,接下来会发生什么?现在,您已经准备好享受故事的乐趣了——确定使用什么工具来支持或拒绝您的零假设.说你正在使用“数据科学”作为工具是一种滑坡.你有高级报告、机器学习和深度学习. 通常,仅仅将数据组织成一个易于使用的仪表盘就能说明一切。还需要做些什么.在我们的职业生涯中,这种情况发生的次数比其他任何情况都要多.我们开始的时候认为我们有一个循环神经网络要么有一个门控循环单元要么有一个短期记忆模组.当我们收集数据的时候,兴奋感就会产生.然后我们意识到支持向量机或者简单的回归也可以。后来,我们非常失望地意识到,一个供用户浏览数据的仪表盘已经足够讲述故事了.并不是所有事情都需要深度学习,甚至是机器学习.并不是所有事情都需要深度学习,甚至是机器学习。虽然这通常很有趣,但把你的故事硬塞进这些范式通常不能更好地讲述故事.即使是枯燥的数据科学故事也值得我们去关注. Ira Glass很会讲故事。他制作了四个关于讲故事艺术的短片。观察他们,并把他的一些明智的建议洒在你的衣柜里.
b.快速查看:SAP 专业的数据科学
SAP专业人员每天都忙于支持业务和用户,不断地寻求流程改进. 他们在SAP系统中收集需求、配置或编写代码,并且经常生活在SAP GUI中.他们熟悉SAP中的数据和业务流程,可以像咒语一样召唤大批事务代码.当被要求提供带有分析的报告时,他们实际上有两个选择:在SAP中编写报告或将数据推到数据仓库,在那里其他人将生成报告。这两个流程通常都是漫长的、资源密集型的工作,导致最终用户和SAP专业人员感到沮丧.对于一个特定的客户,来自sap用户的最大抱怨是,当他们实际收到请求报告时,它已经不再相关了。
阅读这本书将帮助您——SAP专业人士——在商业专业人士和数据科学家之间建立一座桥梁。在这些页面中,你会找到一些想法,以摆脱典型的报告和/或分析方法,迄今为止是如此限制.正如我们之前讨论过的,首要的方法之一就是提出更好的问题。
下面是一个典型的SAP场景:Cindy在AccountsReceivable部门工作。她需要一份30-60-90天逾期的报告,列出逾期客户,并根据他们是30天、60天还是90天逾期将他们放入桶中.金融学的Sharon得到了这个请求,并且知道她可以创建一个标准的ALV (ABAP ListViewer)报告,或者可以提取数据并推送到一个业务仓库(BW),在那里他们将使用微策略或任何他们拥有的工具生成一个报告.
如果我们把莎伦的视角度转变成数据科学家的视角呢? Sharon得到报告请求.她知道她能满足要求,但接着她又想:“还能做什么呢?”她打开笔记本,记下一些想法.
是否有惯犯拖欠付款?
数据中有什么有趣的关联吗?我们知道客户名称,客户支付历史,客户购买和美元金额。
我们能预测人们什么时候会迟付款? 迟到什么时候?
我们可以用这些数据来帮助我们的客户打分吗?当库存不足时,评级较低的客户可能得不到订单,而评级较高的客户也会提出同样的要求。
什么样的可视化会有帮助?
Sharon草拟了一个交互式仪表盘报告,她认为这对她的用户非常有用。根据这些想法和草图,Sharon询问了部门数据科学家(或SAP开发人员)的可能性.
这里的方法有明显的不同.第一个是典型的SAP响应,它限制了业务分析人员的创造性和智力能力。第二个是利用他们的创造力。莎伦不会只提供要求的信息。当她看到SAP中的数据并提出更好的问题时,她将在实质性的改进过程中发挥重要作用。
这只是一个例子。想想典型SAP团队所获得的所有请求的可能性,因此就有了这本书!
将SAP团队的思维转变为更动态、更以数据为中心的另一种方法是使用更好的工具。这是SAP开发人员的职责.大多数sap开发人员生活在被称为ABAP(高级商业应用程序编程)的应用程序编程语言的世界里,当被要求提供报告或流程改进时,立即转向sap GUI或Eclipse.这是他们被期望花费时间和交付价值的地方。
ABAP最初是Allgemeiner berichts - aufbereitungs - professor。它是一个服务器端语言,专门设计来扩展SAP的核心功能。您可以创建程序显示报告,运行业务事务或吸收外部系统数据并将其集成到SAP。大量的SAP erp事务运行在ABAP代码上。
ABAP开发人员通常专门从事SAP提供的一个或多个业务功能 。由于ABAP程序通常直接增强标准SAP功能,ABAP开发人员对企业如何设计他们的流程非常熟悉。对于熟悉ABAP的人来说,执行技术编程角色和业务分析角色是非常常见的。
SAP开发人员,我们恳请您:将SAP视为一个数据源,报表的表示层和逻辑层应该从数据库层中抽象出来.值得注意的是,SAP 数据是高度结构化的,具有严格的业务规则.这种方法最明显的优点之一是逻辑层可以访问其他数据源,比如公共数据.在SAP系统中,如果请求查看胶鞋销售和天气模式之间的相关性,则必须将来自NOAA的天气数据引入BI或SAP本身。然而,通过使用分层模型,数据可以由逻辑层访问并在表示层中表示。通常数据可能是一个API,它允许在没有存储的情况下进行访问.该模型还允许逻辑层与Azure Machine Learning Studio等工具结合,对SAP数据进行机器学习或深度学习。
表示层(excel)
逻辑层(Python)
数据层(SAP, SQL)
SAP没有Python中的数千个库,也没有R中的数千个包。它也缺乏容易创建动态/交互式仪表板和可视化的能力。不要误解我们:SAP确实有做高级分析、仪表板和可视化的工具.只是他们花费了大量的金钱、精力和时间.
有些地方在编制报告之前,以月或季度为单位计算交货时间,有时有效业务问题的窗口以小时为单位.通过本书中的工具,我们打算缩小这一差距。如果你是SAP开发人员,我们强烈建议你学习像Python和R这样的编程语言,这样你就可以使用它们对SAP数据进行分析。首先,它们不局限于SAP生态系统,其次,它们是免费的.在SAP之外,还有许多其他工具可以帮助SAP开发人员展示他们的SAP数据。你可以useRMarkdown在R, Shiny在R, jupiter笔记本在Python,PowerBI, Tableau, Plotly…这样的例子不胜枚举。在本书中,我们将提供使用powerbi、RMarkdown和jupiter笔记本的演示示例.
c. 快速查看: 数据科学家的SAP basis
考虑到SAP的规模和无处不在,对它缺乏认识常常令人惊讶。这是一个惊人的事实:全球77%的交易收入都以这样或那样的方式与SAP系统有关.如果你花钱,你很可能与SAP有过接触,福布斯全球2000强公司中92%的公司都是SAP的客户。
但SAP软件究竟是如何触及这一切的呢?它是做什么的?近年来,SAP已经收购了许多SaaS(软件即服务)公司,以扩大其投资组合,让股东更富有,但它的核心着眼点是ERP:企业资源规划。
SAP于1972年在德国创立,当时的名字是“系统分析与规划”(systemanalyze and Programmentwicklung).在IBM的DOS服务器下运行的第一个功能是后台财务会计包。:随后,模块到了采购,库存管理和发票验证。你可以看到主题正在浮现:做企业需要做的常见事情.
这个功能列表乍一看可能相当乏味,尤其是对我们这些拥有Python模块和tensorwhatit的新潮数据科学家来说,他们知道如何让计算机告诉我们一张图片里有一只狗(而不是一架飞机)。它不像搜索谷歌或在iPhone上使用Siri那样神奇。但是SAP在最初几个无聊的模块上增加了一个巧妙的功能:集成。库存管理直接影响采购,采购直接影响财务,财务直接影响…好吧,一切。单个SAP ERP系统中包含了所有这些模块。现在,公司不再需要购买和运行独立的财务/库存/发票系统,而是节省了很多钱.当一个系统为他们提供所有商业问题的答案时,客户开始成群结队地购买.当Gartner在20世纪90年代创造ERP这个术语时,SAP的年销售额已经超过了10亿德国马克.
i.从SAP 获得数据
与大多数大型业务应用程序一样,SAP ERP使用关系数据库来存放事务数据和主数据.该公司的设计使客户可以从许多关系数据库管理系统(RDBMS)中选择作为SAP应用程序数据库.Microsoft SQLServer、IBM DB2、Oracle和SAP的MaxDB都支持.在过去的几年里,SAP迅速引入了另一种专有的数据库技术,HANA,作为一种RDBMS解决方案,具有内存技术.虽然SAP核心ERP产品的未来版本总有一天会需要HANA,但目前大多数SAP安装仍然使用其他一种技术作为数据库。为您公司的SAP实例提供支持的关系数据库是巨大的,并且充满了事务和主数据.它们完整地描述了SAP存储和处理的重要业务信息的形态. SAP系统核心的数据库是您所能发现的真相之源。
除非是不得已,否则永远不要直接和他们联系。
好吧,我们这是在开玩笑。我们将找到有效的时间直接从sap数据库的SQL语句查询数据.但是数据模型的规模和令人难以置信的复杂性使得完全理解一个简单销售订单的结构可能涉及40多个表和1000多个字段.即使是SAP黑带也很难记住他们需要使用的所有不同的表和字段,所以想象一下,对于一个SAP的新数据科学家来说,打开所有必要的数据是多么的低效.
不太了解SAP的数据迷应该从检查SAP系统中可用的业务应用程序编程接口(Business Application programming interface, bapi)开始。bapi是由SAP提供的可远程调用的函数,它公开各种业务信息文档中的数据.而不是找出40多个销售订单表中哪一个适用于您的特定数据问题.您可以查看各种销售订单bapi的结构,并确定它们是否填补了这个空缺。逆向工程数据模型的麻烦消失了。
bapi还通过覆盖早期版本的系统限制来提供帮助。SAP核心产品开发的早期阶段,各个模块限制了可以表示表或字段的字符数.随着SAP多年来卓越的稳定性,这些表名和字段名一直存在.如果不生活在SAP内部,你怎么可能知道“LIKP”和“VBELN”与交付数据有任何关系.bapi是后来增加的,因此它们随着更好地描述其形状和功能的接口一起发展起来。
ODATA.
d.角色和责任
数据科学结合了一系列技能。它们通常包括统计学、编程、机器学习、分析、架构和工程。许多博客和在线帖子讨论了数据科学角色之间的差异。有无数的职务头衔和描述。一个阵营将角色定义为数据分析师、数据工程师、数据架构师、数据科学家和数据通才。其他组有自己的描述。
读者应该理解一些非常重要的东西。除非你是在一家拥有数据科学团队的大公司,否则你的团队中有一个人拥有这些技能就很幸运了。这些工作描述在理论上适用于所有人,但实际上只适用于一小部分人。做好身兼数职的准备。如果你将这些尝试应用到你的公司的数据科学,准备好自己做这项工作。没有SQL数据库,想要提取和存储一些SAP数据?我们将介绍这个。想要自动化提取的工作流?给你。本文将涵盖从SAP数据到表示层的所有内容。
我们的目的很明确:我们想要创建公民数据科学家,他们理解如何让数据科学在他们的组织中发挥作用。你可能没有任何资源来帮助你,当你要求这些事情的时候,你可能会遇到阻力。通常,在别人帮助你之前,你必须先证明你的理论。我们知道角色和职责没有很好地定义。我们希望能让大家对这里的风景有个大致的了解。如果你正在阅读这本书,那么你已经卷起袖子准备好做从构建SQL数据库到展示机器学习的一切事情了.
e.总结
获取价值的很大一部分是通过沟通。我们讨论了如何用您在SAP中找到的数据来讲述精彩的故事:确定您的故事,找到受众,发现数据,并对发现的数据应用严格的工具。有时候,传达故事所需要的只是一张简单的图表。其他时候,它可能需要详细的结果列表。但无论用什么视觉方法来表达你的发现,都要准备好用它来讲述一个故事。
SAP专业人士如果想要讲述关于他们数据的故事,应该考虑编程语言(如Python和R)以及可视化工具(如Tableau和Power BI)。看第二章深入了解。
数据科学家们想要发现SAP里面有什么,就应该想办法把数据弄出来。bapi提供了一种基于函数的方法来检索数据,
OData设置可重复和可预测的HTTP服务,您可以始终将屏幕数据转储到Excel或直接查询SAP数据库作为最后的手段。看看第三章找到更多.
我们希望您能最大限度地利用企业中成熟的SAP数据,而从原始数据中获得价值的最佳方式是应用数据科学原则。这本书将向您展示如何将SAP世界与数据科学世界结合起来。
3.2 SAP 专业的数据科学
作为一名SAP业务分析师,Fred总是在寻找流程改进。那是他的工作,他很擅长。他听说过很多关于数据科学的传闻,但对他来说,这只是……传言。数据科学正在创造自动驾驶汽车,在围棋比赛中击败世界冠军,以及翻译语言。弗雷德在一家美国制造商工作,数据科学与他没有真正的关联。
还是它?
如果Fred了解有关数据科学的基本概念,他就会理解如何利用数据科学来提供业务价值.他最近与产品开发团队一起工作,该团队正在寻求IT的帮助来简化他们的流程。他们有很多杂乱无章的数据。他们向Fred展示了一个想法,一个仪表板来帮助他们跟踪他们的过程。当Fred评估项目时,他的第一个反应是将数据放入SQL数据库中.在那里,他可以使用像PowerBI这样的表示工具来创建仪表板。这是一个人人都喜欢的解决方案。
弗雷德不知道数据科学的基础知识。这些数据中的一些特性可能有助于公司做出更好的、基于数据的决策。如果他知道回归和聚类的基本概念,他就会明白。他知道他可以用这些业务数据做比项目团队要求的更多的事情。
这就是本章的重点。我们不是要培养数据科学家。我们试图让业务分析师像数据科学家一样思考;我们试图创造公民数据科学家。这些业务分析师和专业人士对数据科学有足够的了解,能够提出如何将数据科学应用于他们的数据(特别是对他们的SAP数据有用的数据)的问题。要做到这一点,我们需要介绍数据科学的基础知识,包括不同类型的学习模型:机器学习和神经网络。
:接下来的内容是围绕这个主题展开的一场兔子赛跑,它至少会给你留下足够的信息,以略微不同的方式来思考业务流程……以数据科学的方式。理想情况下,你可以考虑你的项目和数据,然后对你的数据科学家或开发人员说,也许像朴素贝叶斯这样的分类算法可以解决这个问题。想象一下,面对这样的反应,会有多么震惊!
这是一个概念性的章节,提供了主要数据科学概念的概述,因此我们不会讨论探索性数据分析(EDA)或数据准备等战术思想。我们已经讨论了我们认为最相关的主题,但很容易认为我们遗漏了一些重要的东西,如自动机器学习(autoML)和集成方法;然而,我们必须在某个地方划出一条线,以保持这一章的管理。尽管如此,我们稍后将讨论战术概念,例如EDA(在第四章讨论),所以请继续关注。
a.机器学习
数据科学中的语法可能会令人困惑和重叠。根据定义,深度学习是机器学习的一个组成部分,但我们将深度学习称为那些使用更复杂的神经网络的模型。深度学习的成功需要更多的计算能力、更多的时间和更多的数据。通常情况下,更简单的机器学习模型表现相同,有时更好。在闪亮而奇特的神经网络面前,不要忽视它们。
机器学习大致分为四类
监督的
未监督的
半监督的
加强的
a.1 监控机器学习
有监督的机器学习对标记数据进行。它在分类上工作得很好,这是一种对一组数据分类或预测分类标签的方法。例如,在市场营销中,它可能决定谁将购买一种产品.有监督的机器学习在预测方面也很有效。预测是一种从一组数据中确定数值的方法。在市场营销中,它可以用来尝试确定客户会花多少钱.
例如,众所周知的虹膜数据集包括关于150朵虹膜花的花瓣长度、花瓣宽度、萼片长度和萼片宽度的信息,并识别了它们的种类。一旦我们根据这些数据训练一个模型,它就能根据萼片和花瓣的数据准确地预测新鸢尾花的种类。让我们仔细看看一些不同类型的监督机器学习模型。
线性回归
线性回归是一种将一个因变量和一个或多个解释变量之间的关系建模的方法.房子的价值和面积之间的关系就是一个很好的例子(图2 - 1)。如果你有好几种房屋的价值和它们各自的面积,你可以猜测一个未知的房子的价值,如果你知道它的大小。当然,房子的价值远不止这些,但你明白我的意思了。
横轴是面积,纵轴是价格
逻辑回归
与线性回归一样,逻辑回归也使用相同的基本公式。然而,逻辑回归是分类的,而线性回归是连续的。使用同样的房屋价值的例子,线性回归将被用来确定房屋价值,而逻辑回归可以用来确定它是否会出售。
决策树
决策树是一种简单地提出问题并做出决策的模型。决策树的节点提出问题,这些问题要么通向其他节点,要么通向作为分类或预测的结束节点.
随机森林
随机森林是一组决策树,它们有助于解决决策树最大的问题之一:过拟合.过拟合一个模型意味着它非常擅长解决它知道的问题,但当引入新数据时,它将达不到要求。把它想成是训练自己成为世界级的一级方程式车手——但从来不学习停车。
a.2 不监控机器学习
正如你可能已经猜到的,非监督机器学习没有标记数据.也就是说,您有一堆数据,但是您不知道输出标签。例如,您有一组带有年龄、性别、收入、职业和其他特征的投票记录。你不知道的是它们之间的关系.让我们来看看一些不同类型的无监督机器学习.
k均值聚类
K-means聚类将数据分组到一组给定的点.一个例子是将一组顾客分成代表他们购买频率的组。一种方法是用最接近的平均值来分组.如果你使用非欧几里德距离,比如Levenshtein,它也适用于单词。我们将在第7章对此进行更深入的讨论。
朴素贝叶斯
朴素贝叶斯不是一个单一的算法,而是贝叶斯定理家族中分类算法的集合.通常的概念是数据的每个特征都是独立于其他特征的.例如,汽车有一个引擎盖,一个行李箱,轮子和座位。朴素贝叶斯认为所有这些都是对汽车概率的独立贡献.朴素贝叶斯非常快,经常是机器学习任务中第一个尝试的分类器。
下面是贝叶斯定理的简单术语:
P (c | x)
假设©在给定数据(x)的情况下成立的概率。
P (x | c)
假设©为真时,数据(x)的概率。
P ©
假设©成立的概率与数据无关。
P (x)
数据(x)的概率与数据无关。
这是贝叶斯的常见解释;这是随处可见。但是,理解起来有点棘手,所以让我们简化一下。
有一个非常普遍和直观的解释.以乳腺癌为例。想象一下这样的场景:一个病人去医生那里做检查,结果发现乳房x光检查结果不正常。病人得癌症的几率有多大?你可能会凭直觉认为,由于检测结果,一定存在癌症,但将贝叶斯应用于这种情况,结果却有所不同。让我们来看一看。
考虑这些统计数据
参加常规检查的40岁女性中有1%患有乳腺癌。99%的不。
80%的乳房x光检查能检测出癌症,20%会漏诊。
9.5%的乳房x光检查结果是假阳性;它们能在癌症不存在的时候发现它。这意味着89.5%没有发现癌症,也没有癌症(真阴性)。
事件的概率是事件除以所有可能性。
凭直觉,你会听说乳房x光检查的准确率是80%,所以一个阳性结果意味着你有80%的机会得癌症。但事实是……你只有一个7.8%的概率即使你得到了一个积极的结果。
a.3 半监控机器学习
半监督机器学习是监督和非监督学习的结合.在这种情况下,您有很多数据,但并不是所有的数据都被标记。考虑欺诈检测的场景.信用卡公司和银行拥有大量的交易数据,其中一些已经被恰当地贴上了欺诈的标签.然而,他们并不知道所有的欺诈交易.理想情况下,他们会手动正确地为所有的欺诈性交易贴上标签。然而,这个过程是不实际的,会花费太多的时间和精力.有一个小的标记数据集和一个非常大的未标记数据集.在半监督学习中,一种常见的技术叫做伪标记。在此过程中,使用传统的监督学习方法对标注数据进行建模.一旦构建并调优了模型,未标记的数据将被输入模型并标记。:最后,利用标记数据和新的伪标记数据对模型进行再次训练.
a.4 加强机器学习
强化机器学习是指你训练一个模型在试错的基础上做出决定.这个模型通过学习过去的成功和失败与环境相互作用.然后它决定下一次尝试或迭代的操作过程.它是以奖励最大化为前提的.最常见的例子就是训练机器玩游戏。让我们来仔细看看一些不同类型的强化学习.
隐马尔可夫模型
隐马尔可夫模型(hmm)是一系列可观测的辐射.这些都是模型通过特定状态产生排放的结果.这有点令人困惑,让我们来澄清一下.在HMM中,您不能直接观察状态,但可以观察这些状态的结果.你在一个没有窗户的办公室里工作,你看不到外面的天气.你可以看到人们去办公室的时候穿着什么。假设75%的人都带着雨伞……你可以猜到外面在下雨.hmm是识别序列和时间序列的常用方法。他们不看真实的状态;相反,他们关注的是真实状态的排放量.最简单的模型假设每个观测都是独立于下一个观测的。然而,hmm假设观测值之间存在某种关系.另一个例子是,一系列的天气数据被观察到。这些数据具有气压、温度和年份等特征.相应的发射数据具有“不混浊”或“混浊”的二元特征。连续观测多日,该模式不仅根据今天的可观测特征,而且根据前几天的特征来预测天气状况.hmm试图找出最可能的潜在未知序列来解释观察到的序列。
这个概念有点复杂,所以我们用另一个例子.设您想要使用HMM来确定在您的公司为小部件下达的购买订单数量是增加还是减少.SAP有一个带有时间戳的采购订单数据历史记录。它还有其他可能影响购买小部件时间的状态.有销售订单、季节(季节性)、仓库库存水平和生产订单.HMM可以使用其中的每一个.可以这样想:“过去的行为预示着未来的行为。”
快速学习
Q-learning是一种基于价值的强化学习算法。它是基于一个行动的质量.Qlearning通过学习来优化其结果.在某种程度上,它构建了一个关于它应该如何行为的秘密备忘单。在游戏玩法的例子中,它采取一个行动,评估该行动,更新它的备考单,然后再次尝试.它的迭代速度非常快。一个常见的例子是想象在一个游戏中,你是一只狗,你必须找到那堆骨头.你每走一步都要花掉一根骨头.如果你遇到那只讨厌的猫,你会失去10根骨头,然后死掉. 目标是最大化骨骼的数量。对我们来说,这似乎是一个简单的游戏,但电脑并不知道如何开始.首先,它向下,得到两根骨头。Yaaaah !伙计,这招不错.它记录下来,然后向右迈了一步。该死的猫…游戏结束。它使用该信息更新备忘单。下次它先向右走一步,然后再向右走一步,然后它只有向下的选择。是的,一大堆骨头!!记住,每步骨头的价格是-1。结果是-1 +2 -1 -1 +1 -1-1 +10 = 8。它记录结果并再次尝试。这次它向右转因为它知道这里有一个+1。再右转一圈,再向下一圈,就能找到矿脉了。结果是-1 +1 -1 -1 +10 = 8。这两种路径都具有同样的价值,但如果存在奖励或限制步骤数,那么选择2便能够获胜。
你可能会想,“很酷,但这怎么能适用于游戏?”就拿牛头犬找到矿脉之路的图像来说吧。现在想象它是一个简单的仓库. 强化学习可以减少采摘、包装和储存的运输时间,并优化空间利用。它更复杂,但本质上与狗和骨头游戏相同。
b 神经网络.
我们两位作者都从事编程工作多年,在这一过程中经历了一些美妙的“哇”时刻.格雷格在苹果IIe上学会了用Basic编程.在学习PEEK、POKE和CALL命令之前,他已经学了大约一年的编程.他第一次使用这些回忆并运行他的程序时,他坐下来想:“哇!”从那时起,他就开始以各种形式编程.格里格和保罗在编写前几个深度学习程序时都有这种感觉。“哇!我们只能这么说。
让我们来谈谈深度学习以及这个术语的含义。
传统编程遵循的是直接的、预定义的逻辑。如果这样,那么执行该操作10次。它是如此强大,我们可以模拟美丽的风景,创造游戏,把我们带到魔法,虚构的领域。但它使得语言翻译等任务几乎不可能完成。想象一下把英语翻译成韩语需要多少程序。这个程序需要对单词、短语、否定、句法、方言、标点符号等等都有条件,无穷无尽.想象一下在线性逻辑中嵌套所有这些.随之而来的是机器学习。现在输入一组英语文本和它们翻译的韩语文本.您可以通过向模型显示输入和预期输出来训练它。您拥有的数据越多,您可以训练的模型就越多。最后,您输入一组没有韩语翻译的英语文本和kazam!它按照所学的方式进行翻译。
这本身就很了不起,但还会更好.谷歌在2016年构建了一个深度学习算法,将英语翻译成韩语,韩语翻译成英语,日语翻译成英语,英语到日语。这本身就很不可思议,但这还不是最神奇的部分。.该网络可以将日语翻译成韩语,韩语翻译成日语,而无需首先通过英语翻译。让他们明白.网络中发生了什么让这样的事情发生?这个网络学会了一种元语言——一种超越了简单的一对一语言翻译的语言映射。当从日语翻译到韩语时,我们会期望模型先通过英语.毕竟,这一模式并没有经过训练,从日本走向韩国。然而,模型并没有做到这一点。它直接来自日本人到韩国人(虚线)。神奇的!实际上有点吓人。
谷歌的语言翻译程序是一个神经网络。让我们来看看一些基本的神经网络架构.这是对神经网络和深度学习的温和介绍。我们希望它能激起你足够的好奇心,让你想要进行更深入的探索。在其基础上,神经网络是一系列相互关联的处理模块,它们一起工作以获取输入并求解给定的输出。它们的灵感来自于大脑中神经元和突触处理信息的方式.它们在解决从图像分类到语言翻译等一系列问题上发挥了重要作用。我们将在第9章对此进行更深入的讨论。
神经网络有三个基本层:
输入层
这是数据输入网络的地方。
隐藏层(年代)
这一层执行基本计算,然后将权值转移到下一层。下一层可以是另一个隐藏层或输出层。
输出层
这是网络的末端,模型输出结果的地方。
神经网络有六个基本概念,如下面的部分所述。
前馈反向传播模型
数据(权重和偏差)通过网络向前流动,从输入层通过各种隐藏层,最后到输出层.
向后传播
数据通过网络转发后,错误
(期望值减去获得值)通过网络反向反馈,调整权值和偏差,以减少误差.
梯度下降
一种优化函数,它试图找出一个函数的最小值。另一种说法是梯度下降的目标是尽可能地最小化成本函数.当达到这一目标时,网络就得到了优化。一个常见的比喻是一个人走下山。他每走一步,都想往下走,直到走到最低点为止;在这里,成本函数是最小的。当达到这一点时,模型具有最高的精度。
学习率
学习率是我们为实现最小梯度下降(山底)所采取的步骤的大小。如果学习率太大,它将超过最小值,并有可能失去控制。如果它太小,过程就会太长.
神经元
神经元是神经网络的基础。它接受一个或多个输入,将函数应用于这些输入并呈现输出。它松散地以人类神经元为基础.
函数
函数是神经元内的一个数学方程,它接收输入值并决定是否激活(或触发)。有许多激活函数,但这些是最常见的神经网络
S形的
接受输入值并将其置于0到1的范围内
双曲正切
接受输入值并将其置于-1到1的范围内.
线性整流函数
整流线性单元取输入值,并将其置于0到无穷范围内。它使所有负值为0.
漏水的ReLU
接受一个输入值,并将范围从一个非常小的负值到无穷大.
柔性最大值传输函数
接受输入,并预测一组特定可能性的结果。例如,在数字识别中,softmax函数返回10种可能性(0-9),每种都有概率。如果你有5种不同的苏打水,它会返回5种可能性,每种都有概率
作为商业分析师,我们建议从高层次的角度看待机器学习,特别是神经网络。你可以深入了解很多,试图理解sigmoid和tanh之间的确切区别,或者如何确定梯度下降。你可以深入研究这方面的数学,你可以就此写很多博士论文。我们的目标是让SAP业务分析师了解这门美丽科学的深度。此外,对这门科学的基本理解将允许你利用它来获得真实世界的结果。
现在我们已经有了一些基础知识,那么我们今天在实践中看到的一些基本的神经网络是什么呢?
单层感知器
单层感知器是神经网络最简单的形式。它没有隐藏层。它只有一个输入和输出层。您可能认为图有两个层,但是输入层并不被认为是层,因为它不进行计算.一个单层感知器接收多个输入信号,对它们求和,如果值高于预定值阈值触发.因为它们要么有值,要么没有,它们只能区分两个线性可分的类。有什么大不了的?就其本身而言,单层感知器是非常有限的。然而,它们还包括其他神经网络。想象一下:人类大脑平均有1000亿个神经元。每个神经元都有一个简单的功能,就像这个单层感知器一样简单。正是我们大脑中这些神经元的协调造就了我们是谁的音乐。
多层感知器
多层感知器由多层组成。它们通常是相互联系的。第一隐藏层中的节点连接到输入层中的节点.可以在隐层中添加不与输入层相连的偏置节点.偏置节点增加了网络适应数据的灵活性,其值通常设置为1.更高级的神经网络中,批量归一化的过程实现了这一功能。
卷积网络
积神经网络(CNN)是一个多层网络,它在各个层之间来回传递权重和偏差。cnn假定输入是图像,因此这些网络有特殊的层和编码.为什么不使用多层感知器进行图像分类呢?
CNN有三个独特的层面:
卷积层
其主要目的是从输入中提取特征。每幅图像都是一个像素值矩阵,使用一个在图像上滑动并计算点积的过滤器将其转换为特征。
池化层
这一层有时也称为下采样或子采样。它通过使用Max、Average或Sum值来降低由卷积层呈现的特征的维数。
全连接层
类似于多层感知器,它使用SoftMax激活函数向输出层传递一个概率分布cnn会变得非常复杂。看看谷歌的Inception模型.
结构递归神经网络
递归神经网络是利用时间序列或顺序数据的多层网络。它们的性能非常好,通常是自然语言处理(NLP)任务和时间序列数据的首选模型。我们将在语言和文本一章中看到它们的实际作用处理。在我们的其他神经网络中,一旦数据被传递到下一层,前一层就会被遗忘。然而,当试图根据一系列数据进行预测时,记住之前发生了什么是很重要的。这些网络是循环的,因为它们会返回来查看之前的输入或输入。在某种意义上,他们有记忆。返回的箭头表示RNN的递归。如你所见,这个递归式非常短;它只在同一层上绕回来。本质上,它只有短期记忆。这个问题通过在网络中引入长时间短期记忆来解决.
lstm允许网络长时间学习。它们有三个门:输入、输出和遗忘。输入门决定让哪些数据进入。输出门决定输出什么数据。最后,遗忘门决定应该遗忘哪些数据。lstm的体系结构对于初学者来说可能很难,因此可以这样说,lstm允许网络在很长一段时间内记忆。如果你有兴趣更深入地了解它们,请阅读这篇博客。
含时网络
时间卷积网络(TCN)是一种多层网络,它具有卷积网络的优点,同时也考虑了放置和位置.
卷积网络通常在图像识别和语言分类方面非常出色。然而,他们并不关心位置.例如,CNN想知道图像中是否包含尾巴、棕色纽扣鼻和下垂的耳朵。然后它把图像归类为一只狗。它不关心图像的位置。在语言分类中,CNN希望知道某些关键字的存在,这些关键字将表明它正在查看法律文件、漫画书或海明威的小说.职位也不重要。如果您想处理位置和位置很重要的数据,比如时间序列数据,该怎么办?时间序列数据只是时间轴上带有日期和/或时间戳的数据集。正如我们前面提到的,业界用于此类任务的模型是RNN。然而,就像数据科学中的许多东西一样,这种模式最近被取代了……被强大的TCN.
与rnn相比,tcn的优势在于计算成本更低,使用更简单的体系结构。rnn需要资源,即LSTM层来记住.
tcn使用输入步骤,这些步骤映射到输入的下一层使用的输出.它们不使用递归,而是使用一层的结果来喂养下一层。第六章,我们做了一个简单的销售预测。tcn似乎是用于这种任务的合适模型;我们将尝试使用它从SAP系统预测特定产品的销售。
自编码
自动编码器是一个仅前馈的神经网络,其定义看似简单。它是一个接受输入数据并试图将其复制为输出的网络。它由两部分组成:
编码器
解析输入数据。
译码器
为输出重建数据
种类型的网络最常见的用途是图像去噪和图像生成。自动编码器的真实值不是输出,这是我们其他神经网络的情况。真正的值是在神经网络的表示,输出在压缩数据.为了进一步澄清这一点,模型在其最压缩的时候已经学习了对象的显著特征。假设它在看狗的图像。突出的特征是耳朵、眼睛、嘴巴、鼻子、狗一样的鼻子等等。果模型压缩得太远,它可能会认为唯一显著的特征是眼睛,无法区分狗和其他任何动物.如果模型压缩得不够,不能识别太多的特征(比如颜色和面部形状),那么它只能识别一种狗。这个模型的诀窍是知道平衡。作为一个概述,神经网络优化不是当输出更接近输入,而是当输出仍然代表输入的关键特征和数据被尽可能地压缩.自动编码器通常用于降低数据的维数和特征学习.它们通常是另一个神经网络的一部分,它有助于降低特征维数。
生成对抗网络
生成式对抗网络(GAN)是一种神经网络架构,坦率地说,两个网络在其中作战。因此有了“对抗性”这个术语.这两个网络被称为生成器和鉴频器.想象一下这个常用的场景.GAN想要制造假币。生成器生成一个账单并将其发送给鉴别器进行测试。鉴别器知道钞票是什么样子因为它从一组真实世界的图像中学习.
鉴别器知道钞票是什么样子因为它从一组真实世界的图像中学习。发电机的第一次尝试是不幸的,它失败了,它得到了失败的反馈。然后它一次又一次地尝试,直到它能够产生鉴别器认为是真实的钞票。然后就轮到鉴别器学习了。它发现自己错了,并学会不再接受假钞。这种争吵不断,直到某一点,网络平均地失败和成功……在这两种情况下都不会有更多的学习.您可能想知道如何使用这样的网络。这些网络喜欢模拟数据。因此,他们被教导模仿艺术、音乐、图像甚至诗歌.他们可以学会在图像中融合概念。例如,你用男人戴帽子,女人不戴帽子的图像训练网络,然后让GAN生成女人戴帽子的图像,它做得很好。听起来很不错,但是在我们的业务场景中有什么用呢?gan被用来检测数据中的异常,也可以在数量有限的情况下为其他网络生成训练数据。在本文所提供的神经网络介绍中,我们不应该忽略GANs。然而,我们承认,将它们应用到商业应用中比较困难。在这里展示这些数据说明了我们在SAP业务分析师社区中创建公民数据科学家的目标。记住所有的概念,包括GAN,您可能会确定一个可以使用GAN的业务场景。
c 总结
如果这是你对数据科学概念的第一次介绍,我们知道你需要接受很多东西。如果您是一位经验丰富的数据科学家,您可能会问这样的问题:“XGBoost在哪里?”或者“为什么不呢?AutoML ?”记住我们的主要目的,我们希望业务分析师能像数据科学家一样思考问题。公民数据科学家的诞生。数据科学中还有许多其他领域我们在本章中没有涉及,但将在后面讨论,比如探索性数据分析和数据可视化.业务分析师们,我们希望您能在本章中找到一些思路,这些思路将帮助您思考自己的数据——特别是本书中的SAP数据.在接下来的章节中,我们将详细介绍使用SAP数据的业务场景以及本章中介绍的概念。
3 数据科学家的SAP
在Big Bonanza Warehouse,格雷格和保罗组成了整个数据科学团队。他们所看到的每一处都被美妙的数据包围着:工厂自动化系统、客户发货的运输记录、营销活动数据,以及丰富的电子表格和Microsoft Access数据库,这些数据似乎在大企业中遍地开花。他们不可能不听到另一个有趣的数据机会就起床去喝咖啡。他们既喜出望外又忙得不可开交:他们每天都来处理有趣的问题,但却永远无法赶上堆积如山的数据请求。
当然,有一种方法可以让他们赶上来。他们可以潜心学习SAP。因为SAP是继续吞噬其他大富商仓库系统的庞然大物。一样大Bonanza将其企业软件资源整合到SAP的资产组合中,更多美妙的数据消失在了野兽的肚子里。格里格和保罗知道大量的数据,也因此知道机会. SAP让人难以置信。他们只是不知道如何四处寻找它。与SAP终端用户交谈并不能揭示真正的数据模型,而与SAP管理员交谈几乎没有任何意义,因为他们的工作实在是超负荷了。
4.探索性数据分析R.
帕特是Big Bonanza公司采购部的经理仓库。他的部门专门为各种建筑行业制造管材,这需要采购大量的原材料和半原材料。然而,帕特有一个问题;他每天在SAP收到多达100个采购请求,这些请求在成为采购订单之前需要得到批准。他希望简化这一繁琐而耗时的过程。他决定问问他的IT部门和SAP团队是否有什么可以帮忙的。
SAP团队已经将系统配置为采购请求流程的最优。当Pat和SAP团队联系到他们的数据科学团队的同事时,他们立刻想到:
“我们可以建立一个模型来了解采购申请是否会被批准吗?”SAP系统中有足够的数据——将近10年的历史数据,他们知道所有的申请批准和拒绝。结果是数以百万计的标签数据记录。所有这些记录都表明批准或拒绝。
这难道不是引导性学习吗?它肯定.
我们在第二章介绍了四种不同类型的学习模式。
这些都是:
有监督的
无人监督的
半监督的
加强
我们倾向于认为这里提到的场景是一个有监督的场景,因为我们有标记的数据。也就是说,我们有被批准和拒绝的采购请求。我们可以在这个标记数据上训练一个模型,因此它是一个有监督的场景。确定了我们正在研究的学习模式类型后,下一步就是探索数据。
数据科学家工作流中最重要的流程之一是探索性数据分析(EDA)。数据科学家使用这个过程来探索数据,并确定是否可以建模,如果可以,如何建模。EDA的目标是通过总结主要特征来理解数据,通常使用可视化。这是数据科学过程中要求数据科学家熟悉数据的步骤。
非常了解SAP的读者:如果您认为自己熟悉您的数据,请完成这个练习。你会惊讶地发现你学到了很多东西。了解关系数据的一般形状与了解EDA的清理、分析和完全建模结果之间存在巨大的差异.
在本章中,我们将介绍EDA过程。为了让大家更容易理解,我们将实时讲解。也就是说,我们不会为了使这一课易于编写而操纵数据;相反,我们将使它尽可能的真实和相关。我们将在这个过程中遇到问题,我们将把它们作为一个真实的场景来处理。如图4-1所示,EDA运行四个主要阶段:收集、清理、分析和建模。在深入我们的场景之前,让我们简单地分解每个阶段.在本章中,我们将介绍EDA过程。为了让大家更容易理解,我们将实时讲解。也就是说,我们不会为了使这一课易于编写而操纵数据;相反,我们将使它尽可能的真实和相关。我们将在这个过程中遇到问题,我们将把它们作为一个真实的场景来处理。如图4-1所示,EDA运行四个主要阶段:收集、清理、分析和建模。在深入我们的场景之前,让我们简单地分解每个阶段
EDA的四个阶段
在Collect Data阶段,我们从源系统的数据开始。理解源系统如何记录数据是很重要的。例如,如果我们不知道在SAP表,我们不能把它们取出来供以后分析。
一旦我们理解了源数据,我们就会选择方法和工具来取出它并检查它。在本章中,我们使用从SAP提取的平面文件作为中间存储,并使用R数据分析语言作为处理和处理数据的方法。在专注于业务场景的EDA,快速迭代假设非常重要。因此,请选择您感到舒适和熟悉的工具。
如果您还不熟悉任何工具,请不要害怕!有许多提取和分析的选项。第3章讨论了几种可供选择的SAP数据提取方法,本书后面的章节将使用其中的许多方法。R语言是统计学家和数据科学家的最爱,但Python也有一个非常强大的社区。在本书中,我们将使用来自两种语言的例子和工具。
成功提取数据后,我们进入Clean data阶段。源系统的数据库、数据维护规则和我们选择的提取方法都可以在数据上留下它们自己的唯一标记。如,我们会看到有时CSV提取会有多余的标题行。有时,API提取可能会以与分析工具不兼容的方式格式化数字。当我们提取多年的数据时,源系统自己的内部数据治理规则发生了变化,这种情况可能发生,而且经常发生。
当我们在提取后立即清理数据时,我们是在寻找明显错误或不一致的东西。在本章中,我们使用R方法来清理数据,而在另一种语言中,你可能会觉得更舒服。无论您采用何种方法,我们在此阶段的目标是去除数据中明显不好的部分.
达到了移除这些坏东西的目标之后,就可以进入分析阶段了。这就是我们开始建立假设和探索问题的地方。由于数据在清理后处于我们可以信任的状态,所以我们可以可视化关系,并决定哪些关系是最强的,最值得进一步建模。
在这个阶段,我们经常会发现我们要重新塑造和格式化数据。它是一种清理数据的形式,而不是侧重于删除坏的(或格式不好的)数据;相反,它专注于获取良好的数据,并对其进行调整,以便在下一阶段有效地使用。分析阶段通常为这种进一步的重塑提供了几个机会。
最后一个阶段是建模。在这个阶段,我们已经发现了数据中的几个值得研究的关系。我们的目标是:创建一个模型,让我们得出有洞察力的结论或做出有证据支持的预测。模型应该是可靠的和可重复的。通过对这个采购场景建模,SAP团队试图用信息和工具武装采购经理Pat,这些信息和工具对他的业务流程有深刻的影响。
格雷格和保罗很了解这个过程,所以让我们开始吧!
阶段1:收集我们的数据
在下面我的blog里,可以看到我如何在SAP里收集数据
链接
导入R语言
R语言下载地址
如果你还没有使用R或R Studio做过任何事情,你可以在网上找到许多优秀的资源,里面有详细的安装指南。这并不比在你的电脑上安装任何其他软件更困难。虽然这本书不打算成为R的教程,但我们将涵盖一些基础知识,让您开始。安装完R Studio后,双击图4-18中的图标启动R Studio。
R中的一个基本概念是包的使用。它们是定义良好的格式的函数、数据和编译代码的集合。它们使编码更加容易和一致。您需要安装必要的软件包才能使用它们。我们最喜欢的一个是整洁诗。有两种方法可以安装这个包。你可以在R Studio的控制台窗口使用install.packages()函数来完成.简单地点击一下输入,它将为您下载并安装软件包。
通过一下方式来安装必须用的包 (install.packages(“tidyverse”)) 然后再按Enter.
现在已经安装了一个包,让我们开始一个新的脚本。单击“新建”按钮,在下拉菜单中选择“R脚本”,如图4-22所示。
现在您将拥有一个空白画布,可以从这里开始使用R编程语言进行数据探索。
现在,让我们开始吧。使用read.csv()函数很容易将数据导入R或R Studio。我们通过以下设置读取文件:header设置为TRUE,因为文件上有一个header。我们不希望将字符串设置为factors,因此将stringsAsFactors设置为FALSE。