Mi favorito Procesos gaussianos!
Son tan malditamente diferentes . Cuando leí por primera vez acerca de ellos, sentí que debían estar rompiendo algunas reglas básicas de probabilidad y estadística.
Entonces, déjame explicarte qué es un médico de cabecera .
- En los modelos gráficos, ¿cuál es la diferencia entre un gráfico de clúster y un gráfico de factores?
- Cómo depurar sus proyectos de ciencia de datos y aprendizaje automático
- ¿Por qué deberíamos considerar muestras negativas en un sistema de recomendación basado en comentarios implícitos?
- Como el sistema de recomendación está relacionado con el aprendizaje automático, ¿cuál será la próxima moda en los sistemas de recomendación?
- ¿Los centros de datos cambiarán a procesadores personalizados para aplicaciones de aprendizaje automático?
En (¿casi?) Todos los algoritmos de ML supervisados, nos preocupa determinar una función [math] f () [/ math] que se mapee aproximadamente desde nuestras características [math] \ mathbf {x} _i [/ math] a nuestras predicciones [ matemáticas] y_i [/ matemáticas]. A menudo, la elección de la función está determinada por una elección de parámetros [math] \ boldsymbol {\ theta} [/ math]. En última instancia, determinamos funciones probables (de acuerdo con nuestros datos) determinando una distribución (posterior) sobre estos parámetros.
OK, piensa en lo absurdamente general que es el último párrafo. Resolver sus ambigüedades lo llevará a un algoritmo de ML específico y existente. Ahora, trate de pensar en un enfoque que esté fuera de ese marco general.
Difícil ¿verdad? *
Bueno, los médicos logran hacer esto de una manera particularmente inteligente. En lugar de determinar las distribuciones de probabilidad sobre los parámetros, nosotros Determinar las distribuciones de probabilidad sobre las funciones mismas . ¿Cómo demonios es eso posible? Las funciones son asignaciones que pueden relacionar un número infinito de entradas con un número infinito de salidas. Si no tenemos estos vectores de parámetros finitos para determinar funciones, ¿qué más podríamos hacer?
Bueno, utilizamos una herramienta matemática llamada Proceso Gaussiano (confuso, la técnica ML y este objeto matemático tienen el mismo nombre), que nos permite hacer referencia a funciones mediante un conjunto arbitrario y finito de pares de entrada-salida. Formalmente, especificamos una distribución sobre las funciones escribiendo:
[matemáticas] f (x) = GP (m (x), \ kappa (x, x ‘)) [/ matemáticas]
donde [math] m (x) [/ math] y [math] \ kappa (x, x ‘) [/ math] son algunas funciones proporcionadas, llamadas la función media y la función del núcleo. Para entender esto, imagine que podría probar una gran cantidad de funciones de esto. Llamémoslos [math] f_1 (), f_2 (), \ cdots, f_N () [/ math]. Si tuviera que evaluar estas funciones [matemáticas] N [/ matemáticas] en una entrada particular [matemáticas] x ^ * [/ matemáticas], entonces, en promedio, las salidas de funciones serían [matemáticas] m (x ^ *) [/ mates]. De manera similar, si evaluó estas funciones en dos entradas [matemática] x_1 [/ matemática] y [matemática] x_2 [/ matemática], la covarianza de las salidas sería [matemática] \ kappa (x_1, x_2) [/ matemática].
Al igual que puede muestrear valores de la distribución de una variable aleatoria, puede muestrear funciones de un proceso gaussiano. Por ejemplo, si especificó [math] m (x) = 0 [/ math] y [math] \ kappa (x, x ‘) [/ math] como Matern Kernel (la fórmula es desordenada), las funciones de muestreo pueden verse como esta:
(fuente – scikit learn)
Con esta idea, un Proceso Gaussiano (refiriéndose al algoritmo ML aquí), implica especificar una distribución previa sobre nuestras funciones (llámelo [math] GP _ {\ textrm {prior}} [/ math]). Luego, usando algo de magia **, condicionamos nuestros datos y determinamos una distribución posterior sobre las funciones (llámela [math] GP _ {\ textrm {post}} [/ math]).
En la implementación real, parametrizamos [math] \ kappa (x, x ‘) [/ math] *** con un vector y elegimos un vector específico que maximice el acuerdo entre nuestros datos y la GP [math] GP _ {\ textrm { post}} [/ math]. El verdadero arte de esta técnica se reduce a seleccionar la función de núcleo adecuada. La intuición rectora es que un proceso gaussiano producirá salidas similares para entradas similares al núcleo. Depende del artista determinar qué forma debe tomar la similitud del núcleo.
Al final, manejamos una GP optimizada [matemática] _ {\ textrm {post}} [/ matemática]. Se puede evaluar en cualquier entrada dada y no solo obtenemos un valor de salida, sino más bien una distribución sobre las salidas.
Ahora, usemos un GP . Específicamente, me enfocaré en cómo pensaría en un problema, no en la implementación (mucha documentación sólida de scikit-learn para eso).
Voy a usar 6 meses de mi peso:
¿Ves un patrón? Yo tampoco, pero pensemos: ¿qué pasa con mi función de “tiempo” que dicta mi peso? Si me peso dos veces, es probable que esos pesos sean similares si …
- esos momentos en el tiempo están cerca.
- esos momentos están en la misma parte de algún ciclo (mismo día de la semana, mes, alguna otra periodicidad).
Así que construyamos estos en nuestra métrica del núcleo.
Además de eso, la función de tiempo probablemente no sea el único factor de conducción. Si entendemos que hay otras influencias fuera de nuestro conjunto de datos, no deberíamos esperar tener un poder explicativo completo. Por lo tanto, anticipamos algo de ‘ruido’; también podemos incorporarlo en nuestro núcleo.
Por último, es probable que existan algunas irregularidades de tendencia a largo plazo. Tal vez tengo más de espagueti durante 2 semanas. Tal vez me enfermé por unos días y perdí algunas libras. Nada en la función de tiempo podría predecir esto, pero nuestras distribuciones sobre las funciones deberían ser flexibles para adaptarse a la muestra . La flexibilidad a este respecto alivia la presión sobre otros parámetros (por ejemplo, la periodicidad que mencioné) y evita que las influencias se propaguen fuera de la muestra. Para hacer eso, construimos en el Kernel Matern, como viste antes.
Con todo eso, probémoslo. Ocultaré el último 25% de nuestra muestra de nuestro procedimiento de calibración y los predeciré. Trazaré predicciones junto con uno y dos intervalos de confianza de desviación estándar. Obtenemos:
Ahora el patrón es claro. Mi peso tiene una periodicidad más o menos semanal y tiende a evolucionar durante algunas semanas, como lo permitiría una función inducida por Matern. Fuera de la muestra, obtenemos predicciones decentes porque se basa en la periodicidad y no se extrapola de las tendencias espurias. El resultado distributivo parece (*) bastante bien calibrado.
Entonces, en general , me encantan los médicos de cabecera: son sumamente inteligentes, flexibles y satisfactorios. Ciertamente no son herramientas universales (no escalan bien), pero son excelentes para insertar sus intuiciones en problemas más pequeños.
* Si dijo algo no paramétrico, tiene razón.
** La matemática aquí en realidad depende en gran medida de las buenas propiedades de la distribución gaussiana, que permite soluciones analíticas para integrales que de otra manera serían intratables. ¡Gracias Gauss!
*** La función media no está parametrizada porque a menudo la establecemos en una función constante de valor promedio [math] y [/ math].
(*) No tenemos suficientes datos de muestra para saber realmente si están bien calibrados. Entonces estoy siendo optimista aquí.