Régression logistique

Machine Learning avec PySpark

Andrew Collier

Data Scientist, Fathom Data

Courbe logistique

Une courbe logistique.

Machine Learning avec PySpark

Courbe logistique

Une courbe logistique ombrée au‑dessus du seuil

Machine Learning avec PySpark

Courbe logistique

Une courbe logistique ombrée sous le seuil

Machine Learning avec PySpark

Courbe logistique

Une courbe logistique décalée vers la droite

Machine Learning avec PySpark

Courbe logistique

Une courbe logistique décalée vers la gauche

Machine Learning avec PySpark

Courbe logistique

Une courbe logistique à transition graduelle

Machine Learning avec PySpark

Courbe logistique

Une courbe logistique à transition rapide

Machine Learning avec PySpark

Voitures : retour

Préparer la modélisation :

  • regrouper les prédicteurs dans une seule colonne (features)
  • 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  |
+---+----+------+------+----+-----------+----------------------------------+-----+
Machine Learning avec PySpark

Construire un modèle de régression logistique

from pyspark.ml.classification import LogisticRegression

Créer un classifieur de régression logistique.

logistic = LogisticRegression()

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

logistic = logistic.fit(cars_train)
Machine Learning 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]|
+-----+----------+---------------------------------------+
Machine Learning avec PySpark

Précision et rappel

Quelle est la performance du modèle sur les données de test ?

Consulter la matrice de confusion.

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

Mesures pondérées

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

Autres mesures :

  • weightedRecall
  • accuracy
  • f1
Machine Learning avec PySpark

ROC et AUC

Une courbe ROC

ROC = « Receiver Operating Characteristic »

  • VP vs FP
  • seuil = 0 (haut droit)
  • seuil = 1 (bas gauche)

AUC = « Area under the curve »

  • idéalement AUC = 1
Machine Learning avec PySpark

Faisons de la régression logistique !

Machine Learning avec PySpark

Preparing Video For Download...