KNN有损失函数吗?

机器算法验证 机器学习
2022-02-10 06:13:34

在机器学习的背景下,我没有在 wiki 上找到损失函数的定义。

虽然这个不太正式,但很清楚。

损失函数的核心非常简单:它是一种评估算法对数据集建模的好坏的方法。如果您的预测完全错误,您的损失函数将输出更高的数字。如果它们非常好,它会输出一个较低的数字。当您更改算法的各个部分以尝试改进模型时,您的损失函数会告诉您是否成功。

看来KNN的错误率并不是可以指导模型本身优化的函数,比如梯度下降。

那么,KNN 有损失函数吗?

2个回答

k-NN 没有可以在训练期间最小化的损失函数。事实上,这个算法根本没有经过训练。唯一发生的“培训”k-NN,正在记忆数据(创建本地副本),以便在预测期间您可以进行搜索和多数投票。从技术上讲,没有适合数据的函数,因此没有进行优化(不能使用梯度下降进行训练)。

作为已接受答案的替代方案:

每个统计算法都会显式或隐式地最小化某个目标,即使没有参数或超参数,即使最小化不是迭代完成的。kNN 非常简单,以至于人们通常不会这样想,但您实际上可以写下一个明确的目标函数:

t^=argmaxCi:xiNk({x},x^)δ(ti,C)

这说明了预测的类t^为了一点x^等于类C最大化其他点的数量xi在集合中k附近点Nk({x},x^)也具有相同的类别,由δ(ti,C)这是1什么时候xi正在上课C,0除此以外。

以这种方式编写它的好处是,人们可以看到如何通过接近加权点来使目标“更柔和”。关于“训练”,这里没有适合的参数。但是可以调整距离度量(用于定义Nk) 或此总和中的点的权重,以优化一些额外的分类目标。这导致邻域成分分析:https ://www.cs.toronto.edu/~hinton/absps/nca.pdf学习距离度量。