[PYTHON] PRML: Chapitre 7 Machine à noyau avec solution clairsemée

Aperçu

PRML Chapitre 7 Régression RVM (machine à vecteurs de pertinence) implémentée en python.

Cahier Jupyter résumant le code et les résultats expérimentaux.

Modèle RVM

Distribution de probabilité conditionnelle de la variable cible de valeur réelle $ t $ pour un vecteur d'entrée donné $ \ mathbf {x} $

p(t|\mathbf{x}, \mathbf{w}, \beta) = \mathcal{N}(t|y(\mathbf{x}), \beta^{-1})

Ici, $ \ beta = \ sigma ^ {-2} $ est défini par le paramètre de précision du bruit (l'inverse de la dispersion du bruit), et la valeur moyenne est définie par le modèle linéaire suivant.

y(\mathbf{x})=\sum_{i=1}^{M}w_{i}\phi_{i}(\mathbf{x})=\mathbf{w}^{T}\mathbf{\phi}(\mathbf{x})

Une fonction de noyau avec des données d'apprentissage individuelles comme argument est utilisée comme fonction de base.

y(\mathbf{x})=\sum_{n=1}^{N}w_{n}k(\mathbf{x}, \mathbf{x}_{n})+b

Le nombre total de paramètres est $ M = N + 1 $. La fonction de vraisemblance est donnée par l'équation suivante.

p(\mathbf{t}| \mathbf{X}, \mathbf{w}, \beta) = \prod_{n=1}^{N} p(t_{n}|\mathbf{x}_{n}, \mathbf{w}, \beta)

Une distribution a priori gaussienne avec une moyenne de 0 est utilisée comme distribution a priori du vecteur de paramètres $ \ mathbf {w} $. Dans RVM, un super paramètre différent $ \ alpha {i} $ est utilisé pour chaque paramètre de poids $ w {i} $. __ Autrement dit, la distribution antérieure des pondérations est la suivante.

p(\mathbf{w}|\mathbf{\alpha}) = \prod_{i=1}^{M} \mathcal{N} (w_{i}|0, \alpha_{i}^{-1})

Où $ \ alpha_ {i} $ représente la précision du paramètre de poids correspondant $ w_ {i} $, $ \ mathbf {\ alpha} = (\ alpha_ {1}, \ dots, \ alpha_ {M}) ^ {T} $. La maximisation de la preuve de ces superparamètres aboutit à l'infini pour la plupart des superparamètres, concentrant la distribution postérieure des paramètres de pondération correspondants au point zéro. Ensuite, la fonction de base correspondant à ces paramètres (la fonction du noyau représentant la distance au point de données correspondant) ne joue aucun rôle dans la prédiction, elle peut donc être supprimée et un modèle clairsemé est obtenu.

La probabilité postérieure pour le vecteur de poids est à nouveau gaussienne et s'exprime sous la forme suivante.

p(\mathbf{w}|\mathbf{t}, \mathbf{X}, \mathbf{\alpha}, \beta) = \mathcal{N}(\mathbf{w}|\mathbf{m}, \mathbf{\Sigma})

Ici, la moyenne et la covariance sont données par les équations suivantes.

\mathbf{m} = \beta \mathbf{\Sigma} \mathbf{\Phi}^{T} \mathbf{t}
\mathbf{\Sigma} = \left( \mathbf{A} + \beta \mathbf{\Phi}^{T} \mathbf{\Phi} \right)^{-1}

Cependant, $ \ mathbf {\ Phi} $ est l'élément $ \ Phi_ {ni} = \ phi_ {i} (\ mathbf {x_ {n}}) $ pour $ i = 1, \ dots, N $, et $ N \ times M $ matrice de planification avec éléments $ \ Phi_ {nM} = 1 $ pour $ n = 1, \ dots, N $, $ \ mathbf {A} = \ rm {diag} (\ alpha_ {i}) $.

Les valeurs de $ \ mathbf {\ alpha} $ et $ \ beta $ sont obtenues par le deuxième type d'estimation la plus probable, également appelée __approximation de preuves __. Pour effectuer le deuxième type d'estimation la plus probable, intégrez d'abord les paramètres de pondération.

p(\mathbf{t}|\mathbf{X}, \mathbf{\alpha}, \beta) = \int p(\mathbf{t}|\mathbf{X}, \mathbf{w}, \beta)p(\mathbf{w}|\mathbf{\alpha}) d\mathbf{w}

Puisque cette équation est une intégrale convolutionnelle de deux distributions gaussiennes, l'intégrale peut être exécutée analytiquement et la vraisemblance logarithmique peut être obtenue comme suit.

\ln p(\mathbf{t}|\mathbf{X}, \mathbf{\alpha}, \beta) = \ln \mathcal{N} (\mathbf{t}|\mathbf{0}, \mathbf{C}) = -\frac{1}{2}\{ N \ln (2 \pi) + \ln |\mathbf{C}| + \mathbf{t}^{T}\mathbf{C}^{-1}\mathbf{t}\}

Ici, $ \ mathbf {t} = (t_ {1}, \ dots, t_ {N}) ^ {T} $. Nous avons également défini la matrice $ N \ times N $ $ \ mathbf {C} $ comme suit.

\mathbf{C} = \beta^{-1}\mathbf{I} + \mathbf{\Phi} \mathbf{A}^{-1} \mathbf{\Phi}^{T}

En définissant le différentiel de la vraisemblance logarithmique obtenue à 0, l'équation de mise à jour du super paramètre est obtenue comme suit.

\begin{split} \alpha_{i}^{new} &= \frac{\gamma_{i}}{m_{i}^{2}} \\ (\beta^{new})^{-1} &= \frac{\|\mathbf{t} - \mathbf{\Phi m}\|^{2}}{N - \Sigma_{i}\gamma_{i}} \end{split}

Ici, $ \ gamma_ {i} $ est une quantité qui indique dans quelle mesure le paramètre de poids correspondant $ w_ {i} $ est spécifié dans les données et est défini par l'équation suivante.

\gamma_{i} = 1 - \alpha_{i} \Sigma_{ii}

En utilisant les résultats ci-dessus, l'apprentissage des super paramètres se déroule comme suit. Premièrement, la moyenne des probabilités postérieures $ \ mathbf {m} $ et la covariance $ \ mathbf {\ Sigma} $ sont estimées à partir des valeurs initiales de $ \ mathbf {\ alpha} $ et $ \ beta $ sélectionnées de manière appropriée. Ensuite, les super paramètres sont estimés à partir des valeurs obtenues. Ce processus est répété en alternance jusqu'à ce que les conditions de convergence appropriées soient remplies.

Expérience

Données d'entraînement

synthetic_data_sin.png

résultat

Matrice de conception et vecteurs associés

design_matrix_relevance_vector.png

Pour les vecteurs qui ne sont pas liés à la sortie $ \ mathbf {t} $, la valeur de $ \ alpha $ est $ \ infty $. En d'autres termes, la colonne avec la plus grande valeur de $ \ alpha ^ {-1} $ est le vecteur associé.

Résultats de la régression RVM

RVM_regression.png

Considération

Recommended Posts

PRML: Chapitre 7 Machine à noyau avec solution clairsemée
Modélisation parcimonieuse: Chapitre 5 De la solution exacte à la solution approximative
Méthode Kernel avec Python
Jour 65 (Solution) Le bloc-notes Jupyter ne fonctionne pas avec le noyau non connecté.
PRML Chapter 7 Implémentation de Python Vector Machine associée pour les problèmes de régression