在matlab中测量转移概率矩阵的熵

时间:2014-07-18 13:48:02

标签: matlab matrix graph graph-theory entropy

我正在研究一个项目,该项目需要分析转换概率矩阵的某些图形属性,这些属性构造为加权有向图。 感兴趣的一个属性是这些图的熵,我还没有找到一种正确的测量方法,一般的想法是我需要某种度量,这可以让我量化某个图形的程度“为了确定图中节点的预测值(IE,如果所有节点具有完全相同的连接模式,那么它们的预测值实际上是零),尽管这是一个非常简单的解释,因为还有许多其他因素节点预测能力。)

我尝试过某些内置的matlab命令: 熵 - 通常用于确定图像的熵 wentropy - 说实话,我并不完全理解这个函数的正确使用,但是我试过用'shannon'和'log energy'类型,并产生了一些不确定的结果

这是一个非常基本的脚本,我掀起了一些测试,产生了两个矩阵:

  • 20 * 20矩阵,由完全从均匀分布绘制的值构建,旨在生成秩序相对较低的矩阵 - unordgraph
  • 一个20 * 20矩阵,由4个5 * 5“补丁”构成,其中值是从均匀分布绘制的整数,给定范围明显大于1,而其余值均来自统一在0-1范围内的分布(如前面的矩阵),这种形式的图形比以前的补丁更“有序” - ordgraph

当我运行代码时:

clear all;

n = 50;
gsize = 20;
orderedrange = [100 200];
enttype = 'shannon';
for i = 1:n;
    unordgraph = rand(gsize);
    %     entvec(1,i) = entropy(unordgraph);
    entvec(1,i) = wentropy(unordgraph,enttype);
%     ordgraph = reshape(1:gsize^2,gsize,gsize);
    ordgraph = rand(gsize);
    ordgraph(1:5,1:5) = randi(orderedrange,5);
    ordgraph(6:10,6:10) = randi(orderedrange,5);
    ordgraph(11:15,11:15) = randi(orderedrange,5);
    ordgraph(16:20,16:20) = randi(orderedrange,5);
    %     entvec(2,i) = entropy(ordgraph);
    entvec(2,i) = wentropy(ordgraph,enttype);

end

fprintf('the mean entropy of the unordered graph is: %.4f\n',mean(entvec(1,:)));
fprintf('the mean entropy of the ordered graph is: %.4f\n',mean(entvec(2,:)));

我得到的输出如下:

  

无序图的平均熵为:88.8871

     

有序图的平均熵为:-23936552.0113

我不确定这些负值的含义,因为在完全由零或1组成的矩阵上运行相同的脚本(因此最大有序)会产生0的平均熵。

我在图论中有一个非常基本的背景,使这个任务变得更加困难,我会非常感激任何帮助,无论是理论上的还是算法的

提前谢谢, 罗恩

0 个答案:

没有答案