Veri Biliminde İlerlemenin Anahtarı: Matematiksel Programlama

Bugün bu makalede bir dart tahtasına rastgele gerçekleştirilen atışları simüle ederek Pi sayısının değerini yaklaşık olarak nasıl hesaplayabileceğimizi göreceğiz.

Ve bu, henüz işin başındaki bir veri bilimcisinin özgeçmişine ekleyebileceği önemli bir beceri olan Matematiksel Programlama alışkanlığını geliştirmeye yönelik küçük bir adım…

Matematiksel-Programlama-Veri-Biliminde-İlerlemenin-Anahtarı
Monte Carlo: Bir dart tahtasına (çok miktarda) atış yaparak Pi sayısını hesaplama

Peki Matematiksel Programlama nedir? Aslında özünde, matematiksel kavramları, özelliklede bir dizi hesaplamayı sistematik bir şekilde, kodlama alışkanlığı ile oluşturmaktır.

Bu tür bir programlama alışkanlığı, analitik ve veri bilimi alanında hemen hemen her gün çok çeşitli kalıplarla karşılaşması ve bunları anlamlandırması beklenen birinin kariyeri açısından son derece yararlı olacaktır.

Matematiksel programlama yeteneği, genellikle bir veri modeli oluşturmanın ilk adımı olan sayısal analizlerin hızlı bir şekilde prototipleşmesine de yardımcı olur.

Veri Bilimi, Derin Öğrenme ve Makine Öğreniminde Optimizasyon

Birkaç Örnek Problem

Peki, matematiksel programlama ile neyi kastediyoruz? 

NumPy ve SciPy gibi çeşitli Python kütüphanelerinde yerleşik ve optimize edilmiş bir çok matematiksel fonksiyon mevcuttur, değil mi?

Evet, ancak bu, çeşitli sayısal hesaplama fonksiyonlarını sıfırdan kodlamanızı ve matematiksel programlama alışkanlığını kazanmanızın önünde bir engel olarak görülmemelidir.

İşte burada matematiksel programlama yeteneğinizi geliştirebileceğiniz rastgele birkaç örnek problem var, bunları çözerek bu yoldaki ilk adımlarınızı atabilirsiniz:

Gördüğünüz gibi, bu tür örnekler son derece ilginç ve gerçek hayatta karşılaşılabileceğiniz senaryolara yakındır. Dolayısıyla bunlar teknik, soyut veya stokastik simülasyonlar için kod yazma yeteneği kazanmanıza da katkıda bulunabilir.

İnternetten bazı matematiksel kavramlara veya hesaplamalara göz atarken, favori programlama dilinizde basit bir kod parçası ile bir kavramı ve hesaplamalayı bir an önce oluşturma isteğini içinizde hissediyor musunuz?

Cevabınız: Evetse, tebrikler! Zira bu, matematiksel programlama alışkanlığınız var ve veri bilimi alanında tatmin edici bir şekilde kariyer basamaklarını çıkmak istediğiniz anlamına gelir.

https://www.datasciencearth.com/python-numpy-1/

Matematiksel Programlama Veri Bilimi için Neden Önemli Bir Beceridir?

Matematiksel-Programlama-Becerisi
Matematiksel Programlama Becerisi

Veri bilimi, pratiksel olarak sayılar ve sayısal analizlerle son derece dostane ve yakın bir ilişkiye ihtiyaç duyar. Ancak bu, karmaşık formül ve denklemlerin ezbere bilmesi gerektiği anlamına da gelmez.

Sayılarla bir takım kalıpları keşfetme ve basit düzeyde kodlar yazarak bunları hızlı bir şekilde test etme becerisi, henüz emekleme aşamasındaki bir veri bilimcisi için çok uzak bir ihtimaldir. Ama mesele bu uzak ihtimali bu yolda ilerleyerek aşmaktır.

Buradaki mesele şu ki, veri bilimi kapsam olarak bir çok farklı bileşenden meydan gelmesine karşılık; veri düzenleme, metin işleme, dosya işleme, veritabanı oluşturma, makine öğrenimi ve istatiksel modellemeler, görselleştirme, sunum vb. gibi sağlam bir matematiksel programlama becerisinden çok da fazlasını gerektirmez.

Matematiksel programlama becerisini geliştirmek için gerekli olan tüm unsurları tam olarak saptamak pek de mümkün değildir, ancak yaygın olanlarak bilinenlerden bazıları şunlardır:

  • Modüler programlama alışkanlığı edinmek,
  • Çeşitli olasılık teknikleri hakkında net bir fikre sahip olmak,
  • Doğrusal cebir, temel matematik ve soyut matematiğin temel konularını okuyabilme ve anlayabilme seviyesine ulaşmak,
  • Temel tanımlayıcı ve çıkarımsal istatistiklere aşina olmak,
  • Süreksiz ve sürekli optimizasyon yöntemleri hakkında temel fikirlere haiz olmak (doğrusal programlama gibi)
  • Veri bilimcilerinin fikirlerini test etmek istediği çekirdek sayısal kütüphaneler ve tercih edilen dildeki fonksiyonlar ile ilgili temel yeterliliğe sahip olmak,

Veri bilimi açısından temel olarak hangi matematiksel konuları ve kavramları öğrenmeniz gerektiğini açıklayan şu makaleyi okuyabilirsiniz:

Birliktelik Kuralları Yönteminde Matematiksel Süreç

Aslında bu makalede, Monte Carlo yöntemi olarak bilinen, ve bir dart tahtasına rastgele gerçekleştirilen atışları simüle ederek pi sayısının değerinin yaklaşık olarak nasıl hesaplayacağımızı gösteren çok basit bir örnek problemi tartışarak; nasıl matematiksel programlama yapabileceğimizi göreceğiz…

https://www.datasciencearth.com/en/veri-bilimi-icin-hangi-programlama-dillerini-ogrenmeniz-gerektigini-biliyor-musunuz/

Monte Carlo: Bir dart tahtasına (çok miktarda) atış yaparak Pi sayısını hesaplama

Bu, bir dart tahtasına rastgele gerçekleştirilen atışları simüle ederek pi’nin değerini nasıl hesaplayabileceğimizi gösteren eğlenceli bir yöntemdir. Herhangi bir gelişmiş matematiksel analiz veya formül gerektirmez, ancak tamamen fiziksel (ama stokastik) bir sürecin öykünmesiyle pi’nin yaklaşık değerini hesaplamaya yarar.

Bu teknik yöntemin temel konsepti, rastgele bir süreci taklit ederek simüle eden Monte Carlo yönteminin şemsiyesi altında, çok sayıda kez tekrarlandığında, bazı ilgili matemetiksel değerlerin birbirine yaklaştırılmasına yönelik bir yaklaşıma yol açmasıdır.

Haydi başlayalım…

Monte-Carlo-Yöntemi
Monte Carlo Yöntemi

Kare şeklinde bir tahtayı hayal edin.

Ardından, içinde daire şeklindeki bir dart tahtasının tüm kenarlara teget olduğunu varsayın.

Ve sonra, ona dart atışları gerçekleştirdiğinizi düşünün. Tabi rastgele. Bu, bazı atışların dairenin içine, bazılarının da dışına düştüğü anlamına gelir. Ama kare tahtanın dışına hiçbir dartın düşmediğini varsayın.

Dart atışı sürecinin sonunda, atılan toplam dart sayısına karşılık daire içine isabet eden dart kısmını sayın ve bu sayıyı 4 ile çarpın.

Ortaya çıkan bu sayı, pi olmalıdır. Ya da, çok fazla sayıda atış yaptıysanız pi sayısına daha yakın bir sayıdır bu.

Veri Madenciliği, Veri Bilim ve Makine Öğrenmesi Algoritmaları ve Metrikleri

Bu Yöntemdeki Temel Fikir Nedir?

Temel-Fikir
Temel Fikir

Buradaki fikir son derece basittir. Çok sayıda dart atışı gerçekleştirdiğinizde, atışların dairenin içine isabet etme olasılığı; sadece dairesel alanının karesel alana olan oranıdır. Temel matematik yardımıyla, bu oranın pi/4 olduğunu çok kolay hesaplanabilirsiniz, ki bu yüzden pi sayısını elde etmek için bu sayıyı 4 ile çarparız.

Buradaki esas olan şey, dairenin (dairenin içine düşen dartların) fraksiyonunu olasılığa eşit hale getirmek için bir çok sayıda dart atışını simüle etmektir, ki bu rastgele bir olayın sadece çok sayıda denenmesinin limitsel hesabını geçerli kılan bir fikirdir.

Programlama Dili Teorisi: Kısa Bir Tanıtım ve Tarihçe

Python Kodu

Python kodunu gösteren bir Jupyter not defteri, Github repomdan alıntılanmıştır burada. Lütfen kopyalamak veya çatallamaktan çekinmeyin.

Adımlar çok basit.

1- İlk adım olarak, bir dartın rastgele atışını simüle etmek amacıyla şunun gibi bir fonksiyon yazın.

2- Ardından ikinci adım olarak, bir dartın iniş koordinatları göz önüne alındığında dairenin içine isabet edip etmediklerini belirlemek için şunun gibi bir fonksiyon yazın,

3- Son adım olarak da, çok sayıda dart atışını simüle etmek ve kümülatif sonuçtan pi sayısının yaklaşık değerini hesaplayabilmek için şunun gibi bir fonksiyon yazın.

Ancak matematiksel programlamamız burada henüz bitmedi. Şimdi yaklaşık değerin ne kadar iyi olduğunu ve rastgele atış sayısı ile nasıl değiştiğini test etmeliyiz. Herhangi bir Monte Carlo deneyinde de olduğu gibi, daha fazla sayıda tekrar ederek yaklaşık değerin daha iyi seviyede olmasını bekleriz. 

Bu veri biliminin ve analitiklerin özüdür. Beklenen çıktıyı yazdıran ve sadece bununla sınırlı bir fonksiyon yazmak yeterli değildir. Temel programlama yapılabilir, ancak bilimsel deneyde; hipotezin daha fazla araştırılması gerekir ve test edilmeden de sonuçlandırılamaz.

Şimdi-bu-denemeyi-birkaç-kez-yapalım-ve-neler-olduğunu-görelim.
Şimdi bu denemeyi birkaç kez yapalım ve neler olduğunu görelim.
Pi-sayısını-artan-sayıda-rastgele-atış-ile-hesaplamak
Pi sayısını artan sayıda rastgele atış ile hesaplamak

Burada, ortalamayı hesaplamak ve daha iyi bir yaklaşık değer elde etmek için çok sayıda rastgele atışın birkaç kez tekrarlanabileceğini gördük.

Birliktelik Kuralları Yönteminde Matematiksel Süreç

Basit Kodlar, Zengin Fikirler

Bu tekniğin arkasındaki teori ve kodlar son derece basit görünüyor. Ancak, bu gerçekleştirdiğimiz basit egzersizin arkasında, bazı oldukça ilginç fikirler gizli.

Fonksiyonel olarak bu programlamdaki yaklaşım: Tekniğin bir monolit kod bloğu kullanılarak kodlanabilmesiyle açıklanabilir. Bununla birlikte, burada görevlerin gerçek insan eylemlerini taklit eden basit fonksiyonlara nasıl bölünmesi gerektiğini görüyoruz.

  • dart atmak,
  • dartın iniş koordinatını incelemek ve dairenin içine isabet edip etmediğini belirlemek,
  • ve bu fonksiyonu keyfi olarak tekrarlamak

Büyük programlar için yüksek kaliteli kod yazmak açısından bu tür modüler programlama stilini kullanmak, öğretici ve çok faydalı olabilir.

Bu programlama stilinde, ortaya çıkan esas davranış modeli: Bu kodun hiçbir yerinde pi veya bir dairenin özelliklerini içeren herhangi bir formül kullanılmamış olmasıdır. Bir şekilde burada, pi’nin değeri; bir tahtaya rastgele bir grup dart atmak ve bir olasılık kesirini hesaplayabilmek için yapılan toplu eylemin sonucunu bulmaktır. Bu, matematiksel bir paternin karşılıklı etkileşimleri yoluyla benzer türde çok sayıda tekrarlanan deneyden ortaya çıktığını gösteren davranışlara bir örnektir.

Olasılığın tanımı: Olasılık tanımının iki geniş kategorisi ve iki şiddetli rakibi vardır: Frekansçılar ve Bayesciler. Bir frekansçı gibi düşünmek ve olasılığı bir olayın sıklığı (toplam rastgele deneme sayısının bir parçası olarak) tanımlamak kolaydır. Buradaki kodlama çalışmasında, bu özel olasılık kavramının rastgele denemelerin çok sayıda tekrarlanmasından nasıl ortaya çıktığını gördük.

Stokastik simülasyon: Dart atmanın temel fonksiyonunun merkezinde, bir tür rastgele jeneratör fonksiyonu kullanıldı. Şimdi, bilgisayar tarafından üretilen rastgele bir sayı, aslında rastgele değildir, ancak tüm pratik amaçlar için, böyle olduğu varsayılabilir. Bu programlama çalışmasında, Python’un rasgele (random) modülünden tek tip rasgele bir jeneratör fonksiyonu kullanıldı. Bu tür bir rasgeleleştirme yönteminin kullanımı, veri bilimi pratiğinde kullanılan güçlü bir yöntem olan stokastik simülasyonun kalbidir. 

Tekrarlanan simülasyonlar ve görselleştirme ile fikri test etme: Genellikle, veri biliminde, çok sayıda simülasyon / deney temelinde test edilmesi gereken stokastik süreçler ve olasılık modelleri ile ilgileniriz. Bu nedenle, bu asimtotik terimlerle düşünmek ve veri modelinin ya da bilimsel fikrin geçerliliğini istatistiksel olarak sağlam bir şekilde test etmek zorunludur.

Özetle;

Burada matematiksel programlama alışkanlığını geliştirmenin ne anlama geldiğini gördük. Esasen, zihninizde geliştirdiğiniz matematiksel kavramları veya veri modellerini test etmeyi programlama alışkanlığı açısından değerlendirdik. Ve gördük ki, bu basit alışkanlık, henüz yolun başında olan bir veri bilimcisi için iyi seviyredeki uygulamaların geliştirilmesine yardımcı olabilir.

Basit geometriksel tanımlamalar, stokastik simülasyon kavramları ve sıklık (frekansçı) olasılığının tanımı kullanılarak, pi sayısının nasıl hesaplanabileceğinin bir örnek çözümünü analiz ettik.

Eğer daha zorunu arıyorsanız,

Rastgele bir yürüyüş eylemini simüle ederek pi sayısını hesaplayabilir misiniz?

Tirthajyoti Sarkar

 

Okuduğunuz için teşekkürler 🙂

Umarım hepimiz için faydalı bir paylaşım olmuştur. Eğer sosyal medya kanallarımı takip etmek istiyorsanız, buraya tıklayabilirsiniz.