Logistische regressie

Machine Learning met PySpark

Andrew Collier

Data Scientist, Fathom Data

Logistische curve

Een logistische curve.

Machine Learning met PySpark

Logistische curve

Een logistische curve met arcering boven de drempel

Machine Learning met PySpark

Logistische curve

Een logistische curve met arcering onder de drempel

Machine Learning met PySpark

Logistische curve

Een logistische curve naar rechts verschoven

Machine Learning met PySpark

Logistische curve

Een logistische curve naar links verschoven

Machine Learning met PySpark

Logistische curve

Een logistische curve met geleidelijke overgang

Machine Learning met PySpark

Logistische curve

Een logistische curve met snelle overgang

Machine Learning met PySpark

Auto’s opnieuw bekeken

Voorbereiden op modelleren:

  • zet de voorspellers in één kolom (features)
  • splits in train- en testset.
+---+----+------+------+----+-----------+----------------------------------+-----+
|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 met PySpark

Een Logistic Regression-model bouwen

from pyspark.ml.classification import LogisticRegression

Maak een Logistic Regression-classifier.

logistic = LogisticRegression()

Leer van de trainingsdata.

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

Voorspellingen

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

Precisie en recall

Hoe goed presteert het model op de testdata?

Bekijk de confusion matrix.

+-----+----------+-----+
|label|prediction|count|
+-----+----------+-----+
|  1.0|       1.0|    8| - TP (true positive)
|  0.0|       1.0|    4| - FP (false positive)
|  1.0|       0.0|    2| - FN (false negative)
|  0.0|       0.0|   10| - TN (true negative)
+-----+----------+-----+
# Precision (positief)
TP / (TP + FP)
0.6666666666666666
# Recall (positief)
TP / (TP + FN)
0.8
Machine Learning met PySpark

Gewogen metrics

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

Andere metrics:

  • weightedRecall
  • accuracy
  • f1
Machine Learning met PySpark

ROC en AUC

Een ROC-curve

ROC = "Receiver Operating Characteristic"

  • TP versus FP
  • drempel = 0 (rechtsboven)
  • drempel = 1 (linksonder)

AUC = "Area under the curve"

  • idealiter AUC = 1
Machine Learning met PySpark

Aan de slag met Logistic Regression!

Machine Learning met PySpark

Preparing Video For Download...