1. 综合评价中的权重计算难题
做数据分析的朋友们应该都遇到过这样的困扰:面对一个包含多个指标的评价体系时,如何给每个指标分配合适的权重?这个问题看似简单,实则暗藏玄机。我去年参与过一个城市发展评估项目,就深刻体会到了权重分配的微妙之处 - 同样的数据,不同的权重分配方案,竟然得出了截然不同的结论。
权重的确定方法大致可以分为三类:主观赋权法、客观赋权法,以及主客观结合的方法。主观赋权法依赖专家经验,比如层次分析法(AHP);客观赋权法则完全基于数据本身,比如熵值法;而博弈论则能巧妙地将主客观方法结合起来。在实际项目中,我发现单纯依赖某一种方法往往存在局限,这也是为什么我们需要掌握多种方法并学会如何融合它们。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 层次分析法(AHP)实战
2.1 AHP的基本原理
层次分析法是一种经典的主观赋权方法,它的核心思想是通过构建判断矩阵来量化专家对指标相对重要性的判断。记得我第一次接触AHP时,最让我困惑的就是这个"判断矩阵"到底该怎么构建。其实很简单,就是两两比较各个指标的重要性,用1-9的标度来表示。
举个例子,假设我们要评估供应商,有三个指标:价格、质量、交货期。如果认为价格比质量稍微重要,可以打3分;质量比交货期明显重要,可以打5分。这样就能构建出一个完整的判断矩阵。
2.2 Python实现AHP
下面这个Python函数实现了完整的AHP计算流程,包括一致性检验:
python复制import numpy as np
def ahp_weight(judgment_matrix):
"""
计算AHP权重并进行一致性检验
:param judgment_matrix: 判断矩阵
:return: 权重向量, 最大特征值
"""
# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(judgment_matrix)
# 获取最大特征值(取实数部分并保留4位小数)
max_eigenvalue = max(eigenvalues).real.round(4)
# 获取最大特征值对应的特征向量
max_index = np.argmax(eigenva
