2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
La régression logistique est une méthode d'apprentissage statistique couramment utilisée, principalement pour résoudre des problèmes de classification.Malgré le mot « régression » dans le nom, il s'agit en fait d'un algorithme de classification.
Il s’agit de l’utilisation la plus basique et la plus courante de la régression logistique.Il peut prédire si un événement se produira et le résultat de sortie est oui ou non
Par exemple:
Ces exemples ont tous une caractéristique commune, c'est-à-dire qu'il n'y a que deux résultats, vrai (1) et faux (0).
La régression logistique peut être étendue aux problèmes de classification multi-catégories grâce à des méthodes telles que One-vs-Rest ou softmax
Par exemple:
Ces exemples ont tous une caractéristique commune, c'est-à-dire que le même objet a plusieurs résultats possibles, similaires à nos questions à choix multiples courantes. Il existe plusieurs options, mais il n'y a qu'une seule option qui correspond le mieux à la réponse.
La régression logistique donne non seulement des résultats de classification, mais génère également des valeurs de probabilité, ce qui est très utile dans de nombreux scénarios.
Par exemple:
Ces exemples ont tous une caractéristique commune, qui est la prédiction, c'est-à-dire utiliser des résultats connus pour déduire des résultats inconnus.
Imaginez que vous êtes médecin et que vous devez déterminer si un patient souffre d'une certaine maladie. La régression logistique est comme un assistant intelligent pour vous aider à porter ce jugement. Tout comme un médecin examinera divers indicateurs de l'examen physique d'un patient, la régression logistique prendra en compte plusieurs facteurs liés (nous les appelons caractéristiques). Certaines mesures peuvent être plus importantes que d’autres. La régression logistique attribue un « poids » à chaque facteur, reflétant son importance. Enfin, au lieu de simplement dire « oui » ou « non », cela donne une probabilité. Par exemple, « La probabilité que ce patient contracte la maladie est de 70 %. » Vous pouvez fixer une norme, par exemple si elle dépasse 50 %, elle est considérée comme « oui », sinon elle est considérée comme « non ». La régression logistique « apprend » d’un grand nombre de cas connus. Tout comme un médecin qui acquiert de l'expérience à travers un grand nombre de cas.
Bien entendu, le rôle de la régression logistique va bien au-delà, limité par l’espace (En fait, je veux juste être paresseux), je ne vais pas trop faire d’introduction.
Personnellement, je n'aime pas vous donner beaucoup de formules mathématiques de manière interminable, puis vous dire que les principes sous-jacents sont ces formules mathématiques et vous laisser les comprendre lentement vous-même.Ce que j'espère, c'est pouvoir analyser quelques formules de base et pourquoi il est nécessaire d'utiliser ces quelques formules. C'est quelque chose que j'espère pouvoir expliquer clairement dans mon article.
y = b0 + b1x1 + b2x2 + ... + bn*xn
Ce n'est pas grave si vous ne comprenez pas le code, regardez simplement l'image
- import matplotlib.pyplot as plt
- import numpy as np
- import matplotlib.font_manager as fm
-
- # Generate some simulated house data
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50 # House area (square meters)
- price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
-
- # Fit the data using linear regression
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
-
- # Get the regression coefficients
- b0 = model.intercept_
- b1 = model.coef_[0]
-
- # Plot the scatter plot
- plt.scatter(area, price, label="House Data")
-
- # Plot the regression line
- plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
-
- # Set the plot title and axis labels
- plt.title("Linear Regression of House Area and Price")
-
- # Set the font to SimSun (楷体)
- font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
-
- plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
- plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
-
- # Add legend
- plt.legend()
-
- # Show the plot
- plt.show()
1. Générez 100 données de simulation de maison
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50
- price = 2 * area + 5000 + np.random.randn(100) * 500
2. Utilisez la régression linéaire pour ajuster les données
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
3. Obtenir le coefficient de régression (b0 ~ bn)
- b0 = model.intercept_
- b1 = model.coef_[0]
4. Dessinez un nuage de points
plt.scatter(area, price, label="House Data")
5. Tracez la ligne de régression
plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
6. Définissez le titre de l'article
plt.title("Linear Regression of House Area and Price")
7. Définissez la police en italique et en taille de police (le cas échéant)
- font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
- plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
- plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
8. Ajouter une légende
plt.legend()
9. Afficher les graphiques
plt.show()
Ce code utilise une régression linéaire pour ajuster la relation entre la superficie de la maison et le prix (les titres horizontaux et verticaux sont décrits en anglais pour éviter les erreurs)
Certaines personnes pourraient se demander : pourquoi produisons-nous une si grande quantité de données ?
Bonne question~
Avec ces données, peut-on calculer grossièrement y = b0 + b1x1 + b2x2 + ... + bn*xn Et le coefficient ?
Spécifiquement:
En collectant une grande quantité de données, nous pouvons utiliser un modèle de régression linéaire pour calculer ces coefficients et construire un modèle prédictif.Ce modèle peut nous aider à comprendre l'impact de différents facteurs sur la variable cible et à prédire la valeur de la variable cible dans le futur (similaire à y = kx + b en mathématiques. Avec k et b spécifiques, nous pouvons prédire y en obtenant x , la différence est qu'il y a plus de coefficients k ici)
σ(x) = 1 / (1 + exp(-x))
L'image de la fonction sig ressemble à ceci :
Comme nous l'avons mentionné précédemment, l'utilisation la plus fondamentale de la régression logistique consiste à résoudre des problèmes de classification binaire.
L'objectif de la régression logistique est de convertir la sortie d'un modèle linéaire (qui peut être n'importe quel nombre réel) en une valeur de probabilité qui représente la probabilité qu'un événement se produise, et la valeur de probabilité doit naturellement être comprise entre 0 et 1.
La fonction sigmoïde accomplit parfaitement cette tâche : elle compresse la sortie du modèle linéaire entre 0 et 1, et à mesure que la valeur d'entrée augmente, la valeur de sortie augmente progressivement, ce qui est cohérent avec la tendance changeante de la valeur de probabilité.
Regardez la fonction de sig. Lorsqu’il s’approche de l’infini positif, il s’approche de 1 à l’infini. Lorsqu’il s’approche de l’infini négatif, cela ne correspond-il pas simplement à notre problème de 0 ou de 1 ?
Alors quelqu'un veut le répéter, alors vous avez tort. Bien qu'on dise que les deux côtés peuvent être infiniment proches, le milieu ne peut pas être atteint. Par exemple, 0,5 est entre 0 et 1, alors vous dites que 0,5 est proche de 0. Ou est-ce qu'il approche de 1 ?
Bien qu'il soit dit que les chiffres au milieu ne peuvent pas être proches, je peux le définir artificiellement~
Par exemple, si je mets les nombres >= 0,5 dans la catégorie 1 et les nombres < 0,5 dans la catégorie 0, le problème sera résolu~
Par conséquent, 0,5 n’est pas un point critique, mais un seuil que nous fixons artificiellement pour la classification.
p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn)))
Nous avons déjà dit tellement de choses juste pour introduire cette formule
Est-ce que ça vous donne mal à la tête rien que de le regarder ? Cela me donne mal à la tête rien que de le regarder, alors pourquoi ne pas le simplifier ~
Vous voyez, c'est beaucoup plus rafraîchissant comme ça, tout comme un beau mec qui n'aime pas s'habiller. Il a un peu rangé son apparence, et puis tu as découvert, wow, ce mec a l'air si beau ~
Ahem, je m'éloigne du sujet ~ AlorsLa régression logistique est en fait une régression linéaire + fonction sigmoïde
z dans la fonction sigmoïde utilise la régression linéaire y = b0 + b1x1 + b2x2 + ... + bn*xn remplacer
Alors qu’est-ce que ça fait ?
OK, jetons un oeil ~
L'essence de la régression logistique estPrédire la probabilité qu'un événement se produise .Il ne classe pas directement les données, mais mappe les résultats de la régression linéaire sur l'intervalle 0~1 via une fonction (fonction sigmoïde). La valeur dans cet intervalle représente la possibilité que l'événement se produise.
La base de la régression logistique est la régression linéaire. La régression linéaire construit un modèle linéaire et tente d'ajuster les données avec une fonction linéaire pour obtenir une valeur prédite.Cette valeur prédite peut être n'importe quelle valeur et n'est pas limitée par l'intervalle 0~1.
La fonction sigmoïde est une fonction « magique » qui convertit la valeur prédite obtenue par régression linéaire dans l'intervalle 0~1, et les valeurs de cet intervalle peuvent être interprétées comme la probabilité que l'événement se produise.
Afin d'effectuer une classification binaire, nous devons définir un seuil, généralement 0,5.Si la probabilité prédite est supérieure au seuil, elle est déterminée comme étant une classe positive, sinon elle est déterminée comme étant une classe négative.
Par exemple:
La fonction de gauche peut être considérée comme une fonction de régression linéaire et la fonction de droite est la fonction sigmoïde cartographiée.