regresión del proceso gaussiano para grandes conjuntos de datos

10

He estado aprendiendo sobre la regresión del proceso gaussiano a partir de videos en línea y notas de conferencias, entiendo que si tenemos un conjunto de datos con puntos, asumimos que los datos se muestrean a partir de un gaussiano multivariado dimensional. Entonces, mi pregunta es en el caso en que es 10 de millones. ¿Sigue funcionando la regresión del proceso gaussiano? ¿La matriz del núcleo no será enorme y hará que el proceso sea completamente ineficiente? Si es así, ¿existen técnicas para lidiar con esto, como el muestreo del conjunto de datos varias veces? ¿Cuáles son algunos buenos métodos para tratar estos casos? nnn

Iltl
fuente
3
¿Por qué quiere utilizar el proceso gaussiano y no algo destinado a manejar grandes datos?
Tim

Respuestas:

7

Hay una amplia gama de enfoques para escalar GPs a grandes conjuntos de datos, por ejemplo:

Enfoques de rango bajo : estos se esfuerzan por crear una aproximación de rango bajo a la matriz de covarianza. Quizás el más famoso es el método de Nystroms que proyecta los datos en un subconjunto de puntos. Partiendo de ese FITC y PITC, se desarrollaron pseudo puntos en lugar de puntos observados. Estos se incluyen, por ejemplo, en la biblioteca GPy python. Otros enfoques incluyen características aleatorias de Fourier.

Matrices H : utilizan la estructura jerárquica de la matriz de covarianza y aplican aproximaciones de bajo rango a cada submatriz de estructuras. Esto se implementa con menos frecuencia en las bibliotecas populares.

Métodos de Kronecker : utilizan productos de matrices de covarianza de Kronecker para acelerar el cuello de botella computacional sobre la cabeza.

Máquinas de comité bayesiano : esto implica dividir sus datos en subconjuntos y modelar cada uno con un GP. Luego, puede combinar las predicciones utilizando la combinación bayesiana óptima de las salidas. Esto es bastante fácil de implementar usted mismo y es rápido, pero rompe el núcleo si le importa: el documento de Mark Deisenroth debería ser lo suficientemente fácil de seguir aquí .

j__
fuente
5

Por lo general, lo que puede hacer es capacitar procesos gaussianos en submuestras de su conjunto de datos (ensacado). El ensacado se implementa en sk learn y se puede usar fácilmente. Ver por ejemplo la documentación .

Llamando a la cantidad de observaciones, la cantidad de bolsas que usa y la cantidad de puntos por bolsa, esto permite cambiar el tiempo de entrenamiento de una a una . Por lo tanto, con bolsas pequeñas pero utilizando todos los datos, puede lograr un tiempo de entrenamiento mucho menor. Desafortunadamente, esto a menudo reduce el rendimiento del modelo.n b a g s n p O ( n 3 ) O ( n b a g s n 3 p )nnbagsnpO(n3)O(nbagsnp3)

Además de las técnicas de embolsado, hay algunas investigaciones activas sobre cómo hacer escalables las regresiones del proceso gaussiano. El artículo Interpolación de kernel para procesos gaussianos estructurados escalables (KISS-GP) propone reducir el tiempo de entrenamiento a un y viene con un código matlab.O(n)

RUser4512
fuente
5

Tu preguntaste:

en el caso donde 𝑛 es 10 de millones, ¿sigue funcionando la regresión del proceso gaussiano?

No en el sentido estándar de construir e invertir una matriz grande. Tiene dos opciones: 1) elegir un modelo diferente o 2) hacer una aproximación.

1) Algunos modelos basados ​​en GP se pueden escalar a conjuntos de datos muy grandes, como la máquina del comité bayesiano vinculada en la respuesta anterior. Sin embargo, este enfoque me parece bastante insatisfactorio: hay buenas razones para elegir un modelo GP, y si vamos a cambiar a un modelo más computable, es posible que no conservemos las propiedades del modelo original. Las variaciones predictivas del BCM dependen en gran medida de la división de datos, por ejemplo.

2) El enfoque 'clásico' de aproximación en GP es aproximar la matriz del núcleo. Aquí hay una buena revisión de este tipo de métodos: http://www.jmlr.org/papers/volume6/quinonero-candela05a/quinonero-candela05a.pdf . De hecho, generalmente podemos ver estas aproximaciones matriciales como aproximaciones del modelo, y agruparlas con la máquina del comité bayesiano: son cambios en el modelo y puede ser difícil entender cuándo esos cambios pueden ser patológicos. Aquí hay una súper revisión: https://papers.nips.cc/paper/6477-understanding-probabilistic-sparse-gaussian-process-approximations.pdf

La forma en que abogo por hacer aproximaciones para GP grandes es evitar aproximar la matriz del núcleo o el modelo, y aproximar la distribución posterior usando inferencia variacional. Muchos de los cálculos parecen una aproximación matricial de 'rango bajo', pero hay una propiedad muy deseable: cuanto más cómputo use (más "rangos"), más cercana será la aproximación a la parte posterior verdadera, medida por el KL divergencia.

Estos artículos son un buen punto de partida: http://proceedings.mlr.press/v5/titsias09a/titsias09a.pdf https://arxiv.org/pdf/1309.6835

Escribí un artículo más largo sobre el mismo argumento aquí: https://www.prowler.io/blog/sparse-gps-approximate-the-posterior-not-the-model

En la práctica, la aproximación variacional funciona realmente bien en muchos casos. Lo he usado ampliamente en aplicaciones reales. Y más recientemente ha habido una excelente teoría para respaldar por qué debería funcionar ( https://arxiv.org/abs/1903.03571 ).

Un complemento final: la inferencia variacional en GP se implementa en gpflow ( https://github.com/GPflow/GPflow )

James Hensman
fuente
1
Sólo para que conste si alguien viene a través de esto y no sabe, James sería una de las autoridades en el campo junto con Mike Osborne, Neill Lawrence y así sucesivamente - una especie de fresco que está respondiendo Q & A en SE
j__