数据有不同的类型。结构化数据以预定义的格式存在,通常易于进行分析。但企业的大多数数据都是非结构化的,存在于自由流动的人类语言(即自然语言)如英语中。人类能够很容易理解这种类型的数据,计算机如果不借助一定的技术帮助,理解起来会很困难。
就会计工作而言,发票文本、交易描述和书面沟通等就是非常典型的非结构化数据。借助于自然语言处理(NLP)等技术,之前由初级会计人员手工完成的一些工作可以自动化。不仅如此,NLP还可在会计更具战略性的工作方面提供支持。鉴于管理会计的职责是为内部决策提供支持,他们可充分运用分析技术来提供洞见。NLP以及人工智能(AI)和机器学习(ML)都是当下管理会计师可运用的大量技术中的新成员。
上述这些NLP技术可应用于多个管理会计场景,情感分析是其中一个很好的例子。财务是平衡计分卡的四个维度之一,企业之前往往将财务指标作为绩效评价的唯一指标,但现在正逐渐转向更为“平衡”评价方式,比如加入平衡计分卡的客户维度。在分析客户情感时,管理会计师可以应用NLP技术和预测性ML模型。
NLP技术在人类所说所写的内容和计算机可处理的内容之间搭建了桥梁。
可选工具
有一点我们要清楚,在基于电子表格(如微软Excel)的软件中,大部分ML分析的实施效果并不理想。尽管如此,在构建有效的预测模型时,仍有许多简单易用的工具可供选择。在工具的选择方面是非常灵活的,因为NLP分析可以在专有软件、统计语言或通用编程语言中运行(见“为什么学习编程?”)。事实上,选择哪种工具往往取决于个人偏好。接下来,我们将着重看看几个常用工具。Python。
Python是一个非常不错的选择,原因有二:
首先,Python拥有庞大的数据科学库,其开源性质意味着全球用户都可以开发和发布各种模块。常用的库包括用于一般ML任务的scikit-learn(),用于更复杂的NLP技术的NLTK()以及用于基础数学运算的SciPy(),用于深度学习的高级库则有Keras(Keras.io)、TensorFlow()和PyTorch()。
其次,Python是一种通用型语言,相对简单易学。其语法简洁易懂,可用于包括ML在内的一系列任务。在我个人的实际工作中,我使用Python来完成这些工作:自动下载发票,使用光学字符识别提取发票信息并对其进行预处理,然后运行ML模型。偶尔我还把它当计算器使用。
Python的缺点是编程语言比较难学(即使短于其他语言),编程知识有限的用户不太好理解,以及开源语言的安全性等问题(尽管这些问题可通过规划与尽职调查来解决)。
Alteryx最近发布了智能套件(bit.ly/3AIUf0J),其中包括一套有助于NPL和其他ML任务的工具,可大大提升Alteryx在NPL任务中的能力。Alteryx最大的劣势是成本高昂,每位用户必须按年支付使用费,而Python和R都可以免费使用。
流程
假设某企业定期收集客户评价,且所有评价都是以开放式问题形式收集的。
与之相反的是,在基于规则的方法下,算法只会查找客户提供的特定词汇(如“大”“好”“少”“坏”)。随着数据的变化性增加,这种基于规则的方法很快就会变得无效,因为几乎不可能提供足够多的规则去覆盖许多可能的变化,所以这一方法仅适用于充分标准化的基础数据。而如NPL之类的ML方法自身可形成对数据的理解,甚至可能创建在其他情况下几乎不可能编码的细微连接(如将不同时态的“improve”视为同义词)。
开发ML模型的一般流程如下:
■将数据转换成机器可以理解的形式。这个过程被称为“向量化”。
■将向量化数据分组为单独的聚类,这样具有相似特征的数据会组合在一起。从每个聚类中选择一些观测值来创建代表性数据样本。
■使用样本数据训练ML模型。
■根据需要调整模型,然后部署并持续更新,以获得情况变化时的最佳结果。
数据采集和预处理
理想的做法是获得尽可能多的数据,收集的客户评价最好不少于两年。使用相对较大的数据集有助于避免模型对训练数据过度拟合,或进行过于具体的调整。ML模型基于特定的数据样本进行训练,由于采样通常使用预定义的方法进行,一些偏差可能会导致训练数据出现异常值,或者数据特性/数据点可能无法代表更广泛的数据。如果模型与训练数据过于“吻合”,那么将训练结果推广应用到从未见过的数据上的空间就很小。
预处理是一个至关重要的步骤。数据科学领域的一个俗语是“垃圾进,垃圾出”,所有的ML算法都是使用数据进行训练的,所以干净、有用的数据是创建有价值的ML模型的必要条件。预处理指的是让数据“准备就绪”,以便ML模型有效地从中学习。该过程有时被称为数据暂存或数据清洗。
假设一家航空公司的客户评价包含语法错误,语句也不完整,比如很常见的一条:“飞机上的体验很棒。机组人员很有礼貌。食物很美味。会再次乘坐。”设想一下工作人员会怎样分析这条评价。他们可能不会注意任何停用词、标点符号或其他如“飞机”或“机组人员”之类的词汇,相反,会根据其对英语语言的了解,着重寻找那些代表乘客体验的关键字。“伟大”“礼貌”和“美味”这些词很显然代表满意,“会”(而不是否定的“不会”)和“再次”虽然指向不是特别明显,但也表示积极的反馈。
经过预处理,这几个关键词(标签)保留下来:很棒、体验、飞机、机组人员、礼貌、食物、美味、会再次乘坐。对于ML模型来说,这一短语都具有很大的信息价值,因为其包含了将“积极”类别的词汇与其他两个类别(“中性”和“消极”)的词汇区分开来的独特标签。这并不是说预处理后包含了所有有用的词,预处理永远无法使数据完全干净,但它可以使NPL模型再进一步,将特定的单词与其对应的标签联系起来。人类根据自己在生活中学习的自然语言知识,下意识地进行这种预处理,计算机则要求对这些数据进行清洗(当然,除非为其提供了自动预处理数据的模型)。
包含有用信息的预处理数据是训练任何ML模型的前提条件。根据我的经验,用Alteryx这样的工具清洗数据比用编程语言更容易。在使用Python训练模型之前,我经常使用Alteryx对数据进行处理。
向量化
数据经过预处理之后,还需将其转换成机器可以使用的格式。计算机不能理解自然语言数据,除非将这些数据转化为计算机可识别的某些数字编码。
向量化是用数字代表事件,有几种技术可用于向量化数据,其中最常见的两种工具如下:
untVectorizer。这是最简单易用的向量化程序。顾名思义,untVectorizer通过计算给定标签在文本中出现的次数来创建向量。短语“sheshellsoutforshellsnearTheshore”会被表示为“121111”,因为除“shell”以外的其他单词都只出现了一次。
TF-IDFvectorizer。TF-IDF代表“词频——逆文档频率”。这款工具基于这样一个假设:如果某个特定标签在一个短语中出现多次,但在其他短语中不常出现,那么它可能是对该短语的描述。TF-IDF通过统计分析生成向量。无论采用何种方法,基本动机都是将每条客户评价表示为一个带方向性的数字序列:一个向量。图1展示了一个向量矩阵。图中以颜色强调的向量表示上文提及的评价示例,在每个可用评价词语的旁边都有一个数字,表示该词语出现的次数。训练ML模型时,示例评价4被表示为一个“11111111”的八维向量(因为每个列出的标签在此评价中都只出现了一次),而评价6被表示为“01000000”(这表示只有“体验”在此评价中出现,这可能是一个负面评价)。
聚类
ML主要有三种类型:有监督学习、无监督学习和强化学习。有监督学习处理的是带有标签或“答案”的数据。在本文案例中,数据来自于客户评价,标签则是相应的情感标签。ML模型使用有监督学习来训练或“学习”数据与其相应标签之间的联系。无监督学习用于在没有任何外部标签的数据中寻找模式,这一能力在将数据分组为具有相似特征的数据集时特别方便,分组后这些数据集用于创建代表性的训练样本。强化学习是ML领域的最新创新,通过奖励系统创建模型。
创建向量数据的代表性样本时,我倾向于使用无监督ML技术,将相似类型的数据点分为不同的组。聚类是无监督学习的一种类型。
基于密度的带噪空间聚类(DBSCAN)是一种先进的聚类算法,基于所绘制图表的密度范围对数据进行聚类。DBSCAN的一大优点是可以发现异常值:与大多数其他聚类方法不同,该算法不需要将每个数据点分配给某个聚类。
我一般都优先使用k均值聚类算法,因为其较为简单,对计算能力的要求也比较低,除非要达成特定结果我才会选择其他算法。聚类数量取多少最合适,取决于客户评价的变化程度。将全部评价聚类后,就可以从每个聚类中挑选固定数量的评价来创建训练样本。这样做有两个好处:(1)训练数据包含的评价数量至少与聚类数量相同;(2)创建的样本包含所有聚类中的评价,因而更有代表性。将评价数据聚类甚至可以揭示三种情感的初始分组状况,从而可以看到分组情况。k均值聚类过程如图2所示。
模型训练
假设训练数据中包含了来自每个聚类的一条评价,则其包含的评价数有k条。这些评价应该已经预先被工作人员贴上了相应的情绪标签。这就提出一个重要的问题:哪种类型的ML模型最适合训练数据?这本身是本文的主题,总的来说有许多模型可供选择,且这些模型也存在种种变化。虽然客观信息可以指导选择,但选择时也要考虑主观因素。可供选择的技术模型包括k最近邻算法、朴素贝叶斯算法、逻辑回归算法、决策树算法,及更复杂的建模、集成和深度学习方法。其实无论选择何种技术,训练ML模型的过程都是相似的。假设ML模型已经选定,接下来便是进一步将训练数据集划分为两个独立的数据集,这就是所说的“分割训练集和测试集”,其中一个数据集要远大于另一个数据集,常用的划分比例为80:20或70:30。
然后,使用较大的数据集训练ML模型,即通过选定的软件将数据输入ML模型。该模型将数据集中的每条记录与相应的标签(情感)进行比较,从而形成将具体评价与相应标签联系起来的“知识”。
理想的状态是在ML模型的复杂性和通用性之间达成适当平衡,但这一点很难实现。模式必须具备一定的复杂性,既不能捕捉不到训练数据中的关系,也不能过于深入,导致无法将学习的知识应用于其他数据(通用性不强)。在ML术语中,这被称为偏差-方差权衡(bit.ly/3Ho8uuw)。
部署和迭代
在更大范围内运用ML模型并将其纳入生产流程是另一项工作,相较于数据科学,这与软件开发的关系更大。在实践中,需要组建专门的团队来致力于在整个企业部署ML模型。
部署模型后,非常重要的一点是践行“持续改进”理念,这是源于日本的一种有效的经营思想。ML模型的开发是一个迭代过程,即便完成初始部署后,也要不断引入更多数据、调整参数,甚至会根据会计环境的变化或企业业务选用其他模型。
对于那些希望学习更多ML建模知识的会计人员来说,他们首先应该熟悉中级统计学知识,因为几乎所有ML模型都有底层的统计算法;其次,阅读更多关于ML的书籍(可参考“MachineLearningforBeginners”一文,bit.ly/3HhbEjD);最后,了解实施ML的工具,这一点非常重要。从灵活性和数据科学库角度看,Python是ML最常用的编程语言,Alteryx也因其拖放界面而广为好评。随着AI日益成为一种生活方式,会计行业未来预计也将受到颠覆性影响。
上海市青浦区蟠龙路200号
021-69768000-68189
021-69768028
中国会计视野
ACCAConnect2CentralQuay89HydeparkStreetGlasgowUnitedKingdomG38BW
+44(0)1415822000
+44(0)1415822222
北京市朝阳区建国门外大街一号中国国际贸易中心1座3117-3120
100004
010-65186123/22
010-65269778
上海市淮海中路381号中环广场2929室
200020
(021)51535200
(021)51535208
广州天河北路183号大都会广场10楼1014-1016室
510620
020-87557932/33*805
020-87557935
上海市浦东新区陆家嘴环路1233号汇亚大厦1508A室
200120
+86(0)2161601558
+86(0)2161601568
北京市朝阳区东三环北路八号亮马河大厦二座二层V204室
+86(0)1065900751
+86(0)1065900588
深圳市福田区中心四路1号嘉里建设广场2座15楼49室
518048
+86(0)755-33043177
+86(0)755-33043175
重庆市渝中区邹容路68号大都会商厦1202室
400010
+86(0)2363713538
+86(0)2363816175
10ParagonDrive,Montvale,NewJersey07645,USA
(1)2015739000
(1)2014741606
北京市东城区东长安街1号东方广场东一座办公楼504-505室
100738
4000-462-262(常规咨询)
(8610)85911378(培训/市场合作)
(8610)82345674(Prometric预约考场热线)
(8610)85910819
北京市东城区东长安街1号东方广场C1座写字楼1103室
+86(0)10-85188622/23
上海市静安区北京西路968号嘉地中心办公楼1708单元
200041
+86(0)21-31007900
香港湾仔皇后大道东213号胡忠大厦27楼
+852-22877277
CharteredAccountants’Hall,MoorgatePlace,LondonEC2R6EA
+44(0)2079208100
上海市中山西路2230号上海立信会计学院2号楼14楼
400-820-2803
Level6,555LonsdaleSt,Melbourne
GPOBox1637,Melbourne,VIC3001
+61386653100
+61386653130
北京市朝阳区霄云路36号国航大厦1201室
100027
8610-844675708610-84467590
北京市东城区东长安街1号东方广场中2座办公楼3层307-308B室
(8610)85185575
中国上海市南京西路1168号中信泰富广场40楼4003-4004室
+862180119501
广州市天河区珠江新城花城大道85-87号高德置地广场A座2504