PCA es realmente solo SVD con resta media. Con datos binarios muy escasos (la norma en aplicaciones realmente grandes) esto hace muy poca diferencia.
La SVD a escala se realiza mejor (en mi humilde opinión) mediante proyección estocástica. Mahout tiene una implementación de esto. Las virtudes son que no se requiere ningún tipo de iteración de descenso de gradiente abierto. Obtiene los valores y vectores singulares superiores después de un número fijo y pequeño de pasos de reducción de mapa.
Alternar mínimos cuadrados (ALS) es muy competitivo para proyecciones que no son realmente una descomposición de valores singulares.
- ¿Por qué a la gente le gusta la red profunda con menos parámetros de aprendizaje incluso cuando el rendimiento de la prueba es peor que otros?
- ¿Qué papel juega la función logística en el algoritmo de regresión logística en el aprendizaje automático?
- ¿Cuál es el algoritmo de búsqueda de patrones (o reconocimiento de patrones) más avanzado? ¿Como funciona?
- ¿Cómo se calcula la pérdida WARP de la estadística de orden K para aprender a clasificar las recomendaciones?
- ¿Cuál es la mejor hoja de ruta para aprender el aprendizaje automático usando Python?
En mi opinión, la proyección estocástica es un algoritmo más fresco que tiene ventajas de escalabilidad potenciales sobre la ELA, pero en la práctica a escalas actuales, dudo que eso haga mucha diferencia. Tanto SVD como ALS se basan en un error al cuadrado que es inapropiado para los datos de conteo por razones bien conocidas.
La asignación de Dirichlet latente (LDA) evita algunos de los problemas con supuestos de error al cuadrado a un costo computacional tremendo. La implementación de Vowpal Wabbit de LDA tiene fama de ser muy rápida y puede ser competitiva por lo que está haciendo.
Las implementaciones de aprendizaje más profundas que involucran el aprendizaje de componentes no lineales suelen ser aún más costosas y solo hay algunos ejemplos de su uso a escala. Google informó algunos resultados sobre aprendizaje profundo en el reciente ML Workshop, por ejemplo.
Una excepción al alto costo general de las descomposiciones no lineales es la codificación de distancia de clúster. En este enfoque, utiliza algo como k-means y codifica sus datos como las distancias (o similitudes) a los pocos grupos más cercanos. Esto tiene muchos de los beneficios de los sistemas de codificación más conocidos, pero es mucho más fácil de implementar. En particular, el próximo sistema k-means para Mahout permitirá una agrupación de k-means a gran escala con valores muy grandes de k.