首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何故意过度使用Weka树分类器?

如何故意过度使用Weka树分类器?
EN

Stack Overflow用户
提问于 2010-07-10 23:10:16
回答 2查看 3.3K关注 0票数 7

我有一个二进制类数据集(0 / 1),它向"0“类倾斜很大(大约是30000比1500)。每个实例有7个特性,没有缺少值。

当我使用J48或任何其他树分类器时,几乎所有的"1“实例都被错误分类为"0”。

将分类器设置为"unpruned",将每个叶的最小实例数设置为1,将置信度设置为1,添加一个带有实例ID号的虚拟属性--所有这些都没有帮助。

我只是不能创建一个适合我的数据的模型!

我也尝试了几乎所有其他分类器Weka提供,但得到了类似的结果。

使用IB1可以获得100%的准确率(训练集上的训练集),因此不存在具有相同特征值和不同类的多个实例的问题。

我怎样才能创建一棵完全没有修剪的树?不然就强迫Weka把我的数据放错了?

谢谢。

更新:好吧,这太荒谬了。我只使用了大约3100个负数和1200个正数,这就是我得到的树(未修剪!):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
J48 unpruned tree
------------------

F <= 0.90747: 1 (201.0/54.0)
F > 0.90747: 0 (4153.0/1062.0)

不用说,IB1仍然提供100%的精度。

更新2:不知道我是怎么错过它的--未修剪的SimpleCart工作,在火车上提供100%的精确训练;剪枝的SimpleCart没有J48那样有偏见,并且有一个不错的假正负比。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-11 08:53:35

快速而肮脏的解决办法是重新采样。扔掉所有的,除了1500你的积极的例子,并培训一个平衡的数据集。我非常肯定,在Weka中有一个重采样组件可以做到这一点。

另一种解决方案是为每个类使用一个具有可变成本的分类器。我确信libSVM允许您这样做,我知道Weka可以包装libSVM。然而,我已经有一段时间没有使用Weka了,所以我在这里没有多少实际的帮助。

票数 2
EN

Stack Overflow用户

发布于 2010-07-15 11:57:05

Weka包含两个感兴趣的元分类器:

它们允许您使任何算法对成本敏感(不限于支持向量机),并指定成本矩阵(对各种错误的惩罚);如果将1实例错误地分类为0,则会给出比错误地将0错误地分类为1的更高的惩罚。

结果是,该算法将尝试:

尽量减少预期的错误分类成本(而不是最有可能的类别)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3222192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文