我正在使用Weaviate的KNN引擎来执行多类分类,但我不理解:
- 它使用的是哪种KNN
- 是使用简单投票还是距离加权投票
- 它使用余弦距离吗
- 它是用一种方法来寻找可能的邻居,还是用蛮力来寻找所有真正的最近邻居
- 什么是输赢组,它们是如何用于预测新向量的类别的
好问题,让我逐一回答:
它使用的是哪种KNN?
我不完全确定你说的";什么样的";,但我认为这将通过剩下的问题得到回答。需要记住的一点是,Weaviate的kNN分类利用了特定类的现有向量索引。因此,根据您是使用自己的矢量还是使用模型进行矢量化,输入参数将决定分类的运行方式。例如,如果您在名为description
的text
属性上使用text2vec
模块,则这些描述将用于查找最接近的匹配项。
是使用简单投票还是距离加权投票?
从v1.8.0
开始,这只是简单的投票。距离加权投票可能是未来的一个不错的补充。
它使用余弦距离吗?
如第一个答案中所述,您为类选择的任何设置也将适用于分类。截至v1.8.0
,Weaviate通常使用余弦距离,但计划在不久的将来添加其他距离度量。
它是使用一种方法来寻找可能的邻居,还是使用蛮力来寻找所有真正的最近邻居?
与上面类似,它遵循类的设置。通常使用HNSW近似索引。您可以在类级别上调整其参数。
什么是输赢组,它们如何用于预测新向量的类别?
它们是一种工具,可以深入了解为什么分类会产生这样的结果。获胜的小组是";组";投票率最高的结果,因此导致该项目被归类为该项目。丢失的组(可以有多个(是可替换的"分组";组";没有获得最高票数。了解每一组可能是调整k
以用于未来分类的一个很好的见解。