为什么在K近邻算法中降低K值会增加复杂度?

在我的教科书的摘录中提到,当运行这个算法时,降低K的值实际上会增加复杂度,因为它需要进行更多的“平滑”操作。

谁能解释一下这是为什么吗?

我的理解是,在1NN中,你输入训练集。你在测试集上进行测试。假设你的测试集中只有一个点。它会找到训练集中与之最接近的一个点,并返回这个点的数值。

这难道不比在3NN中找到三个最接近的点、将它们的数值相加并除以三更简单吗?

我误解或忽略了什么?


回答:

当我读到这个公理时,我也曾有过同样的怀疑时刻;一个数值更高的参数却能降低复杂度,这乍一看似乎有点违反直觉。

为了对此有一个直观的理解,让我们比较一下1近邻训练模型和N>>1近邻模型。我们使用一个简化的二维图(两个特征的数据集)进行二元分类(每个“点”都有一个类别或标签,要么是A,要么是B)。

在1近邻模型中,训练集中的每个样本都有可能是预测类别A或B的区域中心,而它的多数邻居可能是预测另一个类别的区域中心。你的图表可能看起来像是那些民族、语言或宗教在世界某些地区(如巴尔干或中东)深度交织的地图:小块的复杂形状和交替的颜色,没有明显的逻辑,因此“高复杂度”。

1-nearest neighbour

如果你增加k,预测每个类别的区域将变得更加“平滑”,因为是k个最近邻居中的多数决定了任何一点的类别。因此,区域的数量会减少,尺寸会增大,形状可能会更简单,就像同一世界区域的国家边界政治地图一样。因此“低复杂度”。

k-nearest neighbours

(直觉和来源来自这个课程。)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注