Ich bin mir sicher, dass es viele Software Testing Engineers, Algorithmenvalidierungsingenieure auf Stackoverflow gibt. Könnte mir bitte jemand sagen, wie man im folgenden Szenario vorgehen sollte.
Nehmen wir an, wir haben ein Mammogramm und fünf verschiedene Algorithmen, die dieses Mammogramm als Eingabe verwenden und erkennen, ob Krebs im Patienten ist. Wenn 3 von 5 Algorithmen sagen, dass Krebs im Patienten ist und 2 sagen, dass es keinen Krebs bei dem Patienten gibt. Welcher Algorithmus sollte ich glauben? Wie soll ich diese Algorithmen testen? Gibt es in solchen Szenarien ein statistisches Konzept?
Ich wurde diese Frage in einem Interview für die Position des Algorithm Validation Engineers gestellt. Ich glaube, sie versuchten zu sehen, wie ich angesichts eines solchen Szenarios denken würde. Wie hätte ich das beantworten sollen?
Danke für Ihre Zeit
-Sashi
Sie können nichts sagen, wenn Sie nur diese Information haben. Was, wenn einige der Algotithms einige andere Algorithmen aus diesen 5 wiederverwenden? Dann könnten sie für dieselben Defekte anfällig sein.
Sagen Sie, A, B und C verwenden den gleichen Unteralgorithmus für die Vorverarbeitung von Daten und der letztere liefert suboptimale Ergebnisse für ein bestimmtes Bild und das vorverarbeitete Bild führt dazu, dass die späteren Phasen zu falschen Ergebnissen führen - es spielt keine Rolle drei Algorithmen sagen dasselbe.
Sie benötigen spezifischere Daten darüber, wie die Algorithmen korrelieren und welche statistischen Merkmale über die Fehlerraten bekannt sind, um eine Analyse durchführen zu können.
Das ist eigentlich ziemlich schwer zu beantworten. Ich bin sicher, jeder Algorithmus ist gut darin, verschiedene Arten von Eingabetriggern zu erfassen. Mehr als wahrscheinlich, benötigen Sie eine statistische Analyse, um zu bestimmen, was jeder Algorithmus normalerweise als Krebs erkennt. Darüber hinaus können Sie so weit gehen, etwas wie ein Bayes-Modell zu machen, um zu beschreiben / zu bestimmen, ob ein Patient Krebs hat, basierend auf den algorithmischen Ergebnissen.
Sie können feststellen, dass 3 Algorithmen konsistent die spezifische Art von Krebs vermissen, dass die anderen beiden mäßig gut bei der Aufnahme sind. Sie können ähnliche Zusammenhänge entdecken, wenn die Algorithmen 2, 3 und 5 sagen, dass es keinen Krebs gibt, sagt Algorithmus 1, und Algorithmus 4 ist nicht schlüssig, dass es normalerweise typisch gutartige Flecken mit einer bestimmten Form und Farbintensität gibt das sollte analysiert werden, ist aber wahrscheinlich kein Krebs.
Die Auswahl des besten Klassifikators für einen Job oder die Kombination verschiedener Klassifikatoren ist ein ganz eigenes Feld. Dieser allgemeine Artikel zur Klassifizierung ist ein guter Anfang, um mehr über die Auswahl des besten Klassifikators für einen Job zu erfahren . Und dieser Artikel über Klassifikator-Ensembles ist ein guter Ort, um etwas über das Kombinieren von Klassifikatoren zu lernen.
Um die Grundlage für eine Antwort auf Ihre (ziemlich breite) Frage zu geben: Der beste Klassifikator für einen Job hängt von mehreren Faktoren ab:
Zu diesem letzten Punkt: Sagen Sie, 1 von 1000 Frauen hat Krebs, ich habe einige Klassifizierer:
Der zweite Klassifikator verursacht die geringste Anzahl an Fehlern, aber nach ein paar Monaten, in denen er verwendet wurde, beginnen Leute, die gerettet werden konnten, zu sterben. Der dritte Klassifikator schickt jeden für den nächsten Test (der das gleiche Problem wie dieser hätte) oder er verursacht bei 9990 gesunden Menschen eine nutzlose lebensverändernde Operation. Der zweite Test macht einen Kompromiss. Zwei Menschen können sehr krank werden oder sogar sterben, 198 Menschen erleben schmerzhafte und stressige Prozeduren und Operationen umsonst. Offensichtlich waren in Ihrem Fall alle Klassifikatoren wie Klassifikator 1 mit leichten Abweichungen in den Prozentsätzen. In diesen Fällen müssen Sie einen Kompromiss zwischen fehlenden Krebsfällen und dem Rest des Verfahrens (einschließlich Kosten!) Für gesunde Menschen schließen. Der Ausgangspunkt für die Untersuchung dieses Kompromisses ist die Empfänger-Betreiber-Charakteristik
Setzen Sie Ihren Interviewpartner auf, es ist eine psychologische Einschätzung. Fragen wie diese Algorithmusbewertung haben mehr als eine richtige Antwort. Über diese Fragen habe ich von meiner Frau erfahren, die über 5 Jahre als Personalvermittlerin gearbeitet hat. Der Interviewer möchte sehen, wie Sie reagieren. Es ist das Beste, nur Annahmen zu machen und zu einer logischen Schlussfolgerung zu führen. Sag nicht "Ich weiß es nicht", werde streitsüchtig oder stelle eine Menge Fragen. Sie werden schwierig und argumentativ erscheinen (so viele Programmierer).
Nun, da Sie wissen, dass dies keine Programmierfrage ist, sollten Sie darüber nachschauen, auf careeroverflow.com. Ich mag diese Fragen, weil sie eine Anpassungsfähigkeit zeigen und nicht starr werden.
Warum ist ein Mannloch rund? & lt; - Microsofts Version
Nun, hier sind eindeutig falsche Negative weit ernster als falsche Positive. Wenn alle Dinge gleich sind, wollen wir vielleicht Algorithmen bevorzugen, die mehr Krebs finden.
Wenn wir der Software viel mehr Mammogramme zuführen und wir feststellen, dass eine Sammlung der Algorithmen sich auf eine große Stichprobe der Mammogramme zu einigen scheint, dann könnten wir diese Algorithmen bevorzugen, da ihre Ergebnisse durch mehr Algorithmen unterstützt werden / p>
So ähnlich.
Wenn alles andere gleich ist, könnte man sagen, dass der Patient eine 60% ige Chance auf Krebs hat. Um eine bessere Antwort zu geben, müssen Sie mehr Informationen darüber wissen, wie der Algorithmus funktioniert. Einige Punkte zu beachten:
Es ist nicht ein triviales Problem und hängt stark davon ab, welche Risiken Sie bereit sind zu übernehmen.
Formalismen wie Entscheidungstheorie und Bayesian Inferenz sind hier wirklich zu berücksichtigen. Es erlaubt Ihnen, verschiedene Wahrscheinlichkeiten von falsch positiven / negativen zu berücksichtigen, und ob Sie sie unterschiedlich abwägen möchten.
Ich glaube nicht, dass Sie >> auf eine bestimmte Art und Weise geantwortet haben sollten. Der Interviewer würde wahrscheinlich analysieren wollen, wie Sie dieses Problem und nicht Ihre endgültige Antwort bewerten würden. Mit anderen Worten, sie waren wahrscheinlich an Ihrem eigenen Algorithmus interessiert, um eine Entscheidung zu treffen.
In einer realen Umgebung kann ich mir keine ernsthafte Wahl zwischen fünf Algorithmen vorstellen, um Krebs zu finden, besonders wenn sie so unterschiedliche Ergebnisse liefern.
Dies ist eine gute Gelegenheit, ein sogenanntes "Expertensystem" zu implementieren. Sie nehmen eine große Stichprobe Ihrer Daten (in Ihrem Fall Mammogrammbilder und die Ausgabe der verschiedenen Algorithmen) und führen sie an einer Reihe von echten Experten für Fleisch und Blut aus dem Bereich vorbei (hier Onkologen oder Labortechniker). Zeichnen Sie die Antworten für jedes Bild zusammen mit den Ausgaben der Algorithmen auf. Am Ende sollten Sie genügend Daten haben, um die Algorithmusausgabe der Expertenausgabe zuzuordnen. Um zu überprüfen, ob Ihr Mapping funktioniert, führen Sie eine Reihe von Testbildern durch Ihr System (Beispiele, die nicht Teil des ursprünglichen Datensatzes waren) und bitten Sie Ihr Expertengremium, die Ergebnisse zu überprüfen. Idealerweise sollten die Experten mit der Leistung Ihres Systems sehr oft übereinstimmen.
Ohne etwas über die Algorithmen selbst zu wissen, ist es schwierig, eine Entscheidung zu treffen, basierend auf 3 "Ja" und 2 "Nein" Ergebnissen (besonders für etwas so wichtiges wie eine Krebsvorsorgeuntersuchung). So nah wie möglich an die gleichen Ergebnisse zu kommen wie ein ausgebildeter Experte ist Ihr Ziel (zumindest am Anfang), und Systeme wie dieses können manchmal genauer gemacht werden, indem Entscheidungen auf dem Wissen und der Erfahrung von Experten auf dem Gebiet statt auf mathematischen basieren Algorithmen allein.
Ich hätte gefragt, ob die Verwendung eines Computers, um festzustellen, ob jemand Krebs hat, der richtige Weg ist, da die Verwendung von Algorithmen fehleranfällig ist.
Wenn jedoch aus irgendeinem Grund eine Reihe von Algorithmen verwendet werden muss, dann muss ein menschlicher Bediener (dh ein Arzt) das Mammogramm persönlich untersuchen, falls eine gewisse Unsicherheit besteht. Der Arzt kann dann entscheiden, ob weitere Tests gerechtfertigt sind, basierend auf der Uneinigkeit der verwendeten Algorithmen.Die eine Sache, die wir als Programmierer übersehen, ist, dass Menschen einige Probleme lösen können, die wir nicht vorhersagen können; Stellen Sie sich vor, der Arzt bemerkt etwas im Mammogramm, für dessen Algorithmen nicht bestimmt wurde?
Ich denke, wenn Sie statistische Informationen über jeden Algorithmus früherer Performances hatten (wie oft es bei einer Anzahl von statistischen Experimenten richtig / falsch war), dann könnten Sie die Wahrscheinlichkeit berechnen, für jeden Algorithmus richtig zu sein. Dann könnten Sie diese Wahrscheinlichkeiten irgendwie kombinieren, um die Chancen dieser Person zu bekommen, Krebs zu haben. Nur eine Spekulation ...
Um in einer solchen Situation viel erreichen zu können, möchten Sie im Allgemeinen einen "goldenen" Standard haben - zB eine Meinung von einem Arzt darüber, ob eine Mammographie Krebs zeigt, oder historische Informationen verwenden, bei denen Sie wissen, dass ein Satz von Mammogramme zeigen Krebs und andere nicht. Darüber hinaus möchten Sie, wenn möglich, Informationen darüber, welche Indikatoren jeder Algorithmus in einem bestimmten Fall verwendet.
Mit einem Standard können Sie beginnen, eine Schätzung zu erhalten, welche Algorithmen "genauer" sind (d. h. mit der Expertenmeinung am häufigsten übereinstimmen). Informationen über Indikatoren ermöglichen es Ihnen, mehr Details über die Zeiten und Umstände zu generieren, unter denen jeder mehr oder weniger genau zu sein scheint, so dass Sie beginnen können, ein Urteil über Zeiten / Umstände zu bilden, unter denen Sie einander vertrauen. Damit können Sie (zumindest hoffen) die Ergebnisse Ihrer fünf vorhandenen Algorithmen zu einem Gesamtergebnis kombinieren, das (vorsichtig und vielleicht ein bisschen Glück) genauer ist als jedes einzelne davon.
Wenn Sie im Grunde wissen, dass die Ergebnisse der Algorithmen bedingt unabhängig sind (dh unabhängig von der echten, aber unbekannten Klassenbezeichnung), verwenden Sie Naive Bayes ist ein optimaler Meta-Klassifikator.
Andernfalls ist diese Frage nicht zu beantworten, ohne die bedingte Abhängigkeitsstruktur unter den Klassifizierern zu kennen. Wenn zum Beispiel Klassifikator A, B, C und D schwach sind, identische Klassifizierer (dh sie ergeben immer die gleichen Ergebnisse) und Genauigkeiten von 0,51 haben, während der Klassifikator E bedingt unabhängig von den Klassifizierern A, B, C und D ist und ein Genauigkeit von 0,99 dann denke ich, es ist ziemlich offensichtlich, dass Abstimmung eine schlechte Idee ist.
Da der Algorithmus eine "Ja" oder "Nein" Antwort erzeugt, ist dies ziemlich einfach. Sie benötigen aktuelle Testdaten, um Ihre Algorithmen zu vergleichen. Sie sollten wahrscheinlich Langzeitdaten über die Erfolgsquoten der verschiedenen Heuristiken sammeln und einige statistische Analysen durchführen, welche eher richtig sind.
Die Validierung von Dingen wie Googles Suchalgorithmus - der keine "richtige" Antwort hat - wäre schwieriger.
Gehen Sie zurück und schauen Sie sich die Trenddaten für jeden der Algorithmen an. In der Vergangenheit, wie oft war A korrekt, B korrekt usw. Der typische Weg von hier wäre, alle Algorithmen laufen zu lassen und ein Bayesian Wighting System anzuwenden, aber ich denke, dass dieser Ansatz viel zu allgemein ist, da er stark von der Qualität abhängt die Quelldaten. Da jeder Algorithmus mit einer bestimmten Art von Eingabe ausgezeichnet ist, würde ein speziellerer Ansatz darin bestehen, einen Filter zu erzeugen, der die Quelldaten nach Markierungen abdeckt, die auf die Spezialität eines bestimmten Algorithmus ausgerichtet sind. Zum Beispiel, wenn die Quelle von einer älteren Maschine kommt, wollen Sie keinen Algorithmus, der schlecht mit Bildrauschen reagiert und ihn analysiert. Ein Spezialist für Mammographie-Technologie wäre ein großer Vorteil, um spezifischere Marker zu identifizieren. Vielleicht können Sie nach diesem Filterungsprozess ein Gewichtungssystem anwenden, um eine bessere Einschätzung der Sicherheit zu erhalten.
Aufgrund der gegebenen Informationen könnten Sie nicht antworten. Sie müssten alle 5 Algorithmen nehmen und sie an Patienten testen, bei denen Krebs diagnostiziert wurde, und auch solche, von denen bekannt ist, dass sie frei von Krebs sind. Damit können Sie bestimmen, welcher Algorithmus am genauesten war.
Sie könnten auch einen Algorithmus aus der 5 machen (vorausgesetzt, sie waren alle gute und gültige Algorithmen) und nehmen die Seite von dem, was mehr Stimmen hatte. Dies könnte oder könnte kein gültiger sechster Algorithmus sein, abhängig davon, wie gut die ersten 5 sind.
Tags und Links comparison statistics