Logistická regrese

Machine Learning with PySpark

Andrew Collier

Data Scientist, Fathom Data

Logistická křivka

Logistická křivka.

Machine Learning with PySpark

Logistická křivka

Logistická křivka se stínováním nad prahem

Machine Learning with PySpark

Logistická křivka

Logistická křivka se stínováním pod prahem

Machine Learning with PySpark

Logistická křivka

Logistická křivka posunutá doprava

Machine Learning with PySpark

Logistická křivka

Logistická křivka posunutá doleva

Machine Learning with PySpark

Logistická křivka

Logistická křivka s postupným přechodem

Machine Learning with PySpark

Logistická křivka

Logistická křivka s prudkým přechodem

Machine Learning with PySpark

Automobily znovu

Příprava na modelování:

  • sestavte prediktory do jednoho sloupce (nazvaného features) a
  • rozdělte data na trénovací a testovací sadu.
+---+----+------+------+----+-----------+----------------------------------+-----+
|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 with PySpark

Sestavení modelu logistické regrese

from pyspark.ml.classification import LogisticRegression

Vytvoření klasifikátoru logistické regrese.

logistic = LogisticRegression()

Učení z trénovacích dat.

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

Predikce

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

Přesnost a úplnost

Jak dobře model funguje na testovacích datech?

Použijte matici záměn.

+-----+----------+-----+
|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 (positive)
TP / (TP + FP)
0.6666666666666666
# Recall (positive)
TP / (TP + FN)
0.8
Machine Learning with PySpark

Vážené metriky

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

Další metriky:

  • weightedRecall
  • accuracy
  • f1
Machine Learning with PySpark

ROC a AUC

Křivka ROC

ROC = "Receiver Operating Characteristic"

  • TP versus FP
  • práh = 0 (vpravo nahoře)
  • práh = 1 (vlevo dole)

AUC = „plocha pod křivkou"

  • ideálně AUC = 1
Machine Learning with PySpark

Procvičme logistickou regresi!

Machine Learning with PySpark

Preparing Video For Download...