我需要提升决策树桩弱分类器。因此,每次迭代时,我都需要根据某些权重来训练弱分类器。然后在每次迭代后更新权重。到目前为止,我已经理解了。但我不清楚的部分是“根据权重训练决策树桩弱分类器”。他们到底是如何做的?谁能用通俗的语言解释一下?
假设我有一个训练数据集{(x1,y1),(x2,y2)…..,(xm,ym)},X是特征(假设有10个),y是二元类别
初始权重为w(x) = 1/m
因此,决策树桩弱学习器应该根据权重给出二元的h(x)。
算法是如何工作的?决策树桩会使用哪些特征?
回答:
对于提升任务,你需要在算法的每次迭代中选择最佳分类器。为此,你需要最小化数据集上树桩的平均错误率,考虑到权重,因此在计算分类器的错误度量时必须考虑对象的权重。因此,对于错误标记大权重对象的分类器的惩罚将大于错误标记小权重对象的惩罚。
你可以查看我在R语言上对决策树进行提升的实现,它运行良好,对于决策树桩,只需将第132行的树深度改为1,你就可以通过更改参数T来测试不同数量的分类器的准确性。
如果你需要更深入的理解:你可以像学习深度为1的树一样学习树桩。要在加权数据集上学习树,你需要选择一个特征和一个值,根据加权指标将数据集以最佳方式分成两部分,例如熵和信息增益。你可以用for循环遍历所有可用的特征,在嵌套循环中对选定的特征进行排序,并尝试所有可能的分隔,将数据集根据选定的特征和分隔值分成两个集合S,然后根据维基百科上的描述计算每个集合的熵,但不是计算p(x)为
类别x中元素数量与集合S中元素数量的比例
你需要将集合中类别x的对象的所有权重相加,并将这个数字除以集合中所有对象的权重总和。
其中 – 集合S中所有对象的权重,
– 集合S中类别x的所有对象的权重。
然后你可以计算信息增益,但同样,你需要使用加权比例p(t)而不是维基百科中的版本(数量的比例)。
其中 – 初始(未被分隔器分隔)集合的对象权重集合,
– 集合t的对象权重集合(你将通过使用某个分隔值将S分隔成两个集合t)。
选择给你带来最大增益的特征和分隔值,这就是全部,你刚刚在加权数据上学习了一个新的树桩分类器,它已经准备好工作了。
我制作了一些图片来提供计算的示例,这里我只选择了一个分隔器,你需要检查每个可能的分隔器的增益。