关于一些数据挖掘算法的问题

时间:2010-11-03 06:26:43

标签: artificial-intelligence machine-learning data-mining

最近我研究了k-最近邻和决策树,我很好奇两者之间的区别,即对于像分离目标函数的任务“如果x2> x1则返回1,否则返回0”,然后选择最近的邻居在这里会很好,因为决策树会调用太多的分裂。 所以我只是考虑在什么样的情况下,选择决策树比k最近的邻居更合适?

另一个问题与K-最近邻居有关,我明白当K = 1时,它只是一个基线分类(将实例归类为其邻近的邻居类)。可以任何人给我一个想法在什么样的分类任务中,3个最近的邻居肯定会超过1个最近的近距离分类器?

提前致谢!

2 个答案:

答案 0 :(得分:10)

k-NN与决策树

我总是发现图片是获得算法直觉的最佳方式。你建议的目标函数会产生类似这样的数据集:

alt text

分离数据的函数是x1 - x2 = 0.问题是通常,决策树在节点上只有一个变量的函数,因此节点处的决策函数是轴对齐的。我想象一下在这个数据集上学到的决策树会做这样的事情:

alt text

希望您明白这一点,显然您可以通过在决策树中使用足够的节点来实现最佳决策边界,但这意味着您将面临过度拟合数据的风险。

实际上,我说决策树通常在节点上使用单变量函数,但还有另一种方法,在关于multivariate decision trees的StackOverflow问题中描述(我没有回答)。

顺便说一下,这类数据的最佳分类器是线性分类器,也许是逻辑回归,可以找到最优决策边界

k对k-NN的影响

我可以给k近邻k的最佳描述是k的高值使决策边界平滑。也不是更高的k总是比低的更好。

考虑k-NN,我们需要更复杂的数据集。对于k = 1,k-NN模型可能会做出如下决定:

alt text

如果我们增加k的值,决策将受到更大的邻域点的影响,因此决策边界将变得更加平滑。特别是那些红色和蓝色的小岛将被周围的数据点所淹没:

alt text

使用高k是否更好取决于数据集上的噪声级别。那些小岛真的很重要,我们学到的太简单的模型不能很好地拟合数据,或者它们只是噪音而且我们是否避免过度拟合?

实用视角

不幸的是,考虑到一些大型,复杂,真实的数据集,您可能没有很好的基础来决定哪种算法最有效(除非您使用相同或类似数据的先前工作)。大多数人所做的是将数据细分为训练,参数调整和测试集,然后运行尽可能多的算法。您可能还会发现您的特定情况决定了算法必须具有的一些属性(快速,增量,概率等)。

答案 1 :(得分:0)

这是第二个问题的答案。

(我认为绝对优于你的意思是 总是 优于。)

我不确定它是否可能 - 因为,给定数据集和kNN算法,对于k = 3(相对于k = 1)预测更好的每个实例,很容易翻转该结果更改模型的配置方式或更改数据描述(特别是解决方案空间中的数据密度)。

这是一个简单的例子,尽管kNN可能是最简单的机器学习算法,但除了计算距离矩阵然后计算与它的最小距离之外,还有一些关键的配置细节。这些配置参数之一是加权 - 即,每个相邻点对预测值加权的贡献。一些常见的加权函数是高斯函数和反函数。例如,一个常见的加权函数是“减法函数”,对于每个邻居,只要距离常数减去该距离,只要距离大于常数即可。虽然此函数很好地避免了非常接近未知点(您试图预测其值的点)的数据点的过度加权,但点的权重接近零,因为它与未知点的距离接近所选常数的值。换句话说,使用此函数,使用k = 3的预测可能比k = 1好得多,但如果三个相邻点中的两个距离足够远以使它们的权重接近零,它们也可能几乎相同。 / p>

或者它可能是数据。假设来自k = 3模型的预测给出与k = 1相同的预测,原因我刚才提到过。现在假设数据集被放大,因此存在更大的数据密度,这反过来意味着三个相邻点比以前更可能对预测值大致相等地做出贡献。

当然,这同样适用于kNN算法中的其他主要配置参数 - 例如,距离度量,维度缩放,概率分布等。

顺便说一下,好的问题。

相关问题