Machine learning 如何有目的地过度拟合Weka树分类器?

Machine learning 如何有目的地过度拟合Weka树分类器?,machine-learning,weka,Machine Learning,Weka,我有一个二进制类数据集(0/1),它向“0”类倾斜很大(大约30000对1500)。每个实例有7个特性,没有缺失值 当我使用J48或任何其他树分类器时,几乎所有的“1”实例都被错误分类为“0” 将分类器设置为“未运行”,将每个叶的最小实例数设置为1,将置信因子设置为1,添加一个具有实例ID号的虚拟属性-所有这些都没有帮助 我只是不能创建一个模型,过度适合我的数据 我还尝试了Weka提供的几乎所有其他分类器,但得到了类似的结果 使用IB1可以获得100%的准确度(列车集对列车集),因此不存在具有相

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

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

将分类器设置为“未运行”,将每个叶的最小实例数设置为1,将置信因子设置为1,添加一个具有实例ID号的虚拟属性-所有这些都没有帮助

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

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

使用IB1可以获得100%的准确度(列车集对列车集),因此不存在具有相同特征值和不同类别的多个实例的问题

如何创建一个完全未运行的树? 还是强迫Weka过度拟合我的数据

谢谢

更新:好吧,这太荒谬了。我只使用了大约3100个负面示例和1200个正面示例,这是我得到的树(未运行!):

J48非运行树
------------------
F 0.90747:0(4153.0/1062.0)
不用说,IB1仍然提供100%的精度


更新2:不知道我怎么会错过它-未运行的SimpleCart工作,在列车上提供100%的准确率;修剪后的SimpleCart不像J48那样有偏见,并且有相当好的假阳性和假阴性比率。

快速而肮脏的解决方案是重新采样。抛开1500个积极的例子,在一个平衡的数据集上进行训练。我很确定Weka中有一个重采样组件可以实现这一点


另一种解决方案是使用一个分类器,每个类的成本都是可变的。我非常确定libSVM允许你这么做,我知道Weka可以包装libSVM。但是,我已经有一段时间没有使用Weka了,因此我在这里没有多少实际帮助。

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

它们允许您使任何算法对成本敏感(不限于SVM),并指定成本矩阵(各种错误的惩罚);如果将
1
实例错误分类为
0
,您将受到比将
0
错误分类为
1
更高的惩罚

结果是算法将尝试:

最小化预期的误分类成本(而不是最可能的类别)


谢谢我不确定重采样是否有效——从我做的实验来看,即使在一个相当平衡的数据集(每个类1000个示例)上,J48和其他分类器(SimpleCart除外)也会得到荒谬的结果——类“0”的FP或FN非常高,或类“1”的FP或FN非常高(另一个类的分类基本正确)。关于成本敏感分类-我完全忘记了,我会很快调查。非常感谢。对成本敏感的方法奏效了。我仍然不明白为什么未运行的J48不能在训练集上给我100%的准确性,或者为什么一个相当平衡的J48数据集仍然给出荒谬的输出。但至少现在我有工作要做。谢谢可能的相关问题:谢谢,这正是我使用的解决方案。
J48 unpruned tree
------------------

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