Hag*_*gai 7 machine-learning weka
我有一个二进制类数据集(0/1),向"0"类倾斜很大(大约30000对1500).每个实例有7个功能,没有缺失值.
当我使用J48或任何其他树分类器时,我几乎将所有"1"实例错误分类为"0".
将分类器设置为"未分级",将每个叶子的最小实例数设置为1,将置信因子设置为1,添加具有实例ID号的虚拟属性 - 所有这些都无济于事.
我只是无法创建一个过度拟合数据的模型!
我也尝试了几乎所有Weka提供的其他分类器,但得到了类似的结果.
使用IB1获得100%的准确度(列车集上的列车集),因此不存在具有相同特征值和不同类别的多个实例的问题.
如何创建完全未修剪的树?或者强迫Weka过度填充我的数据?
谢谢.
更新:好的,这很荒谬.我只使用了大约3100个负面例子和1200个正面例子,这是我得到的树(未修剪!):
J48 unpruned tree
------------------
F <= 0.90747: 1 (201.0/54.0)
F > 0.90747: 0 (4153.0/1062.0)
Run Code Online (Sandbox Code Playgroud)
不用说,IB1仍然提供100%的精度.
更新2:不知道我是如何错过它的 - 未经训练的SimpleCart工作并且在火车上提供100%准确度的训练; 修剪过的SimpleCart并不像J48那样有偏见,并且具有不错的误报率和负面比率.
Weka包含两个感兴趣的元分类器:
它们允许您使任何算法成本敏感(不限于SVM)并指定成本矩阵(各种错误的惩罚); 你会给予更高的惩罚误分类1
实例作为0
比你会给出错误地归类0
为1
.
结果是该算法将尝试:
尽量减少预期的错误分类成本(而不是最可能的类别)
快速但肮脏的解决方案是重新采样。丢弃除 1500 个之外的所有正面示例,并在平衡的数据集上进行训练。我很确定 Weka 中有一个重新采样组件可以做到这一点。
另一种解决方案是使用每个类别具有可变成本的分类器。我非常确定 libSVM 允许您执行此操作,并且我知道 Weka 可以包装 libSVM。然而,我已经有一段时间没有使用 Weka 了,所以我不能在这里提供太多实际帮助。
归档时间: |
|
查看次数: |
3190 次 |
最近记录: |