k-NN分类器的预测方差和模型偏差
Prediction variance and model bias of k-NN classifier
相信很多人都研究过和正在研究K-NN算法,我也是其中之一。
我刚遇到一句话"For any given problem, a small value of k will lead to a large variance in predictions. Alternatively, setting k to a large value may lead to a large model bias.",我觉得很多人都直截了当,但我不是。
如果你已经知道是什么意思,请帮我理解一下。
好的,让我们从头开始。
1. k-NN 是如何工作的?
您有 n(k 远小于 n)点的基数,您知道想要的答案 - 您可能已经从 oracle 获得了它。该集合称为训练集,因为您将其提供给虚拟实体 (k-NN classifier),以便它可以学习所需的结果。 "point" 是指单个示例,用一些 space 中的特征进行描述,使我们能够计算距离。
当被要求class确定(识别)新点时,您将在 n 个点中搜索最接近新点的 k 个实例。 "closest" 是指 "with the shortest distance between feature vectors"。
然后,您将根据对这 k 个点的投票来选择答案。例如,如果 k=5 和 3 分表示新的是 class A,并且 2 - class B,则假设新的是 class A。你必须为绘制指定一些策略 - 可能回落到 1-NN 并返回最近点的 class。
2。 "For any given problem, a small value of k will lead to a large variance in predictions."
我假设 "large variance in predictions" 作者的意思是 "many errors while classifying large amount of data"。
为什么会这样?
因为 k-NN 非常幼稚。直觉上接近点可能是相同的 class,但并非总是如此。例如,见下图中的 A 点。如果我们使用 k=1,那么最近的点将是红色,即使答案应该是绿色。对于 k=2,我们得到红色和绿色之间的平局并选择红色,因为它更接近。
Source: English wiki, with slight by-hand modification
最后,IMO这句话的意思是"if k is small, you'll probably get many wrong results"。
3。 "Setting k to a large value may lead to a large model bias."
A "bias" 倾向于给出一个答案比另一个答案更频繁,即使问题分布均匀。可能会出现较大的k,但问题是"when"。
嗯,"when" 的答案是 "when your training set is biased"。 "biased" 这里的意思是一些 class 比其他的用更多的点表示。
考虑一个训练集,其中 class + 有 5 分,class * 有更多分,如下图所示。
它可能不代表 class 之间的真实关系,但这就是您获得的所有数据。在下图中,classes 可能是线性可分的,并且点标记为红色?大概是+.
如果您使用 k=10,您几乎总是会得到答案 *。最好的情况是用红色标记的点? - 你将获得所有 5 个 + 点,另外 5 个 * 点并使用 + 解决 1-NN 平局,所以答案是正确的。
无论如何,在大多数情况下,您的 class 提供者会提供一个特定的答案,而这恰恰是偏见 - 一个 class 会更频繁地返回。
尽管在前面的示例中情况并非如此 - 正如句子所述,它 可能 导致较大的偏差,但不一定。
最后,这句话的意思是,如果你的数据集是有偏差的,那么你的 classifier 对于大 k 比小 k 更有可能出现偏差。
Source: my own
4.总结与延伸阅读
我希望这会向您澄清一些事情。
如果您需要更多,请参阅 this。
相信很多人都研究过和正在研究K-NN算法,我也是其中之一。
我刚遇到一句话"For any given problem, a small value of k will lead to a large variance in predictions. Alternatively, setting k to a large value may lead to a large model bias.",我觉得很多人都直截了当,但我不是。
如果你已经知道是什么意思,请帮我理解一下。
好的,让我们从头开始。
1. k-NN 是如何工作的?
您有 n(k 远小于 n)点的基数,您知道想要的答案 - 您可能已经从 oracle 获得了它。该集合称为训练集,因为您将其提供给虚拟实体 (k-NN classifier),以便它可以学习所需的结果。 "point" 是指单个示例,用一些 space 中的特征进行描述,使我们能够计算距离。
当被要求class确定(识别)新点时,您将在 n 个点中搜索最接近新点的 k 个实例。 "closest" 是指 "with the shortest distance between feature vectors"。 然后,您将根据对这 k 个点的投票来选择答案。例如,如果 k=5 和 3 分表示新的是 class A,并且 2 - class B,则假设新的是 class A。你必须为绘制指定一些策略 - 可能回落到 1-NN 并返回最近点的 class。
2。 "For any given problem, a small value of k will lead to a large variance in predictions."
我假设 "large variance in predictions" 作者的意思是 "many errors while classifying large amount of data"。
为什么会这样?
因为 k-NN 非常幼稚。直觉上接近点可能是相同的 class,但并非总是如此。例如,见下图中的 A 点。如果我们使用 k=1,那么最近的点将是红色,即使答案应该是绿色。对于 k=2,我们得到红色和绿色之间的平局并选择红色,因为它更接近。
Source: English wiki, with slight by-hand modification
最后,IMO这句话的意思是"if k is small, you'll probably get many wrong results"。
3。 "Setting k to a large value may lead to a large model bias."
A "bias" 倾向于给出一个答案比另一个答案更频繁,即使问题分布均匀。可能会出现较大的k,但问题是"when"。
嗯,"when" 的答案是 "when your training set is biased"。 "biased" 这里的意思是一些 class 比其他的用更多的点表示。
考虑一个训练集,其中 class + 有 5 分,class * 有更多分,如下图所示。
它可能不代表 class 之间的真实关系,但这就是您获得的所有数据。在下图中,classes 可能是线性可分的,并且点标记为红色?大概是+.
如果您使用 k=10,您几乎总是会得到答案 *。最好的情况是用红色标记的点? - 你将获得所有 5 个 + 点,另外 5 个 * 点并使用 + 解决 1-NN 平局,所以答案是正确的。
无论如何,在大多数情况下,您的 class 提供者会提供一个特定的答案,而这恰恰是偏见 - 一个 class 会更频繁地返回。
尽管在前面的示例中情况并非如此 - 正如句子所述,它 可能 导致较大的偏差,但不一定。
最后,这句话的意思是,如果你的数据集是有偏差的,那么你的 classifier 对于大 k 比小 k 更有可能出现偏差。
Source: my own
4.总结与延伸阅读
我希望这会向您澄清一些事情。
如果您需要更多,请参阅 this。