top of page
DALL·E 2025-01-22 23.11.10 - A vertical, futuristic design for a website background that c

Makine Öğrenimi ile Formasyon Takibi

Teknik analiz dünyasında grafik formasyonlarını tanımak, yatırımcılar için kritik bir beceridir. Grafiklerin manuel olarak taranması yerine, YOLOv8 derin öğrenme modeli eğiterek Omuz baş omuz, ikili tepe, ters ikili tepe, yukarı daralan üçgen ve aşağı daralan üçgen gibi önemli formasyonları otomatik olarak tespit etmeyi amaçladım.

Bu yazımda, verileri nasıl topladığım, etiketlediğim, YOLOv8 modelini nasıl eğittiğim ve sonuçları nasıl değerlendirdiğim hakkında detaylı bilgi vereceğim.


Veri Hazırlama

Derin öğrenme modelini eğitmek için kaliteli bir veri kümesi oluşturmak çok önemlidir. Piyasada istediğim gibi bir veri kümesi olmadığından dolayı kendi veri setimi oluşturmam gerekti.

Adım 1: Mum Grafiklerini Oluşturma

Bir Python kodu yazarak koda şu işlemleri yaptırdım:

  • Rastgele Seçimler:

Binance'deki USDT işlem çiftlerinden rastgele birini seçer.

Belirli zaman aralıklarından rastgele birini seçer.

10 ile 70 arasında rastgele bir mum sayısı seçer.

  • Veri Çekme:

Binance API'sinden belirtilen işlem çifti, zaman aralığı ve mum sayısına göre klines verisini çeker.

  • Grafik Oluşturma ve Kaydetme:

Çekilen veriyi işler, grafik çizer ve resim olarak kaydeder.


grafik
grafik

Koda buradan ulaşabilirsiniz:


Adım 2: Formasyonları Etiketleme

Yeterli sayıda grafik oluşturduktan sonra, içlerinde teknik formasyonlar olanları etiketlemem gerekti. Etiketleme işlemini formasyon olan grafik görselinin tam olarak neresinde formasyon olduğunu txt formatında kaydederek yaptımr

Örn: 4 0.3134765625 0.275390625 0.169921875 0.2109375

Burdaki 4 formasyonun sınıfını diğer sayılarda formasyonun grafik görselinde nerede olduğunu gösteriyor.

Kendi etiketleme yazılımımı geliştirdim, ancak daha kolay bir yol arayanlar için Roboflow  önerilebilir.

  • Toplam Toplanan Görseller: 1000

  • Formasyon Sınıfları: 5

    • Omuz baş omuz

    • İkili tepe

    • Ters ikili tepe

    • Yukarı daralan üçgen

    • Aşağı daralan üçgen


YOLOv8 Model Eğitimi

Veri kümesini hazırladıktan sonra Google Drive’a yükledim ve Google Colab kullanarak eğitimi gerçekleştirdim.

Adım 1: Google Drive Bağlantısı ve Veri Yükleme

Google Drive içindeki verileri Google Colab'e bağlamak için aşağıdaki komutları kullandım:

from google.colab import drive
drive.mount('/content/drive')

Daha sonra yaml dosyasını çalışma dizinine kopyaladım:

!cp /content/drive/MyDrive/dataset.yaml /content/

Google drive'daki yaml dosyası şu şekildeydi:

train: /content/datasets/dataset1/images/train
val: /content/datasets/dataset1/images/val
nc: 5
names: ["ascending_triangle", "descending_triangle", "double_top", "head_and_shoulders", "inverted_double_top"]

Daha sonra dataset’in zip dosyasını yükleyip çıkarttım:

!cp /content/drive/MyDrive/datasets.zip /content/
!unzip /content/datasets.zip -d /content/

Adım 2: Gerekli Kütüphanelerin Kurulumu

YOLOv8 modelini çalıştırmak için aşağıdaki kütüphaneleri yükledim:

!pip install ultralytics
!pip install torch torchvision torchaudio
!pip install opencv-python-headless
!pip install numpy matplotlib

Adım 3: Model Eğitim Parametreleri

YOLOv8s modelini aşağıdaki ayarlarla eğittim:

from ultralytics import YOLO
model = YOLO("yolov8s.pt")  
model.train(
    data="dataset.yaml",

    device=0,  # GPU Kullan (CPU ile uğraşma!)
    epochs=300,         # Daha fazla epoch
    batch=8,            # Küçük veri setleri için daha küçük batch size
    imgsz=512,          # Daha büyük input boyutu
    optimizer="SGD",    # SGD kullanarak daha stabil öğrenme
    patience=70,  # 🛑 Early Stopping için 
    lr0=0.004,          # Daha düşük başlangıç öğrenme oranı
    dropout=0.2,        # Overfitting önleme
)

Adım 4: Eğitim Süreci

Kullanılan GPU: Google Colab T4 GPU Eğitim Süresi: Yaklaşık 2 saat

Sonuçlar:

  • Precision (Doğruluk Oranı): %76

  • mAP50 (Ortalama Ortalama Hassasiyet @50 IoU): %72

Herhangi bir augmentation (veri artırma) kullanmadım, çünkü grafiklerde döndürme veya renk değişimi anlamsız olurdu. Model ile ilgili detaylı bilgileri aşağıda inceleyebilirsiniz:






Eğittiğim modele aşağıdaki linkten ulaşabilirsiniz.


⚠ Modeli kendi oluşturduğum grafiklerle eğittiğim ve augmentation yapmadığım için bazı grafik görsellerinde verimsiz çalışabilir ⚠


Eğitilmiş Modelin Kullanımı ve Sonuçlar

Eğitim tamamlandıktan sonra modeli .pt formatında dışa aktardım:


Daha sonra, modeli kullanarak 4102 grafik içeren bir klasörde test ettim. Model, formasyonları tespit ederek ayrı bir klasöre kaydetti ve sonuçları analiz ettim.

📊 Sonuçlar:

  • Toplam İncelenen Dosya Sayısı: 4102

  • Formasyon Bulunan Dosya Sayısı: 570

📌 Formasyon Türleri ve Dağılımı

Formasyon Türü

Sayı

Ascending Triangle

132

Descending Triangle

127

Inverted Double Top

184

Double Top

59

Head and Shoulders

68


Model Performansı
Model Performansı

Modelin tespit ettiği formasyonlar aşağıdaki örnek görsellerde gösterilmektedir:


İkili Tepe (Kesinlik %82)
İkili Tepe (Kesinlik %82)

Ters İkili Tepe (Kesinlik %92)
Ters İkili Tepe (Kesinlik %92)

Omuz Baş Omuz (Kesinlik %97)
Omuz Baş Omuz (Kesinlik %97)

Yukarı Daralan Üçgen (Kesinlik %80)
Yukarı Daralan Üçgen (Kesinlik %80)

Aşağı Daralan Üçgen (Kesinlik %82)
Aşağı Daralan Üçgen (Kesinlik %82)

Yanlış Tespitler ve Model Davranışı

🔹 Model genel olarak başarılı olsa da bazen yanlış tespitler yapabiliyor.

🔹 Daha büyük veri kümesi ve daha iyi etiketleme hataları azaltabilir.


Sonuç

YOLOv8 modelini grafik formasyon tespiti için eğitmek oldukça heyecan verici bir projeydi. %76 doğruluk oranı ve %72 mAP50 değeriyle model oldukça başarılı oldu, ancak geliştirme fırsatları da mevcut.

Modelin test aşamasında 4102 farklı grafik analiz edildi ve bunlardan 570 tanesinde formasyon tespit edildi. Bu, modelin formasyonları makul bir doğruluk oranıyla yakalayabildiğini gösteriyor. En çok tespit edilen formasyon Inverted Double Top (184 adet) olurken, en az tespit edilen formasyon Double Top (59 adet) oldu. Bu dağılım, modelin bazı formasyonları daha iyi tanıyabildiğini ve belirli formasyonlar için veri artırma çalışmalarının gerekebileceğini gösteriyor.

Bundan sonraki aşamada, modelin kullanımını daha pratik hale getirmek için bir arayüz (GUI) tasarlamayı planlıyorum. Bu arayüz sayesinde kullanıcılar formasyon tespitlerini daha kolay gerçekleştirebilecek, grafiklere anlık olarak göz atabilecek ve sonuçları daha hızlı analiz edebilecek. Kullanıcı dostu bir arayüz oluşturduktan sonra, yeni bir yazı hazırlayarak bu dokümana güncelleme ekleyeceğim.

Ayrıca, ilerleyen süreçte modeli daha büyük bir veri seti ile yeniden eğitmeyi, veri dengesizliğini azaltmayı ve daha farklı yapay zeka algoritmaları ile karşılaştırmalar yapmayı hedefliyorum. Bu geliştirmeler, modelin formasyon tespitinde daha güvenilir ve doğru tahminler yapmasını sağlayacaktır.

Comments


Commenting on this post isn't available anymore. Contact the site owner for more info.
bottom of page