数据包络分析教程

时间:2022-04-25
本文章向大家介绍数据包络分析教程,主要内容包括为什么数据包络分析这么有趣?、数据包络分析的描述和假设、DEA背后的独创性想法、我们来看一个例子、数学时间到了!、数据包络分析的局限性、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

数据包络分析(Data Envelopment Analysis,也称DEA)是一种用于进行前沿分析的非参数方法。它使用线性规划来估计多个决策单元的效率,它广泛应用于生产、管理学和经济学。这项技术最初由Charnes,Cooper和Rhodes于1978年提出,自那之后它成为估算生产前沿的一个很有用的工具。

更新:Datumbox机器学习框架目前是开源的,可以免费下载了。查看包com.datumbox.framework.algorithms.dea以查看Java中Data Envelopment Analysis是如何实现的。

当我五六年前第一次遇到这个方法的时候,我对这个算法的独创性、简单性和它所使用的思想的巧妙性感到惊讶。我甚至惊奇地看到,这项技术在其常规应用(财务,运营研究等)之外的领域也运行得很好,因为它可以成功应用于在线营销、搜索引擎排名和创建综合指标。尽管如此,今天的DEA基本上只是在商业领域中被讨论。所以,在本文中,我将介绍DEA背后的基本思想和数学框架,下一篇文章将介绍该算法在Web应用程序上的一些新颖应用。

为什么数据包络分析这么有趣?

数据包络分析(Data Envelopment Analysis)是一种使我们能够根据特征(重量,大小,成本,收入和其他指标或KPI)对记录(商店,员工,工厂,网页,营销活动等)进行比较和排名的方法,而不用预先对特征值的权重进行假设。这项技术中最有意思的部分是它允许我们比较一些记录,这些记录由含完全不同测量单位的多个特征值组成。这意味着我们可以拥有以千米、千克或货币单位来衡量的特征值记录,并且仍然能够对它们比较、排列并找出最佳/最差和平均执行记录。是不是听起来不错?那就请继续读下去吧。

数据包络分析的描述和假设

正如我们前面所讨论的,DEA是一种被发明用来衡量商业生产力的方法。因此,它的一些观点来自于在这种背景下衡量生产力的方法。该方法的核心特点之一是将记录特征值分为两类:输入值和输出值。例如,如果我们测量一辆汽车的功率,我们可以说输入值是汽油多少升,输出值是它行驶的公里数。

在DEA中,所有的特征值必须是正数,并且,假设它们的值越高,它们的输入/输出的比就越多。此外,数据包络分析它假设:特征值可以作为非负权重的加权总和被线性组合起来,并形成输入和输出之间的比率,以测量每条记录的效率。为了让一个记录变得有效,它必须对于被提供的输入给予我们一个“良好”的输出。效率是通过产出和投入之间的比率来衡量的,然后与其他记录的比率进行比较。

DEA背后的独创性想法

到目前为止我们所讲的是一个常识/实践。我们使用输入和输出、加权总和与比率来排列我们的记录。DEA的妙点就在于计算特征值权重的方式。数据包络分析不是在我们运行分析之前设置特征值的权重然后决定它们的重要度,而是从数据来估量它们。此外,每个记录的权重都是不一样的!

DEA是如何选择权重的:我们试图通过选择合适的特征值权重来最大化每个记录的比率; 同时,我们必须确保,如果我们用相同的权重计算所有其他记录的比率,这些值都不能大于1.

刚开始这个想法听起来有点奇怪。难道这不会导致计算的加权比率不同吗?答案是肯定的。这是否意味着实际上我们为每个记录都用了不同的计算?答案是肯定的。那这样做有用吗?答案很简单:对于每一条记录,鉴于其特点,我们试图找到这个“理想情况”(权重),在这个情况下它的比率越高就越有效。但同时,在这个“理想情况”下,其他记录的输出/输入值比率都不能大于1,这意味着它们不可能比100%更有效了!一旦我们计算出每个“理想情况”下的所有记录的比率,我们用它们的比率来将它们排序。

所以DEA的中心思想可以概括如下:“根据每条记录的特点,找到我们能够达到最佳比率分数的理想情况。然后计算每个记录的理想比率,并用它来比较它们的有效性“。

我们来看一个例子

我们来看一下在哪里我们能用DEA的例子。

假设我们感兴趣根据多项特征来评估特定连锁超市的效率,这些特征包括:员工的总数,具体到平方米的商店规模,他们的销量和平均每个月他们服务的顾客数量。很显然,找到最有效率的商店要求我们比较有多个特征的记录。

要应用DEA,我们必须定义什么是我们的输入值和输出值。在这种情况下,输出值显然是销量和他们服务的客户的数量。输入值是员工的数量和商店的大小。如果我们运行DEA,我们将估算每个商店在理想权重下的产出投入(输出值输入值)的比率(如上所述)。一旦我们得到了他们的比率,我们将根据他们的效率来排名。

数学时间到了!

现在我们已经直观地了解了DEA的工作原理,现在是时候深挖数学了。

通过使用以下公式来估计有输入值x和输出值y的特定记录i(具有正值的特征向量)的效率比:

记录i的效率

其中u和v是记录每个输出值和输入值的权重,s是输出特征值的数量,m是输入特征值的数量。

找出特定记录i最优/理想权重的问题公式展开如下:

最大化h

同样,以上只是找到可以最大化记录i效率的权重u和v的数学方法,只要这些权重不会使任何其他记录的效率比100%高。

为了解决这个问题,我们必须使用线性规划。不幸的是,线性规划不允许我们使用分数,因此我们需要将问题的表达式转换为以下形式:

最大化h

我们应该强调的是,上面的线性规划问题会给出我们记录i的最优权重,并在最优权重下计算它的效率。对我们数据集中的每个记录都必须重复相同的操作。所以,如果我们有n条记录,我们必须解决n个单独的线性问题。这里是DEA如何工作的伪代码:

ratio_scores = [];

for every record i {

i_ratio = get_maximum_effectiveness();

ratio_scores[i] = i_ratio;

}

数据包络分析的局限性

DEA是一个很棒的技术,但它也有局限性。你必须了解,DEA就像一个黑盒子。由于每个记录的有效性比率使用的权重是不同的,努力去解释每个分数是如何被计算或为何被计算是没有意义的。一般我们都把重点放在记录的排名上,而不是效率分数的实际值。还要注意的是,极值的存在会导致分数的值非常低。

请记住,DEA使用特征的线性组合来估计比率值。因此,如果把不能把他们在我们的应用中线性组合起来,我们必须对这些特征值进行变换,并使它们可以被线性组合。这种技术的另一个缺点是,我们不得不解决许多线性规划的问题,如记录的数量,这要求有大量的计算资源。

DEA面临的另一个问题是,对于高维度的数据来说它的效果不是很好。要使用DEA,维数d = m + s的数量必须明显低于观察值的数量。当d非常接近或大于n时,运行DEA不会得出有用的结果,因为很可能所有的记录都会被发现已是最优的。请注意,当您添加新的输出变量(维)时,此维度中有最大值的所有记录都将找到最优值。

最后我们应该注意的是,在算法的一般形式中,DEA中的特征值的权重是根据数据来评估的,因此它们不使用那些可能在我们的问题中有关特征值的重要性的任何先验信息(当然在我们的线性问题中,合并这些信息作为约束条件也是有可能的)。另外,计算的效率分数实际上是每个记录的上限效率比,因为它们是在“理想情况”下计算的。这意味着,当不可能对特征的重要性作出任何假设时,DEA是一个很好的解决方案,但如果我们有任何先验信息,或者我们可以量化它们的重要性,那么建议使用其他可供选择的技术。

在下一篇文章中,我将向您展示如何开发一个JAVA数据包络分析,我们将使用这种方法来估计网页和文章在社交媒体网络中的流行度。

如果你喜欢这篇文章,就请随手分享到Twitter或者Facebook上。