web-dev-qa-db-fra.com

importance de l'APC ou de la SVD dans l'apprentissage automatique

Pendant tout ce temps (spécialement dans le concours Netflix), je tombe toujours sur ce blog (ou forum de classement) où ils mentionnent comment l'application d'une simple étape SVD sur les données les a aidés à réduire la rareté des données ou en général à améliorer les performances de leur algorithme dans main. J'essaie de penser (depuis longtemps) mais je n'arrive pas à deviner pourquoi. En général, les données que je reçois sont très bruyantes (ce qui est aussi la partie amusante des bigdata) et je connais des éléments de mise à l'échelle des fonctionnalités de base comme les éléments de transformation de journal, la normalisation moyenne. Mais comment quelque chose comme SVD peut-il aider? Disons donc que j'ai une énorme matrice de films de notation des utilisateurs ... puis dans cette matrice, j'implémente une version du système de recommandation (par exemple, le filtrage collaboratif):

1) Without SVD
2) With SVD

comment ça aide merci

35
Mohit

SVD n'est pas utilisé pour normaliser les données, mais pour se débarrasser des données redondantes, c'est-à-dire pour réduire la dimensionnalité. Par exemple, si vous avez deux variables, l'une est l'indice d'humidité et une autre est la probabilité de pluie, alors leur corrélation est si élevée que la seconde ne fournit aucune information supplémentaire utile pour une tâche de classification ou de régression. Les valeurs propres dans SVD vous aident à déterminer quelles variables sont les plus informatives et celles dont vous pouvez vous passer.

La façon dont cela fonctionne est simple. Vous effectuez SVD sur vos données d'entraînement (appelez-la matrice A), pour obtenir U, S et V *. Ensuite, mettez à zéro toutes les valeurs de S inférieures à un certain seuil arbitraire (par exemple 0,1), appelez cette nouvelle matrice S '. Ensuite, obtenez A '= US'V * et utilisez A' comme nouvelles données d'entraînement. Certaines de vos fonctionnalités sont désormais définies sur zéro et peuvent être supprimées, parfois sans aucune perte de performances (en fonction de vos données et du seuil choisi). C'est ce qu'on appelle k - SVD tronqué.

SVD ne vous aide pas en cas de rareté, mais ne vous aide que lorsque les fonctionnalités sont redondantes. Deux fonctionnalités peuvent être à la fois clairsemées et informatives (pertinentes) pour une tâche de prédiction, vous ne pouvez donc pas supprimer l'une ou l'autre.

En utilisant SVD, vous passez de n aux fonctionnalités k , où chacun sera une combinaison linéaire du n d'origine. C'est une étape de réduction de la dimensionnalité, tout comme la sélection des fonctionnalités. Cependant, lorsque des entités redondantes sont présentes, un algorithme de sélection d'entités peut conduire à de meilleures performances de classification que SVD en fonction de votre ensemble de données (par exemple, la sélection d'entités entropie maximale). Weka est livré avec un tas d'entre eux.

Voir: http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Dimensionality_Reduction/Singular_Value_Decomposition

https://stats.stackexchange.com/questions/33142/what-happens-when-you-apply-svd-to-a-collaborative-filtering-problem-what-is-th

51
Diego

La décomposition en valeurs singulières est souvent utilisée pour approximer une matrice X par une matrice de bas rang X_lr:

  1. Calculez le SVD X = U D V^T.
  2. Former la matrice D' en conservant les k plus grandes valeurs singulières et en mettant les autres à zéro.
  3. Former la matrice X_lr par X_lr = U D' V^T.

La matrice X_lr est alors la meilleure approximation du rang k de la matrice X, pour la norme Frobenius (l'équivalent de la l2- norme pour les matrices). Il est efficace sur le plan du calcul d'utiliser cette représentation, car si votre matrice X est n par n et k << n, vous pouvez stocker son approximation de bas rang avec seulement (2n + 1)k coefficients (en stockant U, D' et V).

Cela a souvent été utilisé dans les problèmes d'achèvement de matrice (comme le filtrage collaboratif) car la vraie matrice des évaluations des utilisateurs est supposée être de bas rang (ou bien approximée par une matrice de bas rang). Vous souhaitez donc récupérer la vraie matrice en calculant la meilleure approximation de bas rang de votre matrice de données. Cependant, il existe maintenant de meilleurs moyens de récupérer des matrices de bas rang à partir d'observations bruyantes et manquantes, à savoir la minimisation des normes nucléaires. Voir par exemple l'article Le pouvoir de la relaxation convexe: achèvement de la matrice quasi-optimale par E. Candes et T. Tao.

(Remarque: les algorithmes dérivés de cette technique stockent également la SVD de la matrice estimée, mais elle est calculée différemment).

16
Edouard

PCA ou SVD, lorsqu'ils sont utilisés pour la réduction de dimensionnalité, réduisent le nombre d'entrées. Ceci, en plus d'économiser le coût de calcul de l'apprentissage et/ou de la prévision, peut parfois produire des modèles plus robustes qui ne sont pas optimaux au sens statistique, mais ont de meilleures performances dans des conditions bruyantes.

Mathématiquement, les modèles plus simples ont moins de variance, c'est-à-dire qu'ils sont moins sujets au sur-ajustement. Le sous-ajustement, bien sûr, peut également être un problème. Ceci est connu sous le nom de dilemme de biais-variance. Ou, comme le dit clairement Einstein: les choses devraient être aussi simples que possible, mais pas plus simples.

2
Lehtinen