[PYTHON] Algorithme d'apprentissage automatique (généralisation de la régression linéaire)

introduction

Pas à pas sur la théorie, l'implémentation en python et l'analyse à l'aide de scikit-learn sur l'algorithme précédemment repris dans "Classification of Machine Learning" J'étudierai avec. Je l'écris pour un apprentissage personnel, alors j'aimerais que vous oubliez toute erreur.

Jusqu'à présent, nous avons vu «régression simple» et «régression multiple», mais les deux ont parlé dans le même domaine de régression linéaire. Cette fois, je voudrais résumer le "** modèle de régression de base linéaire " qui généralise la régression linéaire et la " méthode de descente de gradient **" pour optimiser la fonction de perte. Les sites suivants ont été mentionnés cette fois.

De base

Pour dessiner une courbe approximative pour la chaîne de données, le modèle de régression unique est $ y = Ax + B $ modèle de régression multiple

y=w_0x_0+w_1x_1+\cdots+w_nx_n

Il devait être approximé par. De plus, on peut voir que pour la régression simple, seuls deux items de l'équation de régression multiple ont été utilisés.

Maintenant, si le poids de chaque terme est $ (w_0, w_1, \ cdots, w_n) $, la fonction du modèle peut en fait être n'importe quoi, et si c'est $ y = \ phi (x) $,

y(\boldsymbol{x}, \boldsymbol{w}) = \sum_{j=0}^{M-1}w_j\phi_{j}(\boldsymbol{x})

Il est exprimé comme. $ \ boldsymbol {w} = (w_0, w_1, \ cdots, w_ {M-1}) ^ T $, $ \ boldsymbol {\ phi} = (\ phi_0, \ phi_1, \ cdots, \ phi_ {M-1 }) ^ T $. Si $ \ phi_0 = 1 $ (terme de section),

y(\boldsymbol{x}, \boldsymbol{w}) = \boldsymbol{w}^T\phi(x)

devenir. Cette $ \ phi (x) $ est appelée ** fonction de base **.

Diverses fonctions de base

L'expression généralisée signifie que la régression linéaire signifie trouver une séquence de coefficients $ \ boldsymbol {w} $ qui représente le mieux une chaîne de données donnée en combinant certaines fonctions de base. ..

scikit-learn vous permet d'utiliser diverses fonctions de base pour la régression.

Trouvez le coefficient de régression

Pour les régressions simples et multiples, nous avons trouvé un coefficient qui minimisait la somme des carrés des résidus. Bien qu'il ait été possible de trouver w mathématiquement avec une régression simple, il est souvent très difficile de trouver une solution analytique lorsque la fonction de base est compliquée ou lorsque les données ont de nombreuses dimensions. Dans de tels cas, il est nécessaire de trouver le coefficient approximativement. Dans ce cas, "** méthode de descente de gradient **" est utilisée. Littéralement, c'est une méthode pour trouver la valeur optimale en descendant la pente (gradient).

Réfléchissez à la manière de trouver les coefficients, y compris comment les résoudre mathématiquement. Il est décrit en détail ci-dessous.

Solution mathématique

C'est une méthode pour trouver une solution par transformation de formule comme décrit dans la régression simple et la régression multiple. C'est une méthode de résolution d'équations simultanées à partir de la complétion carrée et de la différenciation partielle. Si la formule est simple, il n'y a pas de problème, mais si le modèle est compliqué, il y a des cas où il ne peut pas être résolu.

Méthode de descente de gradient

La méthode du gradient est littéralement un moyen de descendre le gradient de la fonction de perte. La valeur de la fonction de perte doit être petite pour trouver le paramètre optimal, mais c'est une image de descente d'une pente vers une valeur plus petite.

La méthode de descente la plus raide et la méthode de descente de gradient probabiliste sont souvent introduites sur les sites d'apprentissage automatique, mais dans le monde de l'apprentissage profond, la méthode de descente de gradient utilisée augmente. On peut dire que c'est un domaine où l'apprentissage en profondeur est florissant et se développe.

La méthode de descente la plus raide

Étant donné la fonction de perte $ f (x, y) $, si le vecteur de gradient est partiellement différencié par $ x $ et $ y , respectivement, $ \ nabla f (x, y) = \ biggl (\ frac) {\ partial f} {\ partial x}, \ frac {\ partial f} {\ partial y} \ biggr) $$, alors décidez de la position initiale $ (x_0, y_0) $ de manière appropriée et $ f [(x_0 ,, x_0,) y_0) - \ eta \ nabla f (x_0, y_0)] Avec $ comme point suivant, répétez jusqu'à ce que le résultat converge. $ \ Eta $ est appelé le taux d'apprentissage.

Cependant, la faiblesse de cette méthode est qu'il n'y a pas toujours une fonction de perte. La position de convergence change lorsque la valeur initiale est prise (converge vers la solution locale).

Descente de gradient stochastique (SGD)

La méthode de descente la plus raide se réfère à un point, tandis que la méthode de descente de gradient probabiliste se réfère à plusieurs échantillons. Calculez $ w: = w- \ eta \ sum_ {i = 1} ^ n \ nabla Q_i (w) $ en utilisant un nombre arbitraire d'échantillons extraits et mélangés.

Dans la plupart des cas, SGD semble converger plus rapidement, mais la méthode de descente la plus raide est plus rapide à calculer. Dans la plupart des cas, je pense que ce n'est pas grave si vous utilisez SGD (Wikipedia talk % 9A% 84% E5% 8B% BE% E9% 85% 8D% E9% 99% 8D% E4% B8% 8B% E6% B3% 95)).

Résumé

J'ai écrit sur les régressions générales et les solutions en développant des régressions simples et multiples. En utilisant la théorie jusqu'ici, je pense qu'il est nécessaire de revenir à divers échantillons.

Je voulais en fait essayer l'implémentation python, mais j'étais épuisé. Ensuite, après avoir essayé quelques implémentations en python, je voudrais résumer le surajustement et la régularisation.

Recommended Posts

Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
Régression linéaire d'apprentissage automatique
Algorithme d'apprentissage automatique (résumé de régression linéaire et régularisation)
Machine Learning: Supervision - Régression linéaire
Algorithme d'apprentissage automatique (régression logistique)
Les débutants en apprentissage automatique essaient la régression linéaire
Algorithme d'apprentissage automatique (analyse de régression multiple)
Algorithme d'apprentissage automatique (analyse de régression unique)
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
<Cours> Machine learning Chapitre 1: Modèle de régression linéaire
Régression logistique d'apprentissage automatique
EV3 x Python Machine Learning Partie 2 Régression linéaire
Bases de l'apprentissage automatique (mémoire)
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Comprendre l'apprentissage automatique ~ régression de crête ~.
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Algorithme d'apprentissage automatique (perceptron simple)
Importance des ensembles de données d'apprentissage automatique
Machine learning supervisé (classification / régression)
Algorithme d'apprentissage automatique (machine vectorielle de support)
Modèle d'empilage d'apprentissage automatique (retour)
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
<Course> Machine learning Chapitre 6: Algorithme 2 (k-means)
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Python: Application de l'apprentissage supervisé (retour)
Algorithme d'apprentissage automatique (prise en charge de l'application de machine vectorielle)
Apprentissage automatique ③ Résumé de l'arbre de décision
Classification et régression dans l'apprentissage automatique
Algorithme d'apprentissage automatique (méthode de descente de gradient)
Apprentissage automatique: analyse discriminante linéaire supervisée
[Apprentissage automatique] Comprendre la régression linéaire simple à partir de scikit-learn et des mathématiques
Apprentissage automatique
Régression linéaire
[Apprentissage automatique] Comprendre la régression multiple linéaire à partir de scikit-learn et des mathématiques
<Subject> Machine learning Chapitre 3: Modèle de régression logistique
Apprentissage automatique avec python (2) Analyse de régression simple
20 sélections recommandées en 2020 de livres d'introduction à l'apprentissage automatique
Reproduction sur plaque de régression linéaire bayésienne (PRML §3.3)
Résumé de la classification et de la mise en œuvre des algorithmes d'apprentissage automatique
À propos de l'équation normale de la régression linéaire
<Cours> Machine learning Chapitre 2: Modèle de régression non linéaire
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
[Apprentissage automatique] Liste des packages fréquemment utilisés
[Apprentissage automatique] Analyse de régression à l'aide de scicit learn
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
Méthode d'évaluation du problème de régression d'apprentissage automatique (erreur quadratique moyenne et coefficient de décision)
Classification des images de guitare par apprentissage automatique Partie 1
Algorithme EM modèle mixte gaussien [apprentissage automatique statistique]
Début de l'apprentissage automatique (matériel didactique / informations recommandés)
Apprentissage automatique du sport-Analyse de la J-League à titre d'exemple-②
Bases de l'apprentissage avec un enseignant Partie 1-Régression simple- (Remarque)
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Tournoi Numerai - Fusion de quants traditionnels et apprentissage automatique -
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Divulgation complète des méthodes utilisées dans l'apprentissage automatique
Algorithme d'apprentissage du dictionnaire
Liste des liens que les débutants en apprentissage automatique apprennent
Vue d'ensemble des techniques d'apprentissage automatique apprises grâce à scikit-learn
À propos du contenu de développement de l'apprentissage automatique (exemple)