Estoy trabajando para mejorar un clasificador supervisado existente, para clasificar las secuencias de {proteína} como pertenecientes a una clase específica (precursores de hormonas neuropéptidas), o no.
Hay alrededor de 1.150 "positivos" conocidos, en un contexto de aproximadamente 13 millones de secuencias de proteínas ("Fondo desconocido / mal anotado"), o alrededor de 100.000 proteínas relevantes revisadas, anotadas con una variedad de propiedades (pero muy pocas anotadas explícitamente "forma negativa).
Mi implementación anterior consideró esto como un problema de clasificación binaria: conjunto positivo = proteínas marcadas como neuropéptidos. Conjunto negativo: muestreo aleatorio de 1.300 muestras (total) de entre las proteínas restantes de una distribución longitudinal similar.
Eso funcionó, pero quiero mejorar en gran medida las habilidades discriminatorias de las máquinas (actualmente, es de aproximadamente 83-86% en términos de precisión, AUC, F1, medido por CV, en múltiples conjuntos negativos muestreados aleatoriamente).
Mis pensamientos fueron: 1) Convertir esto en un problema multiclase, eligiendo 2-3 clases diferentes de proteínas que definitivamente serán negativas, por sus propiedades / clase funcional, junto con (tal vez) otro conjunto de muestras al azar. (La prioridad aquí sería conjuntos negativos que sean similares en sus características / características al conjunto positivo, mientras que aún tengan características definitorias). 2) Aprendizaje en una clase: sería bueno, pero según tengo entendido, está destinado solo a la detección de anomalías y tiene un rendimiento peor que los enfoques discriminatorios.
*) He oído hablar del aprendizaje de PU, que suena bien, pero soy un programador N00b, y no conozco ninguna implementación existente para ello. (En Python / sci-kit aprender).
Entonces, ¿tiene sentido el enfoque 1 en un POV teórico? ¿Hay una mejor manera de hacer múltiples conjuntos negativos? (También podría simplemente usar una selección masiva [50K] de las proteínas "negativas", pero todas son muy diferentes entre sí, por lo que no sé qué tan bien el clasificador las manejaría como una gran mezcla desequilibrada ) ¡Gracias!
fuente
Respuestas:
La forma en que atacaría el problema, en general, es aprovechar el análisis estadístico como Análisis de componentes principales o Mínimos cuadrados ordinarios para ayudar a determinar qué atributos dentro de estas secuencias de proteínas son los más adecuados para clasificar las proteínas como precursores de la hormona neuropéptida.
Para hacer eso, tendrá que convertir las secuencias de proteínas en datos numéricos, pero creo que ya se ha hecho algo al respecto utilizando fórmulas apalancadas en PCA de aminoácidos.
Vea estos dos enlaces: http://www.ncbi.nlm.nih.gov/pubmed/24496727
http://www.ncbi.nlm.nih.gov/pubmed/16615809
Una vez que se haya realizado ese trabajo, trataría de clasificar usando todo el conjunto de datos y un algoritmo de aprendizaje de refuerzo, como Naive Bayes, mientras reduzco los datos a lo que PCA ha identificado como importante.
La razón por la que trataría de usar Bayes es porque ha demostrado ser uno de los mejores métodos para determinar el correo no deseado versus el correo electrónico regular, que tiene un conjunto de datos asimétrico similar.
Habiendo dicho todo eso ...
Adelgazar el número o el tipo de clasificaciones negativas podría sesgar sus resultados en algunos puntos de una manera u otra, pero no creo que vea que la efectividad a largo plazo cambie sustancialmente hasta que haga el trabajo de determinar la mejor manera de eliminar la confusión de tus datos de entrenamiento. Eso requerirá un experto de campo o un análisis estadístico.
Podría estar completamente fuera de lugar. Estoy interesado en ver algunas otras respuestas, pero esos son mis 2 centavos.
fuente
Una clase de aprendizaje
No sería demasiado rápido para descartar los métodos de clasificación de una clase (opción 2): la clave es modelar la clase positiva (minoritaria) con el modelo de una clase.
Ha habido investigaciones que demuestran casos en los que la clasificación de una clase superó a otros enfoques, como el muestreo de datos altamente desequilibrados, como se ve a menudo con las tareas de clasificación de proteínas.
No pude encontrar la investigación que recordé, pero sí encontré algunas otras comparaciones, que muestran el uso de clasificadores de una clase (típicamente modelando la clase minoritaria) logrados como un rendimiento bueno o mejor que la clasificación binaria típicamente con "negativos" muestreados del conjunto grande de proteínas que no se sabe que sean positivas.
Además, este enfoque también ofrece la ventaja de un tiempo de ejecución mucho mejor, ya que solo necesita entrenar al clasificador en el conjunto positivo más pequeño. Un par de papeles:
"Predicción de interacciones proteína-proteína utilizando métodos de clasificación de una clase e integrando datos biológicos diversos"
"Un enfoque de clasificación de una clase para secuencias y estructuras de proteínas"
Por lo menos, probaría algunos métodos de una clase y compararía el rendimiento usando la validación con sus enfoques de clasificación binaria / multiclase. También hay implementaciones de código abierto para muchos de estos, por lo que no debería ser demasiado costoso probarlos, por ejemplo, LibSVM tiene una implementación SVM de una clase. Además, puede resultar valioso para su uso en un conjunto con clasificadores binarios, ya que puede haber más desacuerdo en sus predicciones.
Representación de nivel superior incrustación / agrupación
En la línea de lo que estaba pensando con (1) y la otra publicación que sugiere PCA, enfoques como la agrupación, la codificación dispersa o incluso el modelado de temas (tratar cada proteína como una cadena de documento y diferentes familias de proteínas como diferentes temas) podrían generar una representación eso podría hacer que clasificar las proteínas sea sencillo.
Es decir, podría identificar a qué grupo / grupo pertenece una proteína o clasificar las membresías / representaciones integradas del grupo.
Por ejemplo, los enfoques de inclusión como la codificación dispersa pueden generar representaciones que revelan a qué grupo pertenece una proteína también, de modo que algunos conjuntos de características solo son activos (no cero) para las proteínas en el mismo grupo, lo que puede hacer que clasificarlos sea mucho más fácil.
Además, se pueden incorporar etiquetas de clase o membresía de clúster conocida en el proceso de incrustación para la mayoría de los métodos.
Conjunto
Los conjuntos de clasificadores múltiples tienden a funcionar mejor, especialmente cuando los clasificadores son muy diversos y pueden lograr un rendimiento comparable individualmente.
Hay al menos dos formas de usar conjuntos para este problema.
fuente
Hay tres enfoques que puede tomar: APP, OAA, AAO. APP es discriminación entre objetos basada en todos los pares de clases posibles. OAA es el uso de uno contra todos (clases restantes), y AAO es todo a la vez, como el uso de una prueba F para varias clases simultáneamente (o la prueba de Hotelling para MVN). APP y AAO son en realidad múltiples ejecuciones de clasificación binaria pero con más de dos de sus clases originales. Cada uno de estos enfoques produce resultados diferentes para varios clasificadores empleados.
El muestreo aleatorio es una buena técnica. También puede intentar agrupar todos los objetos en centros usando k-means y luego usar los centros como objetos nuevos. De cualquier manera, los métodos de reducción de dimensiones lineales y no lineales pueden ayudar a alejarse del gran tamaño de muestra.
fuente