Support Vector Machines (SVM) hakkında konuşalım ve bunu anlamak için bir örnek veri seti üzerinden Python koduyla açıklayalım.
SVM, karmaşık sınıflandırma problemlerini çözmek için kullanılan güçlü ve esnek bir makine öğrenimi modelidir. Temel fikri, veri noktalarını ayıran en iyi hiperdüzlemi (veya çizgiyi) bulmaktır. Bu hiperdüzlem, sınıfları birbirinden ayıran sınır olarak düşünülebilir.
Örnek bir veri seti olarak, Scikit-Learn kütüphanesindeki ünlü 'iris' veri setini kullanalım. Bu veri seti, çiçeklerin (iris türleri) özelliklerini (taç yaprak ve çanak yaprak boyutları gibi) içerir ve amacımız bu özellikleri kullanarak çiçek türlerini sınıflandırmaktır.
İşte bu veri seti üzerinde bir SVM modeli eğitmek için basit bir Python kodu:
Gerekli kütüphaneleri içe aktarın.
Iris veri setini yükleyin.
Veri setini eğitim ve test setlerine ayırın.
SVM modelini oluşturun ve eğitin.
Modelin performansını değerlendirin.
Şimdi bu adımları kod ile görelim.
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import classification_report
# Iris veri setini yükleyelim
iris = datasets.load_iris()
X = iris.data # Özellikler (features)
y = iris.target # Etiketler (labels)
# Veri setini eğitim ve test setlerine ayıralım
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# SVM modelini oluşturalım ve eğitelim
model = svm.SVC()
model.fit(X_train, y_train)
# Modelin test seti üzerindeki performansını değerlendirelim
predictions = model.predict(X_test)
report = classification_report(y_test, predictions)
print(report)
Bu kod, Scikit-Learn kütüphanesini kullanarak SVM modelini eğitmenize ve test etmenize yardımcı olur. Öncelikle iris veri setini yükleyip, eğitim ve test setlerine ayırıyoruz. Ardından SVC (Support Vector Classifier) kullanarak modeli oluşturuyor ve eğitiyoruz. Son olarak, modelin test verisi üzerindeki performansını classification_report ile değerlendiriyoruz. Bu raporda, modelin her sınıf için kesinlik (precision), duyarlılık (recall) ve F1-skoru gibi metrikleri görebilirsiniz.
Kodumuz başarıyla çalıştı ve SVM modelimizin performansını değerlendirdik. İşte modelin test seti üzerindeki performans raporu:
Sınıf 0 (Iris Setosa) için:
Precision (Kesinlik): 1.00
Recall (Duyarlılık): 1.00
F1-Skoru: 1.00
Sınıf 1 (Iris Versicolor) için:
Precision: 0.83
Recall: 0.91
F1-Skoru: 0.87
Sınıf 2 (Iris Virginica) için:
Precision: 0.94
Recall: 0.89
F1-Skoru: 0.91
Genel olarak modelin doğruluk oranı (accuracy) %93'tür.
Bu rapor, modelimizin her bir sınıfı ne kadar iyi sınıflandırdığını gösteriyor. Precision, modelimizin verdiği doğru pozitif tahminlerin oranını; recall, gerçekte pozitif olan örneklerin ne kadarının doğru tahmin edildiğini; ve F1-skoru ise precision ve recall'un harmonik ortalamasını temsil ediyor.
Modelimiz genel olarak oldukça iyi performans göstermiş, özellikle Iris Setosa türünü mükemmel bir şekilde sınıflandırmış. Diğer türlerde de iyi sonuçlar elde etmiş, bu da SVM'nin karmaşık sınıflandırma problemlerinde ne kadar etkili olduğunu gösteriyor.
İşte SVM modelinin Iris veri seti üzerindeki karar sınırlarını gösteren bir grafik. Bu grafikte, Iris veri setinin iki ana bileşene indirgenmiş hali kullanıldı (PCA ile boyut indirgemesi yapıldı).
Farklı renkler, SVM modelinin oluşturduğu farklı karar bölgelerini gösteriyor. Her bölge, bir iris çiçeği türüne karşılık geliyor.
Noktalar, veri setindeki gerçek iris çiçeklerini temsil ediyor ve her birinin rengi, gerçek sınıfını (türünü) gösteriyor.
Bu görselleştirme, SVM'nin nasıl karmaşık veri setlerinde etkili sınıflandırma yapabildiğini görsel olarak anlamanıza yardımcı olur. Model, farklı sınıfları ayırmak için karar sınırlarını etkili bir şekilde belirlemiş görünüyor.
Sınıflandırmayı neye göre yapar? Bir aptala anlatır gibi anlatır mısın?
Tabii ki, Support Vector Machines (SVM) ile ilgili sınıflandırma sürecini basit bir şekilde açıklamaya çalışayım.
SVM, verileri sınıflandırmak için bir karar sınırı oluşturur. Bunu yaparken, her bir veri noktasını bir nokta olarak düşünebiliriz ve bu noktaların farklı sınıflara ait olduğunu hayal edebiliriz. SVM'nin amacı, bu noktaları birbirinden ayıracak bir çizgi (2 boyutlu veriler için) veya düzlem (3 boyutlu veya daha fazla boyutlu veriler için) çizmektir.
Basit Bir Örnek:
Diyelim ki, bir grup mavi ve bir grup kırmızı noktamız var ve bu noktaları bir kağıt üzerinde görselleştirelim. Mavi noktalar bir sınıfı, kırmızı noktalar ise başka bir sınıfı temsil ediyor. Şimdi, bu iki grubu birbirinden ayıracak en iyi çizgiyi çizmeye çalışacağız.
SVM Nasıl Çalışır:
Karar Sınırı (Decision Boundary): SVM, mavi ve kırmızı noktalar arasında bir çizgi çizer. Bu çizgi, iki sınıf arasındaki karar sınırıdır. Amaç, bu çizginin her iki sınıfa da mümkün olduğunca uzak olmasını sağlamaktır.
Destek Vektörleri: SVM, çizgiye en yakın noktaları belirler. Bu noktalar "destek vektörleri" olarak adlandırılır ve çizginin konumunu belirlemede anahtar rol oynarlar.
Marjın Maksimizasyonu: SVM, bu destek vektörleri arasındaki mesafeyi (bu mesafeye "marj" denir) maksimize etmeye çalışır. Yani, çizgiyi bu noktalar arasında olabildiğince geniş bir boşluk bırakacak şekilde ayarlar.
Neden Marj Önemli?
Marj, modelin karar verme güvenliğ
ini temsil eder. Daha geniş bir marj, modelin daha "güvenli" bir şekilde sınıflandırma yapmasını sağlar. Yani, yeni veri noktalarını sınıflandırırken, daha geniş bir marj, modelin hatalı sınıflandırmalar yapma olasılığını azaltır.
Özetle:
SVM, veri noktalarını birbirinden ayırmak için bir çizgi veya düzlem çizer.
Bu çizgi, farklı sınıflardaki noktalar arasında mümkün olduğunca uzak olmalıdır.
"Destek vektörleri" denilen en yakın noktalar, bu çizginin yerini belirlemede kritik rol oynar.
SVM, bu destek vektörleri arasındaki mesafeyi (marjı) maksimize etmeye çalışır.
Bu süreç, SVM'nin karmaşık veri setlerinde bile güçlü ve etkili sınıflandırma yapmasını sağlar. SVM, marjı maksimize ederek hem mevcut veri üzerinde iyi performans gösterir hem de yeni, görülmemiş veriler üzerinde doğru tahminler yapabilme yeteneğine sahip olur.
Veri noktalarından kastın ne? Örnek bir veri seti ile anlat
Veri noktaları, sınıflandırma yaparken analiz ettiğimiz bireysel örnekleri temsil eder. Her bir veri noktası, genellikle birden fazla özelliğe (feature) sahip bir kayıttır. SVM bu özellikleri kullanarak veri noktalarını sınıflarına ayırır. Daha iyi anlamanız için örnek bir veri seti üzerinden açıklayayım.
Örnek Veri Seti: Iris Çiçekleri
Iris veri seti, farklı türdeki iris çiçeklerini sınıflandırmak için kullanılır. Bu veri setinde üç tür iris çiçeği bulunur: Setosa, Versicolor ve Virginica. Her bir çiçek (veri noktası), dört özelliğe (taç yaprak ve çanak yaprak uzunluğu ve genişliği) sahiptir.
Veri Noktaları ve Özellikleri
Bir veri noktası bu durumda bir iris çiçeğidir.
Her çiçeğin dört özelliği vardır: Taç yaprağının uzunluğu ve genişliği, çanak yaprağının uzunluğu ve genişliği.
Bu özellikler, çiçeğin hangi türe (Setosa, Versicolor, Virginica) ait olduğunu belirlemek için kullanılır.
SVM ile Sınıflandırma
SVM, bu dört özelliği kullanarak çiçeklerin hangi türe ait olduğunu sınıflandırır. Örneğin, Setosa türünün çiçekleri genellikle daha küçük taç yapraklara sahipken, Virginica türü daha büyük taç yapraklara sahiptir.
Model Eğitimi: SVM, veri setindeki çiçek örneklerini kullanarak bir model eğitir. Bu süreçte, çiçeklerin özelliklerine bakarak her tür için en iyi ayrım çizgisini veya düzlemini bulur.
Karar Sınırı: SVM, farklı türleri birbirinden ayırmak için bir veya daha fazla karar sınırı oluşturur. Bu sınırlar, farklı türleri en iyi şekilde ayıracak şekilde çizilir.
Yeni Veri Noktalarının Sınıflandırılması: Eğitilen model, daha sonra yeni çiçek örneklerinin hangi türe ait olduğunu sınıflandırmak için kullanılır. Model, bu yeni çiçeğin özelliklerine bakar ve önceden belirlenen karar sınırlarına göre bir tür tahmini yapar.
Özet
Bu örnekte, her bir iris çiçeği bir veri noktasıdır ve çiçeğin taç yaprağı ve çanak yaprağı boyutları gibi özellikler, SVM tarafından çiçeğin hangi türe ait olduğunu belirlemek için kullanılır. SVM, bu özellikleri analiz ederek veri noktalarını (çiçekleri) en doğru şekilde sınıflandırmaya çalışır. Bu süreç, hem mevcut veri setindeki çiçekler için hem de yeni, daha önce görülmemiş çiçekler için geçerlidir.
Örnek senaryolar ve veri setleri verir misin?
Elbette, Support Vector Machines (SVM) için kullanılabilecek çeşitli örnek senaryolar ve veri setleri hakkında bilgi verebilirim. Bu senaryolar, SVM'nin geniş uygulama alanlarını ve farklı veri tipleriyle nasıl çalışabileceğini gösterir.
1. Görüntü Sınıflandırma
Veri Seti: CIFAR-10, MNIST
Açıklama: Bu veri setleri, el yazısı rakamlarını (MNIST) ve çeşitli nesneleri (CIFAR-10) içerir. SVM, bu görüntülerdeki özellikleri kullanarak rakamları veya nesneleri sınıflandırmak için kullanılabilir.
2. Metin Sınıflandırma
Veri Seti: 20 Newsgroups, Movie Reviews
Açıklama: Metin verileri, haber makaleleri veya film yorumları gibi çeşitli konuları içerebilir. SVM, belirli anahtar kelimeler ve ifadeler temelinde bu metinleri kategorilere ayırmak için kullanılabilir.
3. Biyomedikal Veri Analizi
Veri Seti: Kanser veri setleri, protein yapısı verileri
Açıklama: SVM, hasta verilerini analiz ederek hastalıkların teşhis edilmesinde veya protein yapılarının sınıflandırılmasında kullanılabilir.
4. Finansal Analiz
Veri Seti: Hisse senedi fiyatları, kredi skorları
Açıklama: Finansal veriler, piyasa trendlerinin tahmin edilmesi veya kredi riskinin değerlendirilmesi için kullanılabilir. SVM, bu tür verileri analiz ederek karar verme süreçlerinde yardımcı olabilir.
5. Sosyal Medya Analizi
Veri Seti: Tweet verileri, kullanıcı etkileşimleri
Açıklama: Sosyal medya verileri, kullanıcı davranışlarını veya eğilimleri analiz etmek için kullanılabilir. SVM, bu verileri sınıflandırarak örneğin duyarlılık analizi yapabilir.
6. Biyometrik Tanıma
Veri Seti: Yüz, parmak izi veya iris tanıma verileri
Açıklama: Biyometrik veriler, güvenlik sistemlerinde kimlik doğrulama için kullanılır. SVM, bu verileri analiz ederek kişileri doğru bir şekilde tanımlayabilir.
Kaynaklar ve Veri Setlerine Erişim
Çoğu veri seti, araştırma amaçlı olarak internet üzerinden erişilebilir durumdadır. Örneğin, UCI Machine Learning Repository, Kaggle gibi platform
lar geniş bir veri seti koleksiyonu sunar.
MNIST ve CIFAR-10 gibi popüler veri setleri, doğrudan Python kütüphaneleri (örneğin, TensorFlow veya PyTorch) aracılığıyla yüklenebilir.
Finansal veriler için, Yahoo Finance API gibi hizmetler kullanılabilir.
Metin ve sosyal medya analizi için, çeşitli açık kaynak veri setleri mevcuttur, ayrıca Twitter API gibi araçlar kullanılarak gerçek zamanlı veri toplanabilir.
Bu senaryolar, SVM'nin uygulanabileceği çeşitli alanları temsil eder. Her bir senaryo, SVM'nin karmaşık sınıflandırma sorunlarını çözme yeteneğini göstermek için özel olarak seçilmiştir. SVM, özellikle yüksek boyutlu veri setleriyle çalışırken etkilidir ve çeşitli endüstrilerde ve araştırma alanlarında popüler bir seçimdir.