Modern sınıflandırma süreçleri genellikle, her bir kaydı ve veri noktasını yalnızca bir etiket atamak yerine birden fazla kategoriye sınıflandırmayı gerektirir.
Açık kaynaklı Python kütüphaneleri, örneğin scikit-learn, bu çok etiketli sorunlar için modeller geliştirmeyi kolaylaştırır. Birçok model, çok etiketli veri setleri için yerleşik destek sunarken, destek sunmayanlar için basit bir scikit-learn yardımcı fonksiyonu kullanarak bu durumlar için de uygulanabilir.
Ancak, bu çok etiketli modelleri eğitmek, hesaplama açısından maliyetlidir ve CPU tabanlı altyapılar, her yıl işletmelerin ürettiği veri hacmini karşılamakta yetersiz kalmaktadır.
RAPIDS, GPU hızlandırmalı veri bilimi ve yapay zeka kütüphanelerinden oluşan bir koleksiyondur. cuML, Python için GPU hızlandırmalı bir makine öğrenimi kütüphanesidir ve scikit-learn ile uyumlu bir API sunar.
Bu yazıda, RAPIDS cuML‘in, hızlandırılmış hesaplama ile çok etiketli makine öğrenimi iş akışları için nasıl büyük hız artışları sağladığını gösteriyoruz.
Neden Çok Etiketli Sınıflandırma?
Bazı işletme örneklerinde, her kayıt için tek bir etiket tahmini yapmak hedeflenir. Örneğin, ödeme işlemcileri, bir işlemin geçerli veya sahte olduğunu belirlemelidir; üreticiler, belirli ürünleri sensör veya kamera verilerinden tanımlayarak uygun şekilde dağıtım merkezinde yönlendirmek isteyebilir.
Bu senaryoların her birinde, etiketler birbirini dışlar. Bir işlem ya geçerlidir ya da sahte — ancak ikisi birden olamaz.
Çok etiketli sınıflandırma, birbirini dışlamayan kategorilerin söz konusu olduğu durumlarda kullanılır.
Örneğin, bir sağlık kuruluşu, aynı hasta verilerinden birden fazla hastalığın varlığını tahmin etmek isteyebilir. Ya da bir gazete, bir makaleyi hem finans hem de dünya haberleri olarak sınıflandırmak isteyebilir ki böylece bir öneri sistemi, onu her iki bölümün okuyucularına sunabilsin.
Çok etiketli sınıflandırma, bu tür problemleri daha etkili bir şekilde yönetmemizi sağlar ve bir etiket seçmek zorunda kalmadan, daha fazla ayrıntıyı korumamıza olanak tanır.
RAPIDS cuML ile Çok Etiketli Sınıflandırma
RAPIDS cuML, mevcut scikit-learn iş akışlarına entegre bir şekilde kullanılabilir.
Scikit-learn gibi, bazı RAPIDS cuML tahmincileri, örneğin KNeighborsClassifier, çok etiketli sınıflandırma için yerleşik destek sunar. Aşağıdaki örnekte, scikit-learn kullanarak sentetik bir çok etiketli veri seti oluşturuyoruz ve bunu doğrudan cuML’in KNeighborsClassifier’ı ile kullanıyoruz.
from sklearn.datasets import make_multilabel_classification
from cuml.neighbors import KNeighborsClassifier
X, y = make_multilabel_classification(
n_samples=10000,
n_features=20,
n_classes=5,
random_state=12
)
clf = KNeighborsClassifier(n_neighbors=10).fit(X, y)
preds = clf.predict(X)
preds[:5]
array([[0, 0, 1, 0, 0],
[0, 1, 1, 1, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 0, 1, 0, 0]])
Veri setimizdeki her kaydın beş kategoriye kadar ait olabileceğinden (n_classes=5
), tahmincimiz her bir satır için beş tahmin sunmaktadır.
Birden fazla etiketi desteklemeyen, ancak Sınıflandırma için Destek Vektör Makineleri gibi modelleri kullanmak için, scikit-learn MultiOutputClassifier yardımcı fonksiyonunu sunar. Bu yardımcı fonksiyonu, cuML tahmincileri ile de scikit-learn tahmincileri ile olduğu gibi kullanabiliriz.
Bu yardımcı fonksiyonu, her bir beş kategori için ayrı bir model eğitilmesini gerektirir ve bu, hesaplama taleplerini beş kat artırır. Bu nedenle, hızlandırılmış hesaplama bu senaryolarda daha da hayati bir önem kazanır.
from sklearn.datasets import make_multilabel_classification
from sklearn.multioutput import MultiOutputClassifier
from cuml.svm import SVC
X, y = make_multilabel_classification(
n_samples=10000,
n_features=20,
n_classes=5,
random_state=12
)
base = cuml.svm.SVC()
clf = MultiOutputClassifier(base).fit(X, y)
preds = clf.predict(X)
preds[:5]
array([[0, 0, 1, 0, 0],
[0, 1, 1, 1, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 0, 1, 0, 0]])
Sonuç
Birçok gerçek dünya makine öğrenimi sorunu, çok etiketli sınıflandırmayı kapsamaktadır; ancak CPU tabanlı işleme, Python ekosisteminden araçlar kullanıldığında büyüyen veri boyutlarına ayak uydurmakta zorlanmaktadır.
RAPIDS cuML, bu ekosisteme mükemmel bir uyum sağlar ve çok etiketli sınıflandırma modellerini eğitmek için hızlandırılmış hesaplamalardan yararlanmayı kolaylaştırır.
Daha fazla bilgi edinmek ve favori tahmincinizin yerleşik çok etiketli sınıflandırma desteği olup olmadığını öğrenmek için cuML belgelerini ziyaret edin.