2010-07-12 112 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

相關問題