로지스틱 회귀

PySpark로 하는 Machine Learning

Andrew Collier

Data Scientist, Fathom Data

로지스틱 곡선

로지스틱 곡선

PySpark로 하는 Machine Learning

로지스틱 곡선

임계값 위 영역이 음영 처리된 로지스틱 곡선

PySpark로 하는 Machine Learning

로지스틱 곡선

임계값 아래 영역이 음영 처리된 로지스틱 곡선

PySpark로 하는 Machine Learning

로지스틱 곡선

오른쪽으로 이동한 로지스틱 곡선

PySpark로 하는 Machine Learning

로지스틱 곡선

왼쪽으로 이동한 로지스틱 곡선

PySpark로 하는 Machine Learning

로지스틱 곡선

완만한 전이의 로지스틱 곡선

PySpark로 하는 Machine Learning

로지스틱 곡선

급격한 전이의 로지스틱 곡선

PySpark로 하는 Machine Learning

자동차 데이터 다시 보기

모델링 준비:

  • 예측 변수를 단일 열(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로 하는 Machine Learning

로지스틱 회귀 모델 구축

from pyspark.ml.classification import LogisticRegression

로지스틱 회귀 분류기를 생성합니다.

logistic = LogisticRegression()

학습 데이터로 학습합니다.

logistic = logistic.fit(cars_train)
PySpark로 하는 Machine Learning

예측 결과

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로 하는 Machine Learning

정밀도와 재현율

모델이 테스트 데이터에서 얼마나 잘 작동하나요?

혼동 행렬을 확인합니다.

+-----+----------+-----+
|label|prediction|count|
+-----+----------+-----+
|  1.0|       1.0|    8| - TP (진양성)
|  0.0|       1.0|    4| - FP (위양성)
|  1.0|       0.0|    2| - FN (위음성)
|  0.0|       0.0|   10| - TN (진음성)
+-----+----------+-----+
# Precision (positive)
TP / (TP + FP)
0.6666666666666666
# Recall (positive)
TP / (TP + FN)
0.8
PySpark로 하는 Machine Learning

가중 지표

from pyspark.ml.evaluation import MulticlassClassificationEvaluator

evaluator = MulticlassClassificationEvaluator()

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

기타 지표:

  • weightedRecall
  • accuracy
  • f1
PySpark로 하는 Machine Learning

ROC와 AUC

ROC 곡선

ROC = "Receiver Operating Characteristic"

  • TP 대 FP
  • 임계값 = 0 (오른쪽 위)
  • 임계값 = 1 (왼쪽 아래)

AUC = "Area under the curve"

  • 이상적 AUC = 1
PySpark로 하는 Machine Learning

로지스틱 회귀 실습해 봅시다!

PySpark로 하는 Machine Learning

Preparing Video For Download...