Quand j'ai recherché l'analyse de régression multiple sur wikipedia, c'était comme suit.
L'analyse de régression multiple est l'une des analyses multivariées. Deux variables indépendantes ou plus (deux dimensions ou plus) dans l'analyse de régression. Une avec une variable indépendante est appelée analyse de régression simple. La méthode des moindres carrés couramment utilisée, la régression multiple de modèles linéaires généralisés, est un type d'analyse linéaire mathématiquement et est mathématiquement similaire à l'analyse de dispersion. En sélectionnant plusieurs variables appropriées, il est possible de créer une formule de prédiction facile à calculer et comportant peu d'erreurs. Le coefficient de chaque variable explicative du modèle de régression multiple est appelé coefficient de régression partielle. Le degré d'influence sur la variable objective ne montre pas le coefficient de régression partielle, mais le coefficient de régression partielle standardisé montre le degré d'influence sur le coefficient objectif.
je ne suis pas sûr
Par souci de clarté, je vais d'abord expliquer une analyse de régression simple avec un exemple.
Par exemple, je veux prédire la taille d'une personne à partir du poids! !! !! Supposer que À cette fin, il est dit de collecter les données de poids et de taille de 10 personnes et de tracer la ligne droite suivante.
Axe vertical: hauteur (cm) Axe horizontal: poids (kg)
Mathématiquement parlant, une telle ligne droite a la forme suivante.
Trouver a et b dans l'équation ci-dessus est appelé analyse de régression simple. Il y a quelque chose comme ^ au-dessus de y, mais cela s'appelle un chapeau et semble être attaché à la valeur prévue y. La méthode du carré minimum est utilisée comme méthode pour obtenir ces a et b. Comme la méthode du carré minimum sera expliquée lors de l'explication de l'analyse de régression multiple, elle sera omise ici. De plus, il y avait une personne qui a expliqué la méthode du carré minimum d'une manière facile à comprendre à l'url suivante, vous pouvez donc vous y référer.
Essayons la méthode des moindres carrés en Python
Si vous pouvez trouver a et b, vous pouvez prédire y (hauteur) en substituant le poids à x.
Les noms officiels des types dans cet exemple sont indiqués pour la prochaine explication de l'analyse de régression multiple.
--Poids: ** Variables explicatives **
--Height: ** Variable objective **
Dans cet exemple, la taille a été prédite en fonction des données de poids. La valeur que vous recherchez est appelée la variable objectif et la valeur utilisée pour prédire la valeur que vous souhaitez rechercher (variable objectif) est appelée la variable explicative.
--Il y avait 10 données de poids (données de variables explicatives), donc cela s'appelle ** taille de l'échantillon **.
―― Qu'est-ce qu'une analyse de régression simple? Le cas de la prédiction de la variable objective avec une variable explicative est appelé analyse de régression simple.
** Une analyse de régression qui prédit la variable objective à partir de plusieurs variables explicatives ** est appelée une analyse de régression multiple.
Par exemple ... Dans l'analyse de régression simple précédente, la taille n'était prédite qu'à partir du poids. Cependant, si vous y réfléchissez en le remplaçant par la réalité, il semble difficile de prédire la taille à partir du seul poids. Il semble difficile de prédire la hauteur exacte par la simple analyse de régression mentionnée plus tôt car certaines personnes sont croquantes et certaines sont grasses.
Alors que dois-je faire
C'est un sentiment d'analyse de régression multiple que j'ai pensé qu'il serait possible de faire une prédiction plus précise en utilisant la taille et la taille du pied, qui sont susceptibles d'être liées lors de la prédiction de la taille, comme variables explicatives.
Avez-vous eu l'image? ❓
De là, je vais parler un peu mathématiquement.
La formule générale de l'analyse de régression multiple est la suivante.
――La variable objective est la valeur prédite (hauteur) comme dans le cas d'une analyse de régression simple.
――Le coefficient de régression est comme un (gradient) dans une analyse de régression simple. L'analyse de régression multiple est une image qui trouve le numéro d'un correspondant à chaque variable explicative car il existe plusieurs variables explicatives.
--Par exemple, il y a trois variables explicatives, le poids, la taille et la taille du pied, la formule ci-dessus est donc la suivante.
Je vais vous expliquer comment le trouver.
Par souci de clarté, nous utiliserons l'exemple suivant.
[Exemple] La taille (variable objective) est prédite à partir de trois variables explicatives que sont le poids, la taille et la taille du pied. Le nombre d'échantillons est de 5. Plus précisément ... M. A ・ ・ ・ Poids: 50 kg, taille: 60 cm, taille du pied: 23 cm → hauteur: 155 cm M. B ・ ・ ・ Poids: 60 kg, taille: 70 cm, taille du pied: 25 cm → hauteur: 162 cm M. C ・ ・ ・ Poids: 70 kg, taille: 78 cm, taille du pied: 27 cm → hauteur: 173 cm M. D ・ ・ ・ Poids: 30 kg, taille: 50 cm, taille du pied: 19 cm → hauteur: 135 cm M. E ・ ・ ・ Poids: 80 kg, taille: 95 cm, taille du pied: 27 cm → hauteur: 175 cm Le but est de créer une jolie fonction ($ \ hat {y} $) qui peut prédire la taille d'un humain inconnu en trouvant un joli coefficient de régression β1, β2, β3 à partir des données des 5 personnes ci-dessus au total. est!
Il y aura beaucoup de lettres, alors faites une pause avant de lire.
Tout d'abord, en tant que procédure, si vous pouvez trouver un bon $ \ beta $, vous devez évaluer si cela fait vraiment du bien. Il existe une méthode appelée ** méthode du carré minimum ** comme méthode pour l'évaluer. Ceux qui ont lu l'url lors de l'analyse de régression simple plus tôt l'ont peut-être compris, mais je vais l'expliquer brièvement ici aussi.
Quelle est la méthode du carré minimum? Supposons que vous tracez une belle ligne à partir de certaines données, comme indiqué dans l'image ci-dessous. Ensuite, il y a une erreur dans chaque point et ligne. (La ligne rouge dans l'image est l'erreur.) Si le total des erreurs est petit en additionnant les erreurs de tous les points et lignes, une belle ligne droite est dessinée! Cela signifie que.
Cependant, l'erreur peut avoir un point en dessous de la ligne (moins erreur), un point au-dessus de la ligne (plus erreur) ou un signe différent. Si vous ajoutez l'erreur telle quelle, il peut arriver que cela ressemble à Pramai 0 et qu'il est évalué que l'erreur est grande mais que l'erreur est petite. Je veux l'éviter. Je veux unifier les codes!
Par conséquent, il existe une valeur absolue qui peut être considérée comme une chose qui peut unifier le signe, mais je veux éviter la valeur absolue car elle est très difficile à manipuler car il est nécessaire de diviser le calcul en cas. Une autre méthode qui pourrait être utilisée pour effacer le même code était de quadriller l'erreur et d'unifier le code ... la méthode du carré minimum! C'est devenu.
La formule générale de la méthode du carré minimum est la suivante.
Dans cet exemple ...
Ce sera. (Supplément) Dans cet exemple, $ y_i $ est les données de hauteur réelle de A à E. En bref, c'est la somme de la différence au carré entre les hauteurs réelles de M. A et de M. E et les hauteurs prévues de M. A et de M. E. $ n $ vaut 5 dans cet exemple.
Et je veux minimiser cette fonction d'erreur $ E (D) $! Cela signifie que.
Alors que dois-je faire ❓
À quoi pensez-vous quand vous voulez en faire le minimum ou le maximum? ❓ Si vous le différenciez en = 0, vous pouvez le considérer comme la valeur maximale ou minimale-❓ Je ne pouvais penser à rien.
Ainsi, les étapes suivantes sont la conclusion.
① $ E (D) $ est partiellement différencié par $ \ beta_0, \ beta_1, \ beta_2, \ beta_3 $. Il a les symboles suivants.
② Et soit 0 le côté gauche de la différenciation partielle. Si la différenciation partielle est définie sur = 0, chaque β au point où la pente est 0, c'est-à-dire le point où E (D) est la valeur minimale peut être obtenu, il est donc mis à 0. Cependant, avec cette seule explication, je pense que certains pensent que le point où l'inclinaison est de 0 ne signifie pas que E (D) n'est pas la valeur minimale mais la valeur maximale ❓. Je vais omettre l'explication détaillée, mais si vous corrigez $ \ beta_0 $ dans la formule ci-dessus de E (D), l'ordre maximum des autres $ \ beta_1, \ beta_2, \ beta_3 $ sera 2 (fonction quadratique). Et puisque le signe est positif, c'est une fonction quadratique qui est convexe vers le bas, c'est donc la valeur minimale à calculer comme = 0 après différenciation partielle. Je pense que c'est très difficile à comprendre à ce sujet, je vais donc publier l'url de la vidéo facile à comprendre de M. Yobinori.
③ Puisque chacun des $ \ beta_0, \ beta_1, \ beta_2, \ beta_3 $ est partiellement différencié, quatre équations peuvent être créées.
Si vous faites de votre mieux pour résoudre les équations simultanées ...
Vous pouvez trouver $ \ beta_0, \ beta_1, \ beta_2, \ beta_3 $ qui minimise $ E (D) $! Je me sens comme.
La dérivation ci-dessus a trois variables explicatives dans cet exemple, mais même si ce nombre augmente, la méthode de dérivation est fondamentalement la même, et il n'y a qu'une différence qui rend difficile la résolution d'équations simultanées.
Et il existe une formule pour la forme après dérivation. (Donc, vous n'avez pas à faire la dérivation ennuyeuse ci-dessus lol) C'est comme suit. J'expliquerai comment exprimer le calcul expliqué précédemment avec une matrice. (Parce que la formule après dérivation est exprimée par une matrice.)
Et si vous exprimez la formule ci-dessus sous forme de matrice ...
|| ||Si vous vous développez à l'intérieur ...
\begin{align}
& = \left(
\begin{matrix}
y_0 \\
y_1 \\
y_2 \\
y_3 \\
y_4 \\
y_5 \\
\end{matrix}
\right)-
\left(
\begin{matrix}
1 & x_{11} & x_{12} & x_{13} \\
1 & x_{21} & x_{22} & x_{23} \\
1 & x_{31} & x_{32} & x_{33} \\
1 & x_{41} & x_{42} & x_{43} \\
1 & x_{51} & x_{52} & x_{53} \\
\end{matrix}
\right)
\left(
\begin{matrix}
\beta_0 \\
\beta_1 \\
\beta_2 \\
\beta_3
\end{matrix}
\right)\\
& =\left(
\begin{matrix}
y_0 \\
y_1 \\
y_2 \\
y_3 \\
y_4 \\
y_5 \\
\end{matrix}
\right)-
\left(
\begin{matrix}
\beta_0+\beta_1x_{11}+\beta_2x_{12}+\beta_3x_{13} \\
\beta_0+\beta_1x_{21}+\beta_2x_{22}+\beta_3x_{23} \\
\beta_0+\beta_1x_{31}+\beta_2x_{32}+\beta_3x_{33} \\
\beta_0+\beta_1x_{41}+\beta_2x_{42}+\beta_3x_{43} \\
\beta_0+\beta_1x_{51}+\beta_2x_{52}+\beta_3x_{53} \\
\end{matrix}
\right)
\end{align}
Vous pouvez voir qu'il a la même forme que $ E (D) $.
Lorsque chaque composant de la formule ci-dessus est représenté par une matrice, cela ressemble à ceci.
\beta = \left(
\begin{matrix}
\beta_0 \\
\beta_1 \\
\beta_2 \\
\beta_3
\end{matrix}
\right)
y = \left(
\begin{matrix}
y_0 \\
y_1 \\
y_2 \\
y_3 \\
y_4 \\
y_5 \\
\end{matrix}
\right)
X = \left(
\begin{matrix}
1 & x_{11} & x_{12} & x_{13} \\
1 & x_{21} & x_{22} & x_{23} \\
1 & x_{31} & x_{32} & x_{33} \\
1 & x_{41} & x_{42} & x_{43} \\
1 & x_{51} & x_{52} & x_{53} \\
\end{matrix}
\right)
Même si vous dites soudainement quelque chose comme ça, vous ne comprenez pas du tout le sens. Je vais expliquer un par un.
$ \ beta $: C'était la valeur que je voulais enfin obtenir pour tracer une belle ligne. Le nombre est le nombre de variables explicatives + 1 (biais), donc dans cet exemple, il y en a quatre dans une colonne.
$ y $: Il s'agit des données de hauteur de M. A à M. E données comme échantillon du haut, donc 5 éléments sont répertoriés dans une colonne.
$ X $: Je pense que je n'ai pas compris cela le plus. La première ligne est tout 1. En effet, il n'est pas nécessaire d'appliquer quoi que ce soit au biais, donc on a l'impression qu'un seul est appliqué, et la première ligne est toute 1. Si vous regardez la formule développée ci-dessus, vous pouvez voir qu'elle est correcte car il y a un 1 dans la première colonne. (Dans d'autres publications, le biais est calculé séparément et il se peut qu'il n'y ait pas de colonne avec seulement 1 dans la première colonne.) La deuxième colonne contient les données de poids de M. A à M. E à partir du haut. La troisième colonne contient les données de taille de M. A à M. E à partir du haut. La 4e colonne contient les données de taille de pied de M. A à M. E à partir du haut. Le nombre de lignes est le nombre d'échantillons et le nombre de colonnes est le nombre de β à obtenir (variable explicative + 1). Par exemple, dans le cas de $ x_ {23} $, 25 cm, qui est la taille du pied de M. B, seront inclus.
Maintenant que vous savez comment l'exprimer dans une matrice, laissez-moi vous donner une formule pour trouver $ \ beta $.
Cette. Cela peut ne pas bien sortir, mais c'est lol $ X ^ T $ est une matrice de translocation de $ X $. Une matrice transposée est un échange de lignes et de colonnes.
Utilisons en fait la formule pour le trouver.
Je vais reformuler les données d'exemple. M. A ・ ・ ・ Poids: 50 kg, taille: 60 cm, taille du pied: 23 cm → hauteur: 155 cm M. B ・ ・ ・ Poids: 60 kg, taille: 70 cm, taille du pied: 25 cm → hauteur: 162 cm M. C ・ ・ ・ Poids: 70 kg, taille: 78 cm, taille du pied: 27 cm → hauteur: 173 cm M. D ・ ・ ・ Poids: 30 kg, taille: 50 cm, taille du pied: 19 cm → hauteur: 135 cm M. E ・ ・ ・ Poids: 80 kg, taille: 95 cm, taille du pied: 27 cm → hauteur: 175 cm De plus, une partie du programme suivant renvoyait à l'url suivante. Le programme suivant utilise une formule pour calculer le coefficient de régression et prédit la taille d'une personne avec [poids: 80 kg, taille: 90 cm, taille du pied: 27 cm]. [[Compréhension en 5 minutes] Explication simple de l'analyse de régression multiple [avec exemple]](https://mathmatical22.xyz/2019/09/13/ [Compréhension en 5 minutes] Solution simple et facile à comprendre de l'analyse de régression multiple /)
python.
# coding=utf-8
#Analyse de régression multiple
def Multiple_regression(X, y):
#Vecteur de coefficient de régression partielle
A = np.dot(X.T, X) # X^T*X
A_inv = np.linalg.inv(A) # (X^T*X)^(-1)
B = np.dot(X.T, y) # X^T*y
beta = np.dot(A_inv, B)
return beta
#Matrice de variables explicatives(Poids, taille, taille du pied)
X = np.array([[1, 50, 60, 23], [1, 60, 70, 25], [
1, 70, 78, 27], [1, 30, 50, 19], [1, 80, 95, 27]])
#Vecteur variable objectif (hauteur)
y = np.array([[155], [162], [173], [135], [175]])
#Vecteur de coefficient de régression partielle
beta = Multiple_regression(X, y)
print(beta)
predict_data = [1, 80, 90, 27] #Données que vous souhaitez prédire
def predict(beta, predict_data):
#Calcul des prévisions réelles
predict_tall = beta[0] * predict_data[0] + beta[1] * predict_data[1] + \
beta[2] * predict_data[2] + beta[3] * predict_data[3]
return predict_tall
tall = predict(beta, predict_data)
print(tall)
Les resultats obtenus sont les suivants.
β = [[90.85638298]
[ 0.76276596]
[-0.28723404]
[ 1.86702128]]
Taille prévue (poids:80kg,Taille:90cm,pointure:27cm humain)
y = 176.43617021cm
β est $ \ beta_0, \ beta_1, \ beta_2, \ beta_3 $ du haut.
Si vous l'appliquez à la formule suivante et calculez ...
J'ai pu prédire qu'il faisait 176 cm. Il semble que ce sera une bonne prédiction en quelque sorte.
C'est la fin de l'explication. Merci beaucoup pour votre travail acharné. Je me demande si je pourrais comprendre d'une manière ou d'une autre l'analyse de régression multiple. J'espère que vous pouvez comprendre l'atmosphère seul.
Pour résumer l'histoire cette fois ...
○ L'analyse de régression multiple est une version améliorée de l'analyse de régression simple qui peut prédire la variable objective à partir de plusieurs variables explicatives.
○ La chose la plus importante dans l'analyse de régression multiple est de trouver le coefficient de régression optimal. La méthode du carré minimum y est utilisée!
Trouvez le coefficient de régression qui minimise la fonction d'erreur E (D). La formule suivante peut être obtenue en faisant de notre mieux en se différenciant partiellement.
Je voudrais ajouter un peu plus sur l'analyse de régression multiple autre que cet exemple.
Supplément ○ L'analyse de régression multiple qui peut être illustrée dans le graphique comporte jusqu'à deux variables explicatives. En effet, seuls les axes X, Y et Z peuvent être affichés. Au-delà de cela, c'est un monde imaginaire, mais l'idée est fondamentalement la même qu'une simple analyse de régression.
○ Cette fois, j'ai prédit ma taille en traçant une belle ligne droite, mais il y a des choses dans le monde qui ne peuvent pas être exprimées par une ligne droite.
X = \left(
\begin{matrix}
1 & x_{11} & x_{12} & x_{13} \\
1 & x_{21} & x_{22} & x_{23} \\
1 & x_{31} & x_{32} & x_{33} \\
1 & x_{41} & x_{42} & x_{43} \\
1 & x_{51} & x_{52} & x_{53} \\
\end{matrix}
\right)
Cette fois, les variables explicatives ont été prédites à l'aide d'une simple fonction linéaire, de sorte que la ligne de prédiction était droite. Cependant, dans l'analyse de régression multiple, vous souhaitez parfois dessiner une ligne de prédiction non linéaire (forme non droite, courbe). Dans un tel cas, il semble que la fonction de la matrice des variables explicatives puisse être exprimée en quadratique ou en cubique. Lorsque vous prédisez réellement la courbe, des problèmes tels que le surapprentissage se produiront ensuite. Le surentraînement signifie que la ligne de prédiction est trop adaptée aux données données et ne peut pas être prédite correctement. Veuillez voir l'image ci-dessous. (Explication de l'image) Groupe de données avec des points bleu clair La ligne de prédiction que vous voulez réellement tracer est la ligne bleue La ligne rouge est surentraînée et surpasse l'ensemble de données donné.
Si vous créez une courbe comme celle-ci, le problème du surapprentissage se produira. Il semble utiliser une méthode appelée ** régularisation ** pour l'empêcher. Alors la prochaine fois, je résumerai la régularisation. Si vous avez un article, je le posterai ci-dessous, alors n'hésitez pas à le consulter.
Recommended Posts