My pool table set for 9-ballMy pool table set for 9-ballMy pool table set for 9-ballMy pool table set for 9-ballMi juego de mesa de billar para bola 9 En una publicación anterior , discutí las definiciones de aprendizaje automático y si JMP lo hace (sí, lo hace), y aquí voy a aplicar el aprendizaje automático a algunos datos reales que recopilé.
Dos de mis algoritmos de aprendizaje automático favoritos, porque son fáciles de entender, son K Nearest Neighbors y Naïve Bayes. Un algoritmo no tiene que ser complejo para lograr buenos resultados y, para algunos problemas, estos dos algoritmos funcionan de manera rápida y precisa.
K Nearest Neighbors es exactamente lo que parece. El algoritmo calcula cuáles de las observaciones en el conjunto de datos son las "K" más cercanas al punto que desea predecir. Luego, la predicción es el promedio de la respuesta para esos puntos más cercanos (si su variable de respuesta es continua) o es la categoría más frecuente (si su variable de respuesta es categórica). Por lo general, ajusta un rango de K y, mediante la validación cruzada, elige qué K proporciona el mejor rendimiento predictivo.
A menudo me preguntan por qué Naïve Bayes se llama "Naïve". El nombre proviene del hecho de que la suposición clave que se hace al usar este algoritmo es que todas las variables predictoras son independientes entre sí. En muchos casos, esa es una suposición ingenua. Por lo tanto, este método tiende a funcionar mejor cuando esa suposición está más cerca de la verdad que si tiene variables predictoras que están altamente correlacionadas entre sí. Para hacer predicciones, la probabilidad de una categoría de respuesta (digamos, ganar o perder) dadas las variables predictoras observadas se calcula en función de la probabilidad de observar esos valores en los datos de entrenamiento donde esa categoría es la respuesta. La categoría que resulte en la probabilidad calculada más alta es la categoría predicha.
Echemos un vistazo a estos dos métodos en acción.
¿Quien es mejor?
Mi esposo y yo somos ávidos jugadores de billar y jugamos casi todos los días cuando llegamos a casa del trabajo. Después de un año más o menos de jugar, pensamos que estábamos bastante igualados, y tal vez yo estaba un poco mejor. Dije: “¡Podemos responder a esta pregunta!”.
Entonces, a partir del 1 de enero de 2018, comenzamos a realizar un seguimiento de nuestros resultados. Guardo una hoja de cálculo (¡solo porque la computadora en la sala de juegos de mi casa no tiene JMP instalado!) que rastrea el mes, el día de la semana, la fecha, cuántos juegos gané, cuántos juegos jugamos, si Gané esa sesión de juego y qué juego de billar se jugó (bola 8 o bola 9). Debido a que esto estaba primero en una hoja de cálculo, también hay columnas que calculan el porcentaje general de victorias del juego, así como el porcentaje de victorias de la sesión.
Afortunadamente, puedo simplemente arrastrar mi archivo de Excel a mi ventana de inicio de JMP, y el Asistente de importación de Excel hace su magia para crear una tabla de datos de JMP. ¿Algunos ajustes para hacer que la sesión gane? indicador una variable nominal y el número de juegos ganados y jugados a variables ordinales, ¡y estoy listo para predecir mi próxima noche de dominio de la piscina!
Imported dataImported dataImported dataImported dataDatos importados Excepto que no estoy del todo listo. ¿Recuerda que mencioné con K Nearest Neighbors que la validación cruzada se usa para determinar el K más adecuado? Actualmente no tengo una columna para entrenamiento y validación. Si bien tanto K Nearest Neighbors como Naïve Bayes tienen la opción de usar un porcentaje de los datos como validación en los lanzamientos de su plataforma, si quiero comparar los dos métodos, debo usar el mismo conjunto de entrenamiento para ambos. Afortunadamente, JMP también me tiene cubierto aquí, con la utilidad Crear columna de validación.
Hay varias opciones en la utilidad sobre cómo crear la columna de validación. Si mi variable de respuesta estaba muy desequilibrada, lo que sucede en los casos en que las fallas son poco comunes o cuando se buscan transacciones fraudulentas, me gustaría usar la opción Aleatoria estratificada para asegurarme de tener datos con ambas respuestas en el conjunto de Entrenamiento y Validación. En este caso, sé que todas mis columnas están bastante bien equilibradas, por lo que es poco probable que una categoría falte por completo en mi conjunto de Entrenamiento o Validación. Por lo tanto, simplemente crearé mi columna de validación usando la opción aleatoria fija. Podría establecer una semilla para la generación aleatoria para poder reproducir esta columna en particular nuevamente en el futuro, pero no creo que sea necesario en este caso.
¡Tiempo de análisis!
Ahora, con la columna de validación en la mano, puedo iniciar la plataforma K Nearest Neighbors en el menú Analyze > Predictive Modeling. ¿Sesión ganadora? es mi variable de respuesta y lo que me gustaría predecir, es decir, para mi cumpleaños, el sábado 13 de octubre. [Nota: comencé a escribir esta publicación antes de mi cumpleaños; lea hasta el final para averiguar si las predicciones hechas aquí fueron correctas!] Mes, Día, Juego y Jugado (la cantidad de juegos jugados) son mis factores. No creo que la fecha sea útil, principalmente porque cada combinación de fecha y mes ocurre una vez (excepto algunos días de fin de semana en los que jugamos varias sesiones). También voy a hacer que la plataforma calcule los vecinos más cercanos hasta 25 en lugar de los 10 predeterminados.
KNN Launch DialogKNN Launch DialogKNN Launch DialogKNN Launch DialogDiálogo de lanzamiento de KNN
La parte de selección de modelo del informe rastrea la tasa de clasificación errónea calculada en cada uno de los conjuntos de capacitación y validación para los modelos con 1 a 25 vecinos. La línea de selección se establece en K = 20, que tiene la tasa de clasificación errónea más pequeña en el conjunto de validación. La siguiente tabla muestra que poco más del 44 % de las observaciones en el conjunto de validación se clasificaron incorrectamente. La matriz de confusión muestra que aproximadamente la misma cantidad de observaciones que en realidad fueron ganancias o pérdidas se clasificaron incorrectamente. El Diagrama Mosaico da una representación visual de la matriz de confusión.
KNN ReportKNN ReportKNN ReportKNN ReportInforme KNN La tasa de clasificación errónea no es excelente, pero no estoy seguro de que mis predictores sean realmente tan predictivos. Si hubiera estado pensando en escribir esta publicación el 1 de enero, podría haber rastreado cosas como qué tan estresante había sido el día, si estábamos disfrutando o no de una bebida para adultos con nuestro juego, y tal vez cuánto dormí. tenido la noche anterior! Así que no voy a culpar al algoritmo por no darme un modelo de gran ajuste.
Voy a guardar la fórmula de predicción en la tabla de datos para poder hacer mi predicción sobre mi cumpleaños después de ajustar estos mismos datos usando Naïve Bayes.
NB Launch DialogNB Launch DialogNB Launch DialogNB Launch DialogDiálogo de lanzamiento de NB
Lo primero que notamos es que la tasa de clasificación errónea en el conjunto de validación es un poco más pequeña, un poco más del 40%. La matriz de confusión nos muestra que hemos clasificado correctamente siete observaciones más en el conjunto de validación con el modelo Naïve Bayes que con el modelo K Nearest Neighbors. Finalmente, tenemos una curva ROC para cada conjunto. En el conjunto de validación, nuestra área bajo la curva (otra medida de la calidad del ajuste del modelo) es 0,5676. Si bien esto no es excelente, es mejor que adivinar al azar, lo que nos daría un AUC ≈ 0.5.
NB ReportNB ReportNB ReportNB ReportNB Informe
Volveré a guardar la fórmula de predicción en la tabla de datos para hacer mi predicción sobre el rendimiento de mi grupo de cumpleaños.
Debido a que jugamos una serie de "mejor de 9" cuando jugamos 9-ball, no sé de antemano cuántos juegos jugaremos. ¿Ganaré rápidamente en una derrota de 5 a 0? ¿O se necesitarán los 9 juegos para determinar un ganador? Agregaré una fila para cada número potencial de juegos jugados (5 a 9) y veré qué predicen nuestros modelos.
Added rows for predictionAdded rows for predictionAdded rows for predictionAdded rows for predictionFilas añadidas para predicción.
Para este día en particular, ambos modelos están de acuerdo en que yo debería ser el ganador a menos que la serie vaya a 9 juegos. En ese caso, K Vecinos más cercanos predice que perderé. ¡Va a ser un feliz cumpleaños!
Unos días después, llegó mi cumpleaños y armado con el conocimiento de que ganaré, entré a la sala de juegos. Aproximadamente una hora más tarde, salí, abatido, después de haber perdido tres juegos a cinco. ¡Al menos tengo pastel!
¿Qué pasó?
¡Las cosas se veían tan bien para mí según los modelos! ¿Cómo pude haber perdido? El modelo Naïve Bayes me da la oportunidad de ver la probabilidad estimada de ganar además de la predicción final. Parece que debería haber echado un vistazo a esos también, en lugar de tener tantas esperanzas. Guardé las fórmulas de probabilidad en la tabla de datos y quedó claro que, si bien se predijo que ganaría, la probabilidad más alta estaba por debajo del 75 % y la más baja por encima del 60 %. Eso significa que mi esposo en realidad tenía muchas posibilidades de ganar. Y al mirar solo la predicción final, calculé mal mis posibilidades reales de ganar un cumpleaños. ¡Tomaré eso como una advertencia para ver toda la información que tengo disponible antes de hacer mis apuestas la próxima vez!
Win probabilities. [Note: some data table columns hidden for space.]Win probabilities. [Note: some data table columns hidden for space.]Win probabilities. [Note: some data table columns hidden for space.]Win probabilities. [Note: some data table columns hidden for space.]Probabilidades de ganar. [Nota: algunas columnas de la tabla de datos están ocultas por espacio.]
Disparo de despedida
Algunas palabras finales sobre estos modelos: Incluso los algoritmos más avanzados no funcionan bien cuando las variables en el modelo no son muy predictivas de la respuesta. Vemos eso en acción con estos datos y las altas tasas de clasificación errónea que tienen. Como dije anteriormente, esto no es culpa de los algoritmos, sino una falla en los datos que recopilé. La mayoría de los modelos con predictores razonables son mucho más exitosos que estos aquí. Tal vez en 2019 agregaré más información a mi recopilación de datos y revisaré estos modelos.
Además, la piscina es un evento deportivo en el que el elemento humano juega un papel más importante en el resultado que muchas (quizás incluso la mayoría) de las aplicaciones habituales de aprendizaje automático. Puede ver este juego casi todos los fines de semana en el otoño en los juegos de fútbol universitario y profesional donde un desvalido logra una sorpresa. Esto a veces se conoce como "cualquier domingo". Sin embargo, a largo plazo, después de muchas pruebas dadas estas probabilidades, ganaría mi apuesta; al igual que la mayoría de las veces, el equipo de fútbol favorito gana y los apostadores deportivos ganan su dinero. Y, de hecho, si analizo los días posteriores a mi cumpleaños, gané aproximadamente el 60 % de las veces.