Supongamos que tengo clasificadores C_1 ... C_n que son disjuntos en el sentido de que no habrá dos verdaderos en la misma entrada (por ejemplo, los nodos en un árbol de decisión). Quiero construir un nuevo clasificador que sea la unión de algún subconjunto de estos (por ejemplo, quiero decidir qué hojas de un árbol de decisión darán una clasificación positiva). Por supuesto, al hacerlo habrá una compensación entre la sensibilidad y el valor predictivo positivo. Entonces me gustaría ver una curva ROC. En principio, podría hacer esto enumerando todos los subconjuntos de clasificadores y calculando la sensibilidad resultante y el PPV. Sin embargo, esto es prohibitivamente costoso si n es más de 30 más o menos. Por otro lado, es casi seguro que hay algunas combinaciones que no son óptimas para Pareto, por lo que puede haber alguna estrategia de ramificación y unión, o algo así,
Me gustaría recibir consejos sobre si es probable que este enfoque sea fructífero y si hay algún trabajo o si tiene alguna idea sobre el cálculo eficiente de la curva ROC en la situación anterior.
fuente
Respuestas:
Si entendí la pregunta correctamente, has entrenado un algoritmo que divide tus datos en grupos disjuntos. Ahora desea asignar la predicción a algún subconjunto de los clústeres y al resto de ellos. Y en esos subconjuntos, desea encontrar los pareto-óptimos, es decir, aquellos que maximizan la tasa positiva verdadera dado un número fijo de predicciones positivas (esto es equivalente a fijar PPV). ¿Es correcto?norte 1 0 0
¡Esto suena muy parecido al problema de la mochila ! Los tamaños de los conglomerados son "pesos" y el número de muestras positivas en un conglomerado son "valores", y desea llenar su mochila de capacidad fija con el mayor valor posible.
El problema de la mochila tiene varios algoritmos para encontrar soluciones exactas (por ejemplo, mediante programación dinámica). Pero una solución codiciosa útil es ordenar los grupos en orden decreciente de (es decir, compartir muestras positivas) y tomar la primera . Si lleva de a , puede dibujar su curva ROC de forma muy económica.v a l u ew e i gh t k k 0 0 norte
Y si asigna a los primeros grupos de y a la fracción aleatoria de muestras en el grupo , obtendrá el límite superior del problema de la mochila. Con esto, puede dibujar el límite superior de su curva ROC.1 k - 1 p ∈ [ 0 , 1 ] k
Aquí va un ejemplo de python:
Este código dibujará una buena imagen para ti:
Y ahora un poco de sal: ¡no tenía que preocuparse por los subconjuntos en absoluto ! Lo que hice fue ordenar las hojas de los árboles por la fracción de muestras positivas en cada una. Pero lo que obtuve es exactamente la curva ROC para la predicción probabilística del árbol. Esto significa que no puede superar el rendimiento del árbol seleccionando manualmente sus hojas en función de las frecuencias objetivo en el conjunto de entrenamiento.
Puedes relajarte y seguir usando predicciones probabilísticas ordinarias :)
fuente
Podría sugerirle que use métodos codiciosos. Dé un clasificador para comenzar, incluirá el clasificador que hace que el conjunto obtenga la mejor mejora de rendimiento. Si no puede lograrse ninguna mejora, incluya más clasificadores, luego deténgase. Comenzarás con todos los clasificadores. La complejidad será como máximo N * N.
Tengo una pregunta más, ¿Qué quieres decir con "Pareto óptimo", especialmente en tu contexto? Encontré en wiki esta explicación, https://en.wikipedia.org/wiki/Pareto_efficiency
La mejora en la eficiencia de Pareto es para cada participante, que podría corresponder a cada clasificador. ¿Cómo define la mejora sobre un clasificador?
fuente