2010-07-12 20 views
7

Estoy seguro de que hay muchos Ingenieros de Pruebas de Software, Ingenieros de Validación de Algoritmos en Stackoverflow. Podría alguien decirme cómo proceder en el siguiente escenario.eligiendo entre los algoritmos

Digamos que tenemos una mamografía y 5 algoritmos diferentes que toman esta mamografía como entrada e identifican si hay cáncer en el paciente. Si 3 de cada 5 algoritmos dicen que hay cáncer en el paciente y 2 dicen que no hay cáncer en el paciente. ¿Qué algoritmo debería creer? ¿Cómo debo proceder a probar estos algoritmos? ¿Hay algún concepto estadístico utilizado en tales escenarios?

Me hicieron esta pregunta en una entrevista para el puesto de Ingeniero de Validación de Algoritmos. Creo que estaban tratando de ver cómo iba a pensar dado ese escenario. ¿Cómo debería haber respondido esto?

Gracias por su tiempo

-Sashi

+6

Debería creerlos todos, en conjunto: el resultado es indeterminado. Haga que su médico observe la película. – Ken

+1

No permita que el software decida sobre la vida. Al menos no todavía. – Fanatic23

Respuesta

7

No se puede decir cualquier cosa que tenga solamente esta información. ¿Qué pasa si algunos de los algotitmos reutilizan algunos otros algoritmos de esos 5? Entonces podrían ser propensos a los mismos defectos.

Diga A, B y C en realidad usan el mismo subalgoritmo para preprocesamiento de datos y este último da resultados subóptimos en una imagen específica y la imagen preprocesada hace que las últimas fases produzcan resultados incorrectos. No le importará tener tres algoritmos que dicen lo mismo.

Necesita datos más específicos sobre cómo se correlacionan los algoritmos y qué características estadísticas se conocen acerca de las tasas de error para poder realizar cualquier análisis.

+2

Pero, esta es una entrevista, entonces él puede preguntar eso, y muestra mucho al entrevistador. – Stephen

4

Esto es bastante difícil de responder. Estoy seguro de que cada algoritmo es bueno para elegir diferentes tipos de disparadores de entrada. Lo más probable es que necesite un análisis estadístico para determinar qué es lo que cada algoritmo generalmente detectará como cáncer. Además, puede llegar a hacer algo como crear un modelo bayesiano para describir/determinar si un paciente tiene cáncer basado en los resultados algorítmicos.

es posible que 3 algoritmos omitan sistemáticamente el tipo específico de cáncer que los otros dos son moderadamente buenos en la recuperación. puede descubrir relaciones similares que ocurren, como cuando los algoritmos 2, 3 y 5 dicen que no hay cáncer, el algoritmo 1 dice que sí, y el algoritmo 4 no es concluyente, que generalmente hay puntos típicamente benignos de una determinada forma e intensidad de color eso debe analizarse, pero probablemente no sea cáncer.

1

Hubiera preguntado si usar una computadora para determinar si alguien tiene cáncer es el curso de acción correcto, dado que el uso de algoritmos es propenso a errores.

Pero, si por algún motivo se debe utilizar un conjunto de algoritmos, haga que un operador humano (es decir, un médico) examine la mamografía personalmente en caso de que haya alguna incertidumbre. El médico puede entonces decidir si se justifican más pruebas, en función del desacuerdo de los algoritmos utilizados.

Lo único que pasamos por alto como programadores, es que los humanos podemos resolver algunos problemas que no podemos predecir; Imagine que el médico nota algo en el mamograma que los algoritmos fueron no diseñados para detectar?

+0

¿Y el uso de operadores humanos no es propenso a errores? :-) – Ken

+0

Mientras que el software de procesamiento de imágenes está mejorando todo el tiempo, los humanos son actualmente superiores, pero más lentos. Tenemos una habilidad especial para encontrar patrones visuales que parecen estar conectados a nuestro cerebro. Es por eso que grupos como Galaxy Zoo usan voluntarios humanos en lugar de computadoras para analizar imágenes. –

+0

@Jim C: Exactamente. Hay una compensación. Usar una cámara + software para encontrar widgets defectuosos a medida que salen de la línea de ensamblaje es muy diferente a usar software para identificar el cáncer. Para aplicaciones médicas, prefiero ser 100% correcto y más lento, 99% correcto y súper rápido. En los casos en que hacer un diagnóstico más rápido que un médico podría significar la vida o la muerte, estaría dispuesto a dejar que la computadora haga el trabajo. –

1

Creo que si tuviera alguna información estadística sobre cada algoritmo de actuaciones previas (cuántas veces estuvo bien/mal en una serie de experimentos estadísticos), entonces podría calcular la probabilidad de que sea correcto para cada algoritmo. Entonces, de alguna manera, podrías combinar esas probabilidades para obtener las probabilidades de que esa persona tenga cáncer. Solo una especulación ...

2

Bueno, claramente los negativos falsos aquí son mucho más graves aquí que los falsos positivos, por lo que, en igualdad de condiciones, es posible que deseemos mostrar una preferencia por los algoritmos que encuentran más cáncer.

Si realizamos muchas más mamografías al software y encontramos una colección de algoritmos que parecen estar de acuerdo en una gran muestra de las mamografías, entonces podemos preferir esos algoritmos, ya que sus resultados son compatibles con más algoritmos.

Algo así.

2

En igualdad de circunstancias, podría decirse que el paciente tiene un 60% de posibilidades de cáncer. Para dar una mejor respuesta necesita saber más información sobre cómo funciona el algoritmo. Algunos puntos a considerar:

  • Quizás algunos algoritmos son más nuevos que otros o se ha demostrado que son menos confiables. Sería bueno saber la precisión de cada algoritmo, utilizando datos históricos de mamografías etiquetados como "cancerosos" y "no cancerosos".
  • El cáncer de cada persona es levemente diferente. ¿Hay alguna característica que un determinado algoritmo identifique mejor? ¿Se requiere un experto en el dominio para determinar qué diagnóstico es correcto, con base en las conclusiones del algoritmo y los datos del mamograma (imagen?).
  • Como se menciona Sharptooth, tal vez ciertos algoritmos utilizan las mismas técnicas que otros algoritmos, por lo que es probable que ambos tengan el mismo sesgo.
1

Para lograr mucho en tal situación, generalmente desea tener un estándar "oro", por ejemplo, una opinión de un médico sobre si un conjunto de mamografías muestra cáncer o utilizar información histórica donde sepa que un conjunto de mamografías muestra cáncer y otro conjunto no. Junto con eso, si es posible, le gustaría obtener información sobre qué indicadores utiliza cada algoritmo en un caso particular.

Con un estándar, puede comenzar a obtener una estimación de qué algoritmo (s) es (son) más "preciso" (es decir, de acuerdo con la opinión de los expertos más a menudo). La información sobre los indicadores le permite generar más detalles sobre los tiempos y circunstancias en los cuales cada uno parece ser más o menos preciso, para que pueda comenzar a formarse un juicio sobre los tiempos/circunstancias en los cuales confiar uno sobre el otro. Con esto, puedes (al menos esperar) combinar los resultados de tus cinco algoritmos existentes en un solo resultado general que sea (con cuidado y quizás un poco de suerte) más preciso que cualquiera de ellos individualmente.

1

Básicamente, si sabe que los resultados de los algoritmos son condicionalmente independientes (es decir, independiente dada la etiqueta de clase verdadera pero desconocida) entonces el uso de Naive Bayes es un metaclasificador óptimo.

De lo contrario, esta pregunta no tiene respuesta sin conocer la estructura de dependencia condicional entre los clasificadores. Por ejemplo, si el clasificador A, B, C y D son clasificadores débiles e idénticos (es decir, siempre dan los mismos resultados) y tienen precisiones de 0,51, mientras que el clasificador E es condicionalmente independiente de los clasificadores A, B, C y D y tiene un precisión de 0.99, entonces creo que es bastante obvio que votar es una mala idea.

2

Es no un problema trivial, y altamente dependiente de los riesgos que está dispuesto a tomar.

Formalismos como la teoría de decisión y la inferencia bayesiana se deben considerar aquí. Le permite tener en cuenta varias probabilidades de falsos positivos/negativos, y si desea ponderarlos de manera diferente.

1

Dado que el algoritmo produce una respuesta "sí" o "no", esto es bastante fácil. Necesita datos de prueba reales para comparar sus algoritmos. Probablemente deba recopilar datos a largo plazo sobre las tasas de éxito de las diversas heurísticas, y hacer un análisis estadístico de cuáles tienen más probabilidades de ser correctos.

Validar cosas como el algoritmo de búsqueda de Google, que no tiene una respuesta "correcta", sería más difícil.

1

Regrese y mire los datos de tendencias para cada uno de los algoritmos. En el pasado, con qué frecuencia A ha sido correcta, B correcta, etc. La ruta típica desde aquí sería ejecutar todos los algoritmos y aplicar un sistema de wighting bayesiano, pero creo que este enfoque es demasiado general porque depende en gran medida de la calidad de la fuente de datos Dado que cada algoritmo sobresale con un tipo específico de entrada, un enfoque más especializado sería crear un filtro que muestre los datos de origen para marcadores que se ajusten a la especialidad de un algoritmo en particular. Por ejemplo, si la fuente proviene de una máquina más vieja, no quiere un algoritmo que maneje mal el análisis de ruido de la imagen. Un especialista con tecnología de mamografía sería una gran ventaja para ayudar a identificar marcadores más específicos. Quizás podría aplicar un sistema de ponderación después de este proceso de filtración para proporcionar una mejor estimación de certeza.

2

No creo que debería haber respondido de ninguna manera específica. El entrevistador probablemente quiera analizar cómo evaluaría este problema, no su respuesta final. En otras palabras, probablemente estaban interesados ​​en su propio algoritmo para tomar una decisión.

En un entorno de la vida real, no puedo pensar en ninguna opción seria entre 5 algoritmos para encontrar cáncer, especialmente cuando dan resultados tan diferentes.

2

Esta es una buena oportunidad para implementar lo que a veces se denomina un "sistema experto". Tomas una muestra grande de tus datos (en tu caso, imágenes de mamogramas y el resultado de varios algoritmos) y los pasas por una serie de expertos en carne y hueso de la vida real (aquí, oncólogos o técnicos de laboratorio). Registre las respuestas para cada imagen junto con las salidas de los algoritmos. Al final, debe tener suficientes datos para asignar la salida del algoritmo a la salida experta. Para verificar que su mapeo funciona, ejecute un conjunto de imágenes de prueba a través de su sistema (muestras que fueron no parte del conjunto de datos original) y solicite a su panel de expertos que verifiquen los resultados. Idealmente, los expertos deberían estar de acuerdo con la producción de su sistema un porcentaje muy alto del tiempo.

Sin saber nada sobre los algoritmos en sí, es difícil tomar una decisión basada en 3 resultados "sí" y 2 resultados "no" (especialmente para algo tan importante como un examen de detección del cáncer). Acercarse lo más posible a los mismos resultados que un experto capacitado es su objetivo (al menos al principio), y sistemas como este a veces pueden ser más precisos basando las decisiones en el conocimiento y la experiencia de expertos en el campo en lugar de en matemática algoritmos solo

3

Póngase su sombrero de entrevistado, es una evaluación psicológica. Las preguntas como esta evaluación de algoritmo tienen más de una respuesta correcta. Aprendí sobre estas preguntas de mi esposa, que trabajó como reclutadora por más de 5 años. El entrevistador quiere ver cómo reaccionas. Lo mejor es hacer suposiciones y conducir a una conclusión lógica. No diga "No sé", sea argumentativo o haga muchas preguntas. Te parecerá difícil y argumentativo (como lo son muchos programadores).

Ahora que sabes que esto no es una pregunta de programación, considera preguntar en careeroverflow.com. Me gustan estas preguntas porque muestra una capacidad de adaptación y no ser rígida.

Why is a manhole round? < versión de --Microsoft

0

Sobre la base de la información proporcionada, que no sería capaz de responder. Tendría que tomar los 5 algoritmos y probarlos en pacientes diagnosticados con cáncer, y también en los que se sabe que no tienen cáncer. Esto le permitiría determinar qué algoritmo era el más preciso.

También podría hacer un algoritmo del 5 (suponiendo que fueran todos buenos y válidos algoritmos) y tomar el lado de lo que sea que tenga más votos. Esto podría o no ser un sexto algoritmo válido según lo buenos que sean los primeros 5.

4

Elegir el mejor clasificador para un trabajo, o combinar varios clasificadores es un campo completamente separado. This general article about classification es tan buen comienzo como cualquiera para aprender a elegir el mejor clasificador para un trabajo. Y this article about classifier ensembles es un buen lugar para comenzar a aprender sobre la combinación de clasificadores.

Para dar la base para una respuesta a su pregunta (bastante amplia): La mejor clasificador para un trabajo depende de varios factores:

  • la calidad requerida de la clasificación (en su caso esto sería muy alto)
  • La complejidad permitida de la clasificación (es decir, ¿puede calcular durante días para llegar a una respuesta de si tiene varios milisegundos) (el tiempo no es una limitación en su caso supongo)
  • El costo asociado con la clasificación errónea. Este es un factor muy importante en su caso. Si les dice a las personas que tienen cáncer cuando no lo han hecho, causan un gran estrés, pero (uno espera) que las pruebas adicionales (que cuestan dinero) eventualmente descubrirán que son saludables. Por otro lado, si omite el cáncer en un paciente, ella podría morir. Esto significa que el "mejor" clasificador (el que menos errores comete) puede no ser el mejor para su problema.

En este último punto: Di 1 de cada 1000 mujeres tiene cáncer, tengo algunos clasificadores:

  1. Misses 20% de los casos de cáncer, y dice una mujer sana tiene cáncer en el 2% de los casos. Este clasificador haría aproximadamente 200 errores en una población de 10000 personas.
  2. Solo diga: "Esta persona no tiene cáncer" en todos los casos. ¡Solo 10 errores en 10000 casos!
  3. Solo diga "Esta persion tiene cancer" hara 9990 errores en 10000 casos.

El segundo clasificador hace el menor número de errores, pero después de unos meses de uso, las personas que podrían haberse salvado comienzan a morir. El tercer clasificador envía a todos a la próxima prueba (que tendría el mismo problema que este) o tal vez inflige una operación inútil de cambio de vida en 9990 personas sanas. La segunda prueba hace una compensación. Dos personas pueden enfermarse o incluso morir, 198 personas experimentan procedimientos y operaciones dolorosas y estresantes en vano. Obviamente, en su caso todos los clasificadores eran como el clasificador 1 con ligeras variaciones en los porcentajes. En esos casos, debe hacer una transacción entre casos de cáncer faltantes e infligir el resto del procedimiento (¡incluido el costo!) En personas sanas. El punto de partida para la investigación sobre este trade-off es el receiver-operater-characteristic

Cuestiones relacionadas