J'ai deux implémentations différentes de ridge
MATLAB. L'un est tout simplement
(comme on le voit sur la page de régression de crête de Wikipedia ), avec étant la matrice d'identité des colonnes de taille () Colonnes(), et
J'appelle simplement la "crête" de Matlab avec
x = ridge(A, b, lambda)
Mon problème est que les deux retournent des résultats différents. (1) renvoie les résultats que je veux (je le sais en comparant les résultats avec d'autres personnes) mais pourquoi (2) ne renvoie pas les mêmes résultats?
Ma matrice est rare, il est rempli de 1% 1 et 99% 0. Certaines colonnes ne contiennent presque pas de 1. La plus grande différence semble être que le coefficient pour les colonnes avec très peu de 1 est très proche de 0 dans (1), mais peut être assez loin de 0 dans (2)
Quelqu'un a-t-il une idée de pourquoi c'est différent et comment je peux modifier l'appel dans (2) pour donner les mêmes résultats que (1)?
ridge
. Vous ne devriez rien faire pour.
ridge
(selon la documentation MATLAB) indique que (comme c'est la norme): Par défaut, b est calculé après centrage et mise à l'échelle des prédicteurs pour avoir une moyenne 0 et écart-type 1. Le modèle n'inclut pas de terme constant et X ne doit pas contenir de colonne de 1. .