Regressione logistica

Machine Learning con PySpark

Andrew Collier

Data Scientist, Fathom Data

Curva logistica

Una curva logistica.

Machine Learning con PySpark

Curva logistica

Una curva logistica con area sopra la soglia evidenziata

Machine Learning con PySpark

Curva logistica

Una curva logistica con area sotto la soglia evidenziata

Machine Learning con PySpark

Curva logistica

Una curva logistica spostata a destra

Machine Learning con PySpark

Curva logistica

Una curva logistica spostata a sinistra

Machine Learning con PySpark

Curva logistica

Una curva logistica con transizione graduale

Machine Learning con PySpark

Curva logistica

Una curva logistica con transizione rapida

Machine Learning con PySpark

Auto: ripresa

Prepara i dati per il modello:

  • unisci i predittori in una sola colonna (features)
  • dividi in training e 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 con PySpark

Crea un modello di Regressione Logistica

from pyspark.ml.classification import LogisticRegression

Crea un classificatore di Regressione Logistica.

logistic = LogisticRegression()

Addestra sui dati di training.

logistic = logistic.fit(cars_train)
Machine Learning con PySpark

Predizioni

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 con PySpark

Precision e recall

Quanto funziona il modello sui dati di test?

Guarda la matrice di confusione.

+-----+----------+-----+
|label|prediction|count|
+-----+----------+-----+
|  1.0|       1.0|    8| - VP (veri positivi)
|  0.0|       1.0|    4| - FP (falsi positivi)
|  1.0|       0.0|    2| - FN (falsi negativi)
|  0.0|       0.0|   10| - VN (veri negativi)
+-----+----------+-----+
# Precision (positivi)
TP / (TP + FP)
0.6666666666666666
# Recall (positivi)
TP / (TP + FN)
0.8
Machine Learning con PySpark

Metriche pesate

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

Altre metriche:

  • weightedRecall
  • accuracy
  • f1
Machine Learning con PySpark

ROC e AUC

Una curva ROC

ROC = "Receiver Operating Characteristic"

  • VP contro FP
  • soglia = 0 (in alto a destra)
  • soglia = 1 (in basso a sinistra)

AUC = "Area under the curve"

  • idealmente AUC = 1
Machine Learning con PySpark

Facciamo la Regressione Logistica!

Machine Learning con PySpark

Preparing Video For Download...