熵权法是一种用于多属性决策分析中的加权方法,通常用于综合评估和选择最优方案。该方法基于信息熵的概念,通过衡量各个指标的信息量来确定其权重。
熵越大,表示该指标的信息量越分散,权重越低;熵越小,表示该指标的信息量集中,权重越高。
具体步骤包括:
- 标准化处理:将不同维度的数据转化为无量纲数据,以便进行比较。
- 计算熵值:通过对每个标准化后的指标值进行计算,得到熵值,反映每个指标的信息熵。
- 计算权重:根据熵值的大小,计算各个指标的权重,熵值越小,权重越大。
熵权法能够有效避免人为赋权的主观性,提高权重分配的客观性,常用于评价和决策分析中。
下面是一个使用熵权法计算权重的MATLAB代码示例:
% 输入数据矩阵,行表示不同的样本,列表示不同的指标
data = [
8 7 9;
6 5 8;
9 6 7;
7 8 6;
];
% 步骤1: 数据标准化(列标准化)
normalized_data = (data - min(data)) ./ (max(data) - min(data));
% 步骤2: 计算各列的熵值
[m, n] = size(normalized_data);
p = normalized_data ./ sum(normalized_data, 1); % 计算每列的比重
e = -sum(p .* log(p + eps), 1) / log(m); % 计算熵值,eps防止log(0)错误
% 步骤3: 计算各列的权重
d = 1 - e; % 计算差异度
weight = d / sum(d); % 归一化权重
% 输出各个指标的权重
disp('各个指标的权重:');
disp(weight);
代码解释:
- 数据标准化:
(data - min(data)) ./ (max(data) - min(data))
,将数据转化为[0, 1]区间。 - 计算熵值:根据标准化数据,计算每个指标的信息熵。
- 计算权重:通过计算差异度并归一化得到每个指标的权重。
这段代码会输出每个指标的权重,你可以将data
矩阵替换成你自己的数据集。
熵权法的计算公式
1. 数据标准化:
将原始数据矩阵中的每一列(即每个指标)进行标准化处理,通常使用最小-最大规范化:
x i j ′ = x i j − min ( x j ) max ( x j ) − min ( x j ) x_{ij}^{'} = \frac{x_{ij} - \min(x_j)}{\max(x_j) - \min(x_j)} xij′=max(xj)−min(xj)xij−min(xj)
其中:
- x i j x_{ij} xij 是第 i i i 个样本第 j j j 个指标的原始值;
- x i j ′ x_{ij}^{'} xij′ 是标准化后的值;
- min ( x j ) \min(x_j) min(xj) 和 max ( x j ) \max(x_j) max(xj) 分别是第 j j j 个指标的最小值和最大值。
2. 计算各列的比重 p i j p_{ij} pij :
对每个标准化后的值
x
i
j
′
x_{ij}^{'}
xij′,计算该值在该列(指标)中的比重:
p
i
j
=
x
i
j
′
∑
i
=
1
m
x
i
j
′
(第 j 列的归一化比例)
p_{ij} = \frac{x_{ij}^{'}}{\sum_{i=1}^{m} x_{ij}^{'}} \quad \text{(第 j 列的归一化比例)}
pij=∑i=1mxij′xij′(第 j 列的归一化比例)
其中: m m m 是样本数量。
3. 计算熵值 e j e_j ej:
通过每个比重 p i j p_{ij} pij,计算第 j j j 个指标的熵值:
e j = − 1 ln ( m ) ∑ i = 1 m p i j ln ( p i j + ϵ ) e_j = - \frac{1}{\ln(m)} \sum_{i=1}^{m} p_{ij} \ln(p_{ij} + \epsilon) ej=−ln(m)1i=1∑mpijln(pij+ϵ)
其中:
- ϵ \epsilon ϵ 是一个很小的常数,用于避免 ln ( 0 ) \ln(0) ln(0) 的情况;
- ln ( m ) \ln(m) ln(m) 是对熵进行标准化的常数。
4. 计算差异度 d j d_j dj :
计算每个指标的差异度,差异度与熵值成反比:
d j = 1 − e j d_j = 1 - e_j dj=1−ej
其中: d j d_j dj 表示第 j j j 个指标的差异度。
5. 计算权重 w j w_j wj:
根据差异度计算权重,并进行归一化:
w j = d j ∑ j = 1 n d j w_j = \frac{d_j}{\sum_{j=1}^{n} d_j} wj=∑j=1ndjdj
其中:
- w j w_j wj 是第 j 个指标的权重;
- n n n 是指标的数量。
这些步骤确保了熵权法能够根据数据的分散程度自动计算每个指标的权重。