我相信Stackoverflow上有很多软件测试工程师,算法验证工程师。有人请告诉我如何在以下场景中继续进行。
假设我们有一个乳房X光检查和5种不同的算法,这些算法将此乳房X光检查作为输入,并确定患者是否有癌症。如果5个算法中有3个表示患者有癌症,2个人说患者没有癌症。我应该相信哪种算法。我该如何继续测试这些算法。在这种情况下是否使用了统计概念?
在算法验证工程师职位的采访中,我被问到这个问题。我相信他们试图看看我会如何看待这种情况。我该怎么回答这个问题?
感谢您的时间
-Sashi
答案 0 :(得分:7)
你不能说任何只有这些信息的东西。如果某些算法重用那些5中的其他算法怎么办?然后他们可能会出现同样的缺陷。
假设A,B和C实际上使用相同的子算法来预处理数据,而后者在某些特定图像上给出了次优的结果,因此预处理的图像会导致后期阶段产生错误的结果 - 这对您来说无关紧要三种算法说同样的。
您需要更多关于算法相关性的具体数据,以及有关错误率的结论的统计特征,以便能够执行任何分析。
答案 1 :(得分:4)
这实际上很难回答。我确信每个算法都擅长选择不同类型的输入触发器。更有可能的是,您需要进行一些统计分析,以确定每种算法通常会检测为癌症。此外,您可能会做一些像做贝叶斯模型来描述/确定患者是否患有癌症的算法结果。
你可能会发现3种算法始终错过了特定类型的癌症,而其他两种癌症在适当的情况下擅长。您可能会发现类似的关系,例如算法2,3和5表示没有癌症,算法1表示存在,算法4不确定,通常通常是良性点的某种形状和颜色强度应该分析,但可能不是癌症。
答案 2 :(得分:4)
为作业选择最佳分类器,或组合各种分类器是一个完全独立的领域。 This general article about classification与任何学习选择最佳分类器的工作一样好。 this article about classifier ensembles是开始学习分类器组合的好地方。
为你的(相当广泛的)问题提供答案的基础:工作的最佳分类器取决于几个因素:
关于最后一点:1000名女性中有1人患有癌症,我有一些分类器:
第二个分类器产生的错误数量最少,但在使用几个月后,可能已被保存的人开始死亡。第三个分类器将每个人都送去进行下一次测试(这将与此问题具有相同的问题),或者它可能会对9990名健康人造成无用的生活改变操作。第二次测试需要权衡。两个人可能会变得非常恶心甚至死亡,198人经历痛苦和压力很大的程序和操作无济于事。 显然,在您的情况下,所有分类器都像分类器1,百分比略有变化。在这些情况下,您必须在遗失的癌症病例之间进行权衡,并对健康人进行其余程序(包括费用!)。关于这种权衡的研究的起点是receiver-operater-characteristic
答案 3 :(得分:3)
让你的受访者戴上帽子,这是一种心理评估。诸如此算法评估之类的问题有多个正确答案。我从我的妻子那里了解了这些问题,这位妻子作为招聘人员工作了5年多。面试官想看看你的反应。最好只做假设并推动合乎逻辑的结论。不要说“我不知道”,变得有争议,或者提出大量问题。你会显得困难和争论(许多程序员都是)。
既然您知道这不是编程问题,请考虑在careeroverflow.com上询问。我喜欢这些问题,因为它表现出适应能力和非刚性的能力。
Why is a manhole round?< - Microsoft的版本
答案 4 :(得分:2)
嗯,显然假阴性在这里比假阳性要严重得多,所以在所有条件相同的情况下,我们可能希望显示出对发现更多癌症的算法的偏好。
如果我们向软件提供更多的乳房X线照片,我们发现这些算法的集合似乎对乳房X线照片的大样本一致,那么我们可能希望更喜欢这些算法,因为它们的结果得到更多算法的支持。 / p>
类似的东西。
答案 5 :(得分:2)
在其他条件相同的情况下,您可以说患者有60%的患癌症。要提供更好的答案,您需要了解有关算法如何工作的更多信息。需要考虑的一些要点:
答案 6 :(得分:2)
不是一个微不足道的问题,并且高度依赖于您愿意承担的风险。
这里真的要考虑像决策理论和贝叶斯推理这样的形式主义。它允许您考虑各种假阳性/阴性概率,以及是否要对它们进行不同的权衡。
答案 7 :(得分:2)
我不认为你应该以任何特定方式回答。面试官可能想要分析 你将如何评估这个问题,而不是你的最终答案。换句话说,他们可能对你自己的算法感兴趣做出决定。
在现实生活环境中,我无法想到在5种算法中找到癌症的任何认真选择,特别是当它们给出如此不同的结果时。
答案 8 :(得分:2)
这是实施有时被称为“专家系统”的好机会。您可以获取大量的数据样本(在您的情况下,乳房X线照片图像和各种算法的输出)并将其运行到该领域的一系列现实,血肉专家(此处为肿瘤学家或实验室技术人员)。记录每个图像的响应以及算法的输出。最后,您应该有足够的数据将算法输出映射到专家输出。要验证您的映射是否有效,请通过您的系统运行一堆测试图像(不原始数据集的一部分的样本)并请您的专家小组仔细检查结果。理想情况下,专家应该在非常高的百分比时间内同意系统的输出。
在不了解算法本身的情况下,很难根据3“是”和2“否”结果做出决定(特别是对于像癌症筛查一样重要的事情)。尽可能接近与训练有素的专家相同的结果是您的目标(至少在开始时),并且通过根据该领域专家的知识和经验做出决策而不是数学,有时可以使这样的系统更加准确算法。
答案 9 :(得分:1)
考虑到算法的使用容易出错,我会问是否使用计算机确定某人是否患有癌症是正确的行动方案。
但是,如果出于某种原因必须使用一组算法,那么在存在一些不确定性的情况下,让人工操作员(即医生)亲自检查乳房X线照片。然后医生可以根据所用算法的不一致来决定是否有必要进行进一步的检查。
我们作为程序员忽略的一件事是人类可以解决我们无法预测的问题;想象一下,医生注意到乳房X线照片中的某些算法是不设计用来检测?
答案 10 :(得分:1)
我认为如果你有一些关于每个算法先前表现的统计信息(在一些统计实验中它是正确/错误的次数),那么你可以计算出适合每种算法的概率。然后,你可以以某种方式结合这些概率,以获得该人患癌症的几率。只是猜测......
答案 11 :(得分:1)
为了在这种情况下取得很大成就,你通常希望有一个“黄金”标准 - 例如,医生关于一组乳房X线照片是否显示癌症的意见,或者使用您知道一组的历史信息乳房X线照片显示癌症而另一组则没有。除此之外,如果可能的话,您需要了解每种算法在特定情况下使用的指标。
使用标准,您可以开始估计哪些算法更“准确”(即,最常见的是与专家意见一致)。有关指标的信息允许您生成有关时间和环境的更多详细信息,在这些时间和条件下,每个指标看起来或多或少都是准确的,因此您可以开始形成对相互信任的时间/环境的判断。有了这个,你可以(至少希望)将你现有的五种算法的结果合并到一个整体结果中(小心翼翼,也许有点运气)比任何一个都更准确。
答案 12 :(得分:1)
基本上,如果您知道算法的结果是条件独立的(即,在给定真实但未知的类标签的情况下是独立的),则使用Naive Bayes是最佳的元分类器。
否则,在不知道分类器之间的条件依赖性结构的情况下,这个问题是无法解决的。例如,如果分类器A,B,C和D是弱的,相同的分类器(即它们总是给出相同的结果)并且具有0.51的精度,而分类器E在条件上独立于分类器A,B,C和D并且具有准确度为0.99然后我认为很明显投票是一个坏主意。
答案 13 :(得分:1)
由于算法产生“是”或“否”的答案,这很容易。您需要实际测试数据来比较您的算法。您应该收集有关各种启发式成功率的长期数据,并对哪些更有可能是正确的进行统计分析。
验证诸如谷歌的搜索算法之类的东西 - 没有“正确”答案 - 会更难。
答案 14 :(得分:0)
根据给出的信息,您将无法回答。您将不得不采用所有5种算法,并对诊断患有癌症的患者以及已知无癌症的患者进行测试。这将允许您确定哪种算法最准确。
你也可以从5中做出一个算法(假设它们都是好的和有效的算法),并采取任何一个有更多选票的方面。这可能是也可能不是有效的第六种算法,具体取决于前5种的好坏。