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

Tout ce temps (spécialement dans Netflix contest), je tombe toujours sur ce blog (ou forum de classement) où ils mentionnent comment en appliquant une étape SVD simple sur les données les a aidés à réduire la sparsity dans les données ou en général a amélioré la performance de leur algorithme en main. J'essaie de penser (depuis longtemps) mais je ne suis pas capable de deviner pourquoi. En général, les données en main que je reçois est très bruyant (qui est également la partie amusante de bigdata) et puis je ne sais pas une certaine échelle caractéristique de base des trucs comme la transformation logarithmique , la normalisation moyenne. Mais en quoi quelque chose comme SVD aide-t-il? Disons que j'ai une énorme matrice de films d'évaluation des utilisateurs..et puis dans cette matrice, je mets en œuvre une certaine version du système de recommandation (disons filtrage collaboratif):

1) Without SVD
2) With SVD

comment ça aide Merci

31
demandé sur Fraz 2012-03-06 23:00:44

3 réponses

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, 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 contribue pas avec toute information supplémentaire utile pour une tâche de classification ou de régression. Les valeurs propres dans SVD vous aident à déterminer les variables les plus informatives et celles dont vous pouvez vous passer.

la façon dont il fonctionne est simple. Vous exécutez SVD sur vos données de formation (appelez-le matrice A), pour obtenir U, S et V*. Puis 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 un '= US'V* et utilisez un' comme nouvelle donnée de formation. Certaines de vos fonctionnalités sont maintenant définies à zéro et peuvent être supprimées, parfois sans aucune pénalité de performance (en fonction de vos données et du seuil choisi). C'est ce qu'on appelle k - SVD tronquée.

SVD ne vous aide pas avec sparsity cependant, ne vous aide que lorsque les fonctionnalités sont redondantes. Deux caractéristiques peuvent être à la fois clairsemées et informatives (pertinentes) pour une tâche de prédiction, de sorte que vous ne pouvez pas supprimer l'un ou l'autre.

en utilisant SVD, vous passez de n caractéristiques à k caractéristiques, où chacun sera un linéaire combinaison de l'original n . C'est une étape de réduction dimensionnelle, tout comme la sélection de fonctionnalités. Lorsque des fonctionnalités redondantes sont présentes, cependant, un algorithme de sélection de fonctionnalités peut conduire à une meilleure performance de classification que SVD en fonction de votre ensemble de données (par exemple, sélection de fonctionnalités entropie maximale). Weka vient 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

46
répondu Diego 2017-04-13 12:44:14

la décomposition de la valeur singulière est souvent utilisée pour approximer une matrice X par une matrice de rang bas X_lr :

  1. calculer le SVD X = U D V^T .
  2. forme la matrice D' en maintenant les plus grandes valeurs du singulier k et en mettant les autres à zéro.
  3. forme la matrice X_lr par X_lr = U D' V^T .

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

ce terme a souvent été utilisé dans les problèmes d'achèvement de matrice (comme le filtrage collaboratif) parce que la véritable matrice des cotes des utilisateurs est supposée être de rang inférieur (ou bien approximée par une matrice de rang inférieur). Ainsi, vous souhaitez récupérer la matrice vraie en calculant la meilleure approximation de rang bas de votre matrice de données. Cependant, il existe maintenant de meilleures façons de récupérer les matrices de rang inférieur à partir d'observations bruyantes et manquantes, notamment la minimisation de la norme nucléaire. Voir par exemple le papier le pouvoir de relaxation convexe: quasi-optimale de la matrice d'achèvement par E. Candes et T. Tao.

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

15
répondu Edouard 2012-03-07 15:36:34

l'APC ou SVD, lorsqu'il est utilisé pour la réduction de dimensionnalité, de réduire le nombre d'entrées. Cela, en plus d'économiser le coût computationnel de l'apprentissage et / ou de la prévision, peut parfois produire des modèles plus robustes qui ne sont pas optimales 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 à la surréglementation. La sous-alimentation, bien sûr, peut aussi être un problème. C'est connu sous le nom de dilemme de biais-variance. Ou, comme L'a dit en termes clairs Einstein: les choses doivent être aussi simples que possible, mais pas plus simple.

2
répondu Lehtinen 2016-12-16 12:05:26