(Imagen del autor) El análisis de la curva característica operativa del receptor (ROC) y el área bajo la curva (AUC) son herramientas ampliamente utilizadas en la ciencia de datos, tomadas del procesamiento de señales, para evaluar la calidad de un modelo bajo diferentes parametrizaciones o comparar el rendimiento de dos o más modelos. Las métricas de rendimiento tradicionales, como la precisión y la recuperación, se basan en gran medida en observaciones positivas. Entonces, en cambio, ROC y AUC usan tasas de verdaderos positivos y falsos positivos para evaluar la calidad, que tienen en cuenta las observaciones positivas y negativas. El camino para desglosar un problema y resolverlo con Machine Learning tiene varios pasos. En un nivel alto, implica la recopilación de datos, la limpieza y la ingeniería de características, la construcción del modelo y, por último, pero no menos importante, evaluación del rendimiento del modelo.Cuando está evaluando la calidad de un modelo, generalmente usa métricas como precisión y recuperación, también conocidas como confianza en el campo de minería de datos y sensibilidad, respectivamente. Estas métricas comparan los valores predichos con los valores de observación reales, generalmente de un conjunto reservado, y se visualizan mejor usando una matriz de confusión.Matriz de confusión (Imagen del autor)Enfoquémonos en Precisión primero, también conocido como valor predictivo positivo. Utilizando la matriz de confusiónpuede construir la precisión como la proporción de todos los verdaderos positivos sobre todos los positivos predichos.Recuerdoque también se conoce como tasa de verdaderos positivos, representa la proporción de verdaderos positivos sobre todos los positivos, observados y pronosticados.Al describir Precision y Recall usando los diferentes conjuntos de observaciones en la matriz de confusión, puede comenzar a ver cómo estas métricas pueden proporcionar una visión limitada del rendimiento del modelo. Algo que se destaca es el hecho de que Precision and Recall solo se enfoca en los ejemplos positivos y predicciones[1], y no tome en cuenta ningún ejemplo negativo. Además, no comparan el rendimiento del modelo con un escenario mediano, uno que simplemente hace conjeturas al azar.
Después de profundizar en cómo se calculan la precisión y la recuperación, puede comenzar a ver cómo estas métricas pueden proporcionar una visión limitada del rendimiento del modelo.
Para complementar la evaluación de su modelo y descartar sesgos de precisión y recuperación, puede utilizar algunas herramientas sólidas en el conjunto de herramientas del científico de datos: el Curva característica de funcionamiento del receptor (ROC) análisis y su Área bajo la curva (AUC).ROC es una herramienta de resumen, utilizada para visualizar el equilibrio entre precisión y recuperación[2].Esta técnica surgió en el campo de la teoría de detección de señales, como parte del desarrollo de la tecnología de radar durante la Segunda Guerra Mundial [3]. El nombre puede ser un poco confuso para aquellos que no están familiarizados con la teoría de señales, pero se refiere a la lectura de señales de radar por parte de operadores militares de radar, de ahí la parte operativa del receptor de la curva característica operativa del receptor. Parte del trabajo de un operador de radar es identificar las unidades enemigas que se aproximan en un radar, la parte clave, capaz de distinguir literalmente la señal, es decir, las unidades entrantes reales, del ruido, por ejemplo, el ruido estático u otra interferencia aleatoria. Son expertos en determinar qué es señal y qué es ruido, para evitar cargar contra una supuesta unidad enemiga cuando es una de tus propias unidades o simplemente no hay nada allí. Ahora mismo puedes estar pensando ¡Espera, esto suena como una tarea familiar! de hecho lo es, esta tarea es conceptualmente muy similar a clasificar una imagen como un gato o no, o detectar si un paciente desarrolló una enfermedad o no, manteniendo una baja tasa de falsos positivos.Análisis ROC utiliza la curva ROC para determinar qué parte del valor de una señal binaria está contaminada por ruido, es decir, por aleatoriedad[4]. Proporciona un resumen de la sensibilidad y la especificidad en una variedad de puntos operativos, para un predictor continuo[5].La curva ROC se obtiene trazando la Tasa de falsos positivos, en el eje x, contra la Tasa de verdaderos positivos, en el eje y. Debido a que la Tasa de verdaderos positivos es la probabilidad de detectar una señal y la Tasa de falsos positivos es la probabilidad de una falsa alarma, el análisis ROC también se usa ampliamente en estudios médicos, para determinar los umbrales que detectan con confianza enfermedades u otros comportamientos[5].Ejemplos de diferentes curvas ROC (Imagen del autor) Un modelo perfecto tendrá una tasa de falsos positivos y verdaderos positivos igual a cero, por lo que será un único punto operativo en la parte superior izquierda de la gráfica ROC. Mientras que el peor modelo posible tendrá un solo punto de operación en la parte inferior izquierda de la gráfica ROC, donde la tasa de falsos positivos es igual a uno y la tasa de verdaderos positivos es igual a cero.
Eso [ROC Curve] proporciona un resumen de la sensibilidad y la especificidad en una variedad de puntos operativos, para un predictor continuo.
Un modelo de adivinación aleatoria tiene un 50 % de posibilidades de predecir correctamente el resultado, por lo que la tasa de falsos positivos siempre será igual a la tasa de verdaderos positivos. Es por eso que hay una diagonal en la gráfica, que representa esa probabilidad de 50/50 de detectar señal frente a ruido. críticas como positivas o negativas. Para abordar esta tarea de análisis de opinión, comenzó usando el perceptrón multicapa y utilizó la precisión y la pérdida como una forma de comprender si era realmente lo suficientemente bueno para resolver su problema de clasificación. Saber cómo Análisis ROC es resistente al sesgo, y el hecho de que se usa en Machine Learning para comparar modelos o para comparar diferentes parametrizaciones del mismo modelo, desea ver si el Perceptrón multicapa es realmente un buen modelo cuando se trata de clasificar las revisiones de sus padres. cama y desayuno. Para reconstruir el modelo, toma el corpus de revisiones, luego lo divide en entrenamiento y prueba y lo tokeniza. from sklearn.model_selection import train_test_split
de sklearn.feature_extraction.text importar TfidfVectorizercorpus = [
‘We enjoyed our stay so much. The weather was not great, but everything else was perfect.’,
‘Going to think twice before staying here again. The wifi was spotty and the rooms smaller than advertised’,
‘The perfect place to relax and recharge.’,
‘Never had such a relaxing vacation.’,
‘The pictures were misleading, so I was expecting the common areas to be bigger. But the service was good.’,
‘There were no clean linens when I got to my room and the breakfast options were not that many.’,
‘Was expecting it to be a bit far from historical downtown, but it was almost impossible to drive through those narrow roads’,
‘I thought that waking up with the chickens was fun, but I was wrong.’,
‘Great place for a quick getaway from the city. Everyone is friendly and polite.’,
‘Unfortunately it was raining during our stay, and there weren\’t many options for indoors activities. Everything was great, but there was literally no other oprionts besides being in the rain.’,
‘The town festival was postponed, so the area was a complete ghost town. We were the only guests. Not the experience I was looking for.’,
‘We had a lovely time. It\’s a fantastic place to go with the children, they loved all the animals.’,
‘A little bit off the beaten track, but completely worth it. You can hear the birds sing in the morning and then you are greeted with the biggest, sincerest smiles from the owners. Loved it!’,
‘It was good to be outside in the country, visiting old town. Everything was prepared to the upmost detail’
‘staff was friendly. Going to come back for sure.’,
‘They didn\’t have enough staff for the amount of guests. It took some time to get our breakfast and we had to wait 20 minutes to get more information about the old town.’,
‘The pictures looked way different.’,
‘Best weekend in the countryside I\’ve ever had.’,
‘Terrible. Slow staff, slow town. Only good thing was being surrounded by nature.’,
‘Not as clean as advertised. Found some cobwebs in the corner of the room.’,
‘It was a peaceful getaway in the countryside.’,
‘Everyone was nice. Had a good time.’,
‘The kids loved running around in nature, we loved the old town. Definitely going back.’,
‘Had worse experiences.’,
‘Surprised this was much different than what was on the website.’,
‘Not that mindblowing.’
]#0: sentimiento negativo. 1: sentimiento positivo
objetivos = [1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0]# Dividir el conjunto de datos
train_features, test_features, train_targets, test_targets = train_test_split(corpus, targets, test_size=0.25,random_state=123)#Convertir el corpus en una matriz tf-idf
vectorizer = TfidfVectorizer(stop_words=’english’, lowercase=True, norm=’l1′) El modelo de perceptrón multicapa está listo para ser entrenado. from sklearn.neural_network import MLPClassifierdef buildMLPerceptron(train_features, train_targets, num_neurons=2):
“”” Construya un perceptrón multicapa y ajuste los datos
Función de activación: ReLU
Función de optimización: SGD, descenso de gradiente estocástico
Tasa de aprendizaje: escala inversa
“””clasificador = MLPClassifier(hidden_layer_sizes=num_neurons, max_iter=35, trigger=’relu’, solver=’sgd’, verbose=10, random_state=762, learning_rate=’invscaling’)
classifier.fit(train_features, train_targets)return classifiertrain_features = vectorizer.fit_transform(train_features)
test_features = vectorizer.transform(test_features)# Cree un perceptrón multicapa con 3 capas ocultas, cada una con 5 neuronas
ml_percetron_model = buildMLPerceptron(train_features, train_targets, num_neurons=5) ¡Todo listo para entrenar el modelo! Cuando ejecute el código anterior, verá algo como lo siguiente.Resultado del entrenamiento del modelo Perceptron multicapa. (Imagen del autor) Para analizar completamente la curva ROC y comparar el rendimiento del modelo de perceptrón multicapa que acaba de crear con otros modelos, en realidad desea calcular el área bajo la curva (AUC), también denominada en la literatura como c -estadística.La Área bajo la curva (AUC) tiene valores entre cero y uno, ya que la curva se traza en una cuadrícula de 1×1 y, haciendo un paralelo con la teoría de la señal, es una medida de la detectabilidad de una señal[6]Esta es una estadística muy útil, porque da una idea de qué tan bien los modelos pueden clasificar las observaciones verdaderas y las falsas. En realidad, es una versión normalizada de la prueba de suma de rangos de Wilcoxon-Mann-Whitney, que prueba la hipótesis nula donde dos muestras de mediciones ordinales se extraen de una sola distribución [4].La estadística c normaliza el número de pares de sorteos, uno positivo y otro negativo.
[…] trazando un paralelo con la teoría de la señal, [the area under the curve] es una medida de la detectabilidad de una señal.
Para trazar la curva ROC y calcular el área bajo la curva (AUC), decidió usar el método RocCurveDisplay de SckitLearn y comparar su perceptrón multicapa con un modelo de bosques aleatorios, intentando resolver la misma tarea de clasificación. importar matplotlib.pyplot como plt
de sklearn.ensemble importar RandomForestClassifier
de sklearn.metrics import roc_auc_score, RocCurveDisplaydef plot_roc(modelo, test_features, test_targets):
“””
Trazado de la curva ROC para un modelo dado y la curva ROC para modelos de bosques aleatorios
“””# comparando el modelo dado con un modelo Random Forests
random_forests_model = RandomForestClassifier(estado_aleatorio=42)
random_forests_model.fit(train_features, train_targets)rfc_disp = RocCurveDisplay.from_estimator(random_forests_model, test_features, test_targets)
model_disp = RocCurveDisplay.from_estimator(modelo, test_features, test_targets, ax=rfc_disp.ax_)
model_disp.figure_.suptitle(“Curva ROC: Perceptrón multicapa frente a bosques aleatorios”)plt.show()# usando el modelo de perceptrón como entrada
plot_roc(ml_percetron_model, test_features, test_targets) El código anterior traza las curvas ROC para su Perceptrón multicapa y el modelo Random Forests. También calcula el Área Bajo la Curva (AUC) para ambos modelos.Gráfica ROC para el perceptrón multicapa frente a un modelo de bosques aleatorios. (Imagen del autor) A partir del gráfico de análisis ROC y el valor del Área bajo la curva (AUC) para cada modelo, puede ver que el AUC general para su modelo de perceptrón multicapa, indicado en el gráfico como MLPClassifier, es ligeramente superior. en comparación con un modelo de Random Forests que intentaba resolver la misma tarea de clasificar el sentimiento de las reseñas sobre el bed and breakfast de sus padres, el Perceptrón multicapa hizo un mejor trabajo. En este caso particular, eso también es visible por lo cerca que comienza a estar la línea naranja. a la esquina superior izquierda de la gráfica, donde la tasa de verdaderos positivos de las predicciones es cada vez más alta y, por oposición, la tasa de falsos positivos es cada vez más baja. También puede ver que el modelo Random Forests es solo un poco mejor que un modelo aleatorio , que tendría un AUC igual a 0,5.
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…