¿Cómo puedo ejecutar una regresión lineal en paralelo?

Hay un par de formas de hacerlo, y generalmente dependerá de las dimensiones de sus datos y su entorno. Existen varios enfoques de factorización matricial que funcionan bien en multiprocesadores de memoria compartida, pero pueden no ser viables para algo como MapReduce.

Un enfoque común es paralelizar la multiplicación de la matriz necesaria para obtener [matemáticas] X ^ {T} X [/ matemáticas] y [matemáticas] X ^ {T} Y [/ matemáticas]. Sin embargo, mediante una serie de descomposiciones QR paralelas, es posible resolver el problema de mínimos cuadrados. La siguiente es una referencia útil: Factorizaciones QR paralelas y secuenciales que evitan la comunicación.

Multiplicación de matriz paralela

Se necesitan dos matrices, [matemática] X ^ {T} X [/ matemática] y [matemática] X ^ {T} Y [/ matemática], cada una de las cuales se puede paralelizar mediante la distribución de bloques de filas, observaciones, en varios procesadores . Cada procesador calcula estas matrices en paralelo, y el resultado final se puede lograr agregando cada uno de estos subproblemas. El problema se resuelve en una sola máquina. La simetría de la [matemática] X ^ {T} X [/ matemática] hace que la descomposición de Cholesky sea particularmente atractiva. Esta es una implementación bastante común en una configuración de MapReduce.

Descomposiciones QR en Paralelo

Con una descomposición QR, podemos descomponer una matriz [matemática] X = QR [/ matemática]. Sustituyendo la factorización QR en la ecuación de mínimos cuadrados original se obtiene [matemática] R \ beta = Q ^ {T} Y [/ matemática]. Al dividir [math] X [/ math] en varias máquinas, podemos calcular la descomposición de QR en cada uno de estos subproblemas o problemas “locales”. Se puede ejecutar una descomposición QR posterior agregando los términos R de cada uno de los problemas “locales”, lo que da la matriz final [matemática] R [/ matemática]. La matriz [math] Q [/ math] se puede obtener manipulando las dos matrices [math] Q [/ math] de los problemas “local” e “intermedio”.

La solución a un problema de regresión lineal es la solución del siguiente sistema lineal de mínimos cuadrados:

[mates]
\ hat \ beta = (X ^ TX) ^ {- 1} X ^ T y
[/mates]

O reescrito en forma Ax = b:
[mates]
(X ^ TX) \ hat \ beta = X ^ T y
[/mates]

Ha habido un trabajo reciente sobre el uso de enfoques iterativos en las GPU para resolver sistemas de ecuaciones lineales. Los problemas de regresión lineal suelen ser densos y pueden ser adecuados para las técnicas de GPU.
Algoritmo de gradiente conjugado precondicionado paralelo en GPU

Por otro lado, hay solucionadores paralelos para sistemas dispersos:
HSL para IPOPT

Los cálculos involucrados en la regresión lineal pueden expresarse en términos de matrices, y una vez que vea cuáles son, no es demasiado difícil encontrar versiones paralelas.

Si está trabajando con conjuntos de datos muy grandes, podría (o no) pagar enviar submuestras a procesadores / subprocesos de trabajo, ejecutar regresiones separadas en paralelo y luego promediar los coeficientes obtenidos.

More Interesting

Cómo obtener un codificador automático de ruido para aprender una representación demasiado completa

¿Qué tan buena es la Universidad de Edimburgo, en comparación con la CMU para estudios de posgrado e investigación en aprendizaje automático y neurociencia computacional?

¿Qué es la enseñanza profunda?

¿Dónde puedo encontrar algunas empresas que trabajen con técnicas de aprendizaje automático y minería de datos, en el campo biomédico?

El entrenamiento de redes neuronales profundas utilizando la propagación inversa tiene el problema de un gradiente de error que desaparece y que establece un límite sobre cuántas capas se pueden entrenar efectivamente, entonces, ¿por qué no usar un algoritmo genético para entrenar redes profundas, eliminando la propagación de errores?

¿Por qué se requieren conocimientos de aprendizaje automático para un periodista de datos? ¿Por qué la exploración y visualización de datos por sí sola no es suficiente para el periodismo de datos?

Como persona con una maestría en química y un doctorado en ingeniería eléctrica y nanotecnología, a los 26 años sin experiencia en ciencias de la computación, ¿es demasiado tarde o demasiado difícil enseñarme a mí mismo el aprendizaje automático?

¿Cuál es la diferencia entre almacenar datos en HDF5 frente al formato TFRecord de TensorFlow?

¿Cómo se relaciona el error cuadrático medio (RMSE) y la clasificación?

¿Cuál es la diferencia entre la regularización y el sesgo inductivo en el aprendizaje automático?

¿Scikit-learn admite paralelismo, es decir, se puede usar en un grupo de máquinas que ejecutan tareas en paralelo?

¿Cómo combinaría Apache Spark y CUDA para implementar un marco de aprendizaje profundo?

Tengo una entrevista telefónica técnica para una pasantía la próxima semana con el aprendizaje automático y el equipo de fraude de Uber. ¿Debo esperar DS y algoritmos generales o algo más?

¿SVM siempre supera a J48? Tengo un caso de uso donde J48 funciona mejor. ¿Significa que algo está mal con mi enfoque / implementación?

¿Sería posible entrenar una computadora para reconocer con precisión a escritores individuales en Quora analizando muestras escritas?