Topluluk

PySpark ile Machine Learning

Andrew Collier

Data Scientist, Fathom Data

Topluluk (ensemble) nedir?

Bu, modellerin bir koleksiyonudur.

Benzer modellerden oluşan bir koleksiyon

Kalabalığın Bilgeliği — bir grubun ortak görüşü, tek bir uzmanınkinden daha iyidir.

PySpark ile Machine Learning

Topluluk çeşitliliği

 

 

 

En iyi ortak kararlar, uzlaşıdan ya da uzlaştırmadan değil, anlaşmazlık ve çekişmeden doğduğu için, çeşitlilik ve bağımsızlık önemlidir.

― James Surowiecki, Kalabalıkların Bilgeliği

PySpark ile Machine Learning

Rastgele Orman

Rastgele Orman — Karar Ağaçlarının bir topluluğu

Model çeşitliliği oluşturma:

  • her ağaç, verinin rassal bir alt kümesiyle eğitilir
  • her düğümde bölme için özelliklerin rassal bir alt kümesi kullanılır

Ormandaki iki ağaç aynı olmamalıdır.

Ağaçlardan oluşan bir koleksiyon

PySpark ile Machine Learning

Bir orman oluşturun

Arabalara geri dönelim: ABD'de üretilmiş (0.0) ya da değil (1.0).

Rastgele Orman sınıflandırıcı oluşturun.

from pyspark.ml.classification import RandomForestClassifier

forest = RandomForestClassifier(numTrees=5)

Eğitim verisine uydurun.

forest = forest.fit(cars_train)
PySpark ile Machine Learning

Ağaçları görmek

Ormandaki ağaçlara nasıl erişilir?

forest.trees
[DecisionTreeClassificationModel (uid=dtc_aa66702a4ce9) of depth 5 with 17 nodes,
 DecisionTreeClassificationModel (uid=dtc_99f7efedafe9) of depth 5 with 31 nodes,
 DecisionTreeClassificationModel (uid=dtc_9306e4a5fa1d) of depth 5 with 21 nodes,
 DecisionTreeClassificationModel (uid=dtc_d643bd48a8dd) of depth 5 with 23 nodes,
 DecisionTreeClassificationModel (uid=dtc_a2d5abd67969) of depth 5 with 27 nodes]

Bunların her biri tek başına tahmin üretebilir.

PySpark ile Machine Learning

Tek tek ağaçların tahminleri

Her ağaç hangi tahminleri üretiyor?

+------+------+------+------+------+-----+
|tree 0|tree 1|tree 2|tree 3|tree 4|label|
+------+------+------+------+------+-----+
|   0.0|   0.0|   0.0|   0.0|   0.0|  0.0| <- tam uzlaşı
|   1.0|   1.0|   0.0|   1.0|   0.0|  0.0|
|   0.0|   0.0|   0.0|   1.0|   1.0|  1.0|
|   0.0|   0.0|   0.0|   1.0|   0.0|  0.0|
|   0.0|   1.0|   1.0|   1.0|   0.0|  1.0|
|   1.0|   1.0|   0.0|   1.0|   1.0|  1.0|
|   1.0|   1.0|   1.0|   1.0|   1.0|  1.0| <- tam uzlaşı
+------+------+------+------+------+-----+
PySpark ile Machine Learning

Uzlaşı tahminleri

Uzlaşı tahmini üretmek için .transform() yöntemini kullanın.

+-----+----------------------------------------+----------+
|label|probability                             |prediction|
+-----+----------------------------------------+----------+
|0.0  |[0.8,0.2]                               |0.0       |
|0.0  |[0.4,0.6]                               |1.0       |
|1.0  |[0.5333333333333333,0.4666666666666666] |0.0       |
|0.0  |[0.7177777777777778,0.28222222222222226]|0.0       |
|1.0  |[0.39396825396825397,0.606031746031746] |1.0       |
|1.0  |[0.17660818713450294,0.823391812865497] |1.0       |
|1.0  |[0.053968253968253964,0.946031746031746]|1.0       |
+-----+----------------------------------------+----------+
PySpark ile Machine Learning

Özellik önemleri

Model şu özellikleri kullanır: cyl, size, mass, length, rpm ve consumption.

Hangileri en/az önemli?

forest.featureImportances
SparseVector(6, {0: 0.0205, 1: 0.2701, 2: 0.108, 3: 0.1895, 4: 0.2939, 5: 0.1181})

Şöyle görünüyor:

  • En önemlisi rpm
  • En az önemlisi cyl.
PySpark ile Machine Learning

Gradyan Artırmalı Ağaçlar

Yinelemeli boosting algoritması:

  1. Bir Karar Ağacı oluşturun ve topluluğa ekleyin.
  2. Eğitim örneklerinin etiketlerini toplulukla tahmin edin.
  3. Tahminleri bilinen etiketlerle karşılaştırın.
  4. Yanlış tahmin edilen eğitim örneklerine daha fazla ağırlık verin.
  5. 1’e dönün.

Model her yinelemede iyileşir.

PySpark ile Machine Learning

Ağaçları boosting ile eğitme

Bir Gradyan Artırmalı Ağaç sınıflandırıcı oluşturun.

from pyspark.ml.classification import GBTClassifier

gbt = GBTClassifier(maxIter=10)

Eğitim verisine uydurun.

gbt = gbt.fit(cars_train)
PySpark ile Machine Learning

Ağaçların karşılaştırılması

Üç ağaç modelini test verisi üzerinde karşılaştıralım.

# Karar Ağacı için AUC
0.5875

# Rastgele Orman için AUC
0.65

# Gradyan Artırmalı Ağaç için AUC
0.65

Topluluk yöntemleri, düz bir Karar Ağacı’ndan daha iyi performans gösterir.

PySpark ile Machine Learning

Tüm modelleri topluluk yapın!

PySpark ile Machine Learning

Preparing Video For Download...