İçindekiler

  • Özet
  • Anahtar Kelimeler
  • Hedefler Ve Kazanımlar
  • Giriş
  • Makine Öğrenmesi Tarihçesi (Timeline)
  • Neden Makine Öğrenmesi
  • Makine Öğrenmesi Uygulanması Ve Çalışma Ortamı
  • Makine Öğrenmesi İş Akışı (Workflow)
  • Örnek Uygulama
  • Modeli Güçlendirme
  • Modelin Bakımı (Yenilenmesi)
  • Kapanış Ve Tartışma
  • Kaynakça

 

Özet

Bu çalışmada kripto para dünyasında olası sahte işlemlerin tespit edilmesi zorluğu problemine denetimli makine öğrenmesinin denetimli öğrenme tekniğini kullanarak çözme hedeflenmiştir. Bu konu üzerine örnek bir çalışma yapılmış olup kullanılan üç farklı modelin (Logistic Regression, Random Forest, XGBoost) kullanıldığı uygulamada alınan en iyi skorun XGBoost algoritması olduğu sonuçlara yansımıştır. Yapılan tüm istatistiksel işlemler ve görselleştirmeler Python programlama dili kullanılarak yapılmıştır.

 

Anahtar Kelimeler: Makine Öğrenmesi, Kripto Para, Dolandırıcılık Tespiti, Güvenlik

 

Hedefler Ve Kazanımlar: Bu yazı, okuyucularına makine öğrenmesinin ne olduğunun, nerelerde, ne amaçla kullanıldığını ve güvenlik sektörü içerisinde—spesifik olarak kripto para sektöründe—ne şekilde kullanılabileceği hakkında bilgi vermeyi amaçlamaktadır.

 

Giriş

Günümüzde gitgide duyulan ve insanlar tarafından ilgi ile karşılanan kripto para dünyasında sürekli gelişmeler olmaktadır. Görece yeni bir kavram olmasından dolayı kripto para cüzdanınızın tutulduğu, alım-satım yapılan sistemlerin açıkları ve bu açıklardan faydalanmak isteyen birçok kötü niyetli insanlar olabiliyor. Bu kişilerin sayısının ve yapılan alım-satımın akıl sır erdirilemeyecek düzeyde fazla olması yapılan bu işlemlerin doğru olup olmadığının tespitinin insan eli ile yapılamasının imkânsız olduğunu gösteriyor. Bundan dolayı gelişen teknolojinin getirdiği yeni problemleri yine yapay zekâ gibi yeni teknolojilerin yardımıyla çözmek gerekiyor. Detaya inmeden hemen önce bu yazının okuyucularının kavram karmaşası yanılmaması için temel terimlerin açıklaması aşağıda verilmiştir.

Makine Öğrenmesi: Bilgisayarlara açıkça programlanmadan öğrenme yeteneği sağlayan bir tür yapay zekadır (Samuel, 1959)

Kripto Para: Dijital bir değişim aracı ve kriptografiye dayalı merkezi olmayan bir ödeme sistemi (Molling, Klein, Hoppen & Rosa, 2020).

Denetimli Öğrenme: Bir dizi girdi değişkeni X ile bir çıktı değişkeni Y arasında bir eşlemenin öğrenilmesini ve bu eşlemenin görünmeyen veriler için çıktıları tahmin etmek üzere uygulanması (Cunningham, Cord & Delany, 2008).

 

Makine Öğrenmesi Tarihçesi (Timeline)

  • 1950’ler – Öncü makine öğrenimi araştırması, basit algoritmalar kullanılarak yürütüldü.
  • 1960’lar – Makine öğreniminde olasılıklı çıkarım için Bayes yöntemleri tanıtıldı.
  • 1970’ler – Makine öğreniminin efektifiliği konusundaki karamsarlığın neden olduğu ‘AI Kışı.
  • 1980’ler – Geri yayılımın (Backpropagation) yeniden keşfi, makine öğrenimi araştırmalarında yeniden canlanmaya neden olması.
  • 1990’lar – Makine öğrenimi üzerinde çalışmak, bilgi odaklı bir yaklaşımdan veri odaklı bir yaklaşıma geçti. Bilim insanları, büyük miktarda veriyi analiz etmek ve sonuçlardan sonuçlar çıkarmak veya “öğrenmek” için bilgisayarlar için programlar oluşturmaya başlar. Destek vektör makineleri (SVM’ler) ve tekrarlayan sinir ağları (RNN’ler) popüler hale geldi. Sinir ağları ve süper Turing hesaplama yoluyla hesaplama karmaşıklığı alanları başladı.
  • 2000’ler – Destek-Vektör Kümeleme (SVC) ve diğer çekirdek yöntemleri (kernel) ile denetimsiz makine öğrenmesi yöntemleri yaygınlaştı.
  • 2010’lar – Derin öğrenme mümkün hale geldi ve bu da makine öğrenmesinin yaygın olarak kullanılan birçok yazılım hizmeti ve uygulamasının ayrılmaz bir parçası olmasına yol açtı.

 

Neden Makine Öğrenmesi

Makine öğrenmesi (machine learning), sorunları yalnızca insan zihni tarafından kopyalanamayacak bir hızda ve ölçekte çözebildiği için değerli olduğunu kanıtlamıştır. Tek bir görevin veya birden fazla belirli görevin arkasındaki muazzam miktarda hesaplama yeteneği ile makineler, girdi verileri arasındaki kalıpları ve ilişkileri belirlemek ve rutin süreçleri otomatikleştirmek için eğitilebilir. Giriş kısmında söylenildiği üzere bir sisteme kötü niyetle yaklaşan insanların iyi veyahut kötü gibi etiketlerle isimlendirilmesi insan eliyle imkansızdır. Fakat eğer ki makine öğrenmesinin gücünden faydalanıp yapılan gerçek işlemlerin gerçek, sahte işlemlerin ise sahte etiketi ile etiketlenmiş olduğu bir veri seti kullanılarak bir model oluşturulursa sadece iş yükü azaltılmakla kalmaz aynı zamanda insanın yakalayamadığı ve fark edemediği durumlar sıkıntısız bir şekilde halledilebilir.

 

Makine Öğrenmesi Uygulanması Ve Çalışma Ortamı

Öncelikle makine öğrenmesi tekniklerinin herhangi bir alana uygulanabilmesi için veri analizi, veri işleme, veri görselleştirme ve özellik mühendisliği gibi veri bilimi alanlarının çok iyi bilinmesi gerekmektedir. Diğer bir gereksinim çalışacak ortam yani kodun yazılacağı platformdur. Bu kısımda en çok kullanılan ortamlardan birisi Jupyter Notebooklarıdır. Fakat benim de yaptığım gibi, bu notebookların çalışma mantığını kullanan Kaggle notebooklarını da kullanabilirsiniz. Yapmanız gereken tek şey Kaggle sitesine girmek, Sol kısımdan “Code” bölümüne gelip “New Notebook” butonuna basmaktır.

Daha sonra karşınıza açılan kodlama platformu üzerinden dilediğiniz veri setini seçip istediğiniz projeleri yapabilirsiniz. Platform Google tarafından 2017’de satın alınmış olup kuruluşunda olduğu gibi tamamıyla ücretsizdir.

 

Makine Öğrenmesi İş Akışı (Workflow)

Elinizde bulunan veri setinden çözmeye çalıştığınız problem türüne göre değişmekte olan makine öğrenmesi iş akışını genel hatlarıyla şu adımlar oluşturur:

  • Keşifçi Veri Analizi
  • Veri Temizleme
  • Veri İşleme
  • Model Oluşturma

Bu kısmın daha iyi anlaşılabilmesi için Ethereum ile ilişkili yapılan işlemlerin dolandırıcı işi olup olmadığını tahmin eden model geliştirme sürecini açıklamak istiyorum.

 

Örnek Uygulama

Elimde Kaggle platformunun Datasets kısmında Vagıf Aliyev’in yayınlamış olduğu olduğum Ethereum’a ilişkin işlemlerin yapıldığı bir veri seti var. Öncelikle Yapmamız gereken ilk işlem veri hakkında genel bir bilgi sahibi olmak. Yaptığım keşifçi veri analizi sonrası Bazı kategorik ve sürekli sütunlarda kayıp verilerin (NA türü değerler, örn. NaN, NaT, None) olduğunu tespit ettim. Bu durumu halledebilmek amaçlı sürekli değerleri içeren sütunlardaki kayıp verileri o sütunların medyanı ile, kategorik sütunlarda olan kayıp verileri ise o sütunların modları ile, en çok tekrar eden değer, doldurdum. Daha sonra verimin içinde sıfır varyansa sahip olan sütunlarımın makineme öğreteceği hiçbir bilgi olmadığı için o sütunları veriden siliyorum. Bu işlemin ardından, verimi makinemi eğiteceğim Eğitim seti ve test edeceğim Test seti olarak ikiye ayırıyorum (eğitim seti verinin %70’ini, test kısmı ise %30’luk kısmını kapsıyor).

Veriyi makine öğrenmesi modellerin daha rahat çalışabileceği forma getirmek için sürekli değerler içeren sütunları standardize etmek gerekmekte. Veriyi Scikit-learn kütüphanesinin StandardScaler() aracını kullanarak standardize ediyorum. Böylece tüm sütunlarım 0 ortalamaya ve 1 standard sapma değerine sahip olacak ve verim normal dağılım (Gaussian Distribution) şekline girmiş olacak. StandardScaler() aracı aşağıdaki denklemi kullanmaktadır:

z=(x-μ)/σ

Kategorik değişkenleri ise kategorik sütunların yüksek kardinaliteye—bir sütunun birçok unique değere sahip olması durumu—sahip olması sebebiyle TargetEncoding() aracını kullanarak kodluyorum.

Verimin içinde yapılan işlemin dolandırıcı (1) ya da gerçek (0) olduğunu içeren etiket sütunumda yüksek bir imbalans olduğunu gördüğüm için minör sınıf olan dolandırıcı (1) etiketinin sayısını istatistiksel bir teknik olan SMOTE ile artırıyorum. Bunu model oluşturma sürecinde daha yüksek bir doğruluk skoru almak için yapıyorum. SMOTE uygulamadan önce dağılım:

SMOTE uyguladıktan sonra elde ettiğim dağılım:

Bir aşırı örnekleme (oversampling) tekniği olan SMOTE başarılı bir şekilde uygulandı. Sıra model oluşturma kısmına geldi. Bu kısımda 3 farklı model oluşturdum: Logistic Regression, Random Forest, XGBoost. İlgili modelleri verilerimle eğitip test ettikten sonra aldığım doğruluk sonuçları şu şekilde oldu:

En iyi doğruluk skorunu veren XGClassifier modelinin tahmin istatistiklerini yakından gözlemlemek amaçlı karışıklık matrisine bakalım:

Görüldüğü üzere test setinde “Gerçek” etiketiyle işaretlenmiş verilerimin 2273’ünü doğru bir şekilde sınıflandırdı fakat 13 tanesini yanlış sınıflandırdı. Diğer kısımda ise, “Dolandırıcı” etiketiyle işaretlenmiş verilerimin 492’sini doğru bir şekilde sınıflandırırken 11 tanesini yanlış sınıflandırdı. Bu modelden aldığımız doğruluk skoru ise 0.9913947651487989.

Gelelim XGBClassifier modelimizden aldığımız ROC AUC Skoruna. Aldığımız skor 0.99837 ve görüldüğü üzere kesikli turuncu çizginin sol üst tarafa yönelme eğilimi çok fazla. Mükemmel skorun 1.0 olduğu düşünülürse bu modelden aldığımız skorun tatmin edici nitelikte olduğunu söyleyebiliriz.

 

Modeli Güçlendirme

Bu çalışmada alınan skorları artırmak amacı ile Hiperparametre Optimizasyonu ile modeller geliştirilebilir. Fakat aldığımız sonuç %99’un üzerinde. Bundan dolayı, skorun azalma olasılığını da düşünerek, bir hiperparametre optimizasyonu gerekliliğini görmedim.

 

Modelin Bakımı (Yenilenmesi)

Eğer ki veri setinde bulunan değişkenlerin dışında farklı kullanışlı değişkenler bulunabiliyorsa veya halihazırda bulunan değişkenlere gelen yeni veriler var ise model yeniden oluşturulabilir. Genelde fazla veri olması veri biliminde olumlu karşılandığı için alınan skorun yeni verilerle birlikte artması ihtimali yüksektir.

 

Kapanış Ve Tartışma

Bu yazıda sizlere yapay zekanın bir branşı olan makine öğrenmesi güvenlik sistemlerinde nasıl kullanılabileceğini Ethereum’a ilişkin veri seti üzerinden uygulama yaparak anlatmaya çalıştım. Burada size tanıttığım örnek uygulama makine öğrenmesinin güvenlik sistemlerinde kullanılması ile ilgili sadece bir kısmı. Bu gibi örnekler daha çoğaltılıp, yeni konularla ile ilgili veri setleri oluşturulup farklı güvenlik problemlerine çözümler sunulabilir.

Bu yazıda kullanılan veri setine şuradan erişebilirsiniz: https://www.kaggle.com/datasets/vagifa/ethereum-frauddetection-dataset

Kapak Resmi Unsplash aracılığı ile Alex Knight’tan alınmıştır. (adres: https://unsplash.com/photos/2EJCSULRwC8)

İntihal oranı Turnitin programı kullanılarak hesaplanmıştır.

 

Creative Commons Lisansı
Bu eser Creative Commons Atıf-AynıLisanslaPaylaş 4.0 Uluslararası Lisansı ile lisanslanmıştır.

 

Kaynakça

Samuel, A. L. (1959). Machine learning. The Technology Review, 62(1), 42-45.

Molling, G., Klein, A., Hoppen, N., & Rosa, R. D. (2020). Cryptocurrency: a mine of controversies. JISTEM-Journal of Information Systems and Technology Management, 17.

Cunningham, P., Cord, M., & Delany, S. J. (2008). Supervised learning. In Machine learning techniques for multimedia (pp. 21-49). Springer, Berlin, Heidelberg.