Les arbres de décision
La régression linéaire est l'un des algorithmes les plus connus. Elle est toujours enseigné au lycée. Il permet de résoudre des problèmes de régression de type linéaire.
Définition
La régression linéaire est un modèle de régression linéaire est un modèle de régression qui cherche à établir une relation linéaire entre une variable, dite expliquée, et une ou plusieurs variables, dites explicatives.
Wikipédia : https://fr.m.wikipedia.org/wiki/R%C3%A9gression_lin%C3%A9aire
La régression linéaire repose sur l'hypothèse d'une relation linéaire entre la variable dépendante y et les prédicteurs X. La valeur de y serait donc une combinaison linéaire des prédicteurs.
La solution d'une régression est obtenue grâce à la méthode des moindres carrés ordinaires qui consiste à minimiser les erreurs de prédictions.
On appelle résidu (ou erreur) la différence entre la valeur prédite et la valeur réelle. On note epsilon = y - ŷ
https://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares
Principe de la régression linéaire
1. Problème
La régression linéaire permet de répondre à des problèmes linéaires. L'utilisation de la régression linéaire suppose qu'il existe une relation linéaire entre les variables explicatives et la variable expliquée.
Exemples:
- Prédire la valeur d'un bien
- Prédire le poids en fonction de la taille
- Prédire la température sur la base
2. Données
Les variables explicatives sont désignées par X et la variable expliquée par Y. X est une matrice de taille (n, p), n étant la taille des données et p le nombre de variables.
3. Fonction de perte
L'erreur de prédiction sur la moyenne de la somme des carrées des erreurs. MAE
4. Méthode d'optimisation
La solution d'une régression linéaire peut être déterminée de manière analytique. Il est possible d'apprendre une régression linéaire avec une méthode itérative, dans ce cas on utilise généralement la descente de gradient.
- Solution analytique (approche directe)
- Descente de gradient (approche itérative)
Librairies
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, f1_score, confusion_matrix
Importation des données
Le jeu de donnés contient des donnés récuellies chez des patients, il comporte 100 lignes et 9 colonnes. La colonne diagnosis_result est la variable à expliquer qui represente le resultat du diagnostic. Les 8 dernières colonnes représentent les variables explicatives.
Exploration
Variable à expliquer
Les classes M et B sont déséquilibrées M(62) et B(38), il faudra en tenir compte dans la suite. Un modèle naïf qui prédit la classe M aurait une accuracy de 62% sans avoir appris les données.
Variables explicatives
Les variables ont des échelles (ou ordres de grandeur) différentes, il faut supprimer la dimension
Centrage et Réduction
- Centrer une variable consiste à retrancher la moyenne de toutes les données, la nouvelle moyenne est 0.
- Réduire (ou normliser) une variable consiste à diviser toutes les données par l'écart-type, le nouvel écart-type est 1.
Encodage de la variable explicative
On encode les valeurs B et M en 0 et 1.
L'argument stratify c'est pour indiquer que l'on souhaite que la séparation soit équilibrée suivant la variable diagnosis_result.
Régression logistique avec Scikit-learn
Évaluation
Plusieurs métriques peuvent être utilsés pour évaluer un modèle de classification (binaire). Le plus utilsé est l'accuracy. * Accuracy: le taux de bonnes prédictions. Lorsque les classes sont déséquilibrées, elle peut être trompeuse. * Précision: le taux de bonnes prédictions sur les prédictions positives. * Rappel: le taux de bonnes prédictions sur les données positives. * F1_score:
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
confmat = confusion_matrix(y_test, y_pred)
print('Accuracy: %0.2f' % acc)
print('F1 score: %0.2f' % f1)
plt.matshow(confmat, cmap=plt.cm.Greens, alpha=.3)
for i in range(confmat.shape[0]):
for j in range(confmat.shape[1]):
plt.text(x=j, y=i, s=confmat[i, j], va='center', ha='center')
plt.xlabel('Valeur prédite')
plt.ylabel('Vraie valeur')
plt.show()
Interprétaion
Le premier axe conserve 41,2% le deuxième axe 19,4% et le troisème axe 14,3%. Les trois axes permettent de conserver environ 75% de variance des données. Si l'on souhaite conserver plus de variance, on peut ajouter un axe supplémentaire ou plus. Remarquons qu'il est peu pertinent de conserver toute la variance, autant travailler avec les données initiales, il ne faut pas perdre de vue que l'un des objectifs de l'ACP, c'est la réduction du nombre de dimensions.
Pour signaler un problème que vous avez rencontré durant l'exécution des cahiers, merci de créer une issue
. Assurez-vous que vous avez les bonnes versions des packages*