Învățare prin ansamblu

Machine Learning cu modele bazate pe arbori în Python

Elie Kawerk

Data Scientist

Avantajele CART-urilor

  • Ușor de înțeles.

  • Ușor de interpretat.

  • Simplu de utilizat.

  • Flexibilitate: poate descrie dependențe neliniare.

  • Preprocesare: nu este necesară standardizarea sau normalizarea.

Machine Learning cu modele bazate pe arbori în Python

Limitările CART-urilor

  • Clasificare: produce doar limite de decizie ortogonale.

  • Sensibile la variații mici în setul de antrenament.

  • Varianță ridicată: CART-urile nerestricționate pot supraapropia.

  • Soluție: învățare prin ansamblu.

Machine Learning cu modele bazate pe arbori în Python

Învățare prin ansamblu

  • Antrenați modele diferite pe același set de date.

  • Fiecare model face predicții proprii.

  • Meta-model: agregă predicțiile modelelor individuale.

  • Predicție finală: mai robustă și mai puțin predispusă la erori.

  • Rezultate optime: modele performante în moduri diferite.

Machine Learning cu modele bazate pe arbori în Python

Învățare prin ansamblu: explicație vizuală

vizualizare ansamblu

Machine Learning cu modele bazate pe arbori în Python

Învățare prin ansamblu în practică: clasificator prin vot

  • Sarcină de clasificare binară.

  • $N$ clasificatori fac predicții: $P_1$, $P_2$, ..., $P_N$ cu $P_i$ = 0 sau 1.

  • Predicția meta-modelului: vot dur.

Machine Learning cu modele bazate pe arbori în Python

Vot dur

vot dur

Machine Learning cu modele bazate pe arbori în Python

VotingClassifier în sklearn (setul de date Breast-Cancer)

# Import functions to compute accuracy and split data
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

# Import models, including VotingClassifier meta-model
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn.ensemble import VotingClassifier

# Set seed for reproducibility
SEED = 1
Machine Learning cu modele bazate pe arbori în Python

VotingClassifier în sklearn (setul de date Breast-Cancer)

# Split data into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size= 0.3,
                                                    random_state= SEED)
# Instantiate individual classifiers
lr = LogisticRegression(random_state=SEED)
knn = KNN()
dt = DecisionTreeClassifier(random_state=SEED)

# Define a list called classifier that contains the tuples (classifier_name, classifier) classifiers = [('Logistic Regression', lr), ('K Nearest Neighbours', knn), ('Classification Tree', dt)]
Machine Learning cu modele bazate pe arbori în Python
# Iterate over the defined list of tuples containing the classifiers
for clf_name, clf in classifiers:
    #fit clf to the training set
    clf.fit(X_train, y_train)

    # Predict the labels of the test set
    y_pred = clf.predict(X_test)

    # Evaluate the accuracy of clf on the test set
    print('{:s} : {:.3f}'.format(clf_name, accuracy_score(y_test, y_pred)))
Logistic Regression: 0.947
K Nearest Neighbours: 0.930
Classification Tree: 0.930
Machine Learning cu modele bazate pe arbori în Python

VotingClassifier în sklearn (setul de date Breast-Cancer)

# Instantiate a VotingClassifier 'vc'
vc = VotingClassifier(estimators=classifiers) 

# Fit 'vc' to the traing set and predict test set labels
vc.fit(X_train, y_train)   
y_pred = vc.predict(X_test)

# Evaluate the test-set accuracy of 'vc'
print('Voting Classifier: {.3f}'.format(accuracy_score(y_test, y_pred)))
Voting Classifier: 0.953
Machine Learning cu modele bazate pe arbori în Python

Să exersăm!

Machine Learning cu modele bazate pe arbori în Python

Preparing Video For Download...