0% ont trouvé ce document utile (0 vote)
12 vues2 pages

Factorisation matricielle ALS en MATLAB

Transféré par

junromjiatsa
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats ODT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues2 pages

Factorisation matricielle ALS en MATLAB

Transféré par

junromjiatsa
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats ODT, PDF, TXT ou lisez en ligne sur Scribd

Voici la fonction MATLAB pour la factorisation matricielle par optimisation alternée (ALS) sans

utiliser de fonctions prédéfinies :

```
function [U, V] = als_factorization(R, k, max_iter)
[m, n] = size(R);
U = rand(m, k);
V = rand(n, k);

for i = 1:max_iter
% Fixer V et trouver U
for j = 1:m
V_transpose = V';
R_j = R(j, :)';
U(j, :) = (V_transpose * V) \ (V_transpose * R_j);
end

% Fixer U et trouver V
for j = 1:n
U_transpose = U';
R_j = R(:, j)’;
V(j, :) = (U_transpose * U) \ (U_transpose * R_j);
end
end
end
```

Cette fonction prend en entrée :

- `R` : la matrice originale


- `k` : le rang de factorisation
- `max_iter` : le nombre d'itérations maximum

Et retourne :

- `U` : la matrice de facteurs gauche


- `V` : la matrice de facteurs droite

Complexité :

- la complexité de la transpose predefini étant de O(nxm)


celle ci sera de O( max[(nxm)*n,(nxm)*m]*max_iter)

1. *Initialisation* : Les matrices U et V sont initialisées avec des valeurs aléatoires.


2. *Itération* : L'algorithme itère jusqu'à atteindre le nombre maximum d'itérations (max_iter).
3. *Fixer V et trouver U* : Pour chaque ligne j de R, on résout l'équation suivante pour trouver la
ligne correspondante de U :
- U(j, :) = (V^T * V) \ (V^T * R_j)
où V^T est la transposée de V, et R_j est la ligne j de R.
4. *Fixer U et trouver V* : Pour chaque colonne j de R, on résout l'équation suivante pour trouver la
colonne correspondante de V :
- V(j, :) = (U^T * U) \ (U^T * R_j)
où U^T est la transposée de U, et R_j est la colonne j de R.
5. *Répéter les étapes 3 et 4* jusqu'à atteindre le nombre maximum d'itérations.

*Principe* :

L'algorithme ALS fonctionne en alternant entre deux étapes :

- Fixer V et trouver U : on considère V comme fixe et on trouve la meilleure approximation de U


pour minimiser l'erreur entre R et U * V^T.
- Fixer U et trouver V : on considère U comme fixe et on trouve la meilleure approximation de V
pour minimiser l'erreur entre R et U * V^T.

En répétant ces deux étapes, l'algorithme converge vers une solution optimale pour U et V.

*Avantages* :

- L'algorithme ALS est simple à implémenter.


- Il est rapide pour les matrices de petite taille.

*Inconvénients* :

- L'algorithme ALS peut ne pas converger pour toutes les matrices.


- Il peut être sensible aux conditions initiales de U et V.

Vous aimerez peut-être aussi