评价模型 - 层次分析法(AHP)、熵权法、TOPSIS分析及其 Python 实现详解

评价模型是对复杂问题进行多维度分析和决策的重要工具。在这篇文章中,我们将详细介绍三种常见的评价模型:层次分析法(AHP)熵权法TOPSIS分析,并通过 Python 实现及例题帮助你更好地理解和应用这些方法。


一、层次分析法(AHP)

1.1 原理简介

层次分析法(AHP)是一种用于多准则决策的数学方法,其核心思想是将复杂问题分解为多个层次,逐步进行重要性比较,并最终获得权重和排序。

AHP 的主要步骤:

  1. 构建层次结构模型。
  2. 构造判断矩阵。
  3. 计算权重和一致性检查。

1.2 Python 实现层次分析法

示例题目:

假设某公司需要评估三个供应商的综合能力,考虑价格、质量和交货时间三个因素,如何用 AHP 进行排序?

代码实现:

import numpy as np

# 判断矩阵
criteria_matrix = np.array([
    [1, 1/3, 3],
    [3, 1, 5],
    [1/3, 1/5, 1]
])

def calculate_weights(matrix):
    eigvals, eigvecs = np.linalg.eig(matrix)
    max_eigval = np.max(eigvals.real)  # 最大特征值
    max_eigvec = eigvecs[:, np.argmax(eigvals.real)].real  # 对应特征向量
    weights = max_eigvec / sum(max_eigvec)  # 归一化
    return weights, max_eigval

# 计算权重和一致性比率
weights, max_eigval = calculate_weights(criteria_matrix)
n = len(criteria_matrix)
CI = (max_eigval - n) / (n - 1)  # 一致性指标
RI = [0, 0, 0.58, 0.9, 1.12][n-1]  # 随机一致性指标(对应矩阵大小)
CR = CI / RI  # 一致性比率

if CR < 0.1:
    print(f"权重: {weights}, 矩阵通过一致性检查,CR={CR:.4f}")
else:
    print("判断矩阵一致性检查未通过,请调整判断矩阵!")

1.3 结果解释

  • 权重:用于评估各因素的重要性,例如 [0.2, 0.5, 0.3] 表示质量权重最高。
  • 一致性检查:若 CR 小于 0.1,说明判断矩阵的一致性较好。

二、熵权法

2.1 原理简介

熵权法通过计算数据的熵值来衡量指标的离散程度,从而确定指标的重要性。熵值越小,说明指标越重要。

熵权法的步骤:

  1. 构建原始数据矩阵。
  2. 数据归一化处理。
  3. 计算每列的熵值。
  4. 根据熵值计算权重。

2.2 Python 实现熵权法

示例题目:

评估某系统的性能,包含响应速度、准确率和资源消耗三项指标。

代码实现:

import numpy as np

# 原始数据矩阵
data = np.array([
    [0.9, 0.8, 0.6],
    [0.7, 0.9, 0.4],
    [0.8, 0.7, 0.5]
])

def entropy_weight(data):
    # 归一化处理
    norm_data = data / data.sum(axis=0)
    # 计算信息熵
    entropy = -np.sum(norm_data * np.log(norm_data + 1e-10), axis=0) / np.log(len(data))
    # 熵权
    weights = (1 - entropy) / np.sum(1 - entropy)
    return weights

weights = entropy_weight(data)
print(f"熵权法计算的权重: {weights}")

2.3 结果解释

  • 权重:表示指标的重要性分布,例如 [0.4, 0.3, 0.3] 表示响应速度最重要。

三、TOPSIS分析

3.1 原理简介

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)是一种评价方法,其基本思想是:

  1. 寻找最优解(正理想解)和最劣解(负理想解)。
  2. 计算每个备选项与最优解和最劣解的距离。
  3. 综合距离计算得分。

3.2 Python 实现 TOPSIS

示例题目:

对三个方案进行评分,考虑成本、性能、可靠性三项指标。

代码实现:

def topsis(data, weights):
    # 数据归一化
    norm_data = data / np.sqrt((data**2).sum(axis=0))
    # 加权矩阵
    weighted_data = norm_data * weights
    # 正理想解和负理想解
    ideal_best = weighted_data.max(axis=0)
    ideal_worst = weighted_data.min(axis=0)
    # 计算距离
    dist_best = np.sqrt(((weighted_data - ideal_best)**2).sum(axis=1))
    dist_worst = np.sqrt(((weighted_data - ideal_worst)**2).sum(axis=1))
    # 计算得分
    scores = dist_worst / (dist_best + dist_worst)
    return scores

# 示例数据
data = np.array([
    [100, 80, 90],
    [95, 85, 85],
    [90, 90, 80]
])
weights = np.array([0.3, 0.4, 0.3])  # 假设已知的权重

scores = topsis(data, weights)
print(f"TOPSIS分析得分: {scores}")

3.3 结果解释

  • 得分:得分越高,方案越优。例如 [0.6, 0.7, 0.8] 表示第三个方案最好。

四、对比与总结

方法优点缺点适用场景
AHP结构清晰,适用于定性分析构造判断矩阵较主观指标数量较少的场景
熵权法数据驱动,无需人为干预对数据质量要求较高数据指标较多的场景
TOPSIS简单高效,能平衡正负理想解需先确定权重综合指标评分与排序

五、总结

  • 层次分析法(AHP)适用于主观评估问题,可用于小型决策场景。
  • 熵权法适用于大数据量、客观数据指标的分析。
  • TOPSIS 是一种高效的多目标决策方法,适用于综合排序和选择。

通过本文的代码与示例,你可以轻松掌握这三种评价模型的核心思想和实现方式,进一步拓展到实际应用中!

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日