评估用户反应的算法
Posted
技术标签:
【中文标题】评估用户反应的算法【英文标题】:algorithms to evaluate user responses 【发布时间】:2010-12-12 02:27:56 【问题描述】:我正在开发一个用于对汽车照片进行分类的网络应用程序。用户将看到各种车辆的照片,并被要求回答一系列关于他们所看到的问题。结果将被记录到数据库中,平均并显示出来。
我正在寻找算法来帮助我识别那些经常不在群组中投票的用户,这表明他们可能没有注意照片,或者他们对所看到的内容撒谎。然后,我想排除这些用户,并重新计算结果,这样我就可以有把握地说,这张特定的照片显示的是这样和那样的车辆。
这个问题要问所有计算机科学的人,在哪里可以找到这样的算法,或者给我自己设计这样的算法的理论背景。我假设我将不得不学习一些概率和静态,也许是一些数据挖掘。一些书籍推荐会很棒。谢谢!
附:这些是多项选择题。
所有这些都是很好的建议。谢谢!我希望有一种方法可以在堆栈溢出时选择多个正确答案,以便更多人的贡献得到认可!
【问题讨论】:
问题是开放式还是选择题?他们是主观的还是客观的,通常只有一个正确答案? 他们是多项选择题 【参考方案1】:阅读The Elements of Statistical Learning,这是一本很棒的数据挖掘纲要。
您可能对无监督算法特别感兴趣,例如聚类。假设大多数人不撒谎,那么最大的集群是对的,其余的都是错误的。相应地标记人员,然后应用一些贝叶斯统计数据,您就完成了。
当然,大多数数据挖掘技术都是实验性的,所以不要指望它们总是正确的……甚至在大多数情况下。
【讨论】:
【参考方案2】:我相信您描述的问题可以使用outlier/anomaly detection 解决。 存在多种技术:
基于统计的方法 基于距离的方法 基于模型的方法我建议你看看这些slides来自优秀的书Introduction to Data Mining
【讨论】:
【参考方案3】:如果您知道自己期待什么答案,为什么还要让人们投票?通过排除某些值,您基本上可以将投票投向 您 喜欢的内容。汽车给不同的人留下不同的印象。如果 100 个人喜欢一辆车,那么当有人来说他/她不喜欢它时,你会排除投票吗?
但无论如何,考虑到您仍然想这样做,首先您需要大量来自“受信任”选民的数据。这会给你一个“好”答案的想法,然后你可以选择排除阈值。
如果没有初始数据集,您将无法应用任何算法,因为您会得到错误的结果。仅考虑从 0 到 100 的范围内的 100 票。第二票是“1”。您将排除此票,因为距离平均值太远。
【讨论】:
【参考方案4】:我认为一个非常简单的算法可以为您完成此任务。您可以尝试通过计算标准偏差等来变得更漂亮,但我不会打扰。
这里有一个简单的方法就足够了:
对于您的每个用户,计算他们回答的问题数量以及他们为该问题选择最受欢迎答案的次数。选择热门答案与您可以猜到的总答案的比例最低的用户提供了虚假数据。
您可能不想丢弃用户只回答了少量问题的数据,因为他们可能只是在一些问题上存在分歧,而不是输入虚假数据。
【讨论】:
【参考方案5】:它们是什么类型的问题(是/否,还是 1 到 10?)。
您可以通过使用平均值而不是平均值来避免不丢弃任何东西。如果响应中有极端异常值,则使用平均值可能会影响平均值,但如果您使用中位数,您可能会得到更好的答案。因此,例如,如果您有 5 个答案,请订购它们并选择中间的一个。
【讨论】:
平均值是平均值。您是说“中位数而不是平均值”吗? @erickson,是的,我的意思是中位数,抱歉,感谢您的更正【参考方案6】:我认为您的意思是您担心某些人是“异常值”,他们会在您的数据中添加噪音,从而降低分类的可靠性。所以,如果你有一辆雪佛兰科迈罗,大多数人说它不是小马车、肌肉车或跑车,但你有一些傻瓜说这是一辆家用轿车,你会希望尽量减少他的影响。投票。
您可以做的一件事是为用户提供类似于 Stack Overflow 的信誉评分:
用户与其他用户的“一致”越多,他或她的得分就越高。对于给定的用户(用户 X),这可以通过简单计算回答问题的用户选择与用户 X 相同类别的百分比来确定,然后对所有回答的问题取平均值。 您可能需要将此值乘以回答的问题总数,以鼓励人们回答尽可能多的问题。 (注意:如果您选择这样做,则相当于只是将百分比一致性分数相加,而不是取平均值。) 您可以向用户展示最终的信誉评分,并确保向他们解释他们的回答与其他用户的回答一致程度如何才能获得奖励。这将鼓励人们回答更多问题,但同时也要注意他们的回答。 最后,您可以通过将所有选择给定类别的人的总声誉得分相加来计算给定类别的确定性得分。其中一些想法可能需要一些改进,尤其是因为我不知道您的确切情况。当然,如果人们可以在投票之前看到其他人选择了什么,那么玩这个系统就太容易了。
【讨论】:
【参考方案7】:如果您要收集诸如“从 1 到 10,您如何评价这辆车”之类的选票,您可能可以使用简单的平均值和标准差:标准差越小,普遍共识就越一致在您的选民中,您可以标记例如平均 3 个标准开发人员。
对于多选,你需要更加小心。简单地丢弃除投票最多的选项之外的所有选项只会让选民不满。您需要建立衡量获胜者的重要性的衡量标准。其他选项,例如标记投票选择的选项少于获胜选项的 1/3 的用户。
请注意,我写的是“标记用户”,不是丢弃投票。如果您放弃投票,您无法说出您对结果的信心(“91% 的人认为这是一辆福特野马”)。如果用户标记了超过一定百分比的选票 - 好吧,这取决于您。
然而,您最棘手的问题可能是收集足够的选票。根据多项选择问题的简单程度,每张照片您可能需要几倍的选项作为投票数。否则统计是没有意义的。
【讨论】:
以上是关于评估用户反应的算法的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:未定义不是对象(评估'array.length')反应原生[关闭]
反应本机路由器通量:TypeError:未定义不是函数(评估'addListener')