了解 Weka 中的成本敏感评估(成本矩阵)

Posted

技术标签:

【中文标题】了解 Weka 中的成本敏感评估(成本矩阵)【英文标题】:Understanding cost-sensitive evaluation in Weka (cost matrix) 【发布时间】:2014-08-21 09:59:18 【问题描述】:

我正在使用 Weka 3.7.1

我正在尝试使用 weka 分析棒球运动预测。我想使用成本矩阵,因为在我赌博的体育博彩中,不同结果的成本是不一样的。我的数据集很简单:它是一组具有标称类 WIN,LOSS 的预测。对于这个问题,属性不是问题。

在 WEKA Explorer 中,加载我的 arff 文件后,我可以从

设置成本矩阵

分类->更多选项...->成本敏感评估->设置...->有 在我之后出现在 weka 成本敏感评估中的 2x2 网格 设置类 == 2

以下是我想输入成本矩阵的值:

正确归类为损失,成本为 0(我没有下注) 错误归类为损失,成本为 0(我没有下注) 正确分类为赢,成本为 -.909(我赢了 0.909 美元) 错误归类为胜利,成本为 1.0(我损失了一美元)

请注意,我将利润设置为负值(这与成本相反,它是利润)是一个“成本矩阵”;并且我将损失设置为正数(因为当我输掉赌注时,我付出了代价)。

经过一番思考,我决定使用以下网格,但我不知道我是否正确地这样做了,如果我这样做正确,请告诉我:

 - a   b       <---- "classified as"
 - 0   1.0     a=LOSS
 - 0   -.909   b=WIN

这是我可能有错误的逻辑:(col, row)

(0,0) of grid=0: classified as LOSS, and was LOSS
(0,1) of grid=0: classified as LOSS, but was WIN
(1,0) of grid=1.0; classified as WIN, but was LOSS
(1,1) of grid=.909; classified as WIN, was WIN

当然,(0,0) 和 (0,1) 代表预测损失的分类器,在这些情况下我不下注,因此没有成本。

另一方面,(1,0) 和 (1,1) 表示预测获胜的分类器,在这些情况下,我下注,因此存在相关成本。

另外一个非常令人困惑的项目:在我设置成本矩阵并执行分类器后,输出报告包含以下内容:

评估成本矩阵:

 0    1   
 0    0.91   <--- notice that this is not a negative value!

如您所见,当我实际输入 -.909 时,报告中的 (1,1) 为 0.91。我确实找到了关于这个主题的另一篇文章,但它没有解释为什么负值变成正值。

提前谢谢你。请注意,这些都是可以回答的问题;但是,如果您想提供一些指导,我会很高兴,因为我是一个仍在尝试建立理解框架的新手。

【问题讨论】:

嗨,我正要问这个确切的问题。你得出结论了吗?这行得通吗?当我将值放入 Weka 上的成本/收益分析窗口时,它似乎起作用了,就像这样。 dowce.com/~ZbX 非常感谢任何帮助:) -Jason 不幸的是我还没有弄清楚这一点。我认为答案将源于对底层数学模型的理解。具体来说,成本矩阵中的值如何与分类器交互?您可以在 user3598769 的帖子中看到,他表示对使用负值作为成本感到困惑。但在棒球投注的背景下,这是完全合理的。如果您找到正确的使用方法,请回帖,我会给您积分。 就我的上下文而言,它也很有意义,我不记得任何文档中关于这是“坏”的任何内容。我认为这可能取决于分类器是如何实现的,它是否有一些假设成本函数是 user3598769 暗示/预期的形式。在 AveragedNDependenceEstimator 的情况下,它似乎在 UI 中工作。我只是想知道其中一些算法在幕后发生了什么,所以我正在考虑弄清楚 eclipse 环境,这样我就可以在调试器的分类器中断点,看看到底发生了什么。 使用 AveragedNDependenceEstimator 我认为它使用成本矩阵来指导分类任务。如果我没记错的话,根据最小错误做出决定。这意味着必须按照我指定的方式处理成本矩阵,而不是用某种软糖来处理。 【参考方案1】:

成本矩阵是一种改变决策边界阈值的方法。 在下面的论文中对此进行了解释。

http://research.ijcaonline.org/volume44/number13/pxc3878677.pdf

通过查看您的成本矩阵,似乎需要进行一些修正。

例如

0    cost
cost 0

只是为了解释: 考虑以下成本矩阵:

a b
c d

这是我观察到的两类问题的成本矩阵的一般格式。

现在,当您在 a 或 d 位置对某物进行分类时,就无需将成本纳入考虑范围。

所以这里的重点是,只有在分类错误的情况下,成本才会显现出来。即在 b 或 c 位置。

但是,由于您在 d 处将负值作为成本写入,因此会造成混乱。 (请解释一下,即负成本是什么意思。)

一个示例成本矩阵可以是:

0  1
10 0

这表示将示例分类为误报的成本比将相似示例误分类为误报的成本高 10 倍。此外,正确分类示例是没有成本的。

【讨论】:

以上是关于了解 Weka 中的成本敏感评估(成本矩阵)的主要内容,如果未能解决你的问题,请参考以下文章

一个软件项目如何评估工作量和成本?

架构评估常见问题 – 超融合相比传统FC SAN架构有什么成本优势?

SQL查询成本的理论评估

WEKA 中的集群评估是啥?

如何评估自动化的收益?

使用测试集中的缺失值评估 weka 分类器 J48,R RWeka