邏輯斯回歸

使用 PySpark 的機器學習

Andrew Collier

Data Scientist, Fathom Data

邏輯斯曲線

一條邏輯斯曲線。

使用 PySpark 的機器學習

邏輯斯曲線

閾值以上區域的邏輯斯曲線陰影

使用 PySpark 的機器學習

邏輯斯曲線

閾值以下區域的邏輯斯曲線陰影

使用 PySpark 的機器學習

邏輯斯曲線

向右平移的邏輯斯曲線

使用 PySpark 的機器學習

邏輯斯曲線

向左平移的邏輯斯曲線

使用 PySpark 的機器學習

邏輯斯曲線

平滑轉換的邏輯斯曲線

使用 PySpark 的機器學習

邏輯斯曲線

快速轉換的邏輯斯曲線

使用 PySpark 的機器學習

重訪汽車資料

建模前準備:

  • 將所有預測變數組成單一欄位(名為 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 的機器學習

建立 Logistic Regression 模型

from pyspark.ml.classification import LogisticRegression

建立一個 Logistic Regression 分類器。

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 的機器學習

Precision 與 Recall

模型在測試資料上的表現如何?

查看混淆矩陣。

+-----+----------+-----+
|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 的機器學習

加權指標

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
  • threshold = 0(右上)
  • threshold = 1(左下)

AUC = 「Area under the curve」

  • 理想情況 AUC = 1
使用 PySpark 的機器學習

一起來做 Logistic Regression!

使用 PySpark 的機器學習

Preparing Video For Download...