Логистическая регрессия

Машинное обучение с PySpark

Andrew Collier

Data Scientist, Fathom Data

Логистическая кривая

Логистическая кривая.

Машинное обучение с PySpark

Логистическая кривая

Логистическая кривая с выделением выше порогового значения

Машинное обучение с PySpark

Логистическая кривая

Логистическая кривая с выделением ниже порогового значения

Машинное обучение с PySpark

Логистическая кривая

Логистическая кривая, сдвинутая вправо

Машинное обучение с PySpark

Логистическая кривая

Логистическая кривая, сдвинутая влево

Машинное обучение с PySpark

Логистическая кривая

Логистическая кривая с плавным переходом

Машинное обучение с PySpark

Логистическая кривая

Логистическая кривая с крутым переходом

Машинное обучение с PySpark

Снова о Cars

Подготовка к моделированию:

  • объединить предикторы в один столбец (features) и
  • разделить данные на обучающую и тестовую выборки.
+---+----+------+------+----+-----------+----------------------------------+-----+
|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  |
+---+----+------+------+----+-----------+----------------------------------+-----+
Машинное обучение с PySpark

Построение модели логистической регрессии

from pyspark.ml.classification import LogisticRegression

Создание классификатора логистической регрессии.

logistic = LogisticRegression()

Обучение на тренировочных данных.

logistic = logistic.fit(cars_train)
Машинное обучение с PySpark

Предсказания

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]|
+-----+----------+---------------------------------------+
Машинное обучение с PySpark

Точность и полнота

Насколько хорошо модель работает на тестовых данных?

Смотрим матрицу ошибок.

+-----+----------+-----+
|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
Машинное обучение с PySpark

Взвешенные метрики

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

Другие метрики:

  • weightedRecall
  • accuracy
  • f1
Машинное обучение с PySpark

ROC и AUC

ROC-кривая

ROC = «Receiver Operating Characteristic»

  • TP против FP
  • порог = 0 (верхний правый угол)
  • порог = 1 (нижний левый угол)

AUC = «Area under the curve»

  • в идеале AUC = 1
Машинное обучение с PySpark

Давайте потренируемся!

Машинное обучение с PySpark

Preparing Video For Download...