Régression logistique

Apprentissage automatique avec PySpark

Andrew Collier

Data Scientist, Fathom Data

Courbe logistique

Une courbe logistique.

Apprentissage automatique avec PySpark

Courbe logistique

Une courbe logistique avec zone au-dessus du seuil

Apprentissage automatique avec PySpark

Courbe logistique

Une courbe logistique avec zone en dessous du seuil

Apprentissage automatique avec PySpark

Courbe logistique

Une courbe logistique décalée vers la droite

Apprentissage automatique avec PySpark

Courbe logistique

Une courbe logistique décalée vers la gauche

Apprentissage automatique avec PySpark

Courbe logistique

Une courbe logistique à transition progressive

Apprentissage automatique avec PySpark

Courbe logistique

Une courbe logistique à transition rapide

Apprentissage automatique avec PySpark

Voitures : retour

Préparer le modèle :

  • regrouper les prédicteurs en une seule colonne (features) et
  • scinder les données en ensembles d'entraînement et de test.
+---+----+------+------+----+-----------+----------------------------------+-----+
|cyl|size|mass  |length|rpm |consumption|features                          |label|
+---+----+------+------+----+-----------+----------------------------------+-----+
|6  |3.0 |1451.0|4.775 |5200|9.05       |[6.0,3.0,1451.0,4.775,5200.0,9.05]|1.0  |
|4  |2.2 |1129.0|4.623 |5200|6.53       |[4.0,2.2,1129.0,4.623,5200.0,6.53]|0.0  |
|4  |2.2 |1399.0|4.547 |5600|7.84       |[4.0,2.2,1399.0,4.547,5600.0,7.84]|1.0  |
|4  |1.8 |1147.0|4.343 |6500|7.84       |[4.0,1.8,1147.0,4.343,6500.0,7.84]|0.0  |
|4  |1.6 |1111.0|4.216 |5750|9.05       |[4.0,1.6,1111.0,4.216,5750.0,9.05]|0.0  |
+---+----+------+------+----+-----------+----------------------------------+-----+
Apprentissage automatique avec PySpark

Créer un modèle de régression logistique

from pyspark.ml.classification import LogisticRegression

Créez un classifieur de régression logistique.

logistic = LogisticRegression()

Apprenez à partir des données d'entraînement.

logistic = logistic.fit(cars_train)
Apprentissage automatique avec PySpark

Prédictions

prediction = logistic.transform(cars_test)
+-----+----------+---------------------------------------+
|label|prediction|probability                            |
+-----+----------+---------------------------------------+
|0.0  |0.0       |[0.8683802216422138,0.1316197783577862]|
|0.0  |1.0       |[0.1343792056399585,0.8656207943600416]|
|0.0  |0.0       |[0.9773546766387631,0.0226453233612368]|
|1.0  |1.0       |[0.0170508265586195,0.9829491734413806]|
|1.0  |0.0       |[0.6122241729292978,0.3877758270707023]|
+-----+----------+---------------------------------------+
Apprentissage automatique avec PySpark

Précision et rappel

Quelle performance sur les données de test ?

Consultez la matrice de confusion.

+-----+----------+-----+
|label|prediction|count|
+-----+----------+-----+
|  1.0|       1.0|    8| - TP (vrai positif)
|  0.0|       1.0|    4| - FP (faux positif)
|  1.0|       0.0|    2| - FN (faux négatif)
|  0.0|       0.0|   10| - TN (vrai négatif)
+-----+----------+-----+
# Précision (positif)
TP / (TP + FP)
0.6666666666666666
# Rappel (positif)
TP / (TP + FN)
0.8
Apprentissage automatique avec PySpark

Métriques pondérées

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

evaluator.evaluate(prediction, {evaluator.metricName: 'weightedPrecision'})
0.7638888888888888

Autres métriques :

  • weightedRecall
  • accuracy
  • f1
Apprentissage automatique avec PySpark

ROC et AUC

Une courbe ROC

ROC = « Receiver Operating Characteristic »

  • TP versus FP
  • seuil = 0 (en haut à droite)
  • seuil = 1 (en bas à gauche)

AUC = « Area under the curve »

  • idéalement AUC = 1
Apprentissage automatique avec PySpark

Passons à la régression logistique !

Apprentissage automatique avec PySpark

Preparing Video For Download...