【问题标题】:Efficient multiclass weighted majority voting implementation in MATLABMATLAB 中的高效多类加权多数投票实现
【发布时间】:2013-03-08 01:28:05
【问题描述】:

几天来,我想知道如何在 matlab 中有效地实现 m 专家的加权多数投票。这是我想要的一个例子。假设我们有 3 个具有权重向量的专家

w=[7 2 6]

假设他们在选项 A/B/C/D 上投票 n 次,因此我们例如得到以下 n x m 投票矩阵,其中列是每个专家的投票。

A B B
C A A
D B A
A A C

现在我想为每一行找到加权多数票。我们通过添加为每个选项投票的专家的权重并选择最大权重来计算它。例如,在第一行,选项 A 的累积权重为 7(专家 1 的投票),B 的累积权重为 8(专家 2 和 3 的投票),因此最终的投票是 B。所以我们得到以下累积权重矩阵和最终投票:

A B C D
- - - -
7 8 0 0 -> B
8 0 7 0 -> A
6 2 0 7 -> D
9 0 6 0 -> A

现在,在行数 n 上使用 for 循环来实现这一点或多或少是直截了当的。我现在正在寻找解决方案,它不需要这个可能很长的循环,而是使用矢量算术。我有一些想法,但每个想法都遇到了一些问题,所以现在不提了。如果有人以前遇到过类似的情况,请分享您的解决方案。

谢谢。

【问题讨论】:

  • 你能分享一下你是如何在这里找到权重的吗?您为此遵循什么方法/算法?
  • 这真的取决于你所在的地区。我正在按照 Kolter, J. Z. 和 Maloof, M. A. (2007) 中的描述实施 DWM。动态加权多数:漂移概念的集成方法。机器学习研究杂志。这是在非平稳环境中对在线数据进行分类的方法。您可能还对以下论文感兴趣:Shapley, L., & Grofman, B. (1984)。在存在相互依赖关系的情况下优化群体判断的准确性。 Littlestone, N. 和 Warmuth, M. K. (1994)。加权多数算法。信息与计算
  • 谢谢。我会阅读你建议的论文。

标签: matlab voting


【解决方案1】:
w=[7 2 6];

votes = ['A' 'B' 'B'
         'C' 'A' 'A'
         'D' 'B' 'A'
         'A' 'A' 'C'];

options = ['A', 'B', 'C', 'D']';
%'//Make a cube of the options that is number of options by m by n
OPTIONS = repmat(options, [1, size(w, 2), size(votes, 1)]);

%//Compare the votes (streched to make surface) against a uniforma surface of each option
B = bsxfun(@eq, permute(votes, [3 2 1]) ,OPTIONS);

%//Find a weighted sum
W = squeeze(sum(bsxfun(@times, repmat(w, size(options, 1), 1), B), 2))'

%'//Find the options with the highest weighted sum
[xx, i] = max(W, [], 2);
options(i)

结果:

B
A
D
A

【讨论】:

  • 谢谢,这很好用!有趣的是,我实际上已经想到了这个解决方案并实施了它,尽管远不如你做的那么干净。但被卡在最后一步,逐行取最大值:)
  • 哈哈,最后一步我几乎没有打扰!很高兴它奏效了。它是否加快了进程?如果您非常接近最终解决方案,下次发布您的代码
  • 它是否加快了您询问的过程?用 4 个选项和可变数量的选民(除其他外,不幸的是,如果没有循环就无法完成),我的旧代码需要 300 秒才能执行 10k 票。使用您的版本,是 13 秒!所以我非常高兴能在这上面花 2 天时间。顺便说一句,这里是对遵循此代码的任何人的代码的一个小的概括 - 用 size(options ,1)。也许你可以编辑你的代码来包含这个,所以我不添加另一个答案。
  • 糟糕,没有意识到这一点。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2016-02-15
  • 2011-05-06
  • 2011-06-24
  • 2021-09-27
相关资源
最近更新 更多