【问题标题】:Using fitctree to train a more sensitive model with an imbalanced training set使用 fitctree 训练具有不平衡训练集的更敏感模型
【发布时间】:2018-07-26 19:17:54
【问题描述】:
我正在尝试在 MATLAB 中构建决策树以进行二元分类。每个实例都有 4 个功能。正类中大约有 25,000 个实例,负类中大约有 350,000 个实例。
我尝试在分类学习器应用程序和使用 fitctree 中构建分类器,但两者似乎都只是将所有内容都识别为负类。我猜 MATLAB 正在构建树以产生最高的“准确性”。
有没有办法将决策树构建为更敏感的模型? (即不是“准确度”,我可以使用 fitctree 来构建灵敏度为 70/80/90% 或灵敏度和特异性相似的模型吗?)
【问题讨论】:
标签:
matlab
classification
decision-tree
feature-selection
【解决方案1】:
两种直接的处理方法是:
- 对少数类进行过采样或对多数类进行欠采样,以创建具有平衡类大小的训练集。既然你有这么多的实例可以玩,我认为欠采样应该没问题,即使用所有正类实例和随机选择的负类实例子集,但如果你的数据较少,那么过采样技术@ 987654321@很受欢迎。
- 使用
Prior 参数到fitctree 来指定每个类的先验概率,而不是让fitctree 从类大小中计算它(默认):
'Prior' — 先验概率
'empirical' (default) | 'uniform' | vector of scalar values | structure
每个的先验概率
类,指定为由'Prior' 和
以下之一。
一个字符向量:'empirical' 确定类概率
Y 中的类频率。如果您通过观察权重,fitctree 使用
计算类概率的权重。 “统一”设置所有
类概率相等。
...
在您的情况下,只需将 'Prior', 'uniform' 添加到 fitctree 的参数即可。
无论您选择哪个选项,请记住,您用于评估分类器性能的测试集应该具有正负类的真实分布(或者,您期望在真实数据中遇到的分布)。