决策树样本中标记数据的权重
Weight of labeled data in samples for decision trees
我正在尝试用 Python (scikit-learn) 做一些二元决策树,但我的样本有一个错误的重新分区:我有 100 000 个标签为 0 的数据点和 800 000 个标签为标签 1。
所以当我得到这棵树时,我没有很多 class 0 的叶子,在达到 5 的深度之前我什至没有任何叶子。在那个节点中,有点数很少
我还尝试了其他变量的树(仍然是相同的标签),我得到了更多标签为 0 的数据;问题是我不确定这是否有意义。
我能做什么?我应该用每个标签的 50% 对我的数据进行抽样吗?恐怕这样做并不能真正代表我的数据,特别是如果我之后将新数据放入树中。
有谁知道决策树对样本的要求是什么?我在任何地方都找不到任何相关信息。
非常感谢,
玛丽
当一个数据集属于一个 class 的数据点明显多于属于另一个 class 的数据点时,它被称为 不平衡 。您的数据集不平衡。
你在少数 class 中的数据点比在大多数 class 中少 8 倍。
用 sklearn DecisionTreeClassifier 处理这个问题的最简单(也是正确)的方法是设置参数
class_weight="balanced"
根据我的经验,这很有帮助。
使用此设置,您的少数 class 中的每个数据点都将被赋予权重 8。这意味着,粗略地说,它将被认为是大多数 class 中任何数据点重要的 8 倍。
在 scikit-learn DecisionTreeClassifier documentation 中查看更多详细信息,并随时在 'imbalanced learning' 中进一步自学。
我正在尝试用 Python (scikit-learn) 做一些二元决策树,但我的样本有一个错误的重新分区:我有 100 000 个标签为 0 的数据点和 800 000 个标签为标签 1。
所以当我得到这棵树时,我没有很多 class 0 的叶子,在达到 5 的深度之前我什至没有任何叶子。在那个节点中,有点数很少
我还尝试了其他变量的树(仍然是相同的标签),我得到了更多标签为 0 的数据;问题是我不确定这是否有意义。
我能做什么?我应该用每个标签的 50% 对我的数据进行抽样吗?恐怕这样做并不能真正代表我的数据,特别是如果我之后将新数据放入树中。 有谁知道决策树对样本的要求是什么?我在任何地方都找不到任何相关信息。
非常感谢,
玛丽
当一个数据集属于一个 class 的数据点明显多于属于另一个 class 的数据点时,它被称为 不平衡 。您的数据集不平衡。 你在少数 class 中的数据点比在大多数 class 中少 8 倍。
用 sklearn DecisionTreeClassifier 处理这个问题的最简单(也是正确)的方法是设置参数
class_weight="balanced"
根据我的经验,这很有帮助。 使用此设置,您的少数 class 中的每个数据点都将被赋予权重 8。这意味着,粗略地说,它将被认为是大多数 class 中任何数据点重要的 8 倍。
在 scikit-learn DecisionTreeClassifier documentation 中查看更多详细信息,并随时在 'imbalanced learning' 中进一步自学。