Regresión logística

Machine learning con PySpark

Andrew Collier

Data Scientist, Fathom Data

Curva logística

Una curva logística.

Machine learning con PySpark

Curva logística

Curva logística con sombreado por encima del umbral

Machine learning con PySpark

Curva logística

Curva logística con sombreado por debajo del umbral

Machine learning con PySpark

Curva logística

Curva logística desplazada a la derecha

Machine learning con PySpark

Curva logística

Curva logística desplazada a la izquierda

Machine learning con PySpark

Curva logística

Curva logística con transición gradual

Machine learning con PySpark

Curva logística

Curva logística con transición rápida

Machine learning con PySpark

Coches: segunda mirada

Prepárate para modelar:

  • reúne los predictores en una sola columna (features) y
  • divide los datos en conjuntos de entrenamiento y prueba.
+---+----+------+------+----+-----------+----------------------------------+-----+
|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 modelo de Regresión logística

from pyspark.ml.classification import LogisticRegression

Crea un clasificador de Regresión logística.

logistic = LogisticRegression()

Entrena con los datos de entrenamiento.

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

Predicciones

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

Precisión y exhaustividad

¿Qué tal funciona el modelo en los datos de prueba?

Consulta la matriz de confusión.

+-----+----------+-----+
|label|prediction|count|
+-----+----------+-----+
|  1.0|       1.0|    8| - TP (verdadero positivo)
|  0.0|       1.0|    4| - FP (falso positivo)
|  1.0|       0.0|    2| - FN (falso negativo)
|  0.0|       0.0|   10| - TN (verdadero negativo)
+-----+----------+-----+
# Precisión (positivo)
TP / (TP + FP)
0.6666666666666666
# Exhaustividad (positivo)
TP / (TP + FN)
0.8
Machine learning con PySpark

Métricas ponderadas

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

Otras métricas:

  • weightedRecall
  • accuracy
  • f1
Machine learning con PySpark

ROC y AUC

Curva ROC

ROC = «Receiver Operating Characteristic»

  • TP frente a FP
  • umbral = 0 (arriba derecha)
  • umbral = 1 (abajo izquierda)

AUC = «Area under the curve»

  • idealmente AUC = 1
Machine learning con PySpark

¡Hagamos Regresión logística!

Machine learning con PySpark

Preparing Video For Download...