多属性决策
什么是多属性决策
它指的是利用已有的决策信息通过移动的方式对一组(有限个)备选方案进行排序或者择优。它的主要组成部分有如下2种:
1、获取决策信息:属性权重和属性值(实数、区间数和语言)。
2、通过一定的方式对决策信息进行集结并对方案进行排序和择优
现在我们暂时先抛开属性权重和属性值不讲,我们先来讲一讲第二点,也就是如何对决策的信息进行集结。信息集结的方法有很多,包括
- 加权算术平均算子(WAA)
- 加权几何平均算子(WGA)
- 有序加权平均算子(OWA)
在本文中,我们只讲最重要的,也是应用最广泛的加权算术平均算子(WAA)。
举个栗子:
也可以类比大学中,每科的成绩都是由出勤,作业分,期末考试等等加权得到的。
在多属性决策中,因为属性类型的不同,通常需要归一化处理。
- 效益型:属性值越大越好(比如利润);
- 成本型:属性值越小越好(比如成本价);
- 固定型:属性值越接近某个固定值α越好(生产标注宽度);
- 偏离型:属性值越偏离某个固定值β越好;
- 区间型:属性值越接近某个固定区间[q1,q2]越好;
- 偏离区间型:属性值越偏离某个固定区间[q1,q2]越好;
下面,我们给出归一化处理代码。
用函数mapminmax
默认的map范围是[-1, 1],所以如果需要[0, 1],则按这样的格式提供参数:
MappedData = mapminmax(OriginalData, 0, 1);
只按行归一化,如果是矩阵,则每行各自归一化,如果需要对整个矩阵归一化,用如下方法:
FlattenedData = OriginalData(:)'; % 展开矩阵为一列,然后转置为一行。
MappedFlattened = mapminmax(FlattenedData, 0, 1); % 归一化。
MappedData = reshape(MappedFlattened, size(OriginalData)); % 还原为原始矩阵形式。此处不需转置回去,因为reshape恰好是按列重新排序
python归一化,标准化,正则化见机器学习分类。 ps:需要的同学请留言,这个博客还没更新机器学习的相关内容
下面为一个数模实例。
实例中属性值的正则化处理:
构建成对比较矩阵,计算每一个属性的权重。
成对比较矩阵的matlab代码
层次分析法,成对比较矩阵
利用WAA的求解方法,求出结果:
最后,分别计算4家企业的WAA:
结果显示,第三家最高,所以选择第三家。