我有一套3-5个黑盒评分函数,可以为候选人分配正实价值分数。
每个人在排名最佳候选人中都是不错的,但是他们并不总是同意 - 我想找到如何将得分组合在一起以获得最佳元分数,以便在一个游泳池中候选人中,元评分最高的人通常是实际正确的候选人。
因此它们是普通的R^n
向量,但每个维度对于正确的候选者而言都会有更高的价值。天真的我可以将组件加倍,但我希望有更微妙的东西可以从中受益。
如果最高分太低(或者两个最高分太近),我只是放弃并说“没有”。
因此,对于每个试验,我的输入是一组这些得分向量,输出是哪个向量对应于实际的正确答案,或者“没有”#。这有点像技术面试,其中一些候选人被一些可能有不同意见的人采访,但总的来说,每个人都倾向于更喜欢最佳候选人。我自己的应用程序有一个客观的最佳候选人。
我希望最大化正确答案并尽量减少误报。
更具体地说,我的训练数据可能看起来像
的许多实例{[0.2,0.45,1.37],[5.9,0.02,2],...} - >我
其中i是输入集中的第i个候选向量。
所以我想学习一种能够从输入中最大化实际最佳候选人得分矢量的功能。没有最佳程度。它的二元对错。然而,它看起来不像传统的二元分类,因为在一组输入矢量中,最多可以存在1"分类"对,其余的都是错的。
由于
答案 0 :(得分:0)
您的问题并非完全属于机器学习类别。乘法方法可能会更好。您还可以为输出功能尝试不同的统计模型。
ML,更具体地说是分类,问题需要训练数据,您的网络可以从中学习数据中的任何现有模式,并使用它们将特定类分配给输入向量。
如果你真的想使用分类,那么我认为你的问题可以适用于 OnevsAll分类的类别。您将需要一个网络(或仅一个输出层),其中单元格数/ sigmoid单位数等于候选数量(每个代表一个)。请注意,此处您的候选人数将被修复。
您可以将整个候选向量用作网络所有单元格的输入。如果您的候选人没有,可以使用单热编码指定输出,即00100。 3是实际正确的候选人,如果没有正确的候选人输出将是00000.
为此,您需要一个包含候选向量和相应实际正确候选者的大数据集。对于这些数据,您将需要一个函数(再次像乘法)或者您可以自己分配输出,在这种情况下,系统将学习如何根据不同的输入对输出进行分类,并以与您相同的方式对新数据进行分类。这样,它将最大化正确输出的数量,但这里正确的定义将是您如何对训练数据进行分类。
您还可以使用不同类型的输出,其中输出图层的每个单元格对应于您的评分函数,00001表示您选择的第5评分函数的候选对象是正确的。通过这种方式,您的候选人无需修复。但同样,您必须手动设置网络训练数据的输出才能学习它。
OnevsAll 是一种分类技术,其中输出层中有多个单元格,每个单元格在其中一个类别与其他类别之间执行二进制分类。最后,具有最高概率的sigmoid被赋值为1并且为零。
一旦您的系统了解了如何通过训练数据对数据进行分类,您就可以输入新数据并以相同的方式输出,即01000等。
我希望我的回答能够帮到你。:)