Plot ROC-AUC untuk Model Multiclass dengan Python

Penjelasan Singkat ROC-AUC

ROC-AUC merupakan salah satu metode pengukuran untuk melihat performa klasifikasi model machine learning. ROC-AUC adalah area yang berada di bawah ROC curve. Fungsinya untuk membantu kita menentukan specifity dan sensitivity model.

Untuk model multiclass, ROC curve dapat diplot dengan dua metode yaitu OVO (One Versus One) dan OVR (One versus Rate). Kali ini yang akan kita gunakan adalah OVR. Sehingga Plot ROC curve akan memiliki jumlah yang sama dengan jumlah kelas klasifkasi. Masing-masing ROC Curve akan sekalian dihitung AUC score-nya.

Plot ROC-AUC Model Multiclass

Library python yang digunakan untuk membantu kita membuat plot ROC-AUC kali ini adalah Yellowbrick. Jika sobat belum pernah mendengar apa itu yellowbrick, singkatnya yellowbrick itu merupakan library yang digunakan untuk visualisasi data machine learning. Pertama kita perlu menginstall terlebih dahulu librarynya,

pip install yellowbrick

Di dalam yellowbrick sudah terdapat method yang bisa digunakan untuk melakukan plot ROC-AUC multiclass. Method tersebut bernama roc_auc. Prosesnya cukup mudah, kita hanya mendeklarasikan visualizer yang berisi model klasifikasi beserta data train dan data testnya.

Langsung saja berikut codenya,

from yellowbrick.classifier.rocauc import roc_auc
from sklearn.datasets import load_wine
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

# Mempersiapkan Dataset
data = load_wine()
X, y = data.data, data.target

# Membagi data menjadi train dan test
X_train, X_test, y_train, y_test = train_test_split(X,y)

# Instantiate the visualizer with the classification model
model = DecisionTreeClassifier()
roc_auc(model, X_train, y_train,
        X_test=X_test, y_test=y_test,
        classes=['class_0', 'class_1', 'class_2'])
plt.savefig('roc-auc.png')

Perlu diperhatikan bahwa model yang bisa menggunakan method tersebut adalah model klasifikasi yang berasal dari scikit-learn. Untuk model yang berasal dari  library lain saya belum mencoba. Jika sobat mau mencobanya silahkan saja. Mungkin ini waktunya sobat untuk bereksperimen hehe.

Untuk hasil dari code diatas adalah seperti berikut,


Pada gambar hasil, selain terdapat ROC curve dari ketiga kelas, terdapat juga micro-average dan macro-average ROC Curve. Jika sobat belum tahu, Macro-average itu berarti ROC-AUC untuk setiap kelas dihitung sendiri-sendiri terlebih dahulu kemudian baru dirata-rata. Sedangkan micro-average berarti ROC-AUC dihitung setelah nilai semua kelas digabungkan.