使用fitctree训练具有不平衡训练集的更敏感模型

时间:2018-02-15 22:24:54

标签: matlab classification decision-tree feature-selection

我试图在MATLAB中构建一个用于二进制分类的决策树。我为每个实例提供了4个功能。正类中有大约25,000个实例,负类中有350,000个实例。

我已尝试在分类学习器应用程序中使用fitctree构建分类器,但两者似乎都只是将所有内容都标识为否定类。我猜测MATLAB正在构建树以产生最高的准确度。"

有没有办法将决策树构建为更敏感的模型? (即,而不是"准确度",我可以使用fitctree构建灵敏度为70/80/90%或灵敏度和特异性相似的模型吗?)

1 个答案:

答案 0 :(得分:0)

处理此问题的两种直接方法是:

  • 对少数类进行过采样或对多数类进行欠采样,以创建具有平衡类大小的训练集。由于你有很多实例可以使用,我认为欠采样应该没问题,即使用所有正类实例和一个随机选择的负类实例子集,但是如果你有更少的数据那么过采样技术SMOTE很受欢迎。
  • 使用Prior参数fitctree指定每个类的先验概率,而不是允许fitctree根据班级大小(默认)计算它:
  

'Prior' - 先验概率
  'empirical' (default) | 'uniform' | vector of scalar values | structure

     

每个人的先验概率   class,指定为由'Prior''Prior', 'uniform'组成的逗号分隔对   以下之一。

     

字符向量:'经验'从中确定类概率   Y中的类频率。如果您通过观察权重,fitctree使用   计算类概率的权重。 '均匀'设置所有   阶级概率相等   ...

在您的情况下,只需将fitctree添加到tableView.numberOfItems(inSection: 0)的参数即可。

无论您选择哪个选项,请记住,用于评估分类器性能的测试集应该具有正负类的实际分布(或者您希望在实际数据中遇到的分布)。 / p>