AUC-ROC para un clasificador sin clasificación como OSVM

Actualmente estoy trabajando con curvas auc-roc, y digamos que no tengo un clasificador de clasificación, como un SVM de una clase donde las predicciones son 0 y 1 y las predicciones no se convierten en probabilidades o puntajes fácilmente, si no quiero. para trazar el AUC-ROC, en cambio, solo me gustaría calcular el AUC para usarlo y ver qué tan bien está haciendo mi modelo, ¿puedo hacerlo? ¿Se seguiría llamando o como AUC especialmente que hay dos umbrales que se pueden usar (0, 1)? si es así, sería tan bueno como calcular el AUC con puntajes de clasificación

ahora digamos que he decidido trazar el AUC-ROC usando las tags creadas por el SVM (0,1), se vería como la imagen de abajo. introduzca la descripción de la imagen aquí

¿Todavía sería considerado como y la curva AUC?

Muchas gracias por toda tu ayuda y apoyo.

Nota: He leído las siguientes preguntas y no encontré una respuesta: https://www.researchgate.net/post/How_can_I_plot_determine_ROC_AUC_for_SVM https://stackexchange.com/questions/37795/roc-curve-for-discrete -clasificadores-como-svm-por-que-hacemos-todavía-llamamos-a-una-curva

La curva ROC estándar requiere variar la probabilidad o el umbral de puntuación de su clasificador, y obtener la gráfica correspondiente de los pares ordenados de (tasa de positivos verdaderos, tasa de falsos positivos) para cada valor umbral variado.

Dado que el SVM de una clase se define de tal manera que no produce resultados de probabilidad o puntajes como parte de su salida (esto es específicamente diferente a los clasificadores SVM estándar), significa que una curva ROC es inaplicable a menos que cree su propia versión de una partitura como se explica a continuación.

Además, la capacitación para un SVM de una clase está especialmente enormemente desequilibrada, ya que los datos de capacitación son únicamente un conjunto de ejemplos “positivos”, por ejemplo, observaciones que provienen de la distribución en cuestión. De todos modos, las curvas ROC sufrirían en gran medida de un gran desequilibrio de clase, por lo que la curva ROC podría ser engañosa en el sentido de que la puntuación de clasificación para un pequeño número de valores atípicos sería mucho más importante que la puntuación para un grupo de no atípicos en el corazón de Las áreas de mayor densidad observada en la distribución. Por lo tanto, es recomendable evitar el ROC para este tipo de modelo, incluso si crea sus propias puntuaciones.

Es correcto elegir la precisión frente a la recuperación como una mejor métrica, pero en el gráfico que muestra en su pregunta, todavía está superponiendo un gráfico en la parte superior de la tasa de positivos verdaderos y falsos a lo largo de los ejes, mientras que el AUC-pr ( la puntuación de AUC de recuperación de precisión) parece que es solo un único punto rellenado con 0 para la tasa de falsos positivos (por ejemplo, es simplemente un error en su código para trazar).

Para obtener una curva de recuperación de precisión real, necesita alguna forma de asociar un puntaje a la decisión atípica. Una sugerencia es usar el atributo decision_function del objeto OneClassSVM ajustado después del entrenamiento.

Si calcula el máximo de decision_function(x) sobre todos los valores de entrada x , llame a este MAX , entonces una forma de asociar una puntuación es tratar la puntuación de la predicción en algunos datos y como score = MAX - decision_function(y) .

Esto supone que tiene las tags configuradas de tal manera que un gran valor de decision_function(x) significa que x no es un valor atípico, por lo que tiene la etiqueta de la clase positiva utilizada para el entrenamiento. Puede tomar el cambio recíproco o usar otras transformaciones si configura su problema con tags inversas (es decir, si configura el OneClassSVM para predecir ‘1’ para un valor atípico o ‘1’ para un inlier, aunque los datos de entrenamiento consisten solo en una clase).

Luego, en la documentación de average_precision_score puede ver que la entrada y_score puede ser una medida sin umbral, como la de decision_function . También podría jugar con esto, tal vez tomando el log de esa puntuación, etc., si tiene algún conocimiento de dominio sobre eso que le dé una razón para pensar en probarlo.

Una vez que tenga estos puntajes creados manualmente, puede pasarlos por cualquiera de las funciones de precisión / recuperación que necesitan variar el umbral. No es perfecto, pero al menos le da una idea de qué tan bien se utiliza el límite de decisión para la clasificación.