Dans cet article, je présenterai l'idée de base de la régression logistique et du code pratique en python! J'ai l'intention de résumer ce que j'étudiais quand j'étais étudiant d'une manière très facile à comprendre, donc j'espère que tout le monde, des débutants à ceux qui écrivent habituellement du code, pourra s'y référer.
La régression logistique est une méthode couramment utilisée pour la classification binaire. Pour expliquer l'idée de régression logistique, considérons, par exemple, le célèbre exemple du Titanic.
n variables $ (x_0, x_1, x_2 ,, x_n) $ (PassengerID dans l'exemple Titanic)
X =
\begin{bmatrix}
x_0 \\
x_1 \\
x_2 \\
\vdots \\
x_n \\
\end{bmatrix}
W =
\begin{bmatrix}
β_0 \\
β_1 \\
β_2 \\
\vdots \\
β_n \\
\end{bmatrix}
Comme
Z=β_0+β_1x_1+β_2x_2+...+β_nx_n …① \\
= w^{T}X
Dans ce cas, la régression logistique exprime la probabilité p comme suit.
p=\frac{1}{1+e^{-(β_0+β_1x_1+β_2x_2+...+β_nx_n)}}
=\frac{1}{1+e^{-Z}} …②
Et pour le p obtenu
Le flux de base de la régression logistique consiste à classer selon que p dépasse ou non la valeur de la plage (certaine ligne).
(1) devient la formule suivante par transformation de valeur égale.
\log\frac{p}{1-p}=β_0+β_1x_1+β_2x_2+...+β_nx_n
p=\frac{e^Z}{1+e^Z}\\
⇔e^Z=p(1+e^Z)\\
⇔e^Z=\frac{p}{1-p}\\
⇔\log\frac{p}{1-p}=Z=β_0+β_1x_1+β_2x_2+...+β_nx_n …③
Le côté gauche de ③, c'est-à-dire
\log\frac{p}{1-p}
Est appelé "log odds" (ou "logit"). La régression logistique est, en d'autres termes, un facteur donné
x_1,x_2,x_3,...x_n
D'autre part, le paramètre optimum tel que la variable objective p satisfait l'équation (3).
β_1,β_2,β_3,...β_n
C'est un calcul à trouver.
À propos, la formule (2) est la suivante lorsqu'elle est représentée graphiquement. Comme vous pouvez le voir sur le graphique, la valeur d'entrée $ Z $ prend $ -∞ ≤ Z ≤ ∞ $, tandis que la valeur de sortie $ y $ prend $ 0 <y <1 $.
Contrairement à l'analyse de régression multiple, qui suppose essentiellement une analyse normale des résidus, la régression logistique ne suppose pas, de manière pratique, une distribution normale pour la distribution d'erreur.
Alors, comment trouvez-vous les paramètres optimaux? La partie calcul de ce chapitre est calculée automatiquement si vous utilisez LogisticRegression () en python, mais lorsque vous l'utilisez pour une analyse dans une entreprise réelle, "Cela s'est produit lorsque j'ai calculé à l'aide de la bibliothèque, de sorte que Si vous dites "Je ne sais pas comment ça marche", ce sera une boîte noire.
Il existe différentes méthodes pour optimiser les paramètres, mais ici je voudrais vous présenter la "méthode Newton".
Regardons à nouveau la formule (1) ci-dessus.
p=\frac{1}{1+e^{-(β_0+β_1x_1+β_2x_2+...+β_nx_n)}}
=\frac{1}{1+e^{-Z}} …②
n jeux de données (p et $ x_0, x_1, ... x_n $)
La fonction de vraisemblance logarithmique est
L(w)=log(\prod_{i = 0}^{n}p^Y(1-p)^{1-Y})\\\
⇔L(w)=Y\sum_{i=0}^{n}log{p}+(1-Y)\sum_{i=0}^{n}log{(1-p)}\\\
⇔L(w)=Y\sum_{i=0}^{n}log{\frac{1}{1+e^{-w^Tx}}}+(1-Y)\sum_{i=0}^{n}log{(1-\frac{1}{1+e^{-w^Tx}})}\\\
Vous pouvez trouver $ w $ qui maximise cela. C'est synonyme de minimisation de $ -L (w) $ (= $ E (w) $).
Alors, comment pouvons-nous trouver le paramètre $ w $ qui minimise $ E (w) $? Ici, un certain $ w ^ {(t)} $ est provisoirement mis au début, et selon la situation, $ w ^ {(t + 1)} ← w ^ {(t)} - d ^ {(t)} Réfléchissons à la façon de se rapprocher de la matrice optimale en mettant à jour $ w $ comme $. Alors, comment trouvez-vous $ d ^ {(t)} $? Par déploiement de Taylor
E(w+d)∼E(w)+\frac{δE(w)}{δw}d^{(t)}+\frac{1}{2}\frac{δ^2E(w)}{δwδw}{d^{(t)}}^2 …④
Puisqu'il suffit de trouver d ^ {(t)} qui minimise cela, il est partiellement différencié par $ d ^ {(t)} $.
\frac{δE(w)}{δw}+\frac{δ^2E(w)}{δwδw}{d^{(t)}}=0 \\\
⇔{d^{(t)}}=\left(\frac{δ^2E(w)}{δwδw}\right)^{-1}\frac{δE(w)}{δw}
w^{(t+1)}←w^{(t)}-\left(\frac{δ^2E(w)}{δwδw}\right)^{-1}\frac{δE(w)}{δw} …⑤
C'est la méthode Newton.
ici,
\frac{δE(w)}{δp}=-\frac{δY\sum_{i=0}^{n}log{p}+(1-Y)\sum_{i=0}^{n}log{(1-p)}}{δp}\\\
=-\frac{Y}{p}+\frac{1-Y}{1-p} \\\
=\frac{p-Y}{p(1-p)}
\frac{δp}{δw}=\frac{δ}{δw}\frac{1}{1+e^{-w^Tx}} \\\
=\frac{δ}{δw}(1+e^{-w^Tx})^{-1} \\\
=\frac{xe^{-w^Tx}}{(1+e^{-w^Tx})^2} \\\
=\frac{xe^{-w^Tx}}{(1+e^{-w^Tx})^2} \\\
=px(1-p)
Donc,
\frac{δE(w)}{δw}=\frac{p-Y}{p(1-p)}px(1-p)=x(p-Y) …⑥
De plus, la différenciation de second ordre de $ E (w) $ est
\frac{δ^2E(w)}{δwδw}=\frac{δ}{δw}x\left(\frac{1}{1+e^{-w^Tx}}-Y\right) \\\
=px^2(1-p) …⑦
⑥ À partir de ⑦, remplacez ⑤
w^{(t+1)}←w^{(t)}-\frac{1}{px^2(1-p)}x(p-Y) …⑧
L(w+d)∼L(w)+L'(w)h
Sur la base de ce qui précède, les paramètres sont optimisés par l'algorithme suivant.
Jusqu'à présent, j'ai expliqué la méthode Newton. Puisque cette méthode de Newton utilise une double différenciation, elle présente l'inconvénient que la quantité de calcul est très importante, tandis que la vitesse de convergence est rapide.
logistic.py
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=10, solver : {‘newton-cg’})
lr.fit(X_train, y_train)
En python, vous pouvez implémenter une régression logistique avec le code simple ci-dessus en utilisant une bibliothèque appelée scicit-learn. Dans le code ci-dessus, je bricoler avec les nombres pour deux paramètres, C et solveur. Parmi ceux-ci, le solveur définit la méthode pour trouver les paramètres optimaux décrits ci-dessus. Ici, la méthode Newton expliquée ci-dessus est utilisée. Vient ensuite l'explication de C. Ce C est appelé régularisation et est généralement le paramètre le plus déterminé.
Jusqu'à présent, j'ai expliqué l'idée mathématique de la régression logistique et comment écrire du code simple en python basé sur l'exemple de Titanic, mais en fait, la régression logistique est également appliquée dans divers domaines des sciences sociales.
Par exemple, dans le domaine comptable, lors de l'enquête sur le risque de faillite d'une entreprise, en plus de la valeur numérique PL telle que la marge bénéficiaire d'exploitation, la présence ou l'absence d'une note concernant GC (Going Concern: Assumption of a Continuous Company) est considérée comme un facteur de retour logique du risque de faillite. Des recherches sont en cours pour analyser dans.
Recommended Posts