决策树能学会解决异或问题吗?
数据挖掘
随机森林
决策树
2021-09-27 06:53:40
2个回答
是的,决策树可以学习 XOR。
我在网上读到决策树可以解决 xOR 类型的问题......
很多时候,事情的措辞不够仔细。神经网络可以完美地对整数列表进行排序,但是要训练一个来做到这一点非常困难。您的图像显示一棵树可以很容易地表示 XOR 函数,但您的问题是如何学习这样的树结构。
我的问题是决策树如何学会在这种情况下解决这个问题。我只是看不到任何指标(信息增益,基尼分数,...)选择图像 2 中的一个拆分而不是任何其他随机拆分的方法。
事实上,第一次分裂可能是非常随机的,或者由于噪音(如果你去连续而不是离散的和异或)。但是,只要你的算法在第一次分裂中进行一次暴跌,接下来的分裂是显而易见的,你的树就会成功。
是否有可能用决策树解决提出的问题?
这是一个笔记本(github/colab,欢迎提出建议)证明是的,(sklearn)决策树可以学习(当点非常接近 0 时可能会出现一些错误);但它也继续显示出一些困难,例如,当变量不是可用于树进行拆分。Up-shot:噪声变量可能会破坏我上面提到的第一次分裂,甚至有用的变量也会使树失去对 XOR 的跟踪。
使用随机森林会以任何方式解决问题吗?
可能不是基本问题,但它看起来有助于解决上面的噪声变量等问题。
是的,可以使用决策树实现 XOR。
异或门:
if x == y
class = 0
else
class = 1
因此,一个简单的离散决策树可以是:
N1: is x == 1 ? (yes -> N2, no -> N3)
N2: is y == 1 ? (yes -> class=0, no -> class=1)
N3: is y == 1 ? (yes -> class=1, no -> class=0)
因此,您可以使用三个决策节点实现 XOR。
这也可以应用于连续值。我将用您提供的示例进行演示。在您的示例中,我们需要制作一个考虑以下内容的决策树:
if (x < 0.5 AND y > 0.4) OR (x > 0.5 AND y < 0.4)
class = 1
else
class = 2
与离散示例一样,这可以使用三个决策节点来解决:
N1: is x > 0.5 ? (yes -> N2, no -> N3)
N2: is y > 0.4 ? (yes -> class=2, no -> class=1)
N3: is y > 0.4 ? (yes -> class=1, no -> class=2)
请注意,当一个点恰好落在边界上时,您可以选择 > 或 >= 将分类偏向您的首选类别。
其它你可能感兴趣的问题