最近很多小伙伴都来找居士咨询关于数据分析相关的问题,而居士在市面上也一直没有找到这样一本专门针对数据分析的体系性书籍。
幸好,现在有这样一本书面世了,就是我的好友的新书《数据分析通识》。
当看到这本书的目录时,我是十分开心的,因为里面解答了很多群友们经常问到的问题,因此将本书推荐给大家,希望大家能从书中有所收获。
另外,居士也会抽取 3位 幸运读者,赠予本书。赠书方式在文章末尾说明。
下面,是本书的介绍。
什么样的模型是好的模型?相信这是每一个数据分析师和大数据AI算法工程师都曾经默默思考过的问题。
为了更全面地思考这个问题,我们不妨从以下三方面进行讨论。
如何理解“模型”?
如何理解“好”?
有万能的模型么?
“模型”的英文model,究其拉丁词源,是从modus这个词演化而来。而modus这个词在拉丁文中的含义基本可以用“测量”“标准”来概括。在汉语字典中,“模型”这个词可以分成两个字来理解:“模”是指规范、标准,“型”是样式的意思。将两种语言环境下的含义进行统一,“模型”就是“参照一定规范与标准而形成的样式”。
为理解“模型”这个概念,有两点内容是需要着重理解的。
“模型”参照一定的规范与标准,但并不一定要完全复制。例如,依照着实体的飞机,可以制作飞机模型。这个“模型”中,规范与标准是真实的飞机,最终形成的样式是一个小型的仿照真实飞机样子制作的模子。这种尽可能仿真无损地复制规范与标准的样式是模型。又如,将一些互联网移动支付行为,以数据关系的形式形成交互行为模型。在这个过程中,规范与标准是真实世界的互联网移动支付行为,最终形成的样式是一个反应交互行为的数据表现形式,即交互行为模型。在这个模型中,表现的真实支付行为可能会不太完整,可能仅仅是一小部分支付行为的数据记录,也有可能是一些经过处理与简化的抽象表达。这种参照规范与标准,进行抽象、简化、抽取或组合等方式形成的样式也是模型。
“模型”落地形成的样式,可以是物理实体,也可以是静态的抽象表达,还可以是或静态、或动态的实体与实体间的影响与关系。例如:上面提到的飞机模型就是一个物理实体;如果把用户在某网站上的如ID、年龄、职业等信息以一维表的形式组织,表中每一行记录代表一个用户的基本信息,这里就是对用户的抽象表达而形成的模型;如果以一定的形式(图示、图表、描述等)将家庭成员中的夫妻、父女、母子、母女、父子等关系进行记录,该记录反映的家庭成员间的关系同样是一种模型;“气温升高,冰块就会融化”,这句话表述的气温与冰块间的影响关系(不论是定性还是定量)也是一种模型……
数据科学领域中的“模型”并不脱离“模型”本质的含义,“规范与标准”可以是非常复杂的现实世界,也可以是一个个具体领域中业务关注的客观存在。但由于将研究内容确定在了数据科学的范围内,最终落地的“样式”多为各种各样的数据表达。当然,这其中包括静态表达,也包括动态表达。
在数据科学的相关领域中(包括数据分析、数据挖掘、人工智能等数据发挥巨大作用的领域),按照“模型”的使用形态,可以被分成以下三个大类:业务模型,数据模型,函数模型。
业务模型的含义
业务模型是将现实世界、复杂事物、具体问题以某种特定方式进行重塑的模型。业务模型中所谓的“规范与标准”无疑是现实世界、复杂事物、具体问题等客观反映。而业务模型的“样式”,是一个抽象的存在,但这个抽象的存在却有着比较形象的表现形式,这个表现形式是多种多样的。
举例来讲,图1是某电商APP的业务逻辑模型图。该图描述的是该电商APP用户下单后的整个业务流程。在这个业务模型中,“规范与标准”是用户从支付到发货再到收货的整个现实环节,“样式”是抽象的,也就是一个非常虚拟的业务流程概念,下面的这张流程图仅仅是该业务模型的一种具体表现形式。可以把该表现形式下的业务模型称作一个完整的业务模型。但读者应该知道,这样的业务模型,实际上是一种抽象的(或产品的、流程的、组织的、逻辑的)存在,这种表现形式并不是业务模型的全部。
img图1 某电商APP的业务逻辑模型图
数据模型的含义
虽然说通过流图、流程图、结构图等方式可以将业务模型形象化,但业务模型的本质是抽象的。所有的业务模型都要被落地处理,在不同的领域就会有不同的表现方式。在数据科学方面,业务模型是以数据模型的形式落地的。
数据模型是对现实世界以数据方式描述的模型。与业务模型一样,数据模型的“规范与标准”同样来源于现实世界中的各种场景,但数据模型的表现“样式”更加具体一些,它是以组织化的数据形式来表现的。在数据模型的组织与处理过程中,最重要的工具就是数据库和数据仓库。
一般认为,数据模型包含的内容主要有三方面:数据结构、数据操作、数据约束。
数据结构是指要描述的数据的类型、内容、性质以及数据相互间的联系等。数据结构是数据模型的基础,数据操作和约束都基本建立在数据结构上。不同的数据结构具有不同的操作和约束。
数据操作是指用于要描述的数据的各项操作。具体包括每个操作的操作类型和具体操作方式。数据操作的若干操作连带上隐含于其中的推理规则,用以对目标类型的有效数据对象集合进行操作。
数据约束是指数据结构内部的或数据与数据之间的组织规则、相互联系、制约和依存关系,以及数据动态变化的规范。数据约束的目的是保证数据在存储与处理过程中的正确性、一致性和相容性。
以数据结构、数据操作、数据约束为底层逻辑基础,形成了当前常见的三种数据模型:层次数据模型,网状数据模型,关系数据模型。
函数模型的含义
函数模型是表示实体变量与实体变量间变换关系的模型。
与业务模型和数据模型不同的是,函数模型几乎只用来表示实体变量之间的关系,这种关系以数学函数的形式表达,表达更加精准、多样、简洁且不失丰富。函数模型的“规范与标准”是现实世界与业务中的实体变量间的真实关系。而它的“样式”是函数。在数学中,函数有三个元素:定义域、值域、对应法则,这些也是函数模型的前提与要素。
定义域规定了函数的输入范围,值域定义了函数的输出范围,对应法则确定了从输入到输出的映射关系。对于函数模型来讲,这个映射关系可以是事先指定好的,指定的内容既包括函数形式,也包括参数值。也可以是先确定好函数形式,而不指定参数值,在使用时再确定其参数值。
一般情况下,函数模型在使用时首先要确定函数形式。而函数参数的确定则可以有两种思路:一种是直接指定这些函数的参数,或是在经过一定程度的分析后,指定函数模型的参数;另一种思路是假定当前数据的输入与输出的映射结果是已知的,或是输出的目标形式是已知的,根据输入与输出的关系,设定一定的目标,通过一定的机制,自动计算这些参数。后面这种确定函数形式后,通过数据计算参数的整个流程,常常被称作机器学习。用数据来计算参数的函数模型就是机器学习模型,而通过数据来计算机器学习模型参数的动态过程被称作模型参数训练,简称训练。
常见的机器学习模型(包括深度学习模型)都是函数模型。
可见,模型是现实世界的浓缩和模仿,一个好的模型,就一定是一个可以以尽可能低的成本,同时尽可能真实地反映客观世界概况的模型。
但是,此话说得简单,而在面对实际场景时,关于“好”的具体形态,往往又令我们感到力不从心。
这不得不提到数据科学领域非常流行的一句话:“好的数据胜于好的特征,好的特征胜于好的算法。”应用于机器学习时,这句话还有另一种表达形式:“数据和特征决定了机器学习的上界,模型只是在不断逼近这个上界而已”。因此,不管是在推荐领域,还是在广告领域;不管是在电商系统,还是在Feed流……一定业务场景确定了,数据规模、数据维度确定了,“最好”模型可以达到的最佳能力几乎就可以确定了。只是说,要找到这样的模型,会特别特别困难。
好的模型,是一个可以达到更好业务效果的模型。
不同的业务场景中,数据形态各不一样。即便是同样的业务场景下,由于数据量的规模有大有小,数据维度有多有少,“上界”就会不一样。有时,我们会认为可以取得更好业务效果的模型就是更好的模型,认真来讲,有时这个锅真不应该模型来背。一个好的模型,应该是在一定的数据规模和数据维度的条件下,可以最接近上界的映射反应。
好的模型,是一个可以反映真实业务关系的模型。
靠近数据与特征确定的上界,主要依赖模型自身通过参数的调节能力。但另一个影响模型业务效果的因素也不能被忽略:模型的归纳偏置。模型的归纳偏置在数据科学的理论中,被当作反映数据样本的先验假设。归纳偏置本是一个数学与逻辑学中比较正式的概念,但在数据科学中,这个概念与函数模型得到很好的解耦。归纳偏置是一些简单的逻辑表述,这些逻辑并不应该被凭空构想,而应该基于实际的业务场景进行提炼。
例如,在SVM模型中,我们会认为不同分类之间的分类超平面应该距两个分类的支持向量间的距离是相等的并且是最大的。但是为什么?这是因为我们认为两个分类间的间隔就应该如此,这是在“业务”上带入的假设。但如果是在下面的场景中,两个分类之间的平面应该更靠近A还是更靠近B?方块样本的数量非常多,如此多的样本集中分布在一片空间,我们也有理由相信,B更有可能是分类的分界超平面。当然,这也是一个假设。
img在考虑模型构建时,不用太多考虑归纳偏置的问题。真正需要考虑归纳偏置应该是在模型构建之前(即选择模型时)进行。归纳偏置在选择模型或设计模型时是非常重要的考虑因素。有些模型甚至就是基于特定的归纳偏置而设计的,如果归纳偏置本身就与业务现实差距很大,那基于该归纳偏置设计的模型也将失去意义。
好的模型,有时也需要更好的可解释性。
一般来讲,用数据训练一个机器学习模型,这个机器学习模型就可以被当作一个“黑盒”,使用这个模型时,只需要关注输入与输出就可以了。但在很多场景中,人们在关注输入与输出的关系时,也非常关注造成输出结果的原因。例如,建立起一个医疗智能诊断模型,当输入一个人的各项身体机能指标后,它会输出身体的健康状态,以及如果身体状态不佳时,最可能患上哪种疾病。如果有一个参与者,使用该模型后,被诊断出身体状态不佳,近期最可能患上感冒。此时参与者自我感觉良好,想知道自己身体状态不佳是为什么,表现在哪里。此时,如果模型可解释性不强,就得不到相应的衍生结论。
模型的可解释性同时也可以为接下来业务的提升与改进提供非常有意义的指导与借鉴。例如,如果通过一个金融风控模型准确高效识别出有金融欺诈意图的用户,模型的可解释性可以对接下来如何进一步保障服务安全,从哪里入手,采取措施后预计会有什么样的后果等都有非常可靠的指导与评价。
一些模型本身带有表达特征重要性的因子,如很多的树型结构的模型(决策树、随机森林、GBDT等)、线性模型(特征参数的绝对值大小)、LR模型等。这些表达重要性的因子可以提供一定的模型解释能力。
有些模型虽然不包含表达重要性的因子,但它的结构是透明的,可以通过解析模型结构,提炼输出的可解释原因。例如,KNN、很多聚类模型等。
像人工神经网络这样的模型,从结构上很难获得模型的可解释依据,它的可解释性就非常差。这也是制约人工神经网络在结构化数据的业务中被进一步应用的一个很大原因。
很难对这样的一个问题,给出肯定的答案。因为一个万能的模型,就一定会照顾到这个世界上几乎所有的数据,所有的特征,以及所有的业务知识。这是非常困难的一件事。
但对于某一个具体的业务场景与一定的条件约束,找到那个最合适的模型也并不是没有思路。奥卡姆剃刀就是这其中的一个非常重要的指导思想。
“如无必要,勿增实体”,这是奥卡姆剃刀原则的全部。
试想一下,从拿到数据,再到根据这些数据训练模型,并输出结果,这其中导致模型输出特定结果发生的原因可能来自哪里?这个原因毫无疑问会来自数据携带的信息,也会来自在特征工程时做过的处理,还会来自模型本身带有的归纳偏置。
如果一个对数据科学与数据处理原理不是很明白的人,或者是一些模型的探索者、业务的实践者,看到了模型的运行机制,强行修改模型,这等同于在这个数据信息处理的过程中,加入了除数据规律、特征工程提取、模型归纳偏置之外的其他信息。例如,在CART决策树模型中,某建模人员把按照Gini系数减少最多的决策特征排列,强行变换了其中两个中间节点的特征位置,这就人为地加入了对特征重要程度的判断。当然,如果建模人员有非常非常非常确定的把握,经过了改造的模型也是有可能表现出更好的泛化能力的。但考虑到很多情况,人总是经不住拍脑袋做决定的冲动,强行改造模型都是一种业务上的尝试,改造后的模型基本没有复用性。对整体业务结果与性能的提升程度,其实不如好好研究怎么选择样本,怎么进行特征工程来得实在。
奥卡姆剃刀原则在底层逻辑上对没有根据就随意修改模型的行为说了“不”,即使是为了尝试。不过,这并不是说在选择模型时不应该尝试去,而是说可以去尝试各种模型隐含的假设的合理性,尝试某个特征工程环节的有效性,而不应该去尝试“任意改造模型”的可行性。
数据科学,其实就是一场信息游戏。
虽然很难通过一个万能的模型整合世界上所有数据带有的信息,但通过迁移的方式对领域内的信息进行整合,并应用于更多相关业务场景,却是一个非常有效的折中。近几年,在NLP领域中大行其道的BERT等带有预训练机制的模型,充分整合了自然语言中的先验信息,让模型在非常多的场景下都可以得到“屠榜”的业务效果。同样神奇还有另一个模型——GPT3。在整合了极其巨量的互联网数据信息,并以1750亿参数为调整空间,它可以帮助人们完成设计原型图、制作资产负债表、查到某些名人的社交账号等等。
虽然人们依旧普遍认为当前不会存在一个万能的模型(这个模型非常有可能会是一个类似“终结者”的机器人),但回想在1900年(莱特兄弟于1903年发明了飞机),又有多少人可以想到人类可以自由飞翔于天际?
赠书的方式很简单,从本文的评论留言中选取3名点赞数最多的读者(截止今晚,10.28号,晚上10点),每人赠送一本。
晚10点时居士会在朋友圈公布中奖名单。中奖的小伙伴请主动联系居士,赠书会在活动结束后几天后寄出。
没有中奖或者等不及的小伙伴也可以直接在下面链接里面直接购买。书是好书,居士已读,值得推荐。