Una de las formas más simples de implementar un clasificador es ajustar un algoritmo de regresión lineal, como los del capítulo 3. Como recordatorio, el modelo de regresión lineal es un conjunto de funciones que parecen lineales, f (x) = wx. La función f (x) toma números reales continuos como entrada y produce números reales continuos como salida. Recuerda, la clasificación tiene que ver con salidas discretas. Por lo tanto, una forma de forzar al modelo de regresión para que produzca una salida de dos valores (en otras palabras, binario) es estableciendo los valores por encima de algún umbral en un número (como 1) y los valores por debajo de ese umbral en un número diferente (como 0). Procedemos con el siguiente ejemplo motivador. Imagina que Alice es una ávida jugadora de ajedrez, y tenemos registros de su historial de victorias / derrotas. Además, cada juego tiene un límite de tiempo que va entre 1 y 10 minutos. Podemos trazar el resultado de cada juego como se muestra en la figura 4.6.
El eje "x" representa el límite de tiempo del juego, y el eje "y" significa si ganó (y = 1)
o perdido (y = 0).
Como puedes ver en los datos, Alice es una pensadora rápida porque siempre gana juegos cortos. Sin embargo, ella generalmente pierde juegos que tienen límites de tiempo más largos. Desde la trama, nos gustaría predecir el límite de tiempo crítico del juego que decide si ella ganará o no.
Queremos desafiarla a un juego que estamos seguros de ganar. Si elegimos un juego largo obvio, como uno que demora 10 minutos, se negará a jugar. Entonces, configuremos el tiempo de juego para que sea lo más corto posible para que ella esté dispuesta a jugar contra nosotros, mientras inclina la balanza en nuestra ventaja. Un ajuste lineal en los datos nos da algo con qué trabajar. La Figura 4.7 muestra la mejor línea de ajuste calculada usando regresión lineal del listado 4.1. El valor de la línea es más cercano a 1 que a 0 para los juegos que ella probablemente gane. Parece que si elegimos un tiempo correspondiente a cuando el valor de la línea es menor a 0.5 (es decir, cuando es más probable que Alice pierda en lugar de ganar), entonces tenemos una buena probabilidad de ganar.
La línea está tratando de ajustar los datos lo mejor posible. Por la naturaleza de los datos de entrenamiento, el modelo responderá con valores cercanos a 1 para ejemplos positivos y valores cercanos a 0 para ejemplos negativos. Debido a que estamos modelando estos datos con una línea, algunas entradas pueden producir valores entre 0 y 1. los valores están demasiado lejos en una categoría resultará en valores mayores que 1 o menores que 0. Necesitamos una manera de decidir cuando un artículo pertenece a una categoría sobre otra. Normalmente, elegimos el punto medio 0.5 como un límite de decisión (también llamado umbral). Como has visto, este procedimiento utiliza una regresión lineal para realizar la clasificación.
El eje "x" representa el límite de tiempo del juego, y el eje "y" significa si ganó (y = 1)
o perdido (y = 0).
Como puedes ver en los datos, Alice es una pensadora rápida porque siempre gana juegos cortos. Sin embargo, ella generalmente pierde juegos que tienen límites de tiempo más largos. Desde la trama, nos gustaría predecir el límite de tiempo crítico del juego que decide si ella ganará o no.
Queremos desafiarla a un juego que estamos seguros de ganar. Si elegimos un juego largo obvio, como uno que demora 10 minutos, se negará a jugar. Entonces, configuremos el tiempo de juego para que sea lo más corto posible para que ella esté dispuesta a jugar contra nosotros, mientras inclina la balanza en nuestra ventaja. Un ajuste lineal en los datos nos da algo con qué trabajar. La Figura 4.7 muestra la mejor línea de ajuste calculada usando regresión lineal del listado 4.1. El valor de la línea es más cercano a 1 que a 0 para los juegos que ella probablemente gane. Parece que si elegimos un tiempo correspondiente a cuando el valor de la línea es menor a 0.5 (es decir, cuando es más probable que Alice pierda en lugar de ganar), entonces tenemos una buena probabilidad de ganar.
La línea está tratando de ajustar los datos lo mejor posible. Por la naturaleza de los datos de entrenamiento, el modelo responderá con valores cercanos a 1 para ejemplos positivos y valores cercanos a 0 para ejemplos negativos. Debido a que estamos modelando estos datos con una línea, algunas entradas pueden producir valores entre 0 y 1. los valores están demasiado lejos en una categoría resultará en valores mayores que 1 o menores que 0. Necesitamos una manera de decidir cuando un artículo pertenece a una categoría sobre otra. Normalmente, elegimos el punto medio 0.5 como un límite de decisión (también llamado umbral). Como has visto, este procedimiento utiliza una regresión lineal para realizar la clasificación.
EJERCICIO 4.X ¿Cuáles son las desventajas de usar la regresión lineal como una herramienta para la clasificación? (Ver listado 4.4 para una pista)
¡Vamos a escribir nuestro primer clasificador! Abra un nuevo archivo fuente de Python y llámelo linear.py. Siga el código en el listado 4.1 para escribir el código. En el código TensorFlow, primero deberá definir nodos marcadores (placeholder) y luego inyectar valores en ellos desde la sentencia session.run ()
Después de diseñar el gráfico TensorFlow, el listado 4.2 muestra cómo abrir una nueva sesión y ejecutar el gráfico. El train_op actualiza los parámetros del modelo para mejores y mejores conjeturas. Ejecutamos el train_op varias veces en un bucle ya que cada paso mejora iterativamente la estimación del parámetro. El listado 4.2 genera una gráfica similar a la figura 4.7.
Para medir el éxito, podemos contar el número de predicciones correctas y calcular una tasa de éxito. En el listado 4.3, agregará dos nodos más a su código anterior en linear.py
Se llama corrección y precisión correctas. A continuación, puede imprimir el valor de la precisión para ver la tasa de éxito. El código puede ponerse justo antes de cerrar la sesión.
Si la clasificación fuera tan fácil, este capítulo ya habrá terminado. Desafortunadamente, el enfoque de regresión lineal falla miserablemente si nos entrenamos en datos más extremos, también llamados valores atípicos. Por ejemplo, digamos que Alice perdió un juego que tomó 20 minutos. Capacitamos al clasificador en un conjunto de datos que incluye este nuevo punto de datos atípico. El código en el listado 4.4 simplemente reemplaza uno de los tiempos de juego con el valor de 20. Veamos cómo la introducción de un valor atípico afecta la clasificación del clasificador:
El clasificador original sugirió que podríamos vencer a Alice en un juego de tres minutos. Ella probablemente estaría de acuerdo en jugar un juego tan corto. Pero con el clasificador revisado, si nos mantenemos con el mismo umbral de 0.5, ahora estamos sugiriendo que el juego más corto que perderá es de cinco minutos. ¡Es probable que ella se niegue a jugar un juego tan largo!
Comentarios
Publicar un comentario