logo

La régression linéaire multiple

Dans la rubrique précédente, nous avons découvert la régression linéaire simple, dans laquelle une seule variable indépendante/prédicteur (X) est utilisée pour modéliser la variable de réponse (Y). Mais il peut y avoir divers cas dans lesquels la variable de réponse est affectée par plus d'une variable prédictive ; pour de tels cas, l'algorithme de régression linéaire multiple est utilisé.

De plus, la régression linéaire multiple est une extension de la régression linéaire simple car elle nécessite plus d'une variable prédictive pour prédire la variable de réponse. Nous pouvons le définir comme :

La régression linéaire multiple est l'un des algorithmes de régression importants qui modélise la relation linéaire entre une seule variable continue dépendante et plusieurs variables indépendantes.

Exemple:

Prédiction du CO2émissions basées sur la cylindrée du moteur et le nombre de cylindres d’une voiture.

Quelques points clés sur MLR :

  • Pour MLR, la variable dépendante ou cible (Y) doit être continue/réelle, mais le prédicteur ou la variable indépendante peut être de forme continue ou catégorielle.
  • Chaque variable caractéristique doit modéliser la relation linéaire avec la variable dépendante.
  • MLR tente d'ajuster une ligne de régression à travers un espace multidimensionnel de points de données.

Équation MLR :

Dans la régression linéaire multiple, la variable cible (Y) est une combinaison linéaire de plusieurs variables prédictives x1, X2, X3, ...,Xn. Puisqu'il s'agit d'une amélioration de la régression linéaire simple, la même chose est appliquée pour l'équation de régression linéaire multiple, l'équation devient :

 Y= b<sub>0</sub>+b<sub>1</sub>x<sub>1</sub>+ b<sub>2</sub>x<sub>2</sub>+ b<sub>3</sub>x<sub>3</sub>+...... bnxn ............... (a) 

Où,

Y= Variable de sortie/réponse

tri de liste java

b0, b1, b2, b3, bn....= Coefficients du modèle.

X1, X2, X3, X4,...= Divers Variable indépendante/fonctionnalité

Hypothèses pour la régression linéaire multiple :

  • UN relation linéaire doit exister entre les variables cible et prédictive.
  • Les résidus de régression doivent être normalement distribué .
  • MLR suppose peu ou pas de multicolinéarité (corrélation entre la variable indépendante) dans les données.

Implémentation du modèle de régression linéaire multiple à l'aide de Python :

Pour implémenter MLR en utilisant Python, nous avons le problème ci-dessous :

Description du problème:

Nous disposons d'un ensemble de données de 50 start-ups . Cet ensemble de données contient cinq informations principales : Dépenses de R&D, dépenses d'administration, dépenses de marketing, état et bénéfice pour un exercice financier . Notre objectif est de créer un modèle permettant de déterminer facilement quelle entreprise a un profit maximum et quel est le facteur le plus déterminant pour le profit d'une entreprise.

Puisque nous devons trouver le profit, il s’agit donc de la variable dépendante et les quatre autres variables sont des variables indépendantes. Voici les principales étapes du déploiement du modèle MLR :

    Étapes de prétraitement des données Ajustement du modèle MLR à l'ensemble de formation Prédire le résultat de l'ensemble de tests

Étape 1 : Étape de prétraitement des données :

La toute première étape estImportation de bibliothèques :Tout d'abord, nous importerons la bibliothèque qui aidera à construire le modèle. Ci-dessous le code correspondant :

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Importation d'un ensemble de données :Nous allons maintenant importer l'ensemble de données (50_CompList), qui contient toutes les variables. Ci-dessous le code correspondant :
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Sortir: Nous obtiendrons l'ensemble de données sous la forme :

La régression linéaire multiple

Dans le résultat ci-dessus, nous pouvons clairement voir qu'il existe cinq variables, dans lesquelles quatre variables sont continues et une est une variable catégorielle.

    Extraction de variables dépendantes et indépendantes :
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Sortir:

Sortie[5] :

algorithme de planification à tour de rôle
 array([[165349.2, 136897.8, 471784.1, &apos;New York&apos;], [162597.7, 151377.59, 443898.53, &apos;California&apos;], [153441.51, 101145.55, 407934.54, &apos;Florida&apos;], [144372.41, 118671.85, 383199.62, &apos;New York&apos;], [142107.34, 91391.77, 366168.42, &apos;Florida&apos;], [131876.9, 99814.71, 362861.36, &apos;New York&apos;], [134615.46, 147198.87, 127716.82, &apos;California&apos;], [130298.13, 145530.06, 323876.68, &apos;Florida&apos;], [120542.52, 148718.95, 311613.29, &apos;New York&apos;], [123334.88, 108679.17, 304981.62, &apos;California&apos;], [101913.08, 110594.11, 229160.95, &apos;Florida&apos;], [100671.96, 91790.61, 249744.55, &apos;California&apos;], [93863.75, 127320.38, 249839.44, &apos;Florida&apos;], [91992.39, 135495.07, 252664.93, &apos;California&apos;], [119943.24, 156547.42, 256512.92, &apos;Florida&apos;], [114523.61, 122616.84, 261776.23, &apos;New York&apos;], [78013.11, 121597.55, 264346.06, &apos;California&apos;], [94657.16, 145077.58, 282574.31, &apos;New York&apos;], [91749.16, 114175.79, 294919.57, &apos;Florida&apos;], [86419.7, 153514.11, 0.0, &apos;New York&apos;], [76253.86, 113867.3, 298664.47, &apos;California&apos;], [78389.47, 153773.43, 299737.29, &apos;New York&apos;], [73994.56, 122782.75, 303319.26, &apos;Florida&apos;], [67532.53, 105751.03, 304768.73, &apos;Florida&apos;], [77044.01, 99281.34, 140574.81, &apos;New York&apos;], [64664.71, 139553.16, 137962.62, &apos;California&apos;], [75328.87, 144135.98, 134050.07, &apos;Florida&apos;], [72107.6, 127864.55, 353183.81, &apos;New York&apos;], [66051.52, 182645.56, 118148.2, &apos;Florida&apos;], [65605.48, 153032.06, 107138.38, &apos;New York&apos;], [61994.48, 115641.28, 91131.24, &apos;Florida&apos;], [61136.38, 152701.92, 88218.23, &apos;New York&apos;], [63408.86, 129219.61, 46085.25, &apos;California&apos;], [55493.95, 103057.49, 214634.81, &apos;Florida&apos;], [46426.07, 157693.92, 210797.67, &apos;California&apos;], [46014.02, 85047.44, 205517.64, &apos;New York&apos;], [28663.76, 127056.21, 201126.82, &apos;Florida&apos;], [44069.95, 51283.14, 197029.42, &apos;California&apos;], [20229.59, 65947.93, 185265.1, &apos;New York&apos;], [38558.51, 82982.09, 174999.3, &apos;California&apos;], [28754.33, 118546.05, 172795.67, &apos;California&apos;], [27892.92, 84710.77, 164470.71, &apos;Florida&apos;], [23640.93, 96189.63, 148001.11, &apos;California&apos;], [15505.73, 127382.3, 35534.17, &apos;New York&apos;], [22177.74, 154806.14, 28334.72, &apos;California&apos;], [1000.23, 124153.04, 1903.93, &apos;New York&apos;], [1315.46, 115816.21, 297114.46, &apos;Florida&apos;], [0.0, 135426.92, 0.0, &apos;California&apos;], [542.05, 51743.15, 0.0, &apos;New York&apos;], [0.0, 116983.8, 45173.06, &apos;California&apos;]], dtype=object) 

Comme nous pouvons le voir dans le résultat ci-dessus, la dernière colonne contient des variables catégorielles qui ne peuvent pas être appliquées directement pour ajuster le modèle. Nous devons donc coder cette variable.

Encodage des variables factices :

Comme nous avons une variable catégorielle (State), qui ne peut pas être directement appliquée au modèle, nous allons donc la coder. Pour coder la variable catégorielle en nombres, nous utiliserons le Encodeur d'étiquettes classe. Mais ce n’est pas suffisant car il existe encore un certain ordre relationnel, ce qui peut créer un modèle erroné. Donc afin de supprimer ce problème, nous utiliserons OneHotEncoder , ce qui créera les variables factices. Ci-dessous le code correspondant :

 #Catgorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_x= LabelEncoder() x[:, 3]= labelencoder_x.fit_transform(x[:,3]) onehotencoder= OneHotEncoder(categorical_features= [3]) x= onehotencoder.fit_transform(x).toarray() 

Ici, nous ne codons qu'une seule variable indépendante, qui est l'état car les autres variables sont continues.

Sortir:

La régression linéaire multiple

Comme nous pouvons le voir dans le résultat ci-dessus, la colonne d'état a été convertie en variables factices (0 et 1). Ici, chaque colonne de variable factice correspond à l'état . Nous pouvons le vérifier en le comparant avec l’ensemble de données d’origine. La première colonne correspond à État de Californie , la deuxième colonne correspond au État de Floride , et la troisième colonne correspond au État de New York .

Note:Nous ne devons pas utiliser toutes les variables factices en même temps, il doit donc être inférieur de 1 au nombre total de variables factices, sinon cela créera un piège à variables factices.

  • Maintenant, nous écrivons une seule ligne de code juste pour éviter le piège des variables factices :
 #avoiding the dummy variable trap: x = x[:, 1:] 

Si nous ne supprimons pas la première variable muette, cela pourrait introduire une multicolinéarité dans le modèle.

La régression linéaire multiple

Comme nous pouvons le voir dans l'image de sortie ci-dessus, la première colonne a été supprimée.

  • Nous allons maintenant diviser l'ensemble de données en ensemble de formation et de test. Le code pour cela est donné ci-dessous :
 # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.2, random_state=0) 

Le code ci-dessus divisera notre ensemble de données en un ensemble de formation et un ensemble de test.

Sortir: Le code ci-dessus divisera l'ensemble de données en ensemble d'entraînement et ensemble de test. Vous pouvez vérifier la sortie en cliquant sur l'option de l'explorateur de variables proposée dans Spyder IDE. L'ensemble de test et l'ensemble d'entraînement ressembleront à l'image ci-dessous :

Ensemble d'essai:

La régression linéaire multiple

Ensemble d'entraînement:

La régression linéaire multiple

Note:Dans MLR, nous n'effectuerons pas de mise à l'échelle des fonctionnalités car elle est prise en charge par la bibliothèque, nous n'avons donc pas besoin de le faire manuellement.

Étape : 2- Ajuster notre modèle MLR à l'ensemble de formation :

Maintenant, nous avons bien préparé notre ensemble de données afin de fournir une formation, ce qui signifie que nous adapterons notre modèle de régression à l'ensemble de formation. Ce sera similaire à ce que nous avons fait dans Modèle de régression linéaire simple. Le code pour cela sera :

 #Fitting the MLR model to the training set: from sklearn.linear_model import LinearRegression regressor= LinearRegression() regressor.fit(x_train, y_train) 

Sortir:

 Out[9]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False) 

Maintenant, nous avons réussi à entraîner notre modèle à l'aide de l'ensemble de données de formation. Dans la prochaine étape, nous testerons les performances du modèle à l'aide de l'ensemble de données de test.

Étape : 3- Prédiction des résultats de l’ensemble de tests :

La dernière étape de notre modèle consiste à vérifier les performances du modèle. Nous le ferons en prédisant le résultat de l’ensemble de test. Pour la prédiction, nous allons créer un y_pred vecteur. Ci-dessous le code correspondant :

 #Predicting the Test set result; y_pred= regressor.predict(x_test) 

En exécutant les lignes de code ci-dessus, un nouveau vecteur sera généré sous l'option de l'explorateur de variables. Nous pouvons tester notre modèle en comparant les valeurs prédites et les valeurs de l'ensemble de tests.

renommer un répertoire Linux

Sortir:

La régression linéaire multiple

Dans la sortie ci-dessus, nous avons prédit l’ensemble de résultats et l’ensemble de tests. Nous pouvons vérifier les performances du modèle en comparant ces deux valeurs indice par indice. Par exemple, le premier index a une valeur prédite de 103015$ profit et test/valeur réelle de 103282$ profit. La différence est seulement de 267 $ , ce qui est une bonne prédiction, donc finalement notre modèle est terminé ici.

  • Nous pouvons également vérifier le score de l'ensemble de données d'entraînement et de l'ensemble de données de test. Ci-dessous le code correspondant :
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Sortir: La note est :

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

Le score ci-dessus indique que notre modèle est précis à 95 % avec l'ensemble de données d'entraînement et à 93 % avec l'ensemble de données de test.

Note:Dans le sujet suivant, nous verrons comment améliorer les performances du modèle en utilisant leÉlimination en arrièreprocessus.

Applications de la régression linéaire multiple :

Il existe principalement deux applications de la régression linéaire multiple :

  • Efficacité de la variable indépendante sur la prédiction :
  • Prédire l’impact des changements :