Makine Öğrenmesi - Sınıflandırma Algoritmaları
Extreme Gradient Boosting (XGBoost)
Extreme Gradient Boosting (XGBoost), Gradient Boosting algoritmasının verimli ve etkili bir şekilde uygulanmasını sağlayan bir kitaplıktır. Hem regresyon hem de sınıflandırma modellerini eğitmek için kullanılabilir.
XGBoost, çok iyi bir performans sağladığından dolayı en çok kullanulan makine öğrenmesi kütüphanelerinden biridir.
XGBoost modülünü kullanabilmek için ilk olarak xgboost'un indirilmesi gerekmektedir.
pip install xgboost
Sınıflandırma pojelerinde kullanabilmek için "XGBClassifier" kütüphanesinin içe aktarılması gerekmektedir.
from xgboost import XGBClassifier
Söz dizimi: XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1, enable_categorical=False, gamma=0, gpu_id=-1, importance_type=None, interaction_constraints='', learning_rate=0.300000012, max_delta_step=0, max_depth=6, min_child_weight=1, missing=nan, monotone_constraints='()', n_estimators=100, n_jobs=8, num_parallel_tree=1, predictor='auto', random_state=0, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1, tree_method='exact', validate_parameters=1, verbosity=None)
- n_estimators, ağaç sayısını temsil eder.
- max_depth, regresyon tahminleyicilerinin maksiumum derinliğini temsil eder.
- learning_rate, kullanılan öğrenme oranını temsil eder.
Örnek-1: Rasgele olarak sınıflandırma için veri seti oluşturalım(make_classification kütüphanesi ile) ve XGBClassifier kullanalarak tahminleme işlemi yapalım.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score
from sklearn.metrics import confusion_matrix,classification_report
from sklearn.datasets import make_classification
from xgboost import XGBClassifier
#10000 satırlık 10 sütunluk x değeri ve 1 sütunluk y (hedef) değeri.
X,y=make_classification(n_samples=10000,n_features=10)
print("1. satır X değerleri: {}".format(X[0:1]))
print("1. satır y değeri {}".format(y[0:1]))
Çıktı:
1. satır x değerleri: [[ 0.71755029 0.47605473 1.64020509 0.37168963 0.92120077 -0.59775861 -1.57939746 -0.43825229 0.89599757 0.83890191]] 1. satır y değeri [0]
#Train ve test işlemlerinde kullanılacak değerleri ayıralım
x_train,x_test,y_train,y_test=train_test_split(X,y,random_state=13,test_size=.2)
x_train.shape,x_test.shape,y_train.shape,y_test.shape
Çıktı:
((8000, 10), (2000, 10), (8000,), (2000,))
#XGBClassifier ataması yapılır
XGB=XGBClassifier()
#Model eğitme işlemi
XGB.fit(x_train,y_train)
#x_test verilerini tahminleme işlemi
predict_XGB=XGB.predict(x_test)
confusion_matrix(y_test,predict_XGB)
Çıktı:
array([[864, 130], [168, 838]], dtype=int64)
#confusion_matrix değerlerinin grafikselleştirmesi
sns.heatmap(confusion_matrix(y_test,predict_XGB),annot=True,linewidths=2)
Çıktı:
#Sınıflandırma raporu
print(classification_report(y_test,predict_XGB))
Çıktı:
precision recall f1-score support 0 0.84 0.87 0.85 994 1 0.87 0.83 0.85 1006 accuracy 0.85 2000 macro avg 0.85 0.85 0.85 2000 weighted avg 0.85 0.85 0.85 2000
Sınıflandırma raporunda da görüldüğü gibi XGBClassifier algoritması ile girilen değerlere göre hedef sütununda bulunan değerleri doğru tahmin etme yüzdesi: accuracy değeri göz önüne alınırsa %85 olarak bulundu.