Notas de estudio de Wu Enda-once, diseño de sistema de aprendizaje automático

11. Diseño de sistema de aprendizaje automático

11.0 Priorización del trabajo: ejemplos de clasificación de spam

Marcamos el spam como spam con 1

Marque el spam residual como no spam y utilice 0 para indicar

Si tenemos algunas muestras etiquetadas como spam y no spam, ¿cómo podemos entrenar a un clasificador de spam? Está claro que este es un problema de aprendizaje supervisado. Suponiendo que elegimos un algoritmo de regresión logística para entrenar dicho clasificador, primero debemos seleccionar las características apropiadas. Definido aquí:

  • x = características del correo;
  • y = spam (1) o no spam (0)

Podemos seleccionar 100 conjuntos de vocabulario típicos para representar (palabras) basura / no basura, como oferta, compra, descuento, andrew, ahora, etc., que se pueden clasificar en orden alfabético. Para las muestras de capacitación por correo electrónico que se han marcado, si la palabra j aparece en la muestra en 100 vocabularios, use 1 para representar xj en el vector de características x; de lo contrario, use 0 para representarlo, de modo que la muestra de capacitación sea reemplazada por la característica vector x:

Tenga en cuenta que en el uso real, no seleccionaremos manualmente 100 palabras típicas, sino que seleccionaremos las primeras n palabras con la frecuencia más alta del conjunto de entrenamiento, como 10,000 a 50,000.

Entonces, ¿cómo entrenar a un clasificador de spam de manera eficiente para que tenga una mayor tasa de precisión y una menor tasa de error?

  • En primer lugar, es natural considerar la posibilidad de recopilar más datos, como el proyecto "honeypot", un proyecto que se especializa en recopilar IP de servidor de spam y contenido de spam;
  • Pero el último capítulo nos ha dicho que más datos no es mejor, por lo que puedes considerar diseñar otras funciones complejas, como el envío de información por correo, que suele estar oculto en la parte superior del spam;
  • También puede considerar diseñar en función de las características del cuerpo del mensaje, por ejemplo, si "descuento" y "descuentos" se consideran la misma palabra. ¿Cómo lidiar con "trato" y "distribuidor" de la misma manera? ¿Y si se debe usar la puntuación como característica?
  • Por último, considere la posibilidad de utilizar algoritmos complejos para detectar errores ortográficos (el spam escribirá mal deliberadamente las palabras para evitar filtros de spam, como m0rtgage, med1cine, w4tches)

11.1 Qué hacer primero

Tome un algoritmo clasificador de spam como ejemplo para la discusión.

Para resolver este problema, la primera decisión que debemos tomar es cómo seleccionar y expresar el vector de características xxx . Podemos elegir una lista que consta de 100 palabras que aparecen con más frecuencia en los correos electrónicos no deseados y obtener nuestro vector de características (que aparece como 1, no aparece como 0) según si estas palabras aparecen en el correo electrónico y el tamaño es 100 × 1 .

Para construir este algoritmo clasificador, podemos hacer muchas cosas, como:

  1. Recopile más datos, de modo que tengamos más muestras de spam y no spam
  2. Desarrollar una serie de funciones complejas basadas en información de enrutamiento de correo.
  3. Desarrollar una serie de funciones complejas basadas en la información del cuerpo del correo electrónico, incluido el procesamiento de considerar el truncamiento
  4. Desarrollar algoritmos complejos para detectar errores de ortografía deliberados (w4tch para ver)

Entre las opciones anteriores, es muy difícil decidir en cuál debe dedicar tiempo y energía. Es mejor hacer una elección inteligente que seguir el sentimiento.

Hablaremos sobre el análisis de errores en un curso posterior y le mostraré cómo utilizar un método más sistemático para elegir el correcto entre un montón de métodos diferentes. Por lo tanto, es más probable que elija un método realmente bueno que le permita dedicar días, semanas o incluso meses a una investigación en profundidad.

11.2 Análisis de errores

El método recomendado para construir un algoritmo de aprendizaje es:

  1. Comience con un algoritmo simple que se pueda implementar rápidamente, implemente el algoritmo y pruebe el algoritmo con datos de validación cruzada
  2. Dibuje una curva de aprendizaje y decida si agregar más datos o agregar más funciones u otras opciones
  3. Realizar análisis de errores: verifique manualmente las muestras en el conjunto de validación cruzada que producen errores de predicción en nuestro algoritmo para ver si estas muestras tienen una tendencia sistemática

Suponiendo que hay 500 muestras de correo electrónico en el conjunto de validación cruzada y que el algoritmo clasifica erróneamente 100 correos electrónicos, luego verificamos manualmente estos 100 casos incorrectos y los clasificamos de la siguiente manera:

  • (i) ¿Qué tipo de correo es?
  • (ii) ¿Qué tipo de pistas o características cree que pueden ser útiles para la clasificación correcta del algoritmo?

La importancia de la evaluación numérica:

Después de analizar el caso malo, podemos considerar los siguientes métodos:

  • Para descuentos / descuentos / descuentos / descuentos, ¿se pueden considerar como la misma palabra?
  • ¿Es posible utilizar el conjunto de herramientas de "derivación" para tomar la raíz de una palabra, como "derivación de Porter"?

El análisis de errores no puede determinar si los métodos anteriores son efectivos, solo proporciona una forma de resolver el problema y una referencia.Sólo después de intentos reales se puede ver si estos métodos son efectivos.

Por lo tanto, debemos evaluar el algoritmo numéricamente (como el error de conjunto de validación cruzada) para ver el efecto del algoritmo cuando se usa o no cierto método, por ejemplo:

  • Derivar la palabra incorrecta de antemano: tasa de error del 5% frente a extraer la raíz de la palabra: índice de error del 3%
  • Sensibilidad a mayúsculas y minúsculas (mamá / mamá): tasa de error del 3,2%

11.3 Métricas de error para clases sesgadas

¿Qué es la clasificación de asimetría ?

Tomando como ejemplo la predicción o clasificación del cáncer, entrenamos un modelo de regresión logística, si es cáncer, y = 1, en caso contrario, y = 0.
En el conjunto de prueba, se encontró que la tasa de error de este modelo era solo del 1% (el 99% se calificó correctamente), lo que parece ser un resultado muy bueno.
Pero, de hecho, solo el 0,5% de los pacientes tienen cáncer. Si no usamos ningún algoritmo de aprendizaje, predeciremos y = 0 para todos en el conjunto de prueba, y no habrá cáncer. Entonces, la tasa de error de este método de predicción es solo del 0,5%, que es incluso mejor que el modelo de regresión logística que entrenamos intensamente. Este es un ejemplo de clasificación asimétrica. Para tal ejemplo, es arriesgado considerar solo la tasa de error .

Ahora llegamos a considerar un método de medición estándar: Precisión / Recuperación (precisión y recuperación)

Primero, defina los ejemplos positivos y negativos de la siguiente manera:

Verdadero Positivo (Ejemplo Verdadero, TP) es una muestra positiva que el modelo predice como positiva; se puede llamar la tasa correcta

Verdadero Negativo (Verdaderamente Negativo, TN) es una muestra negativa que el modelo predice como negativa; se puede llamar la tasa correcta que se considera falsa

Falso positivo (FP) es una muestra negativa que el modelo predice como positiva; se puede llamar tasa de falsos positivos

Falso negativo (FN) es una muestra positiva que el modelo predice como negativa; se puede llamar la tasa de falsos negativos

Valor predictivo
Positivo Negativo
Valor actual Positivo TP FN
Negativo FP Tennesse

Entonces, para el ejemplo de la predicción del cáncer, podemos definir:

Precisión: el número real de pacientes con cáncer en la predicción (casos reales) dividido por el número de pacientes con cáncer que predijimos:

Verdadero positivopredocto positivo = Verdadero Positivo Verdadero Positivo + Falso Positivo \ frac {Verdadero \ positivos} {predoctado \ positivo} = \ frac {Verdadero \ Positivo} {Verdadero \ Positivo + Falso \ Positivo} p r e d o c t e d p o s i t i v e T r u e p o s i t i v e s =T r u e P o s i t i v e + F a l s e P o s i t i v e  T r T e P o s i t i v e 

Precisión = TP / (TP + FP)

Recuperación (tasa de recuperación): el número de pacientes con cáncer reales en el pronóstico (casos reales) dividido por el número real de pacientes con cáncer:

Verdadera positivaactual positivo = Verdadera P ositivo Verdadero Positivo + Falso N egativo \ frac {Verdadero \ positivos} {real \ positivo} = \ frac {Verdadero \ Positivo} {Verdadero \ Positivo + Falso \ Negativo} a c t u a l p o s i t i v e T r u e p o s i t i v e s =T r u e P o s i t i v e + F a l s e N e g a t i v e  T r T e P o s i t i v e 

Recuperar = TP / (TP + FN)

11.4 Intercambio de precisión y recuperación

Suponiendo que nuestro clasificador usa un modelo de regresión logística, el valor predicho está entre 0 y 1: una forma común de juzgar casos positivos y negativos es establecer un umbral, como 0.5:

  • Si, entonces la predicción es 1, un ejemplo positivo;
  • Si, entonces la predicción es 0, un ejemplo negativo;

En este momento, podemos calcular la precisión y recuperación de este clasificador :

  • Precisión = casos TP / (TP + FP) Entre todos los pacientes que predecimos que tendrán tumores malignos, el porcentaje de pacientes que realmente tienen tumores malignos, cuanto mayor, mejor.
  • Recordar = casos TP / (TP + FN) Entre todos los pacientes que realmente tienen tumores malignos, el porcentaje de pacientes con tumores malignos predicho con éxito, cuanto mayor, mejor.

En este momento, diferentes umbrales conducirán a una precisión y recuperación diferentes, entonces, ¿cómo sopesar estos dos valores?

Para este ejemplo de predicción de cáncer:

Supongamos que estamos muy seguros de predecir que el paciente tendrá cáncer (y = 1). En este momento, a menudo establecemos el umbral muy alto, lo que dará lugar a una alta precisión y una baja memoria (mayor precisión, menor memoria);

Suponiendo que no queremos clasificar erróneamente demasiados casos de cáncer (para evitar casos de falsos negativos, si tienen cáncer, de hecho se clasifican como no tener cáncer). En este momento, el umbral se puede establecer más bajo, lo que conducirá a una alta tasa de recuperación Baja precisión (mayor recuperación, menor precisión);

Estos problemas se pueden atribuir a una curva de Precision Recall, conocida como PR-Curve:
Inserte la descripción de la imagen aquí
normalmente consideraremos su valor promedio para comparar, pero esto introducirá un problema, por ejemplo, el valor promedio de los tres conjuntos anteriores de Precision / Recall son: 0.45, 0.4, 0.51, el último grupo es el mejor, pero ¿el último grupo es realmente bueno? Si establecemos el umbral muy bajo, o incluso 0, entonces para todos los conjuntos de prueba, nuestras predicciones son y = 1, entonces la recuperación es 1.0. No necesitamos ningún algoritmo complicado de aprendizaje automático, y predecimos directamente y = 1 es suficiente, por lo que usar la media de Precision / Recall no es una buena manera.

Esperamos que haya una forma de ayudarnos a elegir este umbral. Una forma es calcular la puntuación F estándar o la puntuación F1:

La fórmula de cálculo es: F 1 S núcleo: 2 PRP + R { {F} _ {1}} Puntuación: 2 \ frac {PR} {P + R}F1S c o r e:2P + RP R

Elegimos el umbral que hace que el valor F1 sea el más alto.

El valor F es un buen equilibrio entre precisión y recuperación, y los dos casos extremos también pueden estar bien equilibrados.

11.5 La importancia de los datos para el aprendizaje automático (Datos para el aprendizaje automático)

Al diseñar un sistema de aprendizaje automático de alta precisión, ¿qué importancia tienen los datos? En 2001, Banko y Brill realizaron un experimento para clasificar palabras confusas, es decir, elegir una palabra adecuada en el contexto de una oración, por ejemplo:
Para desayunar comí ___ huevos.

Dado {a, dos también}, elija una palabra adecuada.
Utilizaron los siguientes algoritmos de aprendizaje automático:

  • -Perceptron (regresión logística)
  • -Aventar
  • -Basado en memoria
  • -Naïve Bayes

Según las diferentes escalas del conjunto de entrenamiento, se registró la precisión de estos algoritmos, y se realizó la siguiente figura: La
Inserte la descripción de la imagen aquí
conclusión final es:

“No es quién tiene el mejor algoritmo el que gana. Es quien tiene más datos ".

¿Por qué elegir Big Data?

Suponiendo que nuestras características tienen mucha información para predecir con precisión y, por ejemplo, el ejemplo anterior de clasificación de palabras confusas, tiene el contexto de la oración completa que se puede usar;

Por el contrario, por ejemplo, al predecir los precios de la vivienda, si solo existe la característica del tamaño de la casa y no otras características, ¿puede la predicción ser precisa?

Para tal problema, un método de prueba simple tiene tales características, ¿puede un experto humano predecir con precisión y?

Si un algoritmo de aprendizaje tiene muchos parámetros, como la regresión logística / regresión lineal tiene muchas características, y las redes neuronales tienen muchas unidades ocultas, entonces su error de conjunto de entrenamiento será pequeño, pero es fácil caer en sobreajuste; si se usa nuevamente , son datos de entrenamiento muy grandes, entonces será difícil sobreajustar, y el error del conjunto de entrenamiento y el error del conjunto de prueba serán aproximadamente iguales y pequeños. Entonces, los macrodatos siguen siendo muy importantes para el aprendizaje automático.

Supongo que te gusta

Origin blog.csdn.net/qq_44082148/article/details/104347864
Recomendado
Clasificación