k-NN 与决策树
我总是发现图片是获得算法直觉的最佳方式。你建议的目标函数会产生一个有点像这样的数据集:
其中分离数据的函数是x1 - x2 = 0。问题是通常决策树在节点处只有一个变量的函数,因此节点处的决策函数是轴对齐的。我想象在这个数据集上学习的决策树会做这样的事情:
希望您明白这一点,显然您可以通过在决策树中使用足够多的节点来逼近最佳决策边界,但这意味着您存在过度拟合数据的风险。
实际上,我说过决策树通常在节点上使用单变量函数,但还有另一种方法,在 StackOverflow 关于multivariate decision trees 的问题中有描述(我没有回答)。
顺便说一句,这种数据的最佳分类器是线性分类器,可能是逻辑回归,它会找到最佳决策边界
k在k-NN中的作用
对于 k 近邻中的 k,我能给出的最佳描述是 k 的高值平滑了决策边界。也并非较高的 k 总是比较低的更好。
要考虑 k-NN,我们需要更多复杂的数据集。对于 k=1,k-NN 模型可能会做出类似这样的决策:
如果我们增加 k 的值,决策将受到更大邻域点的影响,因此决策边界会变得更平滑。特别是那些红色和蓝色的小岛会被周围的数据点淹没:
使用高 k 是否更好取决于数据集上的噪声水平。那些小岛真的很重要,我们学习的模型太简单,不能很好地拟合数据,还是它们只是噪音,我们是否避免过拟合?
实用视角
不幸的是,鉴于一些大型、复杂的真实数据集,您可能没有很好的基础来决定哪种算法效果最好(除非您借鉴以前对相同或相似数据所做的工作)。大多数人所做的是将数据仔细地分割成训练、参数调整和测试集,然后运行他们能想到的尽可能多的算法。您可能还会发现您的特定情况决定了算法必须具有的一些属性(快速、增量、概率等)