一个人反复从三个项目中选择两个最相似的项目。如何建模/估计项目之间的感知距离?

机器算法验证 造型 降维 心理测量学 相似之处
2022-03-13 23:02:00

给一个人三个项目,比如人脸图片,并要求他们从三个人脸中选出最相似的两个。对于不同的面组合,这会重复很多次,其中每个面都可以以多种组合出现。鉴于这种数据,我想通过假设每个面可以放置在 2D 空间(或 3d、4d 等)中来建模/估计面之间的差异/相似性,其中每个面之间的距离反映了选择参与者。

什么是建模/估计的好(甚至可能是标准)方法?

任何指向模型/论文和/或软件包的指针都非常感谢。

2个回答

可以在Cox 等人 (2000)的论文The Bayesian Image Retrieval System, PicHunter的第 4 节中找到解决此类问题的好方法。数据是一组整数结果A1,...,AN在哪里N是试验次数。在您的情况下,每次试验有 3 种可能的结果。我会让Ai是被遗漏的人脸的索引。这个想法是假设给定一些模型参数的结果的生成模型,然后通过最大似然估计参数。如果我们展示面孔(X1,X2,X3)参与者说(X2,X3)是最相似的,那么结果是A=1, 有概率

p(A=1 | X1,X2,X3)exp(d(X2,X3)/σ)
在哪里d(X2,X3)是面 2 和面 3 之间的距离,以及σ是“噪音”量的参数(即参与者的一致性)。由于您想要嵌入欧几里得空间,因此您的距离度量将是:
d(x,y)=k(θxkθyk)2
在哪里θx是面部的(未知)嵌入x. 该模型的参数为θσ,您可以通过最大似然从数据中估计。该论文使用梯度上升来找到最大值。

论文中的模型略有不同,因为论文使用图像的已知属性来计算距离,而不是未知的嵌入。要学习嵌入,您需要一个更大的数据集,其中每张脸都显示了多次。

这个基本模型假设所有试验都是独立的,所有参与者都是相同的。这种方法的一个很好的好处是您可以轻松地修饰模型以包含非独立性、参与者效应或其他协变量。

想法:

我认为特征脸是将百万维空间转换为几十维的一种不错的方法。

前提:

因此,让我们假设您正在使用一个不错的特征脸工具,或者一个:

  • 进行预处理以对齐适当的特征
  • 以适当的方式处理颜色
  • 确保使用的图片大小相同

这意味着您没有“图片”,因为您拥有长度为 O(n=50) 元素的向量,其中元素是构成基础的每个特征面的权重。

分析:

首先,我将创建 150 个元素的向量(权重的串联)作为输入,并创建 1 个元素的向量(最接近匹配的元素)作为输出。如果元素 1 和 2 最接近,则输出值为“12”。如果元素 1 和 3 最接近,则输出将为“13”。如果元素 2 和 3 最接近,则输出将为“23”。鉴于只有 3 个独特的输出,我可以将它们重新映射到“12”的案例 1、“13”的案例 2 和“23”的案例 3。

其次,我想尽可能多地丢弃无意义的数据。这意味着我会尝试使用随机森林之类的东西来确定大约 150 列中的哪些列没有提供信息。还有一种“随机邪恶双胞胎方法”,但我没有像 R 给我随机森林那样触手可及。(如果你知道一个好的 R 库,我邀请你把它放在评论中)。

第三,以我个人的经验,如果你有合适的样本量和合适的基础,随机森林通常可以让你减少到大约 30 个感兴趣的变量,甚至从多达 15k 列中。这是您必须考虑答案的一般形式的地方。

您可以尝试对这些变量进行十几种变换,以将减少的输入映射到输出:

  • 您可以训练减少输入的 RF 并将其称为好。
  • 如果您想要比 RF 更好的平滑插值和泛化,您可以在减少的输入上训练 NN
  • 你可以对输入使用某种线性变换
  • 有几十个其他 ML 锤子可以用来敲击它,但是当你是锤子时,每个问题看起来都像钉子。

更多想法:

  • 我会很好奇哪些特征面是减少的集合引用。我只想看看这些数据并让它跟我说话。
  • 我很好奇你的样本量和你的变化的性质。如果您正在查看 3 行,那么拥有 150 列的效率不会太高。如果你有几千行,那么你的状态可能很好。几百行,你可能是平均水平。我希望你能解释种族、面部形状等方面的所有差异来源。
  • 不要害怕先浏览简单的模型。他们可以很好。它们的解释和适用性很容易评估。与复杂和高度敏感的方法相比,它们的执行可以用更少的努力进行测试和确认。

更新:
“随机邪恶双胞胎”工具是“Boruta”。链接