HİSSE FİYATI TAHMİNİ YAPAN MAKİNE ÖĞRENMESİ MODELİ

 Giriş

İlk makine öğrenmesi modelimi bu örnek ile yapmış bulunmaktayım. Adı StockPrice-MultiReg-ML. Bu örnek, verdiğiniz ekonomik duruma göre ileride hedef hissenin ne kadar olacağını belirlemektedir. Bu hissenin R^2 değeri(1 ile 0 ile arasında olup modelin doğruluğunu belirlemeye yarar. Değer 1'e yakın oldukça modelin doğruluğu artmaktadır.)0.996'dır. (Bu proje boyunca yapay zekadan olabildiğince az yardım alınmıştır.)

Dataset Tanıtımı

Değişkenlerin Analizi (Data Dictionary)

Modelin eğitimi sırasında kullandığım sütunlar ve bunların finansal anlamları şu şekildedir:

  1. Dolar Kuru (USD/TRY): Döviz bazlı maliyetleri ve ithalat/ihracat dengesini temsil eder. Finansal modellerde genellikle en güçlü belirleyicidir.

  2. Faiz Oranı (%): Sermaye maliyetini ve risksiz kazanç alternatifini gösterir. Faiz arttığında genellikle borsa üzerinde baskı oluştuğu varsayılır.

  3. Ar-Ge Harcaması (Milyon TL): Şirketin teknolojiye ve geleceğe yaptığı yatırımı temsil eder. Uzun vadeli değer artışının temel göstergesidir.

  4. BIST 100 Endeksi: Piyasanın genel yönünü ve yatırımcı iştahını yansıtır. Hisse senedinin genel trende ne kadar uyum sağladığını gösterir.

  5. Enflasyon Oranı (%): Paranın alım gücündeki değişimi ifade eder. Fiyatların nominal artışındaki ana etkendir.

  6. Hisse Fiyati (Hedef): Tahmin etmek istediğimiz "Bağımlı Değişken"dir.

Modeli nasıl programladığım aşağıda parçalara bölünerek anlatılmıştır. İşinize yaraması dileğiyle...

Kütüphaneler

Gerekli modellerin seçilmesi modelin kullanacağı mutfağı iyi bilmesidir. Bu modelde gerekli olan modeller:
-Scikit-Learn(regresyon ve sınıflandırma için kullanılır.)
-Matplotlib(veri görselleştirme)

Model

X girdilerimiz(dolar kuru, faiz oranı...) bizim değer tahmini yapacağımız hisse fiyatı için ders kitabı gibidir. Model bu verilerden anlam çıkarıp tahmin yapacağı için linear regresyon kullancaktır. Ancak 
bu model farklı x girdileri içerdiği için multiple linear regression modelidir.

Dataseti modele tanıtmak

Burada dataseti modele tanıttık bunu yaparken pandas kütüphanesini kullandık. ve excel dosyasını program dosyayı daha kolay okuyabilmesi için csv(metin dosyası)'ye çevirdik. Kullandığım pd.read_csv() fonksiyonu, veriyi sütunlara bölmek için sadece virgüllere (,) bakar. Excel'in karmaşık hücre yapısıyla uğraşmak yerine, virgülleri takip ederek veriyi bir tabloya (DataFrame) dönüştürmek çok daha garantidir.


Modeli eğitmek

Makine öğrenmesinde modelin bir "öğretmene" ihtiyacı vardır. Burada y değişkeni bizim sonucumuz (Hisse Fiyatı), X ise bu sonucu etkileyen faktörlerdir.

model.fit(X, y) komutu, modelin bu veriler arasındaki gizli pattern'leri (örüntüleri) keşfettiği andır. Bilgisayar bu satırda; "Dolar şu kadar artınca fiyat bu kadar değişmiş" diyerek matematiksel bir mantık kurar. Yani bu aşama, modelin dersine çalışıp sınavda (tahmin anında) doğru cevabı vermeye hazırlandığı kısımdı.

Tahmini değerin atanması

Gerçek hayatta her zaman elimizde tam veri olmaz. Kullanıcı Ar-Ge harcaması gibi spesifik bir rakamı bilmiyorsa programın çökmemesi gerekir. Burada mean() fonksiyonuyla bir "orta yol" bulduk; kullanıcı boş geçerse model hata vermek yerine grubun ortalamasını kullanarak tahmine devam eder.


Kullanıcıdan verilerin alınması

Modelimizi eğittik ama asıl amacı bize bilmediğimiz bir şeyi söylemesi. while True ve try-except bloklarını kullanarak kullanıcıdan hatasız veri almayı garantiledik. Bu kısım, statik veriden "canlı etkileşime" geçtiğimiz köprüdür. 

Tahminin kullanıcıya gösterilmesi

Bu kısımda model önceki verilerden öğrendiği pattern'ı yeni girilmiş verilere uyarlayıp bir değer tahmini yapmıştır.

Model istatistiği

Modelin sadece bir sonuç vermesi yetmez, o sonuca nasıl ulaştığını anlamak için "içine" bakmamız gerekir.

  • b0 (Sabit Terim): Bu, modelin başlangıç noktasıdır. Yani tüm ekonomik veriler (Dolar, Faiz vb.) "sıfır" olsaydı hisse fiyatının nerede olacağını gösterir. Bir nevi modelin temel zeminidir.

  • b1, b2... (Katsayılar): Bunlar modelin "hassasiyet" ayarlarıdır. Örneğin Dolar kurunun katsayısı (b1), dolar 1 birim arttığında hisse fiyatının ne kadar yükseleceğini veya düşeceğini söyler. Modelin ekonomiye verdiği tepkiyi burada ölçeriz.

  • R² Skoru: Bu modelin karne notudur. 1'e ne kadar yakınsa, modelimiz geçmiş verilerdeki pattern'leri (örüntüleri) o kadar iyi kavramış demektir. Bizim projemizdeki yüksek skor, modelin dersine ne kadar iyi çalıştığını ispatlar.

Verinin görselleştirilmesi

Bu kod bloğunda, modelimizin matematiksel başarısını herkesin anlayabileceği bir resme dönüştürüyoruz. İlk olarak plt.scatter ve plt.plot ile geçmişteki gerçek verileri mavi noktalar olarak haritaya yerleştirip, modelin öğrendiği en ideal yolu temsil eden Kırmızı Regresyon Doğrusu'nu çiziyoruz.

Hemen ardından gelen for döngüsü ise işin en şeffaf kısmını yapıyor: Her bir gerçek veri noktasından kırmızı tahmin çizgimize dikey gri çizgiler çekerek, modelimizin ne kadar yanıldığını yani "hata payımızı" görselleştiriyor. Finalde eklediğimiz başlıklar ve ızgara (grid) yapısıyla birlikte, hem geçmiş pattern'leri hem de modelimizin bu pattern'lere ne kadar sadık kaldığını tek bir grafikte ispatlamış oluyoruz.


Tahmin değerinin grafikteki yeri

Final dokunuşu! Kullanıcının girdiği güncel dolar kuruna göre modelin ürettiği sonucu grafiğe parlak bir turkuaz nokta (tahmin) olarak koyduk. Bu sayede tahminimizin geçmişteki pattern'lerle ne kadar uyumlu olduğunu tek bakışta görebiliyoruz.




Okuduğunuz için teşekkür ederim. Hepinize iyi çalışmalar dilerim-
-Arda Portakalkökü/ArdaCodes


Yorumlar

Popüler Yayınlar