2010-07-12 104 views
7

我确信在Stackoverflow上有很多软件测试工程师,算法验证工程师。有人请告诉我如何在下面的场景中进行。在算法之间进行选择

假设我们有一个乳房X线照片以及借此乳房X线照片作为输入,并确定是否有在癌症患者5种不同的算法。如果5个算法中有3个表示患者存在癌症,2表示患者没有癌症。我应该相信哪种算法。我应该如何继续测试这些算法。在这种情况下是否有任何统计概念?

我在面试中被问及算法验证工程师职位的这个问题。我相信他们试图看到我会如何考虑这种情况。我应该如何回答这个问题?

感谢您的时间

-Sashi

+6

你应该相信他们所有的,总的来说:结果是不确定的。让你的医生看看这部电影。 – Ken 2010-07-12 15:11:40

+1

不要让软件决定生活。至少还没有。 – Fanatic23 2010-07-12 16:55:56

回答

7

你不能说只有这些信息任何东西。如果某些算法重用这些5的其他算法会怎样?然后他们可能会出现同样的缺陷。

说A,B和C实际上使用相同的子算法来预处理数据,而后者在某些特定图像上给出次优结果,因此预处理后的图像会导致后期产生错误的结果 - 它并不重要有三种算法说相同。

您需要的算法是如何相互关联,哪些统计特性knwon大约有错误率是能够执行任何分析,更具体的数据。

+2

但是,这是一次采访,所以他可以提出这个问题,这对面试官来说显得很重要。 – Stephen 2010-07-12 14:49:42

4

这实际上很难回答。我确定每种算法都擅长挑选不同类型的输入触发器。更可能的是,您需要一些统计分析来确定每种算法通常会检测为癌症。此外,您可能甚至做了一些事情,比如根据算法结果做一个贝叶斯模型来描述/确定患者是否患有癌症。

你会发现3分的算法一直想念的特定类型的癌症,其他两个是在捡适度良好。你可能会发现类似的关系发生,比如算法2,3和5说没有癌症,算法1说有算法,算法4没有定论,通常通常是良性斑点的某种形状和颜色强度应该分析,但可能不是癌症。

1

我会问,如果使用计算机来确定某人是否患有癌症是正确的行动过程中,考虑到使用的算法很容易出错。

但是,如果由于某种原因必须使用一套算法,然后有一个人操作(即医生)亲自检查乳房X光检查在有一些不确定性的情况下。然后医生可以根据所用算法的不一致来决定是否需要进一步的检测。

我们忽视程序员的一点是人类可以解决一些我们无法预测的问题;想象医生在乳房X线照片中注意到算法是而不是设计用于检测?

+0

而且人工操作员的使用不容易出错? :-) – Ken 2010-07-12 15:13:45

+0

尽管图像处理软件一直在变得越来越好,但人类目前出众,但速度较慢。我们有一个寻找视觉模式的诀窍,这种模式似乎融入了我们的大脑。这就是为什么像银河动物园这样的组织使用人类志愿者而不是电脑来分析图像的原因。 – 2010-07-12 15:27:12

+0

@Jim C:没错。有一个折衷。使用相机+软件查找不良部件,因为他们从流水线上下来,这与使用软件识别癌症大不相同。对于医疗应用,我宁愿100%正确和慢,99%正确和超快。如果诊断速度快于医生可能意味着生命或死亡,我会愿意让计算机完成这项工作。 – 2010-07-12 15:35:32

1

我认为,如果你有关于每个算法以前表演(有多少次是正确/错误的多项统计实验)的一些统计信息,那么你可以计算的是适合每个算法的概率。然后你可以以某种方式结合这些概率来获得患癌症的人的几率。只是一个猜测......

2

好吧,明显的假阴性在这里比假阳性更严重,所以所有的事情都是平等的,我们可能想要显示一个偏爱找到更多癌症的算法。

如果我们向软件喂食更多的乳房X线照片,并且我们发现这些算法的集合似乎对乳房X线照片的大样本达成一致,那么我们可能希望更喜欢那些算法,因为它们的结果受更多算法的支持。

就是这样的。

2

一切都是平等的,你可以说患者有60%的机会患有癌症。为了给出更好的答案,您需要了解有关算法如何工作的更多信息。需要考虑的几点:

  • 也许某些算法比其他算法更新,或者被证明不太可靠。使用标记为“癌症”和“非癌症”的历史乳房X线照片数据来了解每种算法的准确性是很好的。
  • 每个人的癌症略有不同 - 也许有一些特征,某种算法更好地识别?根据算法结论和乳房X线照片(图像?)数据,是否需要域专家来确定哪种诊断是正确的?
  • 随着锐利提到,也许某些算法使用与其他算法相同的技术,所以两者都可能具有相同的偏差。
1

要大有作为在这种情况下,你一般都希望有一个“金”标准 - 例如,从约一组乳房X线照片的是否显示癌症,或使用历史信息,你知道,医生的意见一组乳房X线照片显示癌症,另一组则不显示。除此之外,如果可能的话,您需要了解每种算法在特定情况下使用的指标。使用标准,您可以开始估计哪个或哪些算法更“准确”(即最经常与专家意见一致)。有关指标的信息可以让您生成更多关于时间和环境的详细信息,使得每个环节看起来或多或少都是准确的,因此您可以开始形成对彼此信任的时间/环境的判断。有了这个,你可以(至少希望)将你现有的五种算法的结果合并成一个单独的总体结果(小心翼翼,也许有点运气),这些结果比任何一个都更准确。

1

基本上,如果您知道算法的结果是条件独立的(即独立给定真实但未知的类标签),那么使用Naive Bayes是一个最佳的元分类器。

否则,如果不知道分类器之间的条件依赖关系结构,则此问题是无法解析的。例如,如果分类器A,B,C和D是弱的,相同的分类器(即它们总是给出相同的结果)并且具有0.51的准确性,而分类器E在条件上独立于分类器A,B,C和D并且具有0.99的准确性,那么我认为投票是一个坏主意是非常明显的。

2

这是不是一个小问题,并且高度依赖于你愿意承担什么风险。

决策理论和贝叶斯推理这样的形式化真的在这里被考虑。它可以让您考虑各种可能的误报/不利情况,以及您是否想要对它们进行不同的权衡。

1

由于算法产生“是”或“否”的答案,这很容易。你需要实际的测试数据来比较你的算法。您应该可以收集有关各种启发式算法成功率的长期数据,并对哪些数据更可能是正确的做一些统计分析。

验证诸如谷歌的搜索算法 - 没有“正确”答案的东西 - 会更难。

1

回过头来看看每种算法的趋势数据。在过去,A有多少次是正确的,B是正确的等等。从这里开始的典型路线是运行所有算法并应用贝叶斯理论系统,但是我认为这种方法太笼统了,因为它很大程度上取决于质量源数据。由于每种算法都具有特定类型的输入,所以更专门的​​方法是创建一个过滤器,筛选符合特定算法特性的标记的源数据。例如,如果源代码来自较旧的机器,则不希望使用一种对图像噪声进行分析的算法较差。乳房X光检查技术专家将是帮助识别更具体标记的重要资产。也许你可以在这个过滤过程之后应用一个加权系统来提供更好的估计。

2

我不认为你应该已经以任何特定的方式回答。面试官可能想要分析如何你会评估这个问题,而不是你最终的答案。换句话说,他们可能对你自己的算法感兴趣,并作出决定。

在现实生活环境中,我不能想到5种算法之间有什么严肃的选择来找到癌症,特别是当他们给出如此不同的结果时。

2

这是实施有时称为“专家系统”的好机会。你需要大量的数据(在你的情况下,乳房X线照片图像和各种算法的输出),并通过该领域的一系列现实生活中的血肉和血液专家(这里是肿瘤学家或实验室技术人员)运行。记录每个图像的响应以及算法的输出。最后,您应该有足够的数据将算法输出映射到专家输出。要验证您的映射是否有效,请在您的系统中运行大量测试图像(原始数据集中包含而非部分的样本),并请专家组仔细检查结果。理想情况下,专家应该同意系统输出的时间百分比非常高。如果不知道算法本身的任何内容,就很难根据3个“是”和2个“否”结果做出决定(特别是对于像癌症筛查那样重要的事情)。尽可能接近与经过培训的专家相同的结果是您的目标(至少在第一时间),并且通过根据专家在该领域的知识和经验做出决策而不是数学上的决策,有时可以使这样的系统更加准确算法。

3

把你的受访者戴上帽子,这是一个心理评估。像这种算法评估这样的问题有不止一个正确的答案。我从我的妻子那里学习了这些问题,他曾经作为一名招聘人员工作了5年以上。面试官想看看你的反应。最好只是做出假设并推动得出合乎逻辑的结论。不要说“我不知道”,变得有争议,或者提出很多问题。你会显得困难和议论(像很多程序员一样)。

现在你知道这不是一个编程问题,可以考虑在careeroverflow.com上提问。我喜欢这些问题,因为它表现出适应并变得非刚性的能力。

Why is a manhole round? < --Microsoft的版本

0

根据所给出的信息,你将不能够回答。您将不得不采取所有5种算法,并对诊断患有癌症的患者以及已知无癌症的患者进行测试。这将允许您确定哪种算法最准确。

你也可以从5中算出一个算法(假设它们都是好的和有效的algortihms)并且选择任何一个拥有更多选票的方。这可能或不可能是一个有效的第六个算法,具体取决于前5个算法的好坏。

4

为作业选择最佳分类器或组合各种分类器是一个完全独立的领域。 This general article about classification对于学习如何选择最适合的工作分类器来说是一个很好的开端。并且this article about classifier ensembles是开始学习分类器组合的好地方。

为了让基础的答案,你的(相当宽的)问题:找工作最好的分类取决于以下几个因素:

  • 分类的质量要求(在你的情况,这将是高)
  • 允许的分类复杂性(例如,你可以计算几天达到你的答案的几毫秒)(时间不是你的情况下我会猜到的限制)
  • 与错误分类相关的成本。这是你的情况中一个非常重要的因素。如果你告诉人们他们有癌症时,他们没有造成巨大的压力,但是(希望)进一步的测试(这会花钱)最终会发现他们是健康的。另一方面,如果你错过了病人的癌症,她可能会死亡。这意味着“最好的”分类器(使错误最少的分类器)可能不是最适合您的问题的分类器。

关于最后一点:假设1 1000名妇女患有癌症,我有一些分类:

  1. 小姐20的癌症病例%,并说一个健康的女人有癌症病例的2%。这个分类器将在10000人的人口中发生大约200次错误。
  2. 只是说:“这个人没有癌症”在所有情况下。 10000个病例只有10个错误!
  3. 只要说“这个病人有癌症”,10000个病例会造成9990个错误。

第二个分类器产生的错误数最少,但在使用它几个月后,可能已被保存的人开始死亡。第三个分类器会将所有人发送给下一个测试人员(这会有与此相同的问题),也可能会对9990名健康人员进行无用的生活更改操作。第二个测试是一个折衷。两个人可能会变得非常生病,甚至死亡,198人经历了痛苦的和充满压力的程序和操作。 显然在你的情况下,所有的分类器就像分类1一样,百分比有轻微的变化。在这些情况下,你必须在失踪的癌症病例之间进行权衡,并且对健康人进行其余的程序(包括成本!)。关于这种权衡的研究的起点是receiver-operater-characteristic

相关问题