这是我的问题。我需要实现一个多目标决策树算法。多目标是多标签学习的扩展,其中标签不仅仅是二元的,还可以是连续的、分类性的等等。例如,多标签分类问题的标签向量可能看起来像这样{1,0,1,0,0,0,1},而多目标的标签向量可能看起来像这样{2,35,3,-2,24}。我的问题是,如果我有一个标签,它有三个离散值,我该如何在向量中表示它们?假设我有一个名为“job”的标签,它有三个值,分别是mechanic(技工)、teacher(教师)和athlete(运动员)。我该如何编码这个标签,以便在向量中使用它?在决策树的每个节点上,为了找到我的分裂点,我需要计算该节点中所有标签向量的均值向量(我使用方差方法方程来找到我的分裂点)。如果我有二元标签,这很简单,因为添加0和1不会有任何问题。如果我用0,1,2来编码这三个工作,那么这就有问题了,因为添加一个包含athlete标签的标签向量会比添加一个包含mechanic工作的向量计数更多,并且均值向量是不准确的。
让我们看一个例子。我有这三个标签:
job: {mechanic,teacher,athlete} married:{yes,no} age: 连续值
很容易说married标签可以编码为{0,1},age标签可以编码为连续数字。但我该如何编码job标签呢?将其编码为{0,1,2}会导致下一个问题。想象一下节点中的两个标签向量:{0,0,45}对应mechanic,已婚,45岁和{2,1,48}对应athlete,未婚,48岁。均值向量是{1,0.5,46.5}。用这个向量,我可以预测落入该节点的实例的年龄是46.5,我可以说该实例未婚(使用一个规则,即大于或等于0.5为1),我可以说它的工作是教师。教师这个工作完全是错误的,而其他都是正确的。你现在看到了编码分类标签的问题。有什么帮助或建议吗?谢谢 😀
回答:
如何处理一个特征的所有离散值,如果值超过两个,将它们全部转换成特征,例如:
job: {mechanic, teacher, athlete}married:{yes, no}age: 连续值
将结果转换为一个5维向量
(mechanic 0/1, teacher 0/1, athlete 0/1, married 0/1, age 0-inf)