Makine Öğrenmesine Giriş

Çiğdem Kılıç
8 min readFeb 27, 2023

--

Makine öğrenimi, bilgisayarlara açıkça programlanmadan öğrenme yeteneği veren çalışma alanıdır.

Geleneksel programlamada, bilgisayarınıza input verinizi ve kurallarınızı verirsiniz. Input değerleri bu kurallardan geçip işlenerek bir output değeri üretir. Makine öğrenmesinde ise bilgisayarınıza input ve output verinizi verirsiniz. Bilgisayarınız sizin için bu iki veri arasındaki kuralı belirler ve sonraki kullanımlarda input verileriniz bu kurallardan geçer, bir tahminde bulanarak sonuca varır.

Makine öğrenimi, bilgisayarların öğrenme kabiliyeti kazanmasını sağlayan yapay zeka alanlarından biridir. Makine öğrenimi, belirli bir görevi gerçekleştirmek için veri ve istatistiksel algoritmaları kullanarak bir model oluşturur. Bu model daha sonra yeni verilerle beslenebilir ve gelecekteki sonuçları tahmin etmek veya sınıflandırmak için kullanılabilir.

Makine Öğrenmesi Algoritmaları

Makine öğrenmesi algoritmaları, veri analizi, model oluşturma ve tahmin yapma süreçlerinde kullanılan çeşitli teknikleri içermektedir.

  1. Regresyon Algoritmaları: Doğrusal regresyon ,Polinom Regresyon, Lojistik Regresyon
  2. Sınıflandırma Algoritmaları: Karar Ağacı, Random Forest, K-En Yakın Komşu (KNN), Destek Vektör Makineleri (SVM), Naive Bayes, Yapay Sinir Ağları (Neural Networks)
  3. Kümeleme Algoritmaları: K-Means, Hiyerarşik Kümeleme, DBSCAN
  4. Boyut Azaltma Algoritmaları: Temel Bileşen Analizi (PCA), Doğrusal Ayrıştırma, T-Dağılımı Stokastik Yakınsama (t-SNE)
  5. Öğrenme Kontrolü Algoritmaları: Veri Dengeleme, Hiperparametre Optimizasyonu, Çapraz Doğrulama (Cross-Validation), Early Stopping
  6. Özyinelemeli Sinir Ağları (RNN) Algoritmaları: Long Short-Term Memory (LSTM), Gated Recurrent Units (GRU), Recursive Neural Networks (RecNN)
  7. Transfer Öğrenme Algoritmaları: Convolutional Neural Networks (CNN) tabanlı algoritmalar, Yapay Sinir Ağları (Neural Networks) tabanlı algoritmalar, Kümeleme tabanlı algoritmalar

Bu algoritmaların her biri farklı amaçlar için tasarlanmıştır ve verilerin yapısına, özelliklerine ve probleme bağlı olarak farklı durumlarda kullanılır.

Makine Öğrenmesi Tipleri

Gözetimli Öğrenme (Supervised Learning):

Gözetimli öğrenme, veri kümesindeki örneklerin birbirleriyle ilişkilendirildiği ve her örneğin bir etiketle (label) işaretlendiği bir öğrenme yöntemidir. Bu yöntemde, model, girdi verilerinden (input) çıktı verilerini (output) tahmin etmek için eğitilir. Örneğin, bir e-postanın spam veya spam olmadığını belirlemek için kullanılan bir model, spam olarak işaretlenmiş ve spam olmayan olarak işaretlenmiş e-postaların bir veri kümesiyle eğitilir.

Gözetimsiz Öğrenme (Unsupervised Learning):

Gözetimsiz öğrenme, veri kümesindeki örneklerin etiketlerinin olmadığı bir öğrenme yöntemidir. Bu yöntemde, model, veri kümesindeki kalıpları ve yapıları öğrenmeye çalışır.

Örnek olarak, bir e-ticaret şirketinin, müşterilerinin satın alma alışkanlıklarını ve tercihlerini analiz etmek için bir gözetimsiz öğrenme modeli kullanabiliriz. Bu model, müşterilerin alışveriş sepetlerindeki ürünleri analiz ederek, müşterilerin ilgi alanları ve tercihleri hakkında bilgi toplar. Model, ürünler arasındaki benzerlikleri ve farklılıkları analiz eder ve belirli ürün grupları oluşturur. Bu gruplar, benzer özelliklere sahip ürünlerden oluşur. Örneğin, bir grupta kıyafetler, bir grupta ayakkabılar, bir grupta ev aletleri bulunabilir. Model, daha sonra müşterileri bu gruplara göre sınıflandırır ve belirli bir gruba dahil olan müşterilerin, o gruptaki diğer ürünlere de ilgi duyabileceğini tahmin eder. Bu tahminler, müşterilere önerilecek ürünlerin belirlenmesinde kullanılır.

Pekiştirmeli Öğrenme (Reinforcement Learning):

Pekiştirmeli öğrenme, bir modelin çevresiyle etkileşime girerek öğrenmesi için kullanılan bir öğrenme yöntemidir. Bu yöntemde, model, bir eylemi gerçekleştirdiğinde çevresindeki durum değişikliklerine tepki verir ve bir ödül veya ceza alır. Model, ödülü maksimize etmek veya cezayı minimize etmek için eylemlerini ayarlamaya çalışır.

Örneğin, bir yüzme simülatörü üzerinde çalışan bir modeli ele alabiliriz. Bu model, bir yüzücünün belirli bir mesafeyi mümkün olan en kısa sürede yüzmesi için optimize edilmiştir. Model, yüzme simülatöründe yüzme hareketlerini gerçekleştirerek öğrenir. Model, yüzme hareketlerindeki değişikliklerin çevresindeki durumu nasıl etkilediğini öğrenir. Örneğin, yüzme hareketi doğru bir şekilde yapıldığında, yüzücü hızlanır ve mesafeyi daha kısa bir sürede tamamlar. Yüzme hareketi yanlış yapıldığında, yüzücü yavaşlar ve mesafe tamamlanması daha uzun sürer. Model, doğru hareketlerde bir ödül alırken, yanlış hareketlerde bir ceza alır. Model, hedefe en kısa sürede ulaşmak için, hareketlerini optimize ederek ödülleri maksimize etmek ve cezaları minimize etmek için çalışır.

Yarı Gözetimli Öğrenme (Semi-Supervised Learning):

Hem gözetimli hem de gözetimsiz öğrenmenin bir kombinasyonudur. Bu yöntem, büyük veri kümelerinde sadece bir kısmının etiketlenmiş olduğu durumlarda kullanılır. Yani, bir veri kümesinin sadece küçük bir kısmında etiketlenmiş örnekler vardır ve bu örnekler gözetimli öğrenme için kullanılırken, etiketlenmemiş örnekler gözetimsiz öğrenme için kullanılır. Yarı gözetimli öğrenmede, gözetimli öğrenme yöntemlerinden daha az etiketli veri kullanarak daha iyi sonuçlar elde edilmesine olanak tanır. Bu yöntemde, etiketli veriler daha az olduğu için insan etiketleme maliyeti düşer ve daha geniş veri kümelerinde kullanılabilir.

Örnek olarak, bir medikal görüntü analizi uygulamasında yarı gözetimli öğrenme kullanılabilir. Bu uygulama, kanser tespiti için kullanılan bir görüntü analizi modeli içerir. Model, göğüs röntgeni görüntülerinde kanser lezyonlarını tespit etmek için kullanılır. Ancak, modelin eğitimi için yeterli sayıda etiketlenmiş veri yoktur. Bu nedenle, yarı gözetimli öğrenme yöntemi kullanılarak, modelin eğitiminde etiketlenmemiş veriler de kullanılır. Model, önce etiketlenmiş veriler üzerinde eğitilir ve sonra etiketlenmemiş verilerin benzerliklerini analiz eder. Etiketlenmemiş veriler arasındaki benzerlikleri ve farklılıkları analiz ederek, etiketlenmiş verilerle benzer özelliklere sahip verileri gruplandırır. Model, bu gruplamaları kullanarak, etiketlenmemiş verileri otomatik olarak etiketler. Daha sonra, model, etiketlenmiş ve otomatik olarak etiketlenmiş verileri birleştirerek, geniş bir veri seti üzerinde eğitilir. Bu sayede, modelin doğruluğu artar ve kanser tespiti yapma becerisi geliştirilir. Bu örnekte, yarı gözetimli öğrenme yöntemi, kanser tespiti için kullanılan bir medikal görüntü analizi modelinin eğitiminde kullanılmıştır. Etiketlenmiş ve etiketlenmemiş verilerin birlikte kullanılması, modelin doğruluğunu artırmış ve kanser tespiti yapma becerisini geliştirmiştir.

Makine Öğrenmesi Projesi Adımları

  1. Veri Toplama: İlk adım veri toplamaktır. Bu, projenin amacına göre, etkili bir şekilde özellikle belirlenmiş verilerin toplanması ile yapılır. Bu veriler hem kaliteli hem de çeşitlilik açısından yeterli olmalıdır.
  2. Veri Ön İşleme: Toplanan verilerin genellikle karmaşık olması ve hatalı olması nedeniyle, veri ön işleme adımı, verileri analiz edilebilir hale getirmek için gereklidir. Bu aşamada veriler, eksik verilerin doldurulması, aykırı değerlerin giderilmesi, normalleştirme, özellik seçimi ve öznitelik çıkarma gibi teknikler kullanılarak temizlenir ve hazırlanır.
  3. Veri Analizi: Veriler, istatistiksel yöntemler ve veri görselleştirme araçları kullanılarak analiz edilir. Bu adım, veriler hakkında daha fazla anlayış edinmek, verilerin anlamlı özelliklerini belirlemek ve modelin daha iyi çalışması için gereklidir.
  4. Model Seçimi: Bu adımda, verilerin analizi sonrasında hangi modelin kullanılacağına karar verilir. Bu seçim verilerin yapısına, problem türüne ve sonuçların kalitesine bağlıdır. Görüntü sınıflandırma ve nesne tanıma gibi görsel görevler için tasarlanmış örnek mimariler: MobileNet_V2, Xception, Inception_V3, ResNet152_V2…
  5. Model Eğitimi: Model eğitimi, seçilen modelin veri kümesi üzerinde eğitilmesi anlamına gelir. Bu adımda, veriler eğitim ve doğrulama kümeleri olarak ayrılır ve model, eğitim kümesi üzerinde çalıştırılır. Eğitim aşaması, modelin performansını artırmak için hiperparametre ayarlamaları gibi bir dizi teknik kullanılarak tekrarlanabilir.
  6. Model Değerlendirme: Modelin doğruluğu, performansı ve hata oranı doğrulama kümeleri üzerinde test edilir. Bu adım, modelin kalitesini değerlendirmek için önemlidir. Precision, recall, f1-score, accuracy, loss metrik değerleriyle başarı performansı ölçülür.
  7. Model Optimizasyonu: Modelin kalitesini artırmak için hiperparametreler ve algoritma ayarlamaları gibi optimizasyon teknikleri kullanılır. Bu adım, modelin genel performansını iyileştirmek için yapılan ince ayarlamaları içerir. Grid search, random search, bayes search, hyperband…
  8. Modeli Canlıya Almak: Modelin son adımı, modelin kullanıma sunulmasıdır. Bu adımda, modelin üretim ortamına nasıl taşınacağı ve nasıl çalıştırılacağı belirlenir.

Makine Öğrenmesinde Kullanılan Araçlar

Python

Python, yapay zeka uygulamaları için en yaygın kullanılan programlama dillerinden biridir. Python, basit, anlaşılır ve okunması kolay bir dil olduğu için, yapay zeka alanında kullanılması oldukça yaygındır. Yapay zeka uygulamaları genellikle büyük veri setleri üzerinde çalışır ve bu verileri işlemek için güçlü bir programlama diline ihtiyaç duyarlar. Python, bu veri işleme işlemlerini kolaylaştıran birçok kütüphane ve araç sunar. Örneğin, Numpy, Pandas, Keras, Matplotlib, Scikit-learn, Tensorflow, PyTorch gibi kütüphaneler, yapay zeka uygulamaları için sık kullanılan araçlardır.

Numpy

NumPy (Numerical Python), Python programlama dilinde bilimsel hesaplama işlemlerini yapmak için kullanılan bir kütüphanedir. Yapay zeka uygulamalarında, özellikle de veri işleme ve analizi işlemlerinde, sıklıkla kullanılır. NumPy, çok boyutlu dizileri (arrays) ve matrisleri (matrices) oluşturmak ve bu veriler üzerinde hızlı matematiksel işlemler yapmak için özel olarak tasarlanmıştır. NumPy dizileri, standart Python listelerine göre çok daha hızlıdır ve büyük veri setlerinin hızlı bir şekilde işlenmesini mümkün kılar.

Pandas

Pandas, Python programlama dili için yüksek performanslı, kullanımı kolay ve veri analizi işlemleri yapmak için tasarlanmış bir kütüphanedir. Yapay zeka uygulamalarında, özellikle de veri işleme ve analizi işlemlerinde sıklıkla kullanılır. Pandas, özellikle tablo şeklindeki verilerin (dataframe) işlenmesi için tasarlanmıştır. Bu verilerin okunması, işlenmesi, manipüle edilmesi ve analizi için birçok fonksiyon ve araç sunar. Pandas ile, veriler üzerinde sıralama, filtreleme, gruplama ve birleştirme işlemleri kolayca gerçekleştirilebilir.

Keras

Keras, yapay zeka ve derin öğrenme modellerinin oluşturulması ve eğitilmesi için kullanılan yüksek seviye bir API’dir. Keras, Python programlama diliyle kullanılabilen açık kaynaklı bir kütüphanedir. Keras, yapay sinir ağları, evrişimli sinir ağları(cnn) ve yinelemeli sinir ağları(rnn) gibi derin öğrenme modellerinin oluşturulmasını kolaylaştırır. Keras, modellerin oluşturulması, eğitilmesi ve değerlendirilmesi için gerekli olan birçok fonksiyon ve araç sunar. Bu fonksiyonlar ve araçlar, modellerin hızlı bir şekilde oluşturulmasını ve eğitilmesini sağlar.

Tensorflow

TensorFlow, yapay zeka ve derin öğrenme uygulamaları için kullanılan açık kaynaklı bir kütüphanedir. Derin öğrenme modellerinin oluşturulması ve eğitilmesi için birçok fonksiyon ve araç sunar. Büyük veri setleri üzerinde yüksek performanslı hesaplama yapabilen bir yapıya sahiptir ve farklı işlem birimleriyle(GPU gibi) uyumlu çalışabilir. Ayrıca, TensorFlow, Keras gibi yüksek seviye API’lerle birlikte kullanılarak, modellerin oluşturulması ve eğitilmesi daha kolay hale getirilebilir.

Matplotlib

Matplotlib, Python programlama dilinde grafik oluşturma için kullanılan bir kütüphanedir. Yapay zeka ve veri analizi gibi alanlarda verileri görselleştirme amacıyla sıklıkla kullanılır. Yapay zeka uygulamalarında Matplotlib, eğitim verilerinin ve sonuçların görselleştirilmesinde sıklıkla kullanılır. Örneğin, bir sinir ağı eğitildiğinde, Matplotlib kullanarak eğitim kaybının zaman içinde nasıl değiştiğini veya tahmin edilen değerlerin gerçek değerlerle nasıl karşılaştırıldığını görselleştirebilirsiniz.

Scikit-learn

Scikit-learn, Python programlama dili için açık kaynaklı bir makine öğrenimi kütüphanesidir. Sınıflandırma, kümeleme, regresyon, boyut azaltma, veri ön işleme, model seçimi ve değerlendirmesi gibi birçok makine öğrenimi yöntemini uygulama imkanı sağlar. Veri önişleme, model seçimi ve hiperparametre ayarlama gibi makine öğrenimi süreçlerini kolaylaştıran fonksiyonlar da içerir. Scikit-learn, açık kaynak kodlu olması ve Python programlama dilinde yazılmış olması nedeniyle, yapay zeka ve veri bilimi toplulukları arasında yaygın olarak kullanılmaktadır.

Google Colab

Google Colab (cloud working environment), web tabanlı bir platformdur ve kullanıcılara Python kodu yazmalarına, çalıştırmalarına ve paylaşmalarına olanak tanır. Bu platform, yüksek hesaplama gücü gerektiren işlemleri hızlı bir şekilde gerçekleştirmeye olanak tanır. Ayrıca, kullanıcıların kodlarını kaydetmeleri ve popüler kütüphaneleri kolayca yüklemeleri için birçok özellik sunar.

Anaconda

Anaconda (local working environment), veri bilimi, yapay zeka, makine öğrenmesi ve büyük veri işleme gibi alanlarda kullanılan bir açık kaynaklı yazılım paketidir. Anaconda, birçok popüler programlama dilinde kullanılabilen bir arayüz olan Anaconda Navigator’ı kullanarak yönetilir. Navigator, kullanıcılara bir grafik arayüzü sağlar ve kullanıcıların kurulum, paket yönetimi ve proje oluşturma gibi işlemleri kolayca yapmalarını sağlar. Anaconda, veri bilimi ve yapay zeka alanında kullanılan birçok popüler kütüphaneyi içerir, örneğin Numpy, Pandas, Scikit-learn, TensorFlow, Keras, PyTorch ve OpenCV gibi. Ayrıca, Anaconda, Jupyter Notebook adı verilen bir web tabanlı kod editörü içerir, bu sayede kullanıcılar, kodlarını doğrudan web tarayıcılarında çalıştırabilirler.

Kaggle

Kaggle, topluluk tabanlı bir platformdur ve kullanıcılara birçok veri seti, yarışma ve projeler sunar. Kullanıcılar, veri setleri üzerinde uygulama geliştirebilirler ve diğer kullanıcılarla paylaşabilirler. Kaggle ayrıca, popüler veri bilimi ve yapay zeka kütüphaneleri içeren bir çevre sunar ve kullanıcıların bu kütüphaneleri kullanmalarına olanak tanır.

--

--