AHP层次分析法解决用户价值评估

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AHP层次分析法解决用户价值评估相关的知识,希望对你有一定的参考价值。

参考技术A

@Author : Runsen

现在互联网都有得到用户,那用户到底有没有价值需要评估。

通过各种指标来给用户综合打分,每个用户最后会得到一个分值,分值越高,说明用户的价值越高。这是一个总的目标,一个用户可以创造的价值由两部分决定:创造价值的能力和创造价值的意愿,前者是能不能的问题、后者是愿不愿意的问题。定了两个主线以后再次进行目标拆解,根据业务经验分别找到那些能够判断用户创造价值的能力和意愿的指标,然后给不同的指标赋予不同的权重/分值,最后将各指标的权重/分值相加就是用户最后的总得分。

上面的这个过程有两个关键步骤,一个是 选择合适的指标 ,另一个是 给不同的指标赋予不同的权重 ,关于指标的选取,这个根据业务经验直接拍脑袋就可以,但是这个不同指标的权重问题,可能直接拍脑袋就不是太好了,当然了,也不是不可以。不过,做数据是一个严谨的工作(咳咳咳),还是希望能够找到一套理论来代替拍脑袋,所以就在网上找啊找,终于找到了今天的主角,就是AHP。

先来看看比较官方的解释:

是不是有点看不太明白,我来说几句大白话让你理解理解。让我们与前言里面的内容对应一下,AHP其实就是一种 把复杂问题 通过定性(人为去判断各指标之间的重要性)与定量(再通过计算判断矩阵求出各指标权重)的方法进行 拆解成若干个小问题以及小指标的问题,并能够计算出各个小问题以及小指标对整个大目标的影响程度。

知道了AHP是什么以后,我们来具体看看AHP的一个具体流程。

就是首先你要确定你要解决什么问题,我们这里就是要构建用户价值模型,希望通过这个模型看出每个用户的一个价值,然后依据价值不同给与不同的运营策略。

将搭建用户价值模型这个总目标拆解成用户购买忠诚度以及用户消费能力两部分,然后再对这两部分进行指标拆解,就是上面图表中看到的各指标。

所谓的判断矩阵就是将任意两指标进行对比得出一个重要性结果,然后将这个结果以矩阵的形式进行呈现,其中重要程度差别等级如下:

数值越大,表示前者比后者越重要;指标A和指标B判断结果与指标B与指标A和指标B判断结果互为倒数,即当指标A比指标B的重要程度是3的时候,那么指标B比指标A的重要程度就是3的倒数,即1/3。

不知道你有没有注意到,其实上面的这种方法也有一定的主观判断(拍脑袋),比如两指标之间的稍微重要,明显重要,极其重要也是需要你人为去指定的,你可能会疑问,既然都是拍脑袋,那还要这个干啥,直接拍脑袋不久得了,还搞这么复杂干嘛,哈哈哈,关于好处接下来会讲到。

判断矩阵A构造出来了,我们就可以开始计算各指标对目标问题的影响程度(即各指标的权重值)。

一个例子如下图所示

注意:这里的归一化只是把每一列的值的和当作1,然后计算每一个值在1中的占比。

上述步骤中归一化后得到的矩阵w就是各个指标的权重情况,这个权重是根据我们主观上构造的判断矩阵的出来的,但是这个权重是否准确,还是有待确定的,为什么要去确定呢,因为判断矩阵很有可能得出的相互矛盾的结论,比如 说A指标重要性大于B指标,B指标重要性大于C指标,但是A指标重要性又小于C指标重要性,这种互相矛盾的结论。 AHP就可以避免这种矛盾的发生。这里需要引入AHP中的另一个概念一致性检验,用来判断矩阵是否一致。

如果一致性比率符合使用条件,则可以直接使用计算出的各指标的权重值,如果不符合,则需要重新构造判断矩阵。

就是对单一层次计算权重情况,比如用户价值模型总目标的下一层就是用户忠诚程度和用户消费能力的权重情况。 用户忠诚程度:用户消费能力=0.67:0.33 。而用户忠诚程度和用户消费能力的下一层就是各个更加细致的指标。

层次总排序就是将各个层次的权重值相乘,最后就得到了各个指标的权重情况,就是层次总排序。

还是以前面说到用户价值模型为例,走一遍完整的流程。这里我们计算用户忠诚度的AHP,因为只有三个指标及以上才会出现那种互相矛盾的情况,两个指标是不会出现的,两个指标的话直接人为指定权重占比就可以。

将判断矩阵的每一列进行归一化得出下方的矩阵:

对归一化后的矩阵的每一行进行求和运算:

将上述求和的得到的矩阵再次进行归一化得到矩阵w:

该矩阵就表示了各指标的权重情况,最近购买间隔占比占比为0.11,购买频率占比0.64,购买商品种类占比0.24。

计算最大特征根:
在计算最大特征根我们需要先计算Aw值,Aw计算是将判断矩阵A与归一化得到的矩阵w相乘(公众号不支持公式,很烦),最后得到Aw值:

再进行计算最大特征根: 1/3*(0.33/0.11+1.98/0.67+0.66/0.22)=3

计算一致性指标CI: (3-3)/(3-1)=0
根据指标数量n选择指标RI:这里n=3,所以RI=0.58

计算一致性比率CR=CI/RI=0<0.1符合,所以用户忠诚度的各指标权重值w矩阵可用。

因为总目标只拆解成了两个小问题,所以这里直接人为指定权重即可(用户忠诚度:用户消费能力=0.67:0.33),不需要进行一致性检验。

用户忠诚度拆解的指标有三个,需要进行一致性检验,且经过检验后符合CR<0.1的条件,所以用户忠诚度指标中各指标权重为:最近购买间隔占比占比为0.11,购买频率占比0.64,购买商品种类占比0.24。

用户消费能力拆解的指标也只有两个,直接人为指定权重即可。

最后将各层次的权重相乘就是每个指标的权重占比。

最后将每个指标 缩小到0-10的范围 (不一定缩小到0-10,但是必须把每个指标缩小到相同大小范围内),然后乘各指标所占权重,最后相加,就是每个用户的总价值得分。

数学建模-层次分析法

层次分析法

介绍

层次分析法(The Analytic Hierarchy ProcessAHP)是由美国运筹学家、
匹兹堡大学教授T . L. Saaty20世纪70年代创立的一种系统分析与决策的综合
评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解
决了定性问题定量化的处理过程。
AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因
素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重
要度的比较上面。在许多情况下,决策者可以直接使用AHP进行决策,极大
地提高了决策的有效性、可靠性和可行性,但其本质是一种思维方式,它把
复杂问题分解成多个组成因素,又将这些因素按支配关系分别形成递阶层次
结构,通过两两比较的方法确定决策方案相对重要度的总排序。整个过程体
现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避
决策者主观判断的缺点。

评价类问题

 

解决评价类问题,大家首先要想到以下三个问题:
① 我们评价的目标是什么?
② 我们为了达到这个目标有哪几种可选的方案?
③ 评价的准则或者说指标是什么?(我们根据什么东西来评价好坏)
 

分而治之的思想

 
技术图片

 

 

分而治之:我们先来确定指标的权重吧~
问题:
一次性考虑这五个指标之间的关系,往往考虑不周。
解决方法:
两个两个指标进行比较,最终根据两两比较的结果来推算出权重。
 

填写判断矩阵

技术图片

 技术图片

 

 

 

一致矩阵的例子

各行(各列)之间成倍数关系
若矩阵中每个元素??ij > 0且满足??ij x ??ji = 1 ,则我们称该矩阵为正互反矩阵
在层次分析法中,我们构造的判断矩阵均是正互反矩阵。
若正互反矩阵满足??ij x ??jk = ??ik,则我们称其为一致矩阵
注意:在使用判断矩阵求权重之前,必须对其进行一致性检验。
当一致性>0.1时,可以对应一致矩阵进行调整
 

一致性检验的步骤

 

技术图片

 

 

技术图片

 

 特征值法求权重

假如我们的判断矩阵一致性可以接受,那么我们可以仿照一致矩阵权重的求法。
第一步:求出矩阵A的最大特征值以及其对应的特征向量
第二步:对求出的特征向量进行归一化即可得到我们的权重
技术图片

 

 

技术图片

 

 然后求出方案层对准则层的权重,汇总

技术图片

 

 

技术图片

 

2008年国赛实例

技术图片

 

 

技术图片

 

 技术图片

 

 三种解法代码

%% 注意:在论文写作中,应该先对判断矩阵进行一致性检验,然后再计算权重,因为只有判断矩阵通过了一致性检验,其权重才是有意义的。
%% 在下面的代码中,我们先计算了权重,然后再进行了一致性检验,这是为了顺应计算过程,事实上在逻辑上是说不过去的。
%% 因此大家自己写论文中如果用到了层次分析法,一定要先对判断矩阵进行一致性检验。
%% 而且要说明的是,只有非一致矩阵的判断矩阵才需要进行一致性检验。
%% 如果你的判断矩阵本身就是一个一致矩阵,那么就没有必要进行一致性检验。


disp(‘请输入判断矩阵A‘)
A=input(‘A=‘);
[n,n] = size(A);
% % % % % % % % % % % % %方法1: 算术平均法求权重% % % % % % % % % % % % %
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;

disp(‘算术平均法求权重的结果为:‘);
disp(sum(Stand_A,2)./n)
% % % % % % % % % % % % %方法2: 几何平均法求权重% % % % % % % % % % % % %
Prduct_A = prod(A,2);
Prduct_n_A = Prduct_A .^ (1/n);
disp(‘几何平均法求权重的结果为:‘);
disp(Prduct_n_A ./ sum(Prduct_n_A))
% % % % % % % % % % % % %方法3: 特征值法求权重% % % % % % % % % % % % %
[V,D] = eig(A);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp(‘特征值法求权重的结果为:‘);
disp( V(:,c) ./ sum(V(:,c)) )
% % % % % % % % % % % % %下面是计算一致性比例CR的环节% % % % % % % % % % % % %
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];  %注意哦,这里的RI最多支持 n = 15
% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp(‘一致性指标CI=‘);disp(CI);
disp(‘一致性比例CR=‘);disp(CR);
if CR<0.10
    disp(‘因为CR<0.10,所以该判断矩阵A的一致性可以接受!‘);
else
    disp(‘注意:CR >= 0.10,因此该判断矩阵A需要进行修改!‘);
end

% % 注意:代码文件仅供参考,一定不要直接用于自己的数模论文中
% % 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭

  

 

 

 

以上是关于AHP层次分析法解决用户价值评估的主要内容,如果未能解决你的问题,请参考以下文章

AHP层次分析法 | 过程解读 案例实践

ahp层次分析法是啥

数学建模之层次分析法(AHP)

什么是AHP 层次分析法?

层次分析模型(AHP)及其MATLAB实现

ahp层次分析法软件