【发布时间】: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)。加权多数算法。信息与计算
-
谢谢。我会阅读你建议的论文。