Vocero | Transcripción |
| lucas | Bien, gracias a todos por venir y escuchar mi charla. Mi nombre es Lucas Beverlin. Soy estadístico en Intel. |
| Y hoy voy a hablar sobre el uso de JMP para comparar modelos de varios entornos. |
| Bien, actualmente JMP 15 Pro es el último y mejor que tiene JMP y, si desea adaptarse al modelo, tienen varias herramientas diferentes para hacerlo. |
| Ahí está la plataforma del modelo en forma. Existe la plataforma neuronal en la plataforma de partición de red neuronal. Si quieres árboles de clasificación y regresión. La plataforma no lineal para modelado no lineal y hay varias más. |
| Y así, dentro de JMP 15, creo que salió en 12 o 13, pero esta plataforma de comparación de modelos es una herramienta muy ingeniosa que puedes usar para comparar. |
| El modelo se adapta a varias plataformas dentro de JMP. Entonces, si tienes un árbol y una red neuronal y no estás seguro de cuál es mejor. Bien, puedes alternar entre los dos. Pero ahora con esto, |
| lo tienes todo en la misma pantalla. Es muy rápido y fácil saber si esto es mejor que aquello, y así sucesivamente. |
| Dicho esto, JMP puede adaptarse a muchas cosas, pero, lamentablemente, no puede adaptarse a todo. Así que solo dé algunas ideas de algunas cosas que no encajan. Así por ejemplo, |
| aquellos que hacen mucho aprendizaje automático e IA podrían adaptarse a algo como un codificador automático o una red neuronal convolucional que generalmente requiere muchas funciones de activación o sí, muchos nodos de capas ocultas. |
| Hay otras funciones de activación además de las que ofrece JMP, por lo que JMP no podrá hacer mucho de eso dentro de JMP. |
| Otro es algo llamado regresión de búsqueda de proyección. Otro se llama splines de regresión adaptativa multivariada. Desafortunadamente, hay algunas cosas que JMP no puede hacer. |
| R, Python y MATLAB. |
| Hay varios más por ahí, |
| pero me voy a centrar en esos tres. Dicho esto, las ideas que voy a discutir aquí deben encajarlas en C++, Java, Rust o cualquier otro lenguaje. |
| Me viene a la mente, deberías poder usar muchos de esos. |
| Entonces podemos usar la plataforma de comparación de modelos, como dije, para comparar también con otro software. Entonces, ¿qué necesitarás? |
| Entonces, las dos cosas más importantes que necesitará son las predicciones del modelo de cualquier software que utilice para ajustar el modelo. |
| Y, en general, cuando ajustamos el modelo, particularmente con modelos más grandes, puede dividir los datos en conjuntos de prueba y/o validación de entrenamiento. |
| Necesitará algo que le indique a todo el software qué es entrenamiento, qué es validación y qué es prueba, porque querrá que sean consistentes cuando compare los ajustes. |
| Bien, entonces la razón principal por la que elegí R, Python y MATLAB para centrarme en esta charla es que resulta que JMP y el lenguaje de secuencias de comandos pueden crear sus propias sesiones de R y ejecutar código desde ellas. |
| Entonces, esta imagen aquí se muestra muy rápidamente si quisiera ajustar un modelo de regresión lineal a algún resultado. |
| Al conjunto de datos de vivienda de Boston. Trabajaré mucho más con ese conjunto de datos más adelante. |
| Pero si desea ajustar muy rápidamente un modelo de regresión lineal en R y generar los valores predictivos, puede hacerlo. Por supuesto que puedes hacer eso JMP. Pero sólo para dar una idea muy simple. |
| Entonces, |
| Una cosa a tener en cuenta: estoy usando R 3.6.3, pero JMP puede manejar cualquier cosa siempre que sea superior a 2.9. |
| Y de manera similar, Python, puedes llamar a tu propia sesión de Python. Entonces, aquí la imagen muestra que ajusto la regresión lineal con Python. No voy a repasar todas las líneas de código aquí, pero ya tienes una idea básica. |
| Ahora, por supuesto, con Python tenga un poco de cuidado ya que la versión más reciente de Python 3.8.5. Pero si usa Anaconda para instalar cosas, JMP tiene problemas para hablar con él cuando es mayor que 3.6, por lo que |
| ya que estoy usando 3.6.5 para esta demostración. |
| Y por último, también podemos crear nuestra propia sesión de MATLAB. |
| Aquí estoy usando MATLAB 2019b. Pero básicamente, siempre que su versión de MATLAB haya aparecido en los últimos siete u ocho años, debería funcionar bien. |
| Bien, entonces, ¿cómo unimos todo? Realmente, hay una especie de proceso de cuatro pasos que veremos aquí. En primer lugar, queremos adaptarnos a cada modelo. Entonces enviaremos a cada software los datos y en qué conjunto reside cada observación. |
| Una vez que tengamos los modelos ajustados, queremos generar esos ajustes y sus predicciones y agregarlos a una tabla de datos que JMP pueda consultar. |
| Entonces, por supuesto, mi advertencia es: asegúrese de nombrar cosas que pueda saber dónde encajó el modelo o cómo encajó el modelo. Tengo ejemplos de ambos por venir. |
| Entonces, el tercer paso, dependiendo del modelo, es posible que desees consultar algunos diagnósticos del modelo. Sólo porque un modelo se ajusta... parece ajustarse bien según los números, con un vistazo a su gráfico de residuos, por ejemplo, podrá descubrir muy rápidamente el |
| El área de mayor interés no encaja muy bien. |
| O hay algún problema con los residuos, etc. Así que también mostraremos cómo generar ese tipo de cosas. |
| Y luego, por último, usaremos la plataforma de comparación de modelos, en realidad, para reunir todo en una gran tabla para comparar números, mucho más fácilmente en lugar de voltear hacia adelante y hacia atrás y hacia adelante y hacia atrás. |
| Bien, ahora desglosaremos los pasos con un poco más de detalle. Entonces, para el primer paso en el que ajustamos el modelo, básicamente tenemos dos opciones. Entonces, en primer lugar, podemos decirle a JMP a través de JSL que llame al software de su elección. |
| Envíale los datos y el código para que se ajuste. Y entonces, de hecho, saldré de esto por un momento y haré exactamente eso. |
| Como verás aquí, tengo un código para llamar a R. |
| Y luego, una vez hecho, llamaré a Python y una vez hecho, llamaré a MATLAB y luego uniré todo. Ahora diré más sobre el código aquí en un momento, pero probablemente tardará tres o cuatro minutos en ejecutarse. Entonces voy a hacer eso ahora. |
| Y volveremos con él cuando estemos listos. |
| Entonces nuestra otra opción es crear un conjunto de datos con la validación. Bueno, creamos un conjunto de datos con la columna de validación y/o una columna de prueba, dependiendo de cuántas |
| Los conjuntos estaban dividiendo nuestros datos en. Estamos programados para ejecutar cualquier software que necesitemos ejecutar, por supuesto, la salida de eso sea lo que sea que necesitemos. |
| Por supuesto, algunas advertencias. Asegúrese de que... cualquier software que esté utilizando realmente tenga lo que necesita para adaptarse al modelo. |
| Asegúrese de que el modelo haya terminado de ajustarse antes de intentar compararlo con otras cosas. |
| Asegúrese de que el formato de salida sea algo que JMP realmente pueda leer. Afortunadamente, JMP puede leer bastantes cosas, por lo que esa no es la mayor de las cuatro advertencias. |
| Pero como les advertí anteriormente, asegúrese de que las predicciones de cada modelo correspondan con las observaciones correctas del conjunto de datos original. |
| Y eso vuelve a si es entrenamiento, si es una observación de entrenamiento, cuando lo ajustas en JMP, |
| Será mejor que sea una observación de entrenamiento cuando la coloques en cualquier software que utilices. Si es validación en JMP, es validación en otro lugar. Es una prueba en JMP, se probará en otro lugar. |
| Así que asegúrese de que todo corresponda correctamente porque lo último que queremos saber es mirar los conjuntos de prueba y decir: "Oh, este encaja mucho mejor". Bueno, es porque las observaciones que encajaban en él tenían pesos diferentes y no tenían valores atípicos reales. Entonces eso termina sesgando tu forma de pensar. Entonces |
| Una palabra de precaución, disculpe, una palabra de precaución. |
| Bueno. Como ya he mencionado, tengo un ejemplo que estoy ejecutando actualmente en segundo plano. Por eso quiero dar un poco de detalle sobre lo que estoy haciendo. Entonces |
| resulta que voy a adaptar redes neuronales en R, Python y MATLAB. Entonces, si quiero hacer eso, dentro de R, necesito instalar dos paquetes en R además de cualquier instalación base que tenga y son el paquete Keras y el paquete Tensorflow. |
| numpy, pandas y matplotlib. |
| Es tan complicado hacer algunos cálculos con bastante facilidad; pandas, pandas para hacer datos... cierta manipulación de datos; y matplotlib debería ser bastante sencillo para crear algunos gráficos. Y luego, en MATLAB, uso la caja de herramientas de aprendizaje profundo, ya sea que tenga acceso a ella, no la tiene. |
| Bueno. Entonces, paso dos, queremos agregar predicciones a la tabla de datos de JMP. Entonces, si usa JMP para llamar al software, puede usar el código JSL para recuperar esas predicciones y agregarlas a una tabla de datos para luego poder compararlas más adelante. |
| Entonces, la otra forma de hacerlo es que el software se ejecute por sí solo y guarde el resultado, puede decirle rápidamente a JMP que extraiga ese archivo de salida y luego haga algunas manipulaciones para llevar las predicciones a cualquier tabla de datos que tenga. almacenar sus resultados. |
| Ahora que también podemos leer los gráficos de diagnóstico. En este caso, lo que generalmente voy a hacer es guardar esos gráficos de diagnóstico como archivos de gráficos. Entonces, para mí, serán archivos PNG. Pero claro, cualquiera que sea |
| gráficos que puedes utilizar. Ahora JMP no puede abarcar todos y cada uno de los que hay bajo el sol, pero creo que PNG que mapea archivos jpg y algunos y ellos... tienen los habituales cubiertos. |
| Entonces, la segunda nota la uso para la plataforma de comparación de modelos, pero para ayudar a identificar qué... qué modelo encajas y dónde lo encajas. |
| Generalmente recomiendo agregar la siguiente propiedad para cada columna de predicción que agregue. Y aquí vemos que enviamos la tabla de datos de interés, esta propiedad se llama predicción. |
| Y aquí tenemos lo que sea que estés usando para predecir cosas (ahora aquí en valor probablemente no sea la mejor opción aquí), pero |
| pero con este creador, esto me dice, oye, qué software usé para crear este modelo. Y aquí usé R. Muestra R para que esto realmente quepa en la pantalla. Python y MATLAB eran demasiado largos, pero podemos poner aquí la cadena que queramos. |
| Los verás cuando revise el código con un poco más de detalle aquí en breve. |
| Entonces, esto resulta útil porque también incluiré varios modelos dentro de R más adelante. Entonces, si elijo los nombres de las columnas correctamente y tengo varios donde R los creó, todavía sé qué modelo estoy viendo realmente. |
| Bien, así es como se ve el típico cuadro de diálogo de comparación de modelos. |
| Una cosa que voy a tener en cuenta es que esto es más o menos lo que se vería si apuntara y hiciera clic al final de todo el ajuste del modelo. Como puedes ver, tengo varios predictores. Entonces tengo redes neuronales para MATLAB, Python y R. |
| Varias formas de predicción; Solía usar JMP para adaptarme a algunas cosas. |
| Ahora, muchas veces lo que la gente hará es poner esta columna de validación como un grupo, |
| para que agrupe la validación y prueba del entrenamiento. De hecho, me gusta un poco más el resultado cuando lo coloco en la declaración By aquí. Así que lo mostraré aquí un poco más tarde. Pero puedes ponerlo o |
| pero me gusta más el resultado de esta manera, en términos generales y breves. |
| Esta es la razón más importante por la que ahora puedo ver claramente que estos son todos los entrenamientos. |
| Estas son todas las validaciones (no deberían verse en los encabezados) y todas estas son las pruebas. |
| Si usa la validación como variable de grupo, obtendrá una tabla grande con 21 entradas. Ahora habrá una columna adicional. Dice prueba de validacion de entrenamiento o en mi caso sera 012 pero |
| De esta manera con las palabras, no tengo que pensar tanto. No tengo que explicarle a nadie lo que significa 012 y así sucesivamente. Por eso tomé la decisión que tomé. |
| Bien, en el ejemplo que voy a desglosar aquí, usaré el conjunto de datos de vivienda clásico de Boston. Ahora esto está incluido dentro de JMP. Por eso no lo incluí como un archivo en mi presentación porque si tienes JMP, ya lo tienes. |
| Así que Harrison y Rubinfeld tenían varios predictores del valor medio de la casa, tales como la tasa de criminalidad per cápita, la proporción de acres de negocios no minoristas por ciudad, |
| número promedio de habitaciones dentro de lo que sea que esté tratando de comprar, proporción de alumnos por maestro por ciudad (por lo tanto, si hay muchos maestros y no tantos estudiantes, eso generalmente significa que una mejor educación es lo que mucha gente |
| encontrado) y varios otros. Realmente no voy a intentar repasar los 13 aquí. |
| Bien, déjame darte un poco de información sobre los modelos que miré aquí. Y luego voy a profundizar en el código JSL y cómo encajo todo. |
| He mirado algunos de los modelos. En primer lugar, el modelo de regresión lineal por excelencia. Aquí sólo ves una regresión lineal simple. Simplemente ajusté el valor medio a, aparentemente, por tasa impositiva. |
| Pero, por supuesto, usaré una regresión lineal múltiple y las usaré todas. |
| Entonces, |
| Pero con 13 predictores diferentes, y sabiendo que algunos de ellos podrían estar correlacionados entre sí, decidí que tal vez valdría la pena considerar algunos otros tipos de regresión. |
| Uno de ellos es algo llamado regresión puente. Entonces, en realidad todo lo que es es una regresión lineal con esencialmente una restricción adicional que |
| Los valores al cuadrado de mis parámetros no pueden ser mayores que alguna constante. |
| Puedo... resulta que en realidad puedo reescribir esto como un problema de optimización donde algún valor de lambda corresponde a algún valor de C. |
| Y entonces simplemente estoy tratando de minimizar esto con este término de penalización adicional, a diferencia de los mínimos cuadrados típicos que estás acostumbrado a ver. |
| Ahora, esto se llama método de contracción porque, por supuesto, a medida que lo hago cada vez más pequeño, lo acercará cada vez más a cero. Entonces, por supuesto, es necesario pensar un poco en qué tan restrictivo quiero que sea. |
| Ahora, con la contracción, todo el mundo se acercará lentamente a cero. Pero con otro tipo de término de penalización, puedo eliminar algunos términos por completo. |
| Y puedo usar algo llamado lazo. Entonces, la restricción aquí es, está bien, en lugar de las estimaciones de los parámetros al cuadrado, simplemente tomaré la suma del valor absoluto de esas estimaciones de los parámetros. |
| Y resulta que lo que realmente sucederá es que aquellos que son muy débiles en realidad obtendrán sus estimaciones de parámetros establecidas en cero, lo que sirve como una especie de |
| eliminación, por así decirlo, de términos sin importancia. |
| Entonces, para dar una idea visual de lo que están haciendo el lazo y la regresión de crestas. Entonces, para la regresión de crestas, el círculo aquí representa el término de penalización. |
| Y aquí estamos mirando el espacio de parámetros. Y entonces las verdaderas estimaciones de mínimos cuadrados estarían aquí. Así que no estamos llegando a ese punto, porque tenemos esta restricción adicional. |
| Entonces, al final, encontramos dónde... dónde obtenemos el valor mínimo que toca el círculo, básicamente. Y estas serían nuestras estimaciones de parámetros de regresión de cresta. |
| Para lazo, dibujo similar, pero ahora puedes ver con el valor absoluto, es más un diamante que un círculo. Ahora note, esto son dos dimensiones, por supuesto, vamos a entrar en las hiperesferas y todas esas formas. |
| Pero puedes ver aquí, observa que toca justo en la punta del diamante. Y entonces, en este caso, la beta uno es en realidad cero. Así es como elimina términos. |
| Bien, otra cosa que veremos es lo que se llama árbol de regresión. Ahora JMP usa las plataformas de partición para hacer esto. Entonces, solo para dar una demostración muy rápida de lo que esto muestra, en eso, ok, tengo todos mis datos. |
| Entonces, mi primera pregunta que me haré es cuántas habitaciones hay en la vivienda, y sé que no puedo tener .943 de una habitación, así que básicamente, |
| Tengo seis habitaciones o menos. Así que bajemos de esta parte del árbol, no bajemos de esta parte del árbol. Ahora bien, si tengo siete habitaciones o más, esto me dice inmediatamente que voy a predecir mi mediana |
| valor es 37. Recuerde que está en decenas de miles de dólares, así que equivalga a 370.000 dólares. |
| Si es menos de siete, entonces la siguiente pregunta que hice es, bueno, ¿qué tamaño tiene lstat? |
| Entonces, si es mayor o igual a 14,43, miraré este nodo y de repente mi vivienda media estima alrededor de 150 mil dólares y si vengo aquí, será alrededor de 233 mil dólares. |
| Entonces, lo que realmente hacen los árboles de regresión es dividir el espacio de entrada en diferentes áreas. Y estamos dando la misma predicción a cada valor dentro de esa área. |
| Así que puedes ver aquí que he dividido... ahora en este caso, estoy tomando uno bidimensional porque es más fácil de dibujar... |
| y entonces puedes ver este árbol aquí, donde miro por primera vez x1. Ahora mire x2 aquí y haga otra pregunta sobre x1 y haga otra pregunta sobre x2, y así es como termino dividiendo el espacio de entrada. |
| Ahora cada uno de estos cinco tendrá un valor de predicción. Y así es esencialmente como se ve esto. Miro esto desde arriba. Voy a conseguir exactamente esto. Pero puedes ver aquí que el |
| La predicción es un poco diferente dependiendo de cuál de las cinco áreas sea correcta. |
| Ahora, no voy a entrar en demasiados detalles sobre cómo colocar exactamente uno de estos, pero |
| James, Witten, Tibshirani y Friedman dan un poquito; leo??? Escribí el libro fundamental sobre él para que puedas echarle un vistazo allí. |
| A continuación, hablaré de las redes neuronales, que se utilizan mucho en el aprendizaje automático y demás en estos días. Y esto da una idea visual de cómo se ve una red neuronal. Entonces aquí, este objeto visual solo usa cinco y 13 entradas al pasarlas. |
| a estos... esta capa oculta. Y cada uno de estos se transforma mediante una función de activación. |
| Y para cada una de estas funciones de activación, obtienes un resultado y usaremos... |
| A menudo, simplemente usaremos una regresión lineal de estos resultados para predecir el valor mediano. |
| Bueno entonces |
| En realidad, las redes neuronales son modelos no lineales, al final del día, y en realidad, se llaman redes neuronales porque la representación generalmente es cómo veíamos a las neuronas trabajando dentro del cerebro humano. |
| Por tanto, cada entrada se puede pasar a nodos en una capa oculta. En la capa oculta, sus entradas se pasan a través de una función de activación y se calcula alguna salida y cada salida puede pasarse a un nodo en otra capa oculta o ser una salida de la red. |
| Ahora, dentro de JMP, sólo se le permiten dos capas ocultas. |
| A decir verdad, en cuanto a crear una red neuronal, no hay nada que diga que no puedas tener 20 para todo eso. |
| nos preocupa ahora. A decir verdad, hay alguna teoría estadística que sugiere que podemos aproximar cualquier función continua, |
| dadas algunas condiciones de contorno, con dos capas ocultas. Probablemente esa sea la razón por la que JMP tomó la decisión que tomó. |
| tangente lineal, hiperbólica y base radial gaussiana. Entonces, de hecho, |
| En estos nodos aquí, observe la pequeña curva aquí. Creo que es para la función tangente hiperbólica; lineal será una línea recta que va hacia arriba; y creo que la base radial gaussiana se parecerá más a una curva normal. |
| Esa es la plataforma de red neuronal. Entonces, el último que veremos es algo llamado regresión de búsqueda de proyección. Quería sacar algo que JMP simplemente no puede hacer, simplemente dé un ejemplo aquí. |
| Um, entonces la regresión de búsqueda de proyección fue un modelo propuesto originalmente por Jerome Friedman y Steutzle en Stanford. Su modelo requiere predicción... hace predicciones de la forma y es igual a la suma de beta i, f sub i, y una transformación lineal de sus entradas. |
| En realidad, esto es algo análogo a una red neuronal. Tienes una capa oculta aquí con k nodos y cada uno con función de activación fi |
| l. Resulta que con la proyección y la regresión, en realidad también vamos a estimar estos f sub i. |
| Generalmente serán una especie de ajuste más suave o estriado. Normalmente, las f sub i se denominan funciones de cresta. Ahora tenemos alfa, beta y F que necesitamos optimizar. Por lo general, se realiza una adaptación por etapas. No voy a profundizar demasiado en los detalles en este momento. |
| Bien, ya he revisado todos mis modelos. |
| Así que ahora voy a mostrar algunos resultados y espero que todo se vea bien. Una cosa que voy a tener en cuenta antes de entrar en JMP es que |
| Es realmente difícil establecer semillas para las redes neuronales en R, Python para Keras. Así que tenga en cuenta que si toma mi código y lo ejecuta, probablemente no obtendrá exactamente lo que obtuve, pero debería ser bastante parecido. Entonces dicho esto, |
| veamos qué tenemos aquí. Entonces este fue el resultado que obtuve. Ahora, lamentablemente, las cosas no parecen haber ido perfectamente. |
| Entonces, |
| lucas | ¿Qué tengo aquí? Entonces tengo mi entrenamiento, mi validación y mi prueba. Y entonces vemos muy rápidamente que uno de estos modelos no encajaba muy bien. Desafortunadamente, algo horrible sucedió en la red neuronal dentro de R. |
| Debe haber encontrado un mal lugar en el espacio de entrada para comenzar y todo eso. Y simplemente no encajaba en un modelo muy bueno. |
| Desafortunadamente, los parámetros iniciales con modelos no lineales son importantes; en algunos casos, nos muerden. |
| Pero si echamos un vistazo a todo lo demás, todo lo demás parece encajar bastante bien. Ahora bien, podemos discutir sobre lo que está decentemente bien, pero estoy viendo R cuadrados, uno por encima de 0,5. Estoy viendo el promedio de raíz |
| Los errores al cuadrado aquí rondan aproximadamente cinco, e incluso nuestros errores absolutos promedio están en el rango de tres. Ahora, en cuanto al entrenamiento, parece que las regresiones de seguimiento de proyecciones tuvieron mejores resultados. |
| Si me refiero al conjunto de datos de validación, todavía parece R |
| La búsqueda de proyección funcionó mejor. Pero si miramos el conjunto de datos de prueba, de repente, no, la regresión de seguimiento de proyección fue la segunda peor, asumiendo que vamos a ignorar la red neuronal de R. |
| A menudo, en un marco como este, veremos el conjunto de datos de prueba más cercano porque no se usó de ninguna manera para determinar el ajuste del modelo. |
| Y vemos en base a eso, que parece |
| la regresión de crestas de JMP se ajusta mejor. |
| Podemos ver aquí arriba que su R cuadrado era 0,71 aquí antes era aproximadamente 0,73 y aproximadamente 0,73 aquí, por lo que podemos ver que se ajusta consistentemente. |
| lo mismo en los tres conjuntos de datos. Entonces, si me viera obligado a tomar una decisión, basándome únicamente en lo que veo en este momento, probablemente elegiría |
| la regresión de la cresta. Dicho esto, tenemos un montón de diagnósticos y todo eso aquí abajo. Entonces, si quiero ver qué pasó con esa red neuronal de R, |
| Puedo ver muy rápidamente, algo sucedió a solo unos pasos de allí. Como puede ver, está haciendo un pésimo trabajo de ajuste porque se predice que casi todo será de 220 mil. |
| Entonces sabemos que algo salió mal durante la instalación de esto. |
| Entonces vimos que la regresión de crestas parecía la mejor. Así que echemos un vistazo a lo que escupe. Entonces mostraré en un momento mi código JSL muy rápido. |
| Muestra cómo hice todo esto, pero podemos ver aquí las estimaciones de los parámetros de la regresión de cresta. Podemos ver los gráficos de diagnóstico de las crestas, por lo que las cosas en realidad no se habían reducido demasiado con respecto a las estimaciones originales. |
| Puede ver en las pruebas de validación con el registro que no hizo nada. |
| Y aquí a la derecha, tenemos nuestros gráficos esencialmente residuales. Estos son reales por predichos. |
| Como pueden ver en la capacitación, parece que hubo algunos que eran bastante caros y que no se predijeron muy bien. Vemos menos aquí que en el conjunto de prueba, realmente no parece que hayamos tenido demasiados problemas. Tenemos un par de puntos aquí un poco extraños, pero podemos verlos en general. |
| cuando estamos en casas de precios más bajos, se ajusta bastante bien a los tres conjuntos de datos. Una vez más, tal vez queramos preguntarnos qué pasó con estos, pero, |
| Por el momento, este parece ser el mejor del grupo. Para que podamos ver desde los demás. |
| Mira aquí. Así que veremos MATLAB por un momento. |
| Así que aquí también puedes ver la validación de las pruebas de entrenamiento. Así que aquí estamos escupiendo...MATLAB escupe algo de diagnóstico y se puede ver que tomó algunas épocas para terminarlo. |
| Pero afortunadamente, MATLAB se ejecuta bastante rápido, como podemos ver. |
| Y luego lo real predicho aquí. |
| Podemos ver todo esto. |
| Bien, ahora me tomaré unos minutos para echar un vistazo al código. |
| Entonces, por supuesto, algunas notas, asegúrese de que las cosas estén instaladas para que realmente pueda ejecutar todo esto porque si no, JMP simplemente fallará estrepitosamente, no arrojará predicciones y luego fallará porque no puede encontrar las predicciones. |
| Entonces JMP tiene la capacidad de crear una columna de validación con código. Entonces hice eso y elegí 60 20 20. Elegí esa semilla aleatoria aquí para que puedas usar los mismos conjuntos de pruebas de validación de entrenamiento que yo uso. |
| Entonces, en realidad, por el momento, lo que termino haciendo es guardar cuáles son entrenamiento, validación y prueba. De hecho, voy a eliminar esa columna por un momento. |
| La razón por la que hago esto aquí es porque estoy enviando el conjunto de datos a R, Python y MATLAB y es más fácil codificar cuando todo lo que contiene es la salida o todas las entradas. |
| Así que no quería una columna de validación que tampoco lo fuera y luego se vuelve un poco más difícil hacerlo. Entonces lo que terminé haciendo fue enviarle el conjunto de datos, |
| Le envié filas de entrenamiento, validación y prueba, y luego llamo al código R para ejecutarlo. Ahora realmente puedes |
| coloque el código R real aquí. Elegí escribir solo una línea aquí para no tener que desplazarme eternamente. Pero no hay nada que te detenga. Si son solo unas pocas líneas de código, como lo que vieron anteriormente en la presentación, simplemente las pegaría aquí. |
| Entonces, una vez hecho esto, resulta... este código escupe |
| Una imagen del diagnóstico. Vimos que se detuvo después de seis o siete iteraciones, digamos esto. |
| Y también se ajusta a la regresión de crestas en este guión, por lo que obtenemos dos imágenes. Así que también lo escupo y lo guardo y delineo el cuadro. Ahora, todo esto se junta al final de todo el código. |
| Y luego obtengo el resultado y lo agregaré a la tabla de datos aquí en un momento. |
| Bien, entonces doy un poco de código aquí en eso. Digamos que tiene 6 millones de observaciones y le tomará 24 horas ajustarse al modelo; probablemente no querrá ejecutarlo dentro de JMP. |
| Entonces, como un poco de código que puedes hacer desde aquí, puedes decir, oye, estoy |
| Bien, voy a abrir la tabla de datos que me interesa. Voy a decirle a R que lo ejecute en otro lugar mientras tanto, y una vez que mi sistema, cuando me dé luz verde y diga que está hecho, puedo decir, está bien, vamos a abrir la salida de eso y traer en |
| mi tabla de datos. Esta sería una forma de hacer algo de eso. Y, por supuesto, desea guardar esos archivos de imagen en algún lugar y usar este código también. Pero este será exactamente el mismo código. |
| Bien, entonces para Python será muy similar. Le voy a pasar estas cosas. Ejecute algo de código Python, escupe el diagrama de diagnóstico y escupe las predicciones. |
| Y les doy algo de código Python, pueden ver, es muy, muy similar a lo que hicimos desde JMP. En este caso, simplemente voy a abrir un archivo CSV. Copie la columna y ciérrela, porque ya no la necesito. |
| Y luego MATLAB nuevamente exactamente el mismo juego. Activos, ejecute el script MATLAB. Obtengo el archivo PNG que escupí de aquí. Guárdelo donde lo necesite, guarde las predicciones. Y si necesitas agarrarlo |
| En lugar de ejecutarlo desde aquí, un poco de código de muestra lo hará. |
| Bien, ahora que terminé de llamar a R, Python y Matlab, recupero mis columnas de validación para que JMP pueda usarlas. Entonces, desde que recuerdo cuál es cuál. |
| Entonces, de forma predeterminada, JMP mira los valores dentro de la columna de validación que usaremos. El valor más pequeño es el entrenamiento, el siguiente más grande es la validación y el más grande es la prueba. Ahora, si realiza una validación cruzada de K pliegues, le dirá de qué pliegue se trata. Así que sigue 012345678 y así sucesivamente. |
| Entonces crea esto. Luego, a su vez, también creé esto aquí, de esa manera, en lugar de 012, en realidad dirá entrenamiento, validación y prueba en mi salida, por lo que es un poco más claro |
| entender. Entonces, si le voy a mostrar a alguien que nunca antes ha ejecutado JMP, no sabrá lo que significa 012, pero debería saber que lo son el entrenamiento, la validación y la prueba. |
| Bien, ahora empiezo a agregar las predicciones a mi tabla de datos. Um, aquí está esa propiedad establecida a la que aludí anteriormente en mi charla. |
| Entonces, en MATLAB de mi creador, le di el nombre de la columna, así que sé que es la predicción de la red neuronal para MATLAB. Así que puede que no necesite necesariamente al creador, pero en caso de que sea un poco descuidado al nombrar las cosas |
| Lo lamento. |
| Entonces podemos obtener toda la regresión de búsqueda de proyecciones, redes neuronales y todo eso. |
| Luego también noté que, oye, encajo la regresión de crestas, el lazo y la regresión lineal en JMP. |
| Entonces hice todo eso aquí. Así que aquí hago mi modelo de ajuste, mi regresión generalizada. Saquen todos estos escupitajos. |
| Guarde mis fórmulas de predicción. |
| Traza mi resultado real según lo previsto para mi producción completa al final. |
| Y voy a adaptar mi red neuronal. ¿Puedo decir la columna de validación? Transfiero mis covariables, generalmente las redes neuronales tienden a encajar un poco mejor cuando escalamos las cosas alrededor de cero en lugar de lo que suele ser la salida. |
| Entonces mi primera capa oculta tiene tres nodos. Mi segunda capa oculta tiene dos nodos. Aquí ambas son funciones de activación lineal. Resulta que para los tres anteriores, uso la función de activación de unidades lineales restringidas, de manera ligeramente diferente. |
| pero descubrí que parecen encajar casi igual de todos modos. |
| 5. Lo que eso significa es, oye, voy a probar cinco conjuntos diferentes de valores iniciales, y me quedaré con el que funcione mejor. |
| Como puedes ver en mi código, probablemente debería haberlo hecho con R. Se hace una especie de cuatro bucles, se hacen varios de ellos y se escupe el que funciona mejor. Entonces, para trabajos futuros, ese sería un lugar al que iría. |
| Entonces guardo esas cosas y ahora estoy listo para la comparación de modelos. Así que ahora traigo todas esas columnas nuevas en la comparación de modelos. |
| Desplácese un poco. Así que aquí estoy haciendo la validación, como mencioné antes. |
| Y por último, estoy haciendo un poco de codificación para que esencialmente se vea como quiero que se vea. |
| Entonces recibo estos cuadros de esquema, solo para decir diagnóstico de entrenamiento, diagnóstico de validación, diagnóstico de prueba, en lugar de lo habitual que dice JMP. |
| Voy a conseguir estos gráficos de diagnóstico. |
| Ahora, aquí solo estoy diciendo que solo quiero parte de los resultados para entender eso. |
| Voy a hacer algunos gráficos residuales muy rápido porque no todos los escupen instantáneamente, especialmente los de MATLAB, Python y R. |
| Establezco esos títulos y luego aquí simplemente creo la gran tabla antigua o el gran diálogo antiguo. |
| Y luego escribo todo en un diario. |
| Para que quede bonito y limpio. Cierra un montón de cosas para no tener que preocuparme por ellas. Y luego lo que hice aquí al final es lo que quería que sucediera cuando abriera uno de estos, |
| todo lo demás debajo se abre inmediatamente en lugar de |
| tener que hacer clic en seis o siete cosas diferentes. Puedes ver, tengo que hacer clic aquí y aquí y |
| Por aquí hay tres más. Supongo que uno más. Lo siento. Pero de esta manera, no tengo que hacer clic en ninguno de ellos, se abren automáticamente. |
| Eso es lo que hace este último fragmento de código. |
| Bueno. |
| lucas | Así que esto es simplemente diferente generarlo y ejecutarlo en vivo. Pero aquí es donde también puede parecer. |
| Entonces, como mencioné, en el código, viste allí, viste algo más, eso es lo que vimos. |
| Ricardo |
| lucas | No. Entonces, para resumir todo, la plataforma de comparación de modelos es realmente una herramienta muy buena para comparar la capacidad predictiva de múltiples modelos en un solo lugar. No es necesario ir y venir entre varias cosas. Puedes simplemente mirar todo lo que está frente a ti. |
| La flexibilidad se puede utilizar incluso para ajustar modelos que no encajaban en JMP o comparar modelos que ni siquiera encajaban en JMP. Y entonces |
| Con esto, si necesitamos calzar modelos muy grandes que tardan mucho en calzar, podemos decirles que se pongan en forma. Extraiga todo en JMP y observe muy fácilmente todos los resultados para intentar determinar los próximos pasos. |
| Y con eso, gracias por tu tiempo. |