Gözetimli öğrenme, modelin belirli bir çıktıyı tahmin etmesi gerektiği durumlarda kullanılır. Eğitim veri setinde girdi ve beklenen çıktılar bulunur ve model bu veriler üzerinde eğitilir.
Gözetimli öğrenme (supervised learning), yapay zeka ve makine öğrenmesinde sıkça kullanılan bir yöntemdir. Bu yöntemde, bir modelin belirli bir çıktıyı doğru bir şekilde tahmin etmesi amaçlanır. Gözetimli öğrenme süreci şöyle işler:
Veri Toplama: Gözetimli öğrenme için ilk adım, eğitim veri setinin toplanmasıdır. Bu veri seti, modelin öğrenmesi için gerekli bilgileri içerir.
Eğitim Veri Seti: Eğitim veri seti, girdi (input) ve beklenen çıktılar (output) içerir. Girdiler, modelin tahmin yapması için kullanacağı verilerdir. Beklenen çıktılar ise, modelin bu girdilere karşılık üretmesi gereken sonuçlardır.
Model Eğitimi: Model, eğitim veri seti kullanılarak eğitilir. Bu süreçte, model girdi verilerini alır ve bu verilere dayanarak bir çıktı üretir. Modelin ürettiği çıktı, beklenen çıktı ile karşılaştırılır ve modelin performansı değerlendirilir.
Optimizasyon ve Ayarlama: Modelin performansı yeterli değilse, algoritma parametreleri ve model yapılandırması optimize edilerek modelin daha doğru tahminler yapması sağlanır.
Test ve Değerlendirme: Model eğitildikten sonra, genellikle daha önce görmediği verilerle test edilir. Bu aşama, modelin gerçek dünya verileri üzerinde ne kadar iyi performans gösterdiğini değerlendirmek için önemlidir.
Gözetimli öğrenme, sınıflandırma (classification) ve regresyon (regression) gibi çeşitli problem türleri için kullanılabilir. Örneğin, sınıflandırma problemi, bir e-postanın "spam" veya "spam değil" olarak sınıflandırılması olabilir. Regresyon problemi ise, bir evin değerinin tahmin edilmesi gibi sürekli bir çıktının üretilmesini içerebilir.
Gözetimli öğrenmenin devamında, modelin gerçek dünya verileri üzerindeki performansını değerlendirme ve iyileştirme süreçleri önem taşır:
Gerçek Dünya Verileri ile Test: Model, eğitim aşamasında görmediği gerçek dünya verileri ile test edilir. Bu, modelin genelleme yeteneğini ve yeni verilere nasıl tepki verdiğini anlamak için önemlidir.
Değerlendirme Metrikleri: Modelin başarısını ölçmek için çeşitli değerlendirme metrikleri kullanılır. Sınıflandırma problemleri için doğruluk (accuracy), hassasiyet (precision), duyarlılık (recall) ve F1 skoru gibi metrikler; regresyon problemleri için ise ortalama kare hatası (mean squared error) ve ortalama mutlak hata (mean absolute error) gibi metrikler tercih edilir.
Hata Analizi ve İyileştirme: Modelin performansını artırmak için hata analizi yapılır. Yanlış tahminler incelenir ve bu hataların nedenleri belirlenmeye çalışılır. Buna dayanarak, modelin eğitim süreci veya veri seti üzerinde iyileştirmeler yapılabilir.
Özellik Mühendisliği (Feature Engineering): Modelin performansını artırmak için özellik mühendisliği yapılır. Bu süreçte, mevcut verilerden daha anlamlı özellikler (features) türetilir veya gereksiz özellikler çıkarılır.
Modelin Güncellenmesi ve Bakımı: Model, zaman içinde değişen veri ve gereksinimlere uyum sağlayabilmek için düzenli olarak güncellenir ve bakımı yapılır. Bu süreç, modelin uzun vadeli başarısını sağlamak için önemlidir.
Gözetimli öğrenme, finansal tahminler, tıbbi teşhis, görüntü ve ses tanıma, metin sınıflandırma gibi pek çok alanda kullanılmaktadır. Bu yöntemin başarısı, hem kullanılan algoritmanın kalitesine hem de eğitim veri setinin yeterliliğine ve doğruluğuna bağlıdır. Veri setinin kalitesi ve çeşitliliği arttıkça, modelin daha doğru ve güvenilir tahminler yapma ihtimali de artar.
Şimdi senden 50 adetlik örnek veri seti isteyeceğim. Daha sonraki mesajımda bu veri seti üzerinden bir sınıflandırmayı Apache Spark ve Javayla model oluşturmanı isteyeceğim. Önce bana veri setini ver ve feature valıe ve labelların ne olduğunu söyle.
İşte sınıflandırma için kullanabileceğiniz 50 örneklik bir veri seti:
Özellikler (Features):
Feature1: 0 ile 100 arasında rastgele değerler.
Feature2: 0 ile 50 arasında rastgele değerler.
Feature3: İkili değerler (0 veya 1).
Etiket (Label):
Label: 0 veya 1 olarak sınıflandırılmış. Bu etiket, belirli bir kurala göre hesaplanmıştır: (Feature1 + Feature2 * 2 + Feature3 * 50) > 100.
İlk 10 örnek şu şekildedir:
Feature1 Feature2 Feature3 Label
54.88 28.51 1 1
71.52 21.93 0 1
60.28 49.42 1 1
54.49 5.10 0 0
42.37 10.44 0 0
64.59 8.07 1 1
43.76 32.66 1 1
89.18 12.66 0 1
96.37 23.32 0 1
38.34 12.22 0 0
Bu veri seti, Apache Spark ve Java ile model oluşturmak için kullanılabilir.
Şimdi Spark ve java ile kodunu yaz ve modeli oluştur
Apache Spark ve Java kullanarak basit bir sınıflandırma modeli oluşturmak için aşağıdaki adımları takip edebilirsiniz. Burada, Spark MLlib kütüphanesini kullanacağız. Öncelikle, gerekli kütüphaneleri içe aktararak başlayalım:
java
Copy code
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.ml.feature.VectorAssembler;
import org.apache.spark.ml.classification.LogisticRegression;
import org.apache.spark.ml.classification.LogisticRegressionModel;
Daha sonra, bir SparkSession başlatarak işlemlere başlayabilirsiniz:
java
Copy code
SparkSession spark = SparkSession
.builder()
.appName("ClassificationExample")
.config("spark.master", "local")
.getOrCreate();
Veri setinizi Spark DataFrame formatına dönüştürmek için, öncelikle verilerinizi bir CSV dosyasına kaydetmeniz ve sonra Spark ile yüklemeniz gerekir. Burada, verilerinizi bir CSV dosyasında olduğunu varsayıyorum:
java
Copy code
Dataset<Row> data = spark.read().format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("path/to/your/csvfile.csv");
VectorAssembler kullanarak özellikleri bir vektöre dönüştürün:
java
Copy code
VectorAssembler assembler = new VectorAssembler()
.setInputCols(new String[]{"Feature1", "Feature2", "Feature3"})
.setOutputCol("features");
Dataset<Row> transformedData = assembler.transform(data);
Logistic Regression modelini oluşturun ve verilerle eğitin:
java
Copy code
LogisticRegression lr = new LogisticRegression()
.setLabelCol("Label")
.setFeaturesCol("features");
LogisticRegressionModel model = lr.fit(transformedData);
Modeli test verileri üzerinde değerlendirme ve tahmin yapma için kullanabilirsiniz. Burada, basitlik adına, modeli eğitim verisi üzerinde değerlendirdik. Gerçek bir senaryoda, veri setinizi eğitim ve test setlerine bölmelisiniz.
Son olarak, Spark oturumunu kapatmayı unutmayın:
spark.stop();
Bu kod parçacığı, temel bir sınıflandırma modelinin nasıl oluşturulacağını göstermektedir. Gerçek dünya uygulamalarında, veri ön işleme, model parametre ayarlama ve performans değerlendirme gibi ek adımlar gerekebilir.