数据有不同的类型。结构化数据以预定义的格式存在,通常易于做多元化的分析。但企业的大多数数据都是非结构化的,存在于自由流动的人类语言(即自然语言)如英语中。人类能够很容易理解这种类型的数据,计算机如果不借助一定的技术帮助,理解起来会很困难。
就会计工作而言,发票文本、交易描述和书面沟通等就很典型的非结构化数据。借助于自然语言处理(NLP)等技术,之前由初级会计专员手工完成的一些工作可以自动化。不仅如此,NLP还可在会计更具战略性的工作方面提供支持。鉴于管理会计的职责是为内部决策提供支持,他们可充分运用分析技术来提供洞见。NLP以及人工智能(AI)和机器学习(ML)都是当下管理会计师可运用的大量技术中的新成员。
计算机可通过NLP技术理解人类语言该技术在人类所说所写的内容与计算机可处理的内容之间搭建了桥梁(NLP包括理解和生成自然语言这两个关键任务,编者注)。现在,NLP技术已能够将一种语言翻译成另一种,理解网络评论背后的情感,还可以对问题作出复杂的回应。
上述这些NLP技术可应用于多个管理会计场景,情感分析是其中一个很好的例子。财务是平衡计分卡的四个维度之一,企业之前往往将财务指标作为绩效评价的唯一指标,但现在正逐渐转向更为“平衡”评价方式,比如加入平衡计分卡的客户维度。在分析客户情感时,管理会计师能应用NLP技术和预测性ML模型。
有一点我们要清楚,在基于电子表格(如微软Excel)的软件中,大部分ML分析的实施效果并不理想。尽管如此,在构建有效的预测模型时,仍有许多简单易用的工具可供选择。在工具的选择方面是非常灵活的,因为NLP分析可以在专有软件、统计语言或通用编程语言中运行(见“为什么学习编程?”)。事实上,选择哪种工具往往取决于个人偏好。接下来,我们将着重看看几个常用工具。Python。
首先,Python拥有庞大的数据科学库,其开源性质意味着全球用户都可以开发和发布各种模块。常用的库包括用于一般ML任务的scikit-learn(),用于更复杂的NLP技术的NLTK()以及用于基础数学运算的SciPy(),用于深度学习的高级库则有Keras(Keras.io)、TensorFlow()和PyTorch()。
其次,Python是一种通用型语言,相对简单易学。其语法简洁易懂,可用于包括ML在内的一系列任务。在我个人的实际在做的工作中,我使用Python来完成这些工作:自动下载发票,使用光学字符识别提取发票信息并对其进行预处理,然后运行ML模型。偶尔我还把它当计算器使用。
Python的缺点是编程语言比较难学(即使短于其他语言),编程知识有限的用户不太好理解,以及开源语言的安全性等问题(尽管这样一些问题可通过规划与尽职调查来解决)。
R。与Python非常相似,R也是开源语言,有一个全球性的社区提供各种支持,应用普遍,简单易学。常用的ML库包括Caret(bit.ly/3AK2tWq)、kernlab(bit.ly/34katkH)和OpenNLP(bit.ly/3GfsGgD)。在开发包含时间序列数据的预测模型时,R尤其受青睐。
R与Python的主要不同之处在于R更适合统计分析,因此,R在学术界的应用较实务界更广泛。R的一个缺陷是其可扩展性,与Python不同的是,如果按顺序执行相关性较低的任务,R无法用来建立整个管道(由多个操作组成的一个操作序列,编者注)。
Alteryx。Alteryx是最新的工具之一,旨在帮助非程序员用户解决复杂的数据暂存和建模问题。对那些缺乏时间、兴趣和动力去学习Python或R的会计专员来说,Alteryx是个可行的选择。与Python或R不同的是,Alteryx是一款专有软件,只可以使用该企业来提供的功能,不过该公司已提供了相当多的功能。Alteryx有一个很大的工作流画布和拖放界面,可用来构建复杂的工作流。其一大优势是当数据在工作流中移动时,可以“看到”数据转换。在此之前,可以访问任何中间节点上的数据。
Alteryx最近发布了智能套件(bit.ly/3AIUf0J),这中间还包括一套有助于NPL和其他ML任务的工具,可极大的提升Alteryx在NPL任务中的能力。Alteryx最大的劣势是成本高昂,每位用户必须按年支付使用费,而Python和R都可以不要钱使用。
处理此类非结构化数据的一个典型做法是,让员工阅读每一条评价,将其标记“积极”“中性”或“消极”等情感标签,接着进行聚合分析。使用标记的评论作为数据,NLP模型可以分析这些评价及相对应的标签,最终能在无需明确指定的情况下自动预测客户情感。
与之相反的是,在基于规则的方法下,算法只会查找客户提供的特定词汇(如“大”“好”“少”“坏”)。随着数据的变化性增加,这种基于规则的方法很快就会变得无效,因为几乎不可能提供足够多的规则去覆盖许多可能的变化,所以这一方法仅适用于充分标准化的基础数据。而如NPL之类的ML方法自身可形成对数据的理解,甚至有可能创建在其他情况下几乎不可能编码的细微连接(如将不同时态的“improve”视为同义词)。
■将向量化数据分组为单独的聚类,这样具有相似特征的数据会组合在一起。从每个聚类中选择一些观测值来创建代表性数据样本。
理想的做法是获得尽可能多的数据,收集的客户评价最好不少于两年。使用相对较大的数据集有助于避免模型对训练数据过度拟合,或进行过于具体的调整。ML模型基于特定的数据样本做训练,由于采样通常使用预定义的办法来进行,一些偏差有几率会使训练数据出现异常值,或者数据特性/数据点可能没办法代表更广泛的数据。如果模型与训练数据过于“吻合”,那么将训练结果推广应用到从未见过的数据上的空间就很小。
预处理是一个至关重要的步骤。数据科学领域的一个俗语是“垃圾进,垃圾出”,所有的ML算法都是使用数据来进行训练的,所以干净、有用的数据是创建有价值的ML模型的必要条件。预处理指的是让数据“准备就绪”,以便ML模型有效地从中学习。该过程有时被称为数据暂存或数据清洗。
客户评价很少是干净数据,而且很多信息对决策都是低价值或无价值的,预处理可以查找并用适当的措辞(如“不可用”)替换缺失的评价。预处理的另一个作用是处理标点符号,标点符号通常是无用信息,可以删除。此外,还可以删除停用词或那些在所有评论中常见、在语言中常用来连接的词(如“and”“a”“an”“the”这类词)。采取哪些预处理步骤取决于基础数据的结构。
假设一家航空公司的客户评价包含语法错误,语句也不完整,比如很常见的一条:“飞机上的体验很棒。机组人员很有礼貌。食物很美味。会再次乘坐。”设想一下工作人员会怎样分析这条评价。他们可能不会注意任何停用词、标点符号或其他如“飞机”或“机组人员”之类的词汇,相反,会根据其对英语语言的了解,着重寻找那些代表乘客体验的关键字。“伟大”“礼貌”和“美味”这些词很显然代表满意,“会”(而不是否定的“不会”)和“再次”虽然指向不是特别明显,但也表示积极的反馈。
经过预处理,这几个关键词(标签)保留下来:很棒、体验、飞机、机组人员、礼貌、食物、美味、会再次乘坐。对于ML模型来说,这一短语都具有很大的信息价值,因为其包含了将“积极”类别的词汇与其他两个类别(“中性”和“消极”)的词汇区分开来的独特标签。这并不是说预处理后包含了所有有用的词,预处理永远无法使数据完全干净,但它可以使NPL模型再进一步,将特定的单词与其对应的标签联系起来。人类通过你自己在生活中学习的自然语言知识,下意识地进行这种预处理,计算机则要求对这一些数据进行清洗(当然,除非为其提供了自动预处理数据的模型)。
包含有用信息的预处理数据是训练任何ML模型的前提条件。根据我的经验,用Alteryx这样的工具清洗数据比用编程语言更容易。在使用Python训练模型之前,我经常使用Alteryx对数据来进行处理。
数据经过预处理之后,还需将其转换成机器可以使用的格式。计算机不能理解自然语言数据,除非将这些数据转化为计算机可识别的某些数字编码。
向量化是用数字代表事件,有几种技术可用于向量化数据,其中最常见的两种工具如下:
TF-IDF vectorizer。TF-IDF代表“词频逆文档频率”。这款工具基于这样一个假设:如果某个特定标签在一个短语中出现多次,但在其他短语中不常出现,那么它可能是对该短语的描述。TF-IDF通过统计分析生成向量。无论采用何种方法,基本动机都是将每条客户评价表示为一个带方向性的数字序列:一个向量。图1展示了一个向量矩阵。图中以颜色强调的向量表示上文提及的评价示例,在每个可用评价词语的旁边都有一个数字,表示该词语出现的次数。训练ML模型时,示例评价4被表示为一个“11111111”的八维向量(因为每个列出的标签在此评价中都只出现了一次),而评价6被表示为“01000000”(这表示只有“体验”在此评价中出现,这可能是一个负面评价)。
ML主要有三种类型:有监督学习、无监督学习和强化学习。有监督学习处理的是带有标签或“答案”的数据。在本文案例中,数据来自于客户评价,标签则是相应的情感标签。ML模型使用有监督学习来训练或“学习”数据与其相应标签之间的联系。无监督学习用于在没有任何外部标签的数据中寻找模式,这一能力在将数据分组为具有相似特征的数据集时特别方便,分组后这些数据集用于创建代表性的训练样本。强化学习是ML领域的最新创新,通过奖励系统创建模型。
创建向量数据的代表性样本时,我倾向于使用无监督ML技术,将相似类型的数据点分为不同的组。聚类是无监督学习的一种类型。
k均值聚类算法首先要提供需要创建的聚类数量(k),然后随机选择k个评价作为聚类中心,再将每条评论分配给一个聚类中心,通常是距离最近的聚类中心。接下来,该算法会重新计算聚类中心,并把评价重新分配给新的聚类中心(可能不一定是总评论中的评价)。这个过程将不断重复,直至满足终止条件(通常是最大迭代次数)。分层聚类与k均值聚类非常类似,只是不需要事先给定聚类数量,而且终止条件的类型可能更多。分层聚类算法首先将每条评价作为一个聚类,并根据特定的运算反复合并聚类,直至满足终止条件。
基于密度的带噪空间聚类(DBSCAN)是一种先进的聚类算法,基于所绘制图表的密度范围对数据来进行聚类。DBSCAN的一大优点是可以发现异常值:与大多数其他聚类方法不同,该算法不需要将每个数据点分配给某个聚类。
我一般都优先使用k均值聚类算法,因为其较为简单,对计算能力的要求也比较低,除非要达成特定结果我才会选择其他算法。聚类数量取多少最合适,取决于客户评价的变化程度。将全部评价聚类后,就可以从每个聚类中挑选固定数量的评价来创建训练样本。这样做有两个好处:(1)训练数据包含的评价数量至少与聚类数量相同;(2)创建的样本包含所有聚类中的评价,因而更有代表性。将评价数据聚类甚至可以揭示三种情感的初始分组状况,从而可以看到分组情况。k均值聚类过程如图2所示。
假设训练数据中包含了来自每个聚类的一条评价,则其包含的评价数有k条。这些评价应该已经预先被工作人员贴上了相应的情绪标签。这就提出一个重要的问题:哪种类型的ML模型最适合训练数据?这本身是本文的主题,总的来说有许多模型可供选择,且这些模型也存在种种变化。虽然客观信息可以指导选择,但选择时也要考虑主观因素。可供选择的技术模型包括k最近邻算法、朴素贝叶斯算法、逻辑回归算法、决策树算法,及更复杂的建模、集成和深度学习方法。其实无论选择何种技术,训练ML模型的过程都是相似的。假设ML模型已经选定,接下来便是进一步将训练数据集划分为两个独立的数据集,这就是所说的“分割训练集和测试集”,其中一个数据集要远大于另一个数据集,常用的划分比例为80:20或70:30。
然后,使用较大的数据集训练ML模型,即通过选定的软件将数据输入ML模型。该模型将数据集中的每条记录与相应的标签(情感)进行比较,从而形成将具体评价与相应标签联系起来的“知识”。
理想的状态是在ML模型的复杂性和通用性之间达成适当平衡,但这一点很难实现。模式必须具备一定的复杂性,既不能捕捉不到训练数据中的关系,也不能过于深入,导致无法将学习的知识应用于其他数据(通用性不强)。在ML术语中,这被称为偏差-方差权衡(bit.ly/3Ho8uuw)。
模型经过训练后,能够正常的使用较小的数据集来测试其准确性,但这一些数据不会用来更新模型现有的知识。相反,模型基于之前的训练预测情感,然后将预测结果与实际标签作比较。如此,模型就可以提供一个准确的分数(较小数据集中,准确预测的总数比上总评论数),反映其在较大数据集中学习的水平如何。我一般认为达到75%左右的初始准确度就不错了,这让我相信训练数据足以代表总体数据,随着我持续将更多数据输入模型,预测准确性可能还会有所提升。
在更大范围内运用ML模型并将其纳入生产流程是另一项工作,相较于数据科学,这与软件开发的关系更大。在实践中,需要组建专门的团队来致力于在整个企业部署ML模型。
部署模型后,很重要的一点是践行“持续改进”理念,这是源于日本的一种有效的经营思想。ML模型的开发是一个迭代过程,即便完成初始部署后,也要不断引入更多数据、调整参数,甚至会根据会计环境的变化或企业业务选用其他模型。
AI和ML为会计行业的转型升级带来了极好的机遇。NLP可用于通过客户评价来了解客户满意程度,而客户是平衡计分卡的四个维度之一。即便还有许多与流程相关的技术细节尚待解决,现有软件已经能让只是对ML概念有中等了解水平的人构建出优秀的ML模型。
对于那些希望学习更多ML建模知识的会计专员来说,他们第一步应该熟悉中级统计学知识,因为几乎所有ML模型都有底层的统计算法;其次,阅读更多关于ML的书籍(可参考“Machine Learning for Beginners”一文,bit.ly/3HhbEjD);最后,了解实施ML的工具,这一点很重要。从灵活性和数据科学库角度看,Python是ML最常用的编程语言,Alteryx也因其拖放界面而广为好评。随着AI日益成为一种生活方式,会计行业未来预计也将受到颠覆性影响。
Shivam Arora,CPA,数据科学家,一家大型财会咨询公司的AI应用顾问,IMA达拉斯沃斯堡地区分会成员。联系方式:shivam.arora@,或在领英bit.ly/3gfpcjE上关注他。