machine-learning - para - machine learning traduccion
importancia de la PCA o SVD en el aprendizaje automático (3)
La Descomposición del Valor Singular a menudo se usa para aproximar una matriz X
por una matriz de rango bajo X_lr
:
- Calcule el SVD
X = UDV^T
- Forme la matriz
D''
manteniendo losk
valores individuales más grandes y poniendo los otros a cero. - Forme la matriz
X_lr
porX_lr = UD'' V^T
La matriz X_lr
es entonces la mejor aproximación del rango k
de la matriz X
, para la norma de Frobenius (el equivalente de la l2
-norm para las matrices). Es computacionalmente eficiente usar esta representación, porque si su matriz X
es n
entre k << n
, puede almacenar su aproximación de bajo rango con solo (2n + 1)k
coeficientes (2n + 1)k
(almacenando U
, D''
y V
) .
Esto a menudo se usaba en problemas de finalización de la matriz (como el filtrado colaborativo) porque se supone que la verdadera matriz de calificaciones de los usuarios es de bajo rango (o bien aproximada por una matriz de bajo rango). Entonces, desea recuperar la matriz verdadera calculando la mejor aproximación de bajo rango de su matriz de datos. Sin embargo, ahora hay mejores formas de recuperar matrices de bajo rango a partir de observaciones ruidosas y faltantes, a saber, la minimización de la norma nuclear. Véase, por ejemplo, el artículo El poder de la relajación convexa: Terminación de la matriz casi óptima por E. Candes y T. Tao.
(Nota: los algoritmos derivados de esta técnica también almacenan la SVD de la matriz estimada, pero se calcula de manera diferente).
Todo este tiempo (especialmente en el concurso de Netflix), siempre encuentro este blog (o foro de tabla de clasificación) donde mencionan cómo al aplicar un simple paso SVD sobre los datos, les ayudó a reducir la escasez de datos o, en general, mejoró el rendimiento de su algoritmo en mano. Estoy tratando de pensar (desde hace mucho tiempo) pero no puedo adivinar por qué es así. En general, los datos en mano que obtengo son muy ruidosos (que también es la parte divertida de los bigdata) y luego conozco algunas funciones básicas de escalado como logaritmo de transformación, normalización media. Pero, ¿cómo algo como SVD ayuda? Entonces digamos que tengo una gran matriz de películas de clasificación de usuarios ... y luego en esta matriz, implemento una versión del sistema de recomendación (por ejemplo, filtrado colaborativo):
1) Without SVD
2) With SVD
¿Cómo ayuda? Gracias
PCA o SVD, cuando se usan para la reducción de dimensionalidad, reducen el número de entradas. Esto, además de ahorrar el costo computacional de aprendizaje y / o predicción, a veces puede producir modelos más robustos que no son óptimos en sentido estadístico, pero tienen un mejor rendimiento en condiciones ruidosas.
Matemáticamente, los modelos más simples tienen menos varianza, es decir, son menos propensos a sobreajuste. Underfitting, por supuesto, puede ser un problema también. Esto se conoce como dilema de varianza-sesgo. O, como dijo Einstein en palabras sencillas: Las cosas deberían hacerse lo más simples posible, pero no más simples.
SVD no se utiliza para normalizar los datos, sino para eliminar los datos redundantes, es decir, para reducir la dimensionalidad. Por ejemplo, si tiene dos variables, una es índice de humedad y otra es probabilidad de lluvia, entonces su correlación es tan alta, que la segunda no contribuye con ninguna información adicional útil para una tarea de clasificación o regresión. Los valores propios en SVD lo ayudan a determinar qué variables son más informativas y cuáles puede prescindir.
La forma en que funciona es simple. Realiza SVD sobre sus datos de entrenamiento (llámelo matriz A), para obtener U, S y V *. Luego ajuste a cero todos los valores de S menores que un cierto umbral arbitrario (por ejemplo, 0.1), llame a esta nueva matriz S ''. Luego obtenga A ''= US''V * y use A'' como sus nuevos datos de entrenamiento. Algunas de sus funciones ahora están configuradas en cero y se pueden eliminar, a veces sin penalización en el rendimiento (según sus datos y el umbral elegido). Esto se llama k -vinculada SVD.
Sin embargo, SVD no te ayuda con la escasez, solo te ayuda cuando las funciones son redundantes. Dos características pueden ser dispersas e informativas (relevantes) para una tarea de predicción, por lo que no puede eliminar ninguna de ellas.
Usando SVD, se pasa de n características a k características, donde cada una será una combinación lineal del n
original. Es un paso de reducción de dimensionalidad, al igual que la selección de características. Sin embargo, cuando hay funciones redundantes, un algoritmo de selección de características puede conducir a un mejor rendimiento de clasificación que SVD, dependiendo de su conjunto de datos (por ejemplo, selección de características de entropía máxima). Weka viene con un montón de ellos.