Benzetimli Tavlama (Simulated Annealing) Algoritması

BENZETİMLİ TAVLAMA ALGORİTMASI

Herkese merhabalar, optimize kelimesi aslında günlük hayatta çok sık karşımıza çıkan bir kelimedir. Takdir edersiniz ki optimizasyon kelimesi aslında bir olayın, problemin veya bir durumun içerisindeki olasılıklardan mümkün olan en iyiyi seçmesi durumudur 📈.

Genel bir minimum noktası bulmak amacı ile problemin farklı zamanlarındaki sonuçlarını elde ederek bu sonuçlardan iyi olan değere doğru hareket edip birden fazla çözümü test ederek en iyi sonucu bulmaya yardımcı olan yöntem olan Simulated Annealing (Benzetimli Tavlama) yöntemi de bir optimizasyon problemi çözüm yöntemidir [1].

🔎Simulated Annealing Algoritması Hakkında

Benzetimli tavlama (Simulated Annealing) yöntemi, ayrık ve daha az ölçüdeki sürekli optimizasyon problemlerini ele almak için kullanılan popüler bir metasezgisel yerel arama yöntemidir.

Benzetimli tavlama algoritmasının temel özelliği, küresel bir optimum bulma umudu ile tepe tırmanma hareketlerine (amaç fonksiyon değerini kötüleştiren hareketlere) izin vererek yerel optimumdan kaçma aracı sağlamasıdır [2].

Algoritmaya tavlama ismi verilmesinin sebebi, demircilerin demiri döverken belirli bir dereceye kadar ısıl işlemden geçirmesi sonucu demirin istenilen kıvama gelmesini esas almasından kaynaklanmaktadır. Aynı mantık ile bir problem ele alınarak tavlama derecesi ile ısıtma sürecinden geçiriliyor ve ardından istenilen noktaya geldiğinde sonuca ulaştığı kabul ediliyor. (Local Objective Function)  

Simulated Annealing
                                                          Demirin ısıl işlemden geçirilerek tavlanması [3]

Amaç fonksiyonunda Δ kadar bir yükselmeye yol açan hareketin kabul edilme olasılığını veren fonksiyon kabul (accept) fonksiyonu olarak adlandırılır [4].Probability Formula

                                                                      Değerler arasında swap değişim yöntemi

Table1

İterasyon çıktılarındaki ilk çözüm ve elde edilen en iyi çözüm değerleri ise sırasıyla aşağıda gösterilmektedir. Optimum değerleri ulaşmayı hedefleyerek 10 iterasyon boyunca ilk çözüm ve son çözüm değerlerini elde edeceğiz.

First Five İteration

                                                                              Objective değerler tablosu

Visual                                                                         Objective değerlerin grafikselleştirilmesi

Örneğin 5.iterasyon çalıştırılırken değer değişimlerini gözlemlemek amacı ile hesaplama sırasında farklı zamanlarda alınan sonuçlar aşağıda gösterilmiştir. Böylelikle swap işlemi mantığını ve bu süreçteki enerji değişimleri (ΔE) gözle görülebilmektedir.

Table3

                                                         Swap işlemi devam ederken enerji değerlerinin gösterilmesi

Table4                                                     5 ve 102 nolu bağdaki hesaplamaya bağlı result değerleri

Table5

                                                           113 ve 127 bağındaki hesaplamaya bağlı olarak result değerleri

🔎 2-OPT ALGORİTMASININ SA ÜZERİNDE UYGULANMASI

2-opt algoritması, GSP problemlerinin çözümüne yönelik, muhtemelen en temel ve çok geniş kullanım alanına sahip bir algoritmadır [6]. Temel olarak tur içerisindeki iki kenarın silinmesi ve iki parçaya ayrılan turun maliyetleri düşürecek şekilde, farklı olarak bağlanması şeklinde tanımlanabilir (Gutin ve Punnen, 2002).

✔️Benzetimli tavlamanın swap yönteminde iki değer birbiri ile kontrol edilmekte ve olasılık değerine göre hafızaya alınmaktadır. Fakat tüm işlemler sırası ile yapılacağından çalışma zamanı açısından çok verimli olmayacaktır.

✔️2opt algoritması ile örneğin tour olarak adlandırılan indis değerlerinde (initial_p) 4. düğümden sonra 17. düğüme geçiş yapmakta olduğu görülmektedir. 2opt algoritması devreye 4 ve 5. düğümler arasındaki bağı kırıp d ile 17 düğümleri arasındaki bağı oluşturmakta girer. Böylelikle çalışma zamanı daha verimli sonuçlar üretir.      

                                                     Tour bağlantısındaki farklı değerlerin bağlanması

two_opt_python fonksiyonunda şehirlerdeki indis değerleri 2 artırımlı olarak kontrol edilerek değişimi vermektedir. Tour üzerindeki yolda herhangi bir değişim yaşandıysa bu değişim tour değişkenine atanmaktadır. dist( ) fonksiyonu sonucunda iki şehir arasındaki ( 4-17 gibi) Öklid uzaklığı hesaplatılarak tour içerisindeki koordinatlar döndürülmektedir. Bu sayede en iyi çözüm üzerinde iyileştirme sağlanmaktadır ⭐

REFERANSLAR

[1] Sadi Evren Şeker, Bilgisayar Kavramları, “Simulated Annealing (Benzetilmiş Tavlama)”, http://bilgisayarkavramlari.sadievrenseker.com/2009/11/23/simulated-annealing-benzetilmis-tavlama/ adresinden alınmıştır.

 [2] Darrall Henderson, Sheldon H Jacobson, Alan W. Johnson, The Theory and Practice of Simulated Annealing, April 2006.          

 [3] Orhan Baylan, “ISIL İŞLEM NEDİR? ÇELİĞE NİÇİN ISIL İŞLEM YAPILIR?”, https://www.metaluzmani.com/isil-islem-nedir-celige-nicin-isil-islem-yapilir/ adresinden alınmıştır.     

 [4] Tavlama Benzetimi Algoritması (Simulated Annealing), BMÜ-579 Benzetim ve Modelleme, Yrd. Doç. Dr. İlhan AYDIN.

[5] Hefei University, Thomas Weise, Metaheuristic Optimization, 7. Simulated Annealing.

[6] Timur KESKİNTÜRK, Barış KİREMİTCİ, Serap KİREMİTCİ, 2-OPT Algoritması ve Başlangıç Çözümünün Algoritma Sonuçları Üzerindeki Etkisi, 2016.

                                                                                              Olasılık formülü

Sıcaklık yüksek olduğunda, amaç fonksiyonunda artışa neden olabilecek hareketlerin kabul edilme olasılığı çok yüksek olacak, sıcaklık düştükçe bu olasılık da azalacaktır. Bu sebeple, aramaya yeteri kadar yüksek bir sıcaklık değeri ile başlamak gereklidir [4]. Ben çalıştığım projede kullanılacak başlangıç sıcaklık değerini T= 100000 olarak belirledim 🌡️.

Algoritmada, sıcaklık yavaş yavaş azaltılırken her sıcaklık değerinde belli sayıda hareket deneyerek arama işlemi sürdürülmektedir [4].

Algoritmanın Akış Şeması 🖋️Flowchart

                                                   Benzetimli Tavlama Algoritması Akış Diyagramı

Algoritmanın Çalışma Prensibi 🔨

Benzetimli algoritmanın çalışma mantığında en önemli işlem, sıcaklığın zamanla soğutulması gerektiğidir. Çünkü başlangıç sıcaklığı zamanla azalmazsa enerji sürekli yüksek kalacak ve yüksek orandaki entropi ile tüm ağacın aranması sağlanacaktır, bu istenmeyen bir durumdur.

Algoritmada soğuma işlemi gerçekleştirilene kadar her çözümde enerji seviyeleri karşılaştırılır. Enerji değişimi hesaplanmasında pos’ olarak olası bir yapılandırmadan mevcut yapılandırma farkından faydalanılır [5].

Solution1                                                                  Enerji değişimi hesaplanması [5]

Daha sonra kabul edilecek pozisyonun hesaplanması için Şekil 4’ de görüldüğü gibi bir hesaplama olasılığı sunulmuştur. Boltzmann sabiti olan k değeri göz ardı edilerek denklem sadeleştirilmiştir. Bu sayede yeni aday çözümün hesaplanmasına imkân sunulmuştur.

                                                               Yeni aday çözümün olasılık hesabı [5]

Bu durumlarda T sıcaklığı ise yinelenen belirli bir aralıkta sıcaklığını azaltmaya devam etmektedir. Bu projede kullanılan veri seti ‘gr137.tsp’ olarak seçilmiştir.

Bu veri seti TSP alt yapısı ile çalışmakta ve gezgin satıcı problemlerini baz almaktadır. Bu veri seti Amerika alt yapısındaki 666 tane şehir problemi için bilgi içermekte ve içerik boyutunda 137 tane X ve Y koordinatları verilmektedir.

Benzetimli tavlama yönteminde çalıştırılan düğümleri öncelikle swap yöntemi ile değiştirerek karşılaştıracağız ve en iyi sonucu elde etmeye çalışacağız 👩🏻‍🏫

Amaç fonksiyonu olarak gösterilen Objective Function ’da karşılaştırılacak düğümlerin mesafelerini aşağıdaki gibi hesaplayacağız. Burada hesaplanacak mesafeyi ise öklid mesafesi olarak alacağız 📏

Optimizasyon algoritmalarında çok sık kullanılan bir dil olan Python dilinde kodlamaya devam edeceğiz. Haydi birlikte amaç fonksiyonunu öklid mesafesi baz alarak yazalım 👍

Objective Function                                                              Amaç fonksiyonu mesafe hesaplanması

Swap Yöntemi ile Hesaplama 🧮

Şekil 8’ de görüldüğü üzere N ile gösterilen değer koordinatların boyutunu ifade etmektedir. N boyutunda rastgele değerler üreterek swap1 ve swap2 değişkenlerine atayacağız. 

Kontrol edilecek iki değer birbiri ile aynı ise yeni olasılık değeri oluşturmak üzere swap2 olasılığı yeniden değer oluşturacak demektir. Bu veri setinde p ile ifade edilen değer bir bakıma Id sütununa denk gelmektedir. 

Üzerinde değişiklik yapılmaması için copy( ) fonksiyonu ile değerler kopyalanmaktadır. Her aşamada enerji hesaplaması yapılmasının sebebi, Simulated Annealing algoritma mantığındaki sıcaklık ( temperature ) değerinin belirli bir değere kadar ısıtılması ve sonra cooling factor denilen soğuma faktörü ile belirli bir seviyeye kadar soğutulması gerektiğinden kaynaklanmaktadır.

Benzetimli tavlama örneğindeki ısınma sürecinde içerisindeki partiküllerin hareketliliğinden dolayı enerji yükselmesi olacaktır ve enerji hesabı her süreçte yapılarak yüksek enerjiye sahip olup olmadığı kontrol edilmek istenmektedir ⚡

Swap method

                                                                        Swap yöntemi ile hesaplama

Algoritmada kullanılan bu yöntemde sıra ile (order) işlem yapılmakta olduğundan rastgele değerler üzerinde hesaplama yöntemine gidemez böylelikle doğru sonuçlara diğer arama operatörlerinin kullanımı ile gidilmesi zaman açısından da çok önem arz etmektedir.Swap Changing

                                                                      Değerler arasında swap değişim yöntemi

Table1

İterasyon çıktılarındaki ilk çözüm ve elde edilen en iyi çözüm değerleri ise sırasıyla aşağıda gösterilmektedir. Optimum değerleri ulaşmayı hedefleyerek 10 iterasyon boyunca ilk çözüm ve son çözüm değerlerini elde edeceğiz.

First Five İteration

                                                                              Objective değerler tablosu

Visual                                                                         Objective değerlerin grafikselleştirilmesi

Örneğin 5.iterasyon çalıştırılırken değer değişimlerini gözlemlemek amacı ile hesaplama sırasında farklı zamanlarda alınan sonuçlar aşağıda gösterilmiştir. Böylelikle swap işlemi mantığını ve bu süreçteki enerji değişimleri (ΔE) gözle görülebilmektedir.

Table3

                                                         Swap işlemi devam ederken enerji değerlerinin gösterilmesi

Table4                                                     5 ve 102 nolu bağdaki hesaplamaya bağlı result değerleri

Table5

                                                           113 ve 127 bağındaki hesaplamaya bağlı olarak result değerleri

🔎 2-OPT ALGORİTMASININ SA ÜZERİNDE UYGULANMASI

2-opt algoritması, GSP problemlerinin çözümüne yönelik, muhtemelen en temel ve çok geniş kullanım alanına sahip bir algoritmadır [6]. Temel olarak tur içerisindeki iki kenarın silinmesi ve iki parçaya ayrılan turun maliyetleri düşürecek şekilde, farklı olarak bağlanması şeklinde tanımlanabilir (Gutin ve Punnen, 2002).

✔️Benzetimli tavlamanın swap yönteminde iki değer birbiri ile kontrol edilmekte ve olasılık değerine göre hafızaya alınmaktadır. Fakat tüm işlemler sırası ile yapılacağından çalışma zamanı açısından çok verimli olmayacaktır.

✔️2opt algoritması ile örneğin tour olarak adlandırılan indis değerlerinde (initial_p) 4. düğümden sonra 17. düğüme geçiş yapmakta olduğu görülmektedir. 2opt algoritması devreye 4 ve 5. düğümler arasındaki bağı kırıp d ile 17 düğümleri arasındaki bağı oluşturmakta girer. Böylelikle çalışma zamanı daha verimli sonuçlar üretir.      

                                                     Tour bağlantısındaki farklı değerlerin bağlanması

two_opt_python fonksiyonunda şehirlerdeki indis değerleri 2 artırımlı olarak kontrol edilerek değişimi vermektedir. Tour üzerindeki yolda herhangi bir değişim yaşandıysa bu değişim tour değişkenine atanmaktadır. dist( ) fonksiyonu sonucunda iki şehir arasındaki ( 4-17 gibi) Öklid uzaklığı hesaplatılarak tour içerisindeki koordinatlar döndürülmektedir. Bu sayede en iyi çözüm üzerinde iyileştirme sağlanmaktadır ⭐

REFERANSLAR

[1] Sadi Evren Şeker, Bilgisayar Kavramları, “Simulated Annealing (Benzetilmiş Tavlama)”, http://bilgisayarkavramlari.sadievrenseker.com/2009/11/23/simulated-annealing-benzetilmis-tavlama/ adresinden alınmıştır.

 [2] Darrall Henderson, Sheldon H Jacobson, Alan W. Johnson, The Theory and Practice of Simulated Annealing, April 2006.          

 [3] Orhan Baylan, “ISIL İŞLEM NEDİR? ÇELİĞE NİÇİN ISIL İŞLEM YAPILIR?”, https://www.metaluzmani.com/isil-islem-nedir-celige-nicin-isil-islem-yapilir/ adresinden alınmıştır.     

 [4] Tavlama Benzetimi Algoritması (Simulated Annealing), BMÜ-579 Benzetim ve Modelleme, Yrd. Doç. Dr. İlhan AYDIN.

[5] Hefei University, Thomas Weise, Metaheuristic Optimization, 7. Simulated Annealing.

[6] Timur KESKİNTÜRK, Barış KİREMİTCİ, Serap KİREMİTCİ, 2-OPT Algoritması ve Başlangıç Çözümünün Algoritma Sonuçları Üzerindeki Etkisi, 2016.

Python Veri Bilimi Kütüphaneleri 2 – Numpy Metodoloji

Python içerisinde en önemli ve temel olarak bakılan kütüphanelerden birisi de şüphesiz numpy kütüphanesidir. Bu serinin devamında öncelikle pandas kütüphanesinden şimdi de numpy ile devam edeceğim. Genelde sahip olduğu kütüphane bazlı özelliklerde fonksiyonel yapısı, diğer kütüphanelere göre daha sağlam bir altyapıya dayanmaktadır. Bundan ötürü, yapılacak olan matematiksel işlemleri de hızlıca ve sağlıklı bir şekilde yapabilmektedir. Açılımı zaten python içerisinde Numerical (num) python (py) olarak bilinmektedir. Buradan da anlaşıldığı üzere, matematiksel yönü kuvvetli, istenen sonuçlara hızlı ve kolay şekilde ulaşması mümkün bir kütüphanedir. Makine Öğrenmesi ve Derin Öğrenme konularında vazgeçilmez yapı taşı kütüphanelerinden birisidir. Temel anlamda yapılan her işlemin arka planında kendisi rol oynar. Burada bahsedilen şey array halde bulunan matrisler ve onların durumlarına göre kendi aralarındaki işlemler, çıktılarının hesaplanması ve proje olarak yapılan iş esasında matrisleri kullanmak en gerekli koşuldur. Genellikle bunu Image Processing işlemlerinde sıkça görsek bile, bu alanda çalışacak olan kişilerin yapacağı işlemlerde numpy bilgisi mutlaka olmalıdır.

 

Başlı başına bir bütün olarak kullanılan bu kütüphane, sizlere kullanacağınız modeller için uygun matematiksel yapılar sunar. Bu sayede, yapacağınız işlemlerin betimsel anlamda açıklamaları da aynı şekilde daha mantıklı olur. Üst paragrafta da bahsettiğim gibi matris işlemleri matematik tabanında en mühim olaydır. Bu halihazırda sizin yapacak olduğunuz işlemler bütününe yayılır ve katman bazlı olarak işlem süreçlerinde numpy size kolaylık sağlar. En önemli katman işlemlerini, resimleri aktif olarak işlediğimiz zaman gözle görülebilir bir şekilde fark edebiliriz. OpenCV kütüphanesi işlemler boyunca gerekli yükü sırtlasa bile, herhangi bir numpy kütüphanesinin array yapısı aracılığı ile yapılmamış işlemler sürdürülebilir bir halde olmaz. Yapılacak birçok işlem arkasında, matrisler ve matrislerin çarpımları olacağı için numpy kütüphanesi bu işlerin vazgeçilmez değeridir. Fonksiyonel yapısının verdiği imkanlar doğrultusunda tam anlamıyla kullanıcı dostu bir kütüphanedir. Dünya çapında bu alanda çalışan kişilere yapılan testlere göre, Python kütüphaneleri içerisinde en kullanışlı ilk 5 kütüphane içerisindedir. Kullanım alanları da bununla doğru orantılı olarak artmaktadır.

 

 

Derin öğrenme ve Makine Öğrenmesi konuları, sanılanın aksine sadece uzun satırlar süren kodları yazmak demek değildir. Bu sebepten insanların çoğu, arka planında dönen olayları bilmeden kod yazmaya hatta bu alanda kariyer yapmaya başlıyorlar. Bu olayların arka tarafında yoğun bir matematik ve istatistik bilgisi yatmaktadır ki buna en iyi örnek, Image Processing işlemleridir. Çünkü arka tarafında tamamen matematik yatmaktadır ki bu işlemler matrisler ve kullanılan kütüphaneler içerisinde numpy vardır. Bu da bu kütüphanenin hemen hemen her yerde aktif görev aldığının en büyük kanıtıdır. Bu şekilde çok fonksiyonlu olan python içerisinde kütüphane yoktur. Çünkü her alanda mutlaka bulunması gereken iki kütüphane vardır. Bunlar numpy ve pandas kütüphaneleridir. Bunlar hem veriyi işleme hem veri üzerinde sayısal işlemleri yapma konusunda kolaylık sağlarken bizlere veriye bakış açısında oluşan farklılıkları gösterir. Bu da Python bünyesinde bulunan kütüphanelerin özellikle veri işleme ve veri analizleri üzerine olan kütüphanelerin ne derece mühim olduğunun bir kanıtıdır.

 

 

Numpy kütüphanesinin veri şekillendirme ve hazırlama konusunda büyük ölçüde fark yarattığını net bir şekilde söyleyebilirim. Numpy kütüphanesi içerisinde bulunan reshape, array, exp, std, min, sum gibi birçok anlamda kullanışlı diyeceğimiz fonksiyonlara sahiptir. Diğer kütüphanelerden ayırt eden en temel seviyesi aslında budur. Bunun gerekli detaylarına ulaşmak isteyenler için kaynaklar kısmında bunlara dair bilgiler bırakacağım. Buradan siz de numpy kütüphanesini kullanırken ne gibi özelliklerden faydalanabilirsiniz ya da sayısal işlemlerde ne tarz kolaylıklar yakalayabilirsiniz bunları kendiniz de cheat sheet veya numpy’ın kendine ait olan internet sitesinden bulabilirsiniz.

 

Bu zaman kadar okuduğunuz ve yazılarımı takip ettiğiniz için teşekkür eder, iyi günler dilerim.

 

References:

-https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Numpy_Python_Cheat_Sheet.pdf

-https://numpy.org/

-https://cs231n.github.io/python-numpy-tutorial/

-https://www.w3schools.com/python/numpy_intro.asp

-https://globalaihub.com/python-veri-bilimi-kutuphaneleri-1-pandas-metodoloji/

-https://globalaihub.com/python-data-science-libraries-1-pandas-methodology/

Dijital Miras

DİJİTAL MİRAS

Dijital dünyanın dört bir tarafımızı kuşattığı ve büyük bir hızla analog dünyanın yerini aldığı günümüz koşullarında, hukuki ilişkiler de bu durumdan nasibini almaktadır. Dijital çağın kaçınılmaz bir sonucu olarak; çeşitli özel hukuk ilişkilerinin dijital platformlarda kurulması ve yürütülmesi (dijital içerikli sözleşmeler), bu ilişkilere uygulanacak hukuk kurallarının tespiti ve bu hususta bilhassa, Türk Medeni Kanunu ve/veya Türk Borçlar Kanunu’nun yeterliliği bakımından tereddüt ve mevcut hukuk kurallarının dijital dünyanın gerisinde kaldığı endişesi yaratmaktadır.

İç hukukumuzda dijital çağın gereklerine denk düşecek şekilde bir “dijital güncelleme”nin gerçekleşip gerçekleşmeyeceği ya da ne zaman gerçekleşeceği belli olmadığından, en azından bugün için mevcut mevzuat hükümleri uyarınca bir değerlendirme yapılması gerektiği ortadadır. Her geçen gün farklı bir teknolojiye tanık olduğumuz gündelik yaşamımızda artık teknolojiyle beraber kavramlarımız ve kabul ettiklerimizde değişmektedir. En son farklı olarak yeni bir gelişme yaşandı: Dijital Miras.

Peki nedir bu dijital miras ?

Dijital miras, “miras bırakanın internet ortamındaki hesaplarının ve verilerinin tümü” biçiminde de tanımlanabilir. Aslında böyle bir kavram sadece tanım olarak vardı ve somut bir olayda uygulanabilirliği yoktu. Fakat teknolojik gelişmelerin arttığı bu zamanda artık somut olarak uygulanabilir hale geldi.

 

Dijital Miras kavramı somut olaylara uygulanması zor ve karmaşık bir kavram olarak çıkıyordu. Çünkü internet ortamındaki hesapların ve verilerin kişinin dokunulmazlığı olarak bakılıyor ve buna göre sonuçlandırmalar yapılıyordu. Ama artık bu durum İstinaf Mahkemesinin verdiği son kararlar değişti.

Bu konu hakkındaki İstinaf Mahkemesi kararı şöyle:

Eşini trafik kazasında kaybeden bir vatandaş, Denizli 4. Sulh Hukuk Mahkemesi’ne avukatı …. tarafından verdiği dilekçede, hanımına ait Apple marka cep telefonunun iCloud hesabındaki fotoğraf, video, ses kayıtları, medya dosyaları ile maillere ulaşmak için eşinin terekesinin tespitini, iCloud kimliğinin miras kabul edilerek, hesaba ulaşması için karar verilmesini talep etti. Mahkeme ise bu talebi “özel hayatın gizliliğini ihlal” diyerek reddetti.

Kararı İstinaf Mahkemesi’ne taşıyan vatandaş, Antalya Bölge Adliye Mahkemesi 6. Hukuk Dairesi’ne verdiği dilekçede “Eşim, 13 Temmuz 2019’da vefat etti. Geride mirasçı olarak ben ve çocuğumuz kaldı. Eşimin ölümü sonrası GSM hattı kapatıldı. Telefonundaki fotoğraf, video, ses kayıtları, dokümanlar, notlar, mailler iCloud hesabındaydı. Eşimin iCloud hesabına erişebilmek için şifresini bilmem gerekiyor. Bu hesap vasıtası ile kontrol edilen e-ticaret sitesi hesabı, e-hediye çekleri ve kuponları vardı. Apple firması mahkeme kararıyla erişim izni verileceğini bildirdi” dedi.

Bu kararla beraber hukuk literatürüne de farklı ve uygulanabilir bir kavram girmiş ve ilk uygulamasını bulmuş oldu. Dijital mirasların çok fazla olduğu bugünlerde ölmeden önce bazı şeylerin yok edilmesi gerektiği gerçeğini de göz önünde bulundurmak gerektiği bir defa daha hatırlatmak isterim. Günümüzün yaklaşık üçte birini akıllı telefonumuzda harcıyoruz. Ve haliyle çok veri birikiyor. Biriken verilerin başımıza iş açması hiç hoş olmayacaktır.

 

Referanslar:

Python Veri Bilimi Kütüphaneleri 1 – Pandas Metodoloji

Üzerinde çalıştığım konuları, sizlere de tek tek anlatacağım bir seri haline getiriyorum. Bu sebeple, aktif olarak üzerinde çalıştığım hemen hemen tüm kütüphanelerin metodolojisini ve kullanım yönlerini anlatacağım. Önceliği veri okumadan veri ön işleme gibi fonksiyonel işlemlere izin veren pandas ile başlayacağım. Eksik verilerin gözlenmesi ve o verilerin veri seti içerisinden çıkartma işlemi gibi veri bilimi için hayati önemi olan adımları, bu kütüphane sayesinde veri ön işleme adımlarını rahatlıkla gerçekleştirebiliriz. Ek olarak veri tiplerini ve onların üzerinde yapacağınız, sayısal ya da kategorik işlemlerin ön kısmını bu şekilde atlatabilirsiniz. Bu da yapılacak işlemlerin öncesinde bize önemli anlamda kolaylık sağlar. Python içerisinde bulunan her kütüphanenin kendine has özellikleri bulunmaktadır fakat pandas için konuşmak gerekirse, veri bilimi adımlarının temelini oluşturmak için verinin üzerinde yapılacak ön parça değişikliklerin tamamından sorumludur. Pandas içerisinde veriyi sınıflama işlemleri de birkaç fonksiyonel kod ile hızlıca tasarlanıp aktif hale getirilebilir. Bu da veri ön işleme aşamasında, veriyi modellemenin önceki adımlarında en kritik noktadır.

 

 

Veriyi, ‘dataframe’ ya da ‘series’ halde saklayabilir ve üzerinde işlemleri yapabiliriz. Pandas kütüphanesinin veri üzerinden yapılacak her işlem fonksiyonel, kolay ve hızlı bir şekilde yapması, veri bilimciler adına veri bilimi süreçlerinde iş yükünü azaltmaktadır. Bu sayede, sürecin başlangıç ve en zor kısmı olan veri ön işleme gibi adımları halledip işin son adımlarına odaklanabilir. Farklı türde hazırlanmış .csv, .xlsx, .json, .txt gibi verileri okuma işlemleri yaparak, girişi yapılmış ya da veri madenciliği sayesinde toplanmış verileri işlem yapmak için python bünyesine alır. Dataframe metoduna sahip olan pandas kütüphanesi, veriyi daha işlevsel ve ölçeklenebilir hale getirme konusunda diğer kütüphanelere göre daha mantıklı hatta sürdürülebilirdir. Bu alanda çalışacak kişiler, direkt olarak kod yazmak için değil bu gibi temel anlamda python programlama dilinin temel ve sağlam yapısına sahip pandas kütüphanesinin metodolojisi üzerine çalışmalıdır. Çünkü veri üzerinde yeni atamalar, kolon isimleri, değişkenleri gruplama, verideki boş gözlemleri veriden çıkarmak ya da boş gözlemleri belirli bir şekilde doldurma işlemleri (ortalama, 0 ya da medyan ataması) yapılabilir.

 

 

Pandas kütüphanesi bilinmeden verilerin üzerinde işlem ya da herhangi bir analiz yapılamaz. Açıkça belirtmek gerekirse, pandas kütüphanesi veri biliminin kalbi denilebilir. Özel olarak tasarlanmış apply(), drop(), iloc(), dtypes() ve sort_values() gibi fonksiyonlar, bu kütüphaneyi ayrıcalıklı kılan en mühim özelliktir. Asıl çıkış noktası temelinde buraya dayanmasa bile, bu işlemler için vazgeçilmez bir kütüphanedir. Yapılacak adımlarda, muazzam özelliklere sahip bir yapıya ve sözdizimi anlamında daha temel bir durumdadır. Döngülerden çıkan sonuçların da kümeler içinde barındırılıp onları dataframe ya da series haline dönüştürmeniz mümkündür. İşlemlerin hızlanması, ortaya çıkacak olan projenin zamana bağlı olarak ilerleyen bir süreci varsa ki genelde böyledir, fonksiyonel anlamda büyük avantaj sağlar. Diğer imkanlarına bakınca ise, python kütüphaneleri arasında verim seviyesi en yüksek kütüphanelerden birisidir. Birçok alanda kullanıma elverişli olması, müthiş bir ek özellik olarak değerlendirilebilir. Pandas, python programlama dilini kullanan yazılımcılar tarafından yapılan veri işleme kütüphaneleri arasındaki oylamada ilk 3 kütüphane arasındadır. Kaynaklar kısmında datarequest ile alıntıladığım bu duruma ulaşabilirsiniz.

 

 

2015 yılından bu yana gelişen ‘veri bilimi’ kavramı, pandas kütüphanesini de ön plana çıkarmaya ve yıllarca sessizlik içerisinde gelişimi sürdüren bu kütüphanenin gün yüzüne çıkmasına ön ayak oldu. Pandas sonrası, numpy anlatacağım ve onun hakkında yapılan numerik, matris işlemlerinden bahsedeceğim. Pandas genel anlamda bu şekilde temel anlamda veri analizi ve veri işleme konusunda üst düzey özelliklere sahip bir kütüphanedir. Ek olarak bahsedeceğiniz konular ve değinmemi istediğiniz şeyler varsa belirtirseniz verim anlamında daha sağlam bir yol çizmiş olurum. Seri halinde yayınlayacağım bu yazıların umarım bu alanda çalışacak kişilere yardımı dokunur. İlerleyen süreçlerde github üzerinden hazırlayacağım cheatsheet tarzı içerikleri de kaynakça kısmına ekleyeceğim. Eğer siz de bu gibi notlardan yararlanmak isterseniz, github hesabımı kaynak kısmına koyacağım oradan rahatlıkla ulaşabilirsiniz.

 

 

References:

https://www.geeksforgeeks.org/python-pandas-dataframe/

https://medium.com/deep-learning-turkiye/adan-z-ye-pandas-tutoriali-ba%C5%9Flang%C4%B1%C3%A7-ve-orta-seviye-4edf0094e0d5#:~:text=Pandas%2C%20Python%20programlama%20dili%20i%C3%A7in,sonuca%20kolayca%20ula%C5%9Fmak%20i%C3%A7in%20kullan%C4%B1lmaktad%C4%B1r.

https://www.dataquest.io/blog/15-python-libraries-for-data-science/

https://github.com/tanersekmen/

https://www.edureka.co/blog/python-pandas-tutorial/

https://globalaihub.com/importance-of-data-quality-and-data-processing/

https://globalaihub.com/hareketli-ortalama-algoritmasiyla-al-sat-tavsiyeleri/

https://www.dataquest.io/course/pandas-fundamentals/

Python ile Veri Analizi ve Görselleştirme – 2

Bir önceki yazımda kullandığım Iris veri seti üzerinde görselleştirme yapmaya devam ediyoruz. Veri görselleştirme için en sık kullanılan 2 adet kütüphane vardır. Bu kütüphanelerden matplotlib tıpkı benim bildiğim gibi birçok kişi tarafından bilinmektedir. Bunun yanı sıra 2. kütüphanemiz ise seaborn olmaktadır. Bu yazıda verilerin kütüphaneler yardımı ile görselleştirilmesine tanıklık edeceğiz.

🔐 Kullandığım Colab bağlantısı için linke girmeniz gerekmektedir.

Veri Görselleştirme Kütüphaneleri

1. Seaborn: Statistical Data Visualization Library ( İstatistiksel Veri Görselleştirme Kitaplığı )

Seaborn, Matplotlib tabanlı bir Python veri görselleştirme kitaplığıdır . Çekici ve bilgilendirici istatistiksel grafikler çizmek için üst düzey bir arayüz sağlar. Paketi nasıl indirebileceğinizi ve kullanmaya başlayabileceğinizi görmek için kurulum sayfasını ziyaret ediniz.

Seaborn

Matplotlib’ e göre farkı daha fazla özelleştirme seçeneğinin olması diyebiliriz.

Seaborn SamplesYukarıda yer verdiğim görselde Seaborn sayesinde verileri nasıl görselleştirebileceğimizi görmekteyiz. Birçok farklı grafik ve formlarda verilerimizi sergilememiz mümkün.

2. Matplotlib: Visualization with Python

Matplotlib; Python’da statik, animasyonlu ve etkileşimli görselleştirmeler oluşturmak için kapsamlı bir kütüphanedir.

Matplotlib Logo

Matplotlib orijinal olarak John D. Hunter tarafından yazılmıştır , o zamandan beri aktif bir geliştirme topluluğuna sahiptir. 

Seaborn Samples

Aynı şekilde burada verdiğim görselde ise Matplotlib ile yapılabilecek görselleştirme formları bulunmaktadır.

🧷 Matplotlib kitaplığındaki plot yani grafikleri incelemek için bağlantıya tıklayınız.

  • Line Plots ( Çizgi Grafikleri): İki değişken arasındaki ilişkiyi çizgiler halinde göstermektedir.

Line plots

  • Scatter Plots ( Dağılım Grafikleri ): İki değişken arasında var olan bu ilişkiyi isminden de anlaşılacağı üzere dağıtık noktalar halinde gösterilmektedir.

Scatter Plots

✨ Iris veri setinde yer alan değişkenlerin birbirleri ile olan ilişkisini ölçmek adına seaborn kütüphanesini kullanmak istedim.

Uploading Seaborn

Seaborn kütüphanesini projemize dahil ettikten sonra çeşitli parametreleri girerek grafiğin oluşmasını sağlamaktayız. Burada dataframe üzerinden sepal_length ve petal_width öznitelikleri arasındaki ilişkinin karşılaştırılmasını gerçekleştirdik. cmap değişkeni ise grafiğimizde kullandığımız renk paletinin belirlendiği değişkendir. İsteğe göre değiştirilebilmektedir. s değişkeni ise burada noktalar halinde verilen scatter grafiğindeki noktaların büyüklüğünü belirtmektedir.

Data Visulatizaton

Bir yazının daha sonuna gelmiş bulunmaktayız. Sağlıcakla kalın ✨

REFERANSLAR

  1. https://seaborn.pydata.org.
  2. https://matplotlib.org.
  3. Machine Learning Days | Merve Noyan | Data Visualization | Study Jams 2 |, https://www.youtube.com/watch?v=JL35pUrth4g&t=640s.
  4. Matplotlib, Wikipedia, The Free Encyclopedia, https://en.wikipedia.org/wiki/Matplotlib.
  5. https://jakevdp.github.io/PythonDataScienceHandbook/04.02-simple-scatter-plots.html.
  6. https://jakevdp.github.io/PythonDataScienceHandbook/04.01-simple-line-plots.html.
  7. https://matplotlib.org/3.1.1/tutorials/colors/colormaps.html.

Python ile Veri Analizi ve Görselleştirme

Güzel bir günden daha merhaba! Bu yazıda sizler ile birlikte Python kodlamaya devam edeceğiz. Peki bugün neler yapıyoruz? En sevdiğim konulardan biri olan veri analizine birlikte deyineceğiz. Veri setinizi Kaggle veya UCI gibi veri sitelerinden temin edebilirsiniz. Bunların yanı sıra Iris Çiçek Veri Seti hakkında araştırma yapıp sizler için seçtim.

Iris çiçeği veri seti, İngiliz istatistikçi ve biyolog Ronald Fisher tarafından 1936’daki taksonomik problemlerde çoklu ölçümlerin kullanımı adlı makalesinde sunulan çok değişkenli bir veri setidir. Bazen Anderson Iris veri seti olarak adlandırılır çünkü Edgar Anderson, üç ilgili türün Iris çiçeklerinin morfolojik varyasyonunu ölçmek için verileri toplamıştır. Veri seti, üç Iris türünün (Iris Setosa, Iris virginica ve Iris versicolor) her birinden olmak üzere 50 örnekten oluşur.

Her numuneden dört özellik çıkarılmıştır:

    1. çanak yaprakları santimetre cinsinden uzunluğu
    2. çanak yaprakları santimetre cinsinden genişliği
    3. taç yapraklarının santimetre cinsinden uzunluğu
    4. taç yapraklarının santimetre cinsinden genişliği

Bu veri kümesi, destek vektör makineleri gibi makine öğreniminde birçok istatistiksel sınıflandırma tekniği için tipik bir test senaryosu haline gelmektedir.

Iris veri kümesi

Yukarıda gördüğünüz görsel Colab’da oluşturduğum not defteri içerisinde de yer almaktadır. Bu görselde veri setinden örnekler görmekteyiz. Yazının sonunda yer alan Colab linki üzerinden erişim sağlayabilirsiniz. Zaten veri bilimi alanında en sık ve temel olarak kullanılan veri setlerinden bir tanesi olarak literatürde yer almaktadır.

ADIMLAR

✨ Colab’ da gerekli kütüphaneler tanıtılmalı ve ardından klasör içerisinde yer alan veri setinin yolunun belirtilmesi gerekmektedir. Ardından veri seti içeriğini görmek için df değişkenini yazdırabilir veya ilk 5 satırına erişmek için df.head( ) komutunu kullanabilirsiniz.

Veri kümesini ve kitaplıkları içe aktarma

Veri Kümesini İncele

✨ Dilerseniz df.head( ) komutunu da çalıştırıp nasıl bir çıktı alacağız birlikte görelim.

Baş Komuta

✨ Yukarıda veri setinde yer alan özelliklerin değerlerine yer vermekteyiz. sepal_length ve petal_width gibi değişkenler numerical (sayısal) değişkenlerdir. Bir de bunun yanı sıra species olarak geçen çiçek türü özelliği ise categorical (kategorik) değişken olarak geçmektedir. Öncelikli olarak bu verilerin hangi değişken türüne girdiğini bilmekte fayda var.

⚠️ Eğer burada yer alan sayısal değişkenlerden (sepal_length ve petal_width arası özellikler) kategorik verinin yani çiçek türünün tahmini yapılmak isteniyorsa bu bir sınıflandırma problemidir.

✨ Pandas’ ın describe metodu ile tanımlayıcı istatistikler yazdırılmaktadır. Takip etmek isterseniz Pandas’ ın orijinal dokümanlarından erişebilirsiniz. Bu şekilde her özellik ne kadar veri içeriyorsa -kayıp verileri de görmemiz mümkün- bunun bilgilendirmesi yapılmaktadır. Özelliklerin standart sapması, ortalaması, minimum ve maksimum değerleri görülmektedir.

Describe Method

Örneğin bu veriler içerisinde sepal_length özelliği toplam 150000 satır ve bu değerlerin standart sapması ise yaklaşık olarak 0.83 olarak belirtilmiştir.

⏳ 25% ve 75% aralığı ise Quartile (Çeyrekler Aralığı) olarak bilinmektedir. Bu değerler kontrol edilerek verinin analizi yapılabilmektedir.

✨ Veri seti hakkında bilgi almak için ise df.info( ) komutu çalıştırılmalıdır.

Bu bilgilere göre boş değer olan satır bulunmamakta olduğunu görüyoruz. Bunların yanı sıra sayısal olarak var olan özelliklerin float tipine sahip olduğunun da bilgisine sahip oluyoruz.

df.isna( ) komutu veri setinde kayıp veri (Not a Number) olup olmadığını kontrol etmektedir. Kayıp verinin olduğu satırın ‘True’ olmasını beklemekteyiz. Ancak yukarıda gördüğümüz gibi kayıp verimiz bulunmamaktadır.

NaN Any

df.isna( ).any( ) komutu ise veri setinde kayıp veriler kontrol edilirken 1 adet bile kayıp veri içeriyor ise True olarak dönmektedir.

Not a Number Value

🖇 NOT: Yukarıda sözünü ettiğim Colab bağlantısı için bağlantıya tıklayınız.

Serinin 2. yazısında ise veri analizinde kalan ufak noktalara ve görselleştirme alanına deyineceğim. Sağlıcakla kalın ✨

REFERANSLAR

  1. https://pandas.pydata.org/pandas-docs/stable/index.html.
  2. https://www.kaggle.com/arshid/iris-flower-dataset.
  3. Machine Learning Days | Merve Noyan | Data Visualization | Study Jams 2 |, https://www.youtube.com/watch?v=JL35pUrth4g.
  4. https://www.kaggle.com/peterchang77/exploratory-data-analysis.

 

 

TOPLULUK- KOLEKTİF ÖĞRENME YÖNTEMLERİ

Sınıflandırma algoritmaları ile bir verinin hangi sınıfa ait olduğunu tahmin ettiğimizi düşünelim. Bunun için problemimize en uygun sınıflandırma yöntemini seçer, gerekli optimizasyonları yapar ve yüksek doğruluk oranı elde etmeye çalışırız. Ancak bazı veri setlerinde yüksek varyans ve düşük doğruluk değerine sahip sınıflandırmalar gerçekleşmektedir. Sınıflandırma ve tahmin işlemlerindeki bu soruna çözüm üretmek ve performans kaybını önlemek için farklı metotlar öne sürülmüştür. Bu metotlardan biri de topluluk öğrenme yöntemleridir.

Peki topluluk öğrenmesi nedir?

Topluluk öğrenmesi, birden fazla modelin aynı sorunu çözmek için eğitildiği ve daha iyi sonuçlar elde etmek amacıyla birleştirildiği bir makine öğrenimi modelidir. “Birlikten kuvvet doğar” bu sözü hepimiz duymuşuzdur topluluk öğrenme yöntemleri de tam olarak böyle çalışır. Özetlemek gerekirse zayıf modeller doğru şekilde birleştirildiğinde daha güçlü modeller oluşur hipotezine dayanmaktadır.

Böyle bir yaklaşımı günlük hayatımızda rutin olarak birkaç kişinin görüşlerini sorarak kullanıyoruz. Örneğin, bir ürünü almadan önce o ürünü alanlara danışırız, internetteki kullanıcı yorumlarını okuruz. Akademik anlamda bir örnek verecek olursak bir makale yayına kabul edilmeden önce birkaç uzman tarafından incelenir. Çünkü birden çok uzmanın ortak kararı, bir uzmanın kararından daha güvenilir ve daha yüksek doğruluğa sahiptir.

Bagging, Boosting, Voting Classifier, Stacking başlıca topluluk öğrenme metotlarındandır. Bu yazımızda Bagging üzerinde duracağız ve pekiştirmek için Python’da bir örnek çalışma yapacağız. Öncelikle Bagging yöntemi nedir inceleyelim.

Yerine Koyarak Örnekleme (Bagging: Bootsrap Aggregating)

Bagging, var olan bir eğitim setinden yeni eğitim setleri türeterek temel öğreniciyi yeniden eğitmeyi amaçlayan bir yöntemdir. Yukarıdaki şemadan da yola çıkarak konuya biraz açıklık getirelim. Öncelikle mevcut veri seti eğitim ve test olarak ayrılır. Burada eğitilecek (n tane örnekten oluşan) veri setinden, basit tekrarlı tesadüfi örnekleme yoluyla torbalara (1’den n’e kadar) örneklem birimleri atanır ve ortaya bir topluluk çıkar.

Seçilen her örneklem tekrar eğitim setine geri koyulur.  Bu durumda bazı eğitim örnekleri yeni eğitim kümesinde yer almazken bazıları birden fazla yer alır. Ortaya çıkan örneklem birimleri modelleme için kullanılır ve eğitilir. Her bir model değerlendirilerek regresyon problemi çözüyorsak ortalama, sınıflandırma problemi çözüyorsak çoğunluk oylaması sonuçlarına göre tahmin işleminin sonucu tek bir ifade ile ortaya çıkar. Bunun sonucunda gözlem ve değişken bazında rassallık sağlanır, aşırı öğrenme sorunu hafifler ve tahmin başarısı artar.

Şimdi Python’da bir uygulama yaparak öğrendiklerimizi pekiştirelim. Uygulamamızda öncelikle karar ağacı ile tek sınıflandırıcı kullanacağız sonrasında aynı veri seti ile topluluk öğrenme yöntemlerinden Random Forest ve Bagging uygulaması yapacağız ve aralarındaki farkları birlikte karşılaştıracağız.

1.Adım: Gerekli kütüphaneler yüklenmiştir.

2.Adım: Veri seti yüklenmiştir. Veri seti sosyal medya reklam kampanyası kayıtlarından oluşmaktadır. Elimizde toplamda 400 gözlem ve 5 tane de özellik mevcuttur. Bunlar; KullaniciID, Cinsiyet, Yaş, Tahmini Gelir ve  SatinAlmaDurumu’dur. Burada hedef değişkenimiz ürünün satın alınma durumudur. Hedef değişkenimiz eğer bir müşteri bir ürünü aldıysa 1, almadıysa 0 olarak kodlanmıştır. Diğer dört nitelik ise bağımsız değişkenlerdir. Sınıflandırma modelimiz bağımsız değişkenleri kullanarak, bağımlı değişkenin (yani ürünün satın alınıp alınmadığını) tahmin edecektir.

Bağımlı değişken incelenmiştir. Buna göre sosyal medya reklam kampanyası sonucu 257 kişi ürün satın almamış, 143 kişi ise ürünü satın almıştır.

3.Adım: Veriler eğitim için hazırlanmıştır. Burada yaş ve tahmini maaş değerleri bağımsız değişkenlerdir ve X’e atanmıştır. Satın alma durumu değişkeni de bağımlı değişken olan y’ye atanmıştır.

Daha sonra veri seti eğitim ve test seti olarak ayrılmıştır. Yüzde 80’i eğitim seti yüzde 20’si de test seti olarak ayrılmıştır.

4.Adım: Burada karar ağacı modeli eğitilmiştir ve karar ağacına ait doğru sınıflandırma oranı yaklaşık olarak yüzde 90 olarak bulunmuştur. Confusion matrisine bakıldığında ise modelimizin 80 tane veri içerisinden 72 tanesini doğru tahmin ettiği görülmektedir.

5.Adım: Şimdi topluluk öğrenme yöntemlerinden olan Random Forest modelini oluşturacağız ve doğruluk oranını inceleyeceğiz.

Burada sınıflandırma için sklearn.ensemble kütüphanesinin RandomForestClassifier sınıfını kullanılmıştır. Bu model parametre olarak n_estimators alır ve bu parametre rastgele ormandaki ağaçların sayısını tanımlar. Biz 15 ağaç olarak kodladık.

Bir topluluk öğrenmesi yöntemi olarak Random Forest’ın %92 ile karar ağacına göre daha yüksek bir doğruluk oranı yakaladığını görüyoruz. Ayrıca modelimiz 80 tane veri içerisinden 74 tanesini doğru tahmin etmiştir. Oldukça iyi bir tahmin olduğunu söyleyebiliriz.

6.Adım: Şimdi de Bagging modelini oluşturacağız.

Bagging modelinin test sonuçlarına baktığımızda yaklaşık 0.94’lük bir doğruluk oranına sahip olduğunu görüyoruz. Ayrıca modelimiz 80 tane veri içerisinden 75 tanesini doğru tahmin etmiştir. Tıpkı Random Forest da olduğu gibi oldukça iyi bir tahmin olduğunu söyleyebiliriz. Topluluk öğrenmesi yöntemleri yardımıyla, tek bir karar ağacındaki doğruluk oranından daha yüksek bir değer elde ettik. Bu durumun da topluluk öğrenmesi yöntemlerinin tek bir karar ağacı sınıflandırmasından farkını güzel bir şekilde açıkladığını düşünüyorum. Umarım topluluk öğrenme yöntemleri konusu hakkında bir fikriniz oluşmuştur ve umarım faydalı olmuştur.

Bir sonraki yazımda görüşmek dileğiyle 😊

Yararlanılan Kaynaklar:

https://tevfikbulut.com/2020/05/31/topluluk-ogrenme-algoritmalarindan-torbalama-algoritmasi-ile-gogus-kanserinin-tahmini-uzerine-bir-vaka-calismasi-a-case-study-on-the-prediction-of-breast-cancer-using-bagging-algorithm-from-ensemble/

https://www.veribilimiokulu.com/blog/ensemble-yontemler-topluluk-ogrenmesi-basit-teorik-anlatim-ve-python-uygulama/

https://www.knowledgehut.com/blog/data-science/bagging-and-random-forest-in-machine-learning

http://dspace.yildiz.edu.tr/xmlui/bitstream/handle/1/7360/0113685.pdf?sequence=1&isAllowed=y

https://towardsdatascience.com/simple-guide-for-ensemble-learning-methods-d87cc68705a2

http://abakus.inonu.edu.tr/xmlui/handle/11616/18218

http://www.scholarpedia.org/article/Ensemble_learning#:~:text=Ensemble%20learning%20is%20the%20process,%2C%20function%20approximation%2C%20etc.

https://medium.com/ml-research-lab/ensemble-learning-the-heart-of-machine-learning-b4f59a5f9777

https://medium.com/deep-learning-turkiye/ensemble-learning-bagging-ve-boosting-50643428b22b

https://medium.com/ml-research-lab/ensemble-learning-the-heart-of-machine-learning-b4f59a5f9777

https://medium.com/deep-learning-turkiye/ensemble-learning-bagging-ve-boosting-50643428b22b#:~:text=1.-,Torbalama(Bagging),tahminciler%20uygulanarak%20bir%20topluluk%20olu%C5%9Fturulur.&text=Olu%C5%9Fturulan%20alt%20%C3%B6rneklemler%20orijinal%20veri%20setindeki%20say%C4%B1%20ile%20ayn%C4%B1%20olacakt%C4%B1r

https://www.veribilimiokulu.com/blog/agaca-dayali-yontemlerde-bagging-ve-boosting-arasinda-ne-fark-var/

http://ceur-ws.org/Vol-1483/11_Bildiri.pdf

https://medium.com/@anilguven1055/topluluk-%C3%B6%C4%9Frenmesi-ensemble-learning-3b71524297d5

https://medium.com/@billmuhh/kolektif-%C3%B6%C4%9Frenme-ve-bagging-algoritmas%C4%B1-e8ea3d932b72

https://towardsdatascience.com/ensemble-methods-in-machine-learning-what-are-they-and-why-use-them-68ec3f9fef5f

 

 

 

 

 

 

Aktivasyon Fonksiyonlarının Etkileri

Derin Öğrenme içerisinde aktivasyon fonksiyonları, kilit bir rol oynayarak başarı oranlarına doğrudan etki ederler. Bunun temel nedeni, sinir ağları içerisindeki çıkış katmanlarında başarı değerlerine ulaşmadan önce, belirlenen katsayıların ve ağırlıkların değişimi ile başarı değerinin değişimine aktivasyon fonksiyonu sayesinde erişebiliriz. Genellikle fonksiyonların yapıları lineer ve lineer olmayan şeklinde değişiklik gösterir. Bu da kümeleme, regresyon gibi yapılar için hangisinin başarısının daha iyi olduğuna modeller üzerinde denenerek bulunabilir ya da halihazırda kaynaklar kısmına bıraktığım linkler aracılığıyla ulaşabilirsiniz. Her aktivasyon fonksiyonu için farklı şekilde formüller vardır ve bunlar için kurulacak olan kod dizinlerini dikkatli şekilde oluşturmalıyız. Nöron işlemleri için formül, ağırlıklar ve bias (yanlılık) değerinden meydana gelir. İstatistik bilgisi, bu işlemler bünyesinde en önemli noktalardan birisidir. Göz önünde çok bulundurulmayıp genelde kod yazım kritik rol gibi gözükse bile, asıl önemli olan şey ne yaptığını bilmektir. Matematik ve İstatistik bilgisi göz ardı edilemeyecek kadar mühim bir konudur. Veri Bilimi, Derin Öğrenme ve Makine Öğrenmesi süreçlerinin tamamında matematik ve istatistik önemli rol oynamaktadır.

 

 

Üstteki formülde de gördüğünüz gibi, beta olarak bilinen ek hata parametresi aslında bias yani yanlılıktır. İstatistik eğitimi boyunca öğretilen en önemli yapılardan birisi yanlılık yapısıdır. Kullandığımız ve işlediğimiz sinir ağları yapısında da yanlılık son derece değerli bir konudur ve göz ardı edilemez. Aktivasyon fonksiyonları, sinir ağları üzerinde etkin bir şekilde çıkış ve giriş kısımlarında sonuç için seçimi çok önemlidir. Öğrenme katkısı sağlayan bu fonksiyonların görüntüsü, girdi başına ve seçilen parametreler, katsayılar boyunca değişiklik göstermektedir. Alt tarafta sunduğum görüntü, aktivasyon fonksiyonlarının girdileri ve çıktıları olarak değerlendirilen durumu içermektedir. Bu kodlara erişmek isteyenler için son kısımda link olarak bırakacağım. Her aktivasyon fonksiyonun kendi içerisinde başarı kriterleri değişkenlik göstermektedir. Çıkış katmanında başarısı ve daha mantıklı geldiği için çoğunlukla Softmax kullanılmaktadır. Yaygın olarak bilinen iki isim vardır. Bunlar için örnek softmax ve sigmoid söylenebilir. Bu alanda kariyer yolculuğuna girişen çoğu insan, bu iki aktivasyon fonksiyonunu sık bir şekilde duymaktadır. Sinir ağları üzerine çalışan veri bilimciler, ilk başlangıç adımında ReLU ile denemeler yapmaktadır.

 

 

Aktivasyon fonksiyonları, x ve y eksenleri boyunca başarı parametrelerine göre değişiklik gösterir. Hedeflenen asıl başarı oranı, y ekseni boyunca veri arttıkça tepe noktasına denk gelmektir. Bunu sağlamak için hem parametre değerleri hem katsayı ayarlaması hem de yapılan işlemler boyunca seçilen aktivasyon fonksiyonu etkilidir. Back propagation – forward propagation olarak bilinen ileri ve geri yayılım sayesinde katsayıların tekrardan belirlenip optimum seviyede tutulması sinir ağları boyunca inanılmaz bir yeri vardır. Bu işlemler tamamen matematik ile bağlantılıdır. Türev konusunda bilgi sahibi olmalısınız ve bu alanda çalışıyorsanız önemli olan kod yazmak değil, tam olarak ne yaptığınızı bilerek yapmaktır. Alt tarafta bıraktığım şekilde gözlemleyebilirsiniz, zaten geriye doğru dönüş için sürekli türevsel işlemler yapıyoruz. Burada matematik altyapısı üzerine kurulan bir sinir ağları vardır. Bu işlemler sonrası aktivasyon fonksiyonları çıkış kısmında en uygun olanı bularak başarısını gözlemleyebiliriz. Böylece model için optimum fonksiyonu bulup onun kullanım durumlarını da proje bazlı denedikçe rahatlıkla görebiliriz. Bu durumlar sonucunda başarı durumları değişkenlik gösterir.

 

 

Son kısımda aktivasyon fonksiyonlarını anlatıp ne işe yaradıklarından kısaca bahsedeceğim. Step Fonksiyonu, Doğrusal Fonksiyon, Sigmoid Fonksiyonu, Hiperbolik Tanjant Fonksiyonu, ReLU, Leaky ReLU, Swish, Softmax Fonksiyonu aktivasyon fonksiyonları için örnek verilebilir.

Step Fonksiyonu: Eşik değeri ile ikili sınıflandırma yapar.

Doğrusal Fonksiyon: Birkaç aktivasyon değeri üretir fakat türevi sabittir.

Sigmoid Fonksiyonu: Hemen herkesin bildiği fonksiyondur ve [0,1] aralığında çıktı verir.

Hiperbolik Tanjant Fonksiyonu: [-1,1] aralığında çıktı veren non-linear bir fonksiyondur.

ReLU Fonksiyonu: Esasında doğrusal olmayan bir fonksiyondur. ReLU fonksiyonun özelliği, negatif girdiler için 0 değeri ve pozitif değerleri sonsuza kadar alır. [0, + ∞ )

Leaky ReLU Fonksiyonu: Leaky ReLU ayırıcı özellik, 0 değerine yakın eksenler ile geçiş yapmış fakat 0 a orijin üzerinde temas etmesi ve ReLU’daki kaybolan gradyanları negatif bölge ile bünyesinde tutar.

Swish Fonksiyonu: Bu fonksiyon, girdiler ile sigmoid fonksiyonunun çarpımını çıktı olarak üretmektedir.

Softmax Fonksiyonu: Çoklu sınıflandırma problemleri için kullanılan bu fonksiyon, verilen her bir girdinin bir alt sınıfa ait olma olasılığını gösteren [0,1] arası çıktılar üretmektedir.

 

 

Aldığım görselleri ve tanımlarından faydalandığım kısımları references bölümünde yazdım. Yazımı sevdiyseniz geri bildirimde bulunursanız çok sevinirim.

 

References :

-https://www.derinogrenme.com/2018/06/28/geri-yayilim-algoritmasina-matematiksel-yaklasim/

-https://medium.com/smlr-center/sinir-a%C4%9Flar%C4%B1-ve-derin-%C3%B6%C4%9Frenme-vi-hesaplama-grafi%C4%9Fi-1caf57ec03f9

-https://ayyucekizrak.medium.com/derin-%C3%B6%C4%9Frenme-i%C3%A7in-aktivasyon-fonksiyonlar%C4%B1n%C4%B1n-kar%C5%9F%C4%B1la%C5%9Ft%C4%B1r%C4%B1lmas%C4%B1-cee17fd1d9cd

-http://buyukveri.firat.edu.tr/2018/04/17/derin-sinir-aglari-icin-aktivasyon-fonksiyonlari/

-https://www.aliozcan.org/ai/aktivasyon-fonksiyonlari/

-https://globalaihub.com/degisken-secimi-hakkinda-temel-bilgiler/

-https://globalaihub.com/basic-information-about-feature-selection/

Featured Image

Etkileşimli IPython ve Shell Komutları

Standart Python yorumlayıcıyla etkileşimli olarak çalışırken karşılaşacağınız sıkıntılardan biri, Python araçlarına ve sistem komut satırı araçlarına erişmek için birden çok pencere arasında geçiş yapma ihtiyacıdır. IPython bu boşluğu doldurur ve size doğrudan IPython terminalinden kabuk komutlarını yürütmek için bir sözdizimi sunar [1]. Sizlerle birlikte terminal komutları ile devam edeceğiz. Şimdi yazacağım komut satırları Linux veya Mac OS X gibi Unix benzeri bir sistemde kesin olarak çalışmaktadır.

IPython hakkında araştırma yaparken bir yazıda şunlara denk gelmiştim:

Ipython, Python çekirdeğine sahip fakat Pythondan bazı artıları bulunan bir programlama aracıdır. Bu aracı üstün kılan özelliklerden bir tanesi de kendisine has grafiksel bir arayüze ve hoş bir geliştirme ortamına sahip olmasıdır [2].

Bununla daha sonra ilgileneceğiz. Şimdilik Shell’ de çalışırken yeni başlayanlar için burada hızlı bir giriş sunuyor olacağım. Konuya birinci örneğimiz ile devam edelim.

Örnek olarak, burada bir kullanıcının sistemi içerisinde yer alan dizinleri ve dosyaları görebilmekteyiz. Öncelikle terminalde yazı yazdırmamızı sağlayan ilk komutumuz echo olacaktır.

Shell Komutları

✳️ Echo: Bu kod satırı ile tıpkı Python’ da yer alan print fonksiyonu gibi terminalde ekrana veriyi bastırmaktayız. Gördüğümüz üzere tırnak işaretleri içerisinde yer alan veriyi ekrana yazdırmaktadır.

Echo command

✳️ Pwd(Print Working Directory): Adından da anlaşılacağı üzere çalışma dizinini yazdırmaktadır.

PWD Command

✳️ Ls: Çalışma dizini içinde yer alan içerikleri listeler.

LS Command

✳️ Cd: Tahmin ediyorum ki birçoğunuz bu komutu biliyordur. Benim de çok sık kullandığım bir komut. Cd komutu ile dizinler arası gezinmeyi sağlayabilirsiniz. Örneğin, aşağıdaki görselde Documents klasörüne geçmekteyiz.

Cd Command

✳️ Mkdir: Bulunduğumuz dizin içerisinde terminaldeyken bir dizin oluşturmak elbette mümkün! Mkdir komutu ile örnek bir klasör oluşturalım. Bunun yanı sıra işlemleri bir üst dizine geçerek devam ettirdim. Bir üst dizine geçmek için cd .. komutu kullanmanız yeterlidir.

Mkdir Command

IPython’ a Hızlıca Giriş

IPython, dilden bağımsız bileşenlerle büyüyen bir projedir. IPython 4.0’dan itibaren, projenin dilden bağımsız bölümleri: dizüstü bilgisayar formatı, mesaj protokolü, qtconsole, dizüstü bilgisayar web uygulaması vb. Jupyter adı altında yeni projelere taşındı. IPython, bir kısmı Jupyter için bir Python çekirdeği sağlayan etkileşimli Python’a odaklanmıştır. Bu sebeple Jupyter üzerinde shellde çalıştığımız kodları deneyeceğiz. Bunun için öncelikle Jupyter Notebook’ u aktifleştiriyoruz.

Jupyter

Jupyterde herhangi bir Python 3 notebook oluşturduktan sonra istediğimiz komutları deneyebiliriz. Örneğin ben bulunduğum dizini, içerikleri listelemeyi ve ekrana bir yazı yazdırmayı denedim.

Ipython Commands

Hata Ayıklama Komutlarının Kısmi Listesi

Etkileşimli hata ayıklama için burada listelediğimizden çok daha fazla kullanılabilir komut vardır; Aşağıdaki tablo, daha yaygın ve kullanışlı olanlardan bazılarının açıklamasını içerir:

Debugging List

İstediğiniz debug komutlarını yardıma ihtiyacınız olduğunda Ipython satırlarında kullanabilmeniz mümkün. Aşağıdaki görsellerde kullanabileceğimiz birkaç komuta yer vermiş bulunmaktayım. Bu şekilde gerekli komutları kullanabiliyoruz.

REFERANSLAR

  1. Jake VanderPlas, Python Data Science Handbook, Essential Tools For Working with Data.
  2. IPython, https://mustafaakca.com/ipython/.
  3. IPython Interactive Computing, Official Website, https://ipython.org.
  4. Introduction the Shell, https://datacarpentry.org/shell-genomics/01-introduction/index.html.
  5. Info World, https://www.infoworld.com/article/3193969/10-unix-commands-every-mac-and-linux-user-should-know.html.

 

Featured Image for Keras

Keras ve TensorFlow’a Hızlı Bir Başlangıç

Keras, Python dilinde tasarlanmış bir derin öğrenme kütüphanesidir. Bir derin öğrenme projesinde çalıştıysanız veya bu alana aşinalığınız var ise mutlaka Keras ile karşılaşmışsınız demektir. İçerisinde derin öğrenme modellerinin oluşturulmasına imkan verecek ve verilerimizi eğitmemiz için ortam sağlayacak birçok seçenek mevcuttur.

Keras başlangıçta araştırmacıların daha hızlı denemeler yapabilmeleri için geliştirilmiştir.

Keras, gerçekten de veri eğitimi ve ön işlenmesi için olabildiğince hızlı çalışmaktadır. Keras’ı daha yakından tanımak isterseniz bu link üzerinden kendi dokümantasyonlarına erişim sağlayabilirsiniz.

Keras’ın Öne Çıkan Avantajları

🔹Hem CPU hem GPU üzerinde işlemlerinizi gerçekleştirebilmenizi sağlar.

🔹Evrişimli ve yinelemeli ağlar için  önceden tanımlı modüller barındırmaktadır.

 

Keras, makine öğrenimi platformu Theano ve TensorFlow üzerinde çalışan Python’da yazılmış bir derin öğrenme API’sidir.

🔹 Keras, Python 2.7′ den itibaren tüm versiyonları desteklemektedir.

Keras, Tensorflow, Theano ve CNTK

Keras, yüksek seviyeli derin öğrenme modellerini gerçekleştirebilecek yapıları sunan kütüphanedir. Birçok kez projelerimizde kullandığımız backend enginleri bu yazıda tanımlayacağız. Sanırım Türkçe olarak bu kavramı arka uç motor olarak tanımlıyorlar ancak ben kavramı türkçeleştirmeyeceğim. Arka planda çalışan bu motorlardan aşağıda Tensorflow’un kullanımına yer vermekteyiz.

Keras Upload

Activation Function

🔹 Kullanmak istediğimiz kütüphaneleri aşağıdaki görseldeki gibi seçerek uygulayabiliriz. Kullanmakta olduğumuz 3 adet backend uygulaması bulunmaktadır. Bunlar TensorFlow, Theano ve Microsoft Cognitive Toolkit (CNTK) backend uygulamalarıdır.

Uploading Library

Aşağıda gördüğünüz platformlar derin öğrenmede çokça karşılaştığımız platformlardır. Dipnot olarak TensorFlow kullanırken GPU tabanlı çalışmanızı öneririm. Performans açısından GPU kullanımı ile daha hızlı ve performanslı sonuçlar elde ettiğinizi göreceksiniz.

Özetle demek istediğim, Keras bu 3 kütüphane ile uyumlu olarak çalışmaktadır. Üstelik kodda herhangi bir değişiklik yapmadan bu üç kütüphane ile backend engine değiştirerek çalışmaktadır.

Gelin sizlerle birlikte Keras ile birlikte kullanabileceğimiz TensorFlow’ a daha yakından değinelim.

TensorFlow

➡️ Çalışacağınız proje için Python ve Pip kurulu olup olmadığını versiyon kontrolü ile sağlayalım.

Version Control

➡️ Aktif olarak çalıştığım Mask RCNN projem için çalışmalara devam ediyorum. Sizler de herhangi bir proje oluşturabilir veya benim gibi segmentasyon projesi oluşturabilirsiniz. Eğer aynı projede devam etmek istiyorsanız bağlantıya tıklayarak gerekli olan kütüphanelerin listesine erişebilirsiniz.

Collecting Requirements

Dilerseniz bu kütüphaneleri teker teker de yükleyebilirsiniz. Fakat ben hızlı olması açısından requirements.txt dosyası olarak yüklemekteyim.

➡️ Amacımızdan şaşmadan, Keras ve TensorFlow’a geri dönüş yapalım. Mask RCNN projem için başka bir yazıda daha buluşabiliriz. Şimdi TensorFlow’ a hızlıca bir giriş yapalım. Hem projemize import edelim hem de kullandığımız versiyonu yazdıralım.

TensorFlow

Çıktı olarak gördüğünüz üzere TensorFlow’ un 2.3.1 versiyonunu kullanmaktayım. Söylediğim gibi bunu CPU veya GPU tabanlı kullanabilirsiniz.

Output Version

➡️ Veride ön işleme yaparken ise aşağıdaki gibi tensorflow.keras tpreprocessing modülünü dahil ederek işlemlerimize devam edebiliyoruz. Şuan aktif olarak metot çalıştırmadığım için pasif görünüyor ancak kullanacağımız metotu yazdığımızda otomatik olarak rengi aktifleşecektir.Tensorflow Preprocessing

➡️ Örnek olarak TensorfFlow ile ön işlemeyi aşağıdaki gibi gerçekleştirebiliyoruz. Veri setimizi eğitim ve test olarak ayırıyoruz ve validation_split değişkeni ile %20’sinin test verisine ayrıldığını biliyoruz.

Bu şekilde sizlerle birlikte Keras’ a ve TensorFlow’a hızlı bir başlangıç yapmış bulunmaktayız. Bir sonraki yazımda görüşmek dileğiyle. Esen kalın ✨

REFERANSLAR

  1. https://keras.io/about/.
  2. Wikipedia, The free encyclopedia, https://en.wikipedia.org/wiki/Keras.
  3. https://keras.rstudio.com/articles/backend.html.
  4. François Chollet, Python ile Derin Öğrenme, Buzdağı Yayıncılık.
  5. https://www.tensorflow.org.
  6. https://www.tensorflow.org/tutorials/keras/text_classification.

DeepMind-AlphaFold ve 50 Yıllık Protein Katlanması Problemine Çözüm

 

 

 

DeepMind-AlphaFold şema Geçtiğimiz günlerde Google AI şubesi  DeepMind  tarafından geliştirilen AlphaFold isimli yapay zeka (AI) ağı bilim dünyasının en büyük soru işaretlerinden birini daha çözüme kavuşturma yolunda büyük bir adım attı. Bu büyük soru işaretiyse  amino asit dizisinden yola çıkarak canlı yaşamının temelini oluşturan  protein moleküllerinin 3 boyutlu yapısının hesaplanıp hesaplanamayacağıydı.

 Deepmind-AlphaFold , Critical Assessment of Structure Prediction (Yapı Tahmininin Kritik Değerlendirmesi) yani kısaca  CASP olarak adlandırılan iki yılda bir yapılan protein yapısı tahmin yarışmasında yaklaşık 100 rakip takımı geride bırakarak mükemmele yakın bir başarı gösterdi. Proteinlerin yapısını bir atomun genişliği içinde tahmin edebilen bir derin öğrenme sistemi olan AlphaFold’un en son sürümü, biyolojinin en büyük zorluklarından birini aşmış bulunuyor.

 

Proteinler nasıl katlanır? Yaklaşık 50 yıldır bu soruya takılıp kaldık.  DeepMind ‘ın bunun için bir çözüm ürettiğini görmek, uzun süre bu problem üzerinde kişisel olarak çalışmış ve acaba cevaba varabilir miyiz diye merak eden biri için çok değerli.

PROFESÖR JOHN MOULT

CASP KURUCU KURUCU VE BAŞKANI

Şemada gösterilen protein moleküllerinde yeşil renkli alanlar proteinin doğadaki formunu,mavi renkli kısımlarsa AlphaFold tarafından hesaplanan yapılardır.

 

CASP’yi yürüten ekibin başındaki isim olan Maryland Üniversitesi’nden biyolog  John Moult, elde edilen bu başarıyı “Ciddi bir sorunu çözmek için yapay zekanın ilk kullanımı” sözleriyle özetleyerek  yapay zeka ve biyoloji dünyasının buluştuğu bu ortak noktanın önemini belirtti.

Peki yazının başından beri övgüyle bahsedilen AlphaFold’un bu başarısı neden bu kadar önemli? Evet, proteinler önemli moleküller; peki protein katlanmaları ve bu katlanmaların hesaplanması neden bu kadar önemli? Şimdi biraz bunlara değinerek AlphaFold’u daha iyi tanımaya çalışalım.

Kısaca Protein Nedir ?

Sözlük tanımına bakacak olursak eğer proteinler kendi yapıtaşları olan amino asitlerin zincir halinde birbirlerine bağlanması sonucu oluşan büyük organik bileşiklerdir.

Proteinler bütün canlıların vücudunda bulunan, neredeyse bütün metabolik olayların gerçekleşmesini sağlayan biyolojik yapılardır. Hücre zarının ve hemen hemen tüm enzimlerin yapısına katılma, birçok hormonda bulunma, temel yapıcı onarıcı aynı zamanda düzenleyici ve enerji verici olarak vücutta yer alma  proteinlerin görevlerine verilecek örneklerden sayılabilir.

Protein Katlanması Nedir?

Protein katlanma aşamaları ve yapıları

 

 

 

Proteine 3 boyutlu şeklini, yani işlevsel halini veren yapısındaki aminoasit dizilimidir. Doğada bulunan 20  çeşit aminoasit bir zincirdeki gibi  dizilerek proteinleri meydana getirir ve her bir protein için hangi çeşit aminoasitin hangi sırayla dizileceği DNA tarafından önceden belirlenmiştir.

Bir proteinin belirli bir vazifeyi yerine getirebilmesi için 3 boyutlu şeklinin de o vazifeye uygun olması, yani proteinin uygun şekilde katlanması gerekmektedir. Bu katlanma işlemi belli seviyelere ayrılarak incelenebilir.

Birincil Protein Yapısı

Bir proteinin birincil yapısı doğrusal amino asit dizisinden oluşur ve proteinin doğal yapısını belirler. Bu amino asit dizisi hücrede bulunan ribozom organeli tarafından sentezlenip düzensiz bir formda bulunmaktadır.

Birincil yapı oluşan ilk form olmasının yanında proteinin “üçüncül yapısı” olarak adlandırılan üç boyutlu yapısını büyük oranda belirlediği için büyük öneme sahiptir. Ancak, protein katlanması o kadar karmaşıktır ki; birincil yapıyı bilmek proteinin tamamlanmış formunu bilmemizi sağlamaz.

İkincil Protein  Yapısı

İkincil bir yapının oluşturulması, bir proteinin kendi doğal yapısını alması için katlama işleminin ilk adımıdır. Bu aşamada amino asit zinciri kıvrımlar yapar ve katlanmalara uğrar. Bu katlanma ve kıvrımlara ek olarak amino asitlerin yüzeyinde bulunan belirli kimyasal gruplar arasında kurulan hidrojen bağları bu yeni yapıya sağlamlık ve farklı şekiller  kazandırır. Birincil yapıdaki karmaşık ve düzensiz formda bulunan aminoasit zinciri bu aşamada daha düzenli ve organize moleküllere dönüşmüşlerdir.Şu ana kadar çeşitli ikincil yapı türleri belirlenmiştir fakat  en yaygın formlar alfa sarmal ve beta yaprak olarak bilinen  formlardır.

Üçüncül Protein Yapısı

Sıradaki üçüncül yapı, tek bir protein molekülünün üç boyutlu yapısıdır. İkincil yapının formları olan alfa sarmal ve beta yapraklar kompakt bir yapı oluşturacak şekilde katlanırlar. Bu katlanma hidrofobik etkileşimler (hidrofobik kalıntıların sudan uzaklaştırılması) tarafında yönlendirilir ama yapının stabil olabilmesi için spesifik üçüncül etkileşimlerle (tuz köprüleri, hidrojen bağları, disülfür bağları ve yaz zincirlerin sıkı istiflenmesi gibi) çeşitli kısımlarının yerinin sabitlenmesi gerekir ki moleküler organizasyon daha düzenli bir hale geçebilsin.

Dördüncül Protein Yapısı

Birkaç protein veya uzunlu kısalı amino asit zincirlerinin  (bu bağlamda bunlara protein altbirim denir) bir araya gelmesinden meydana gelen büyük bir toplaşmadır. Dördüncül yapı, üçüncül yapıyı stabilize eden, kovalent olmayan bağlar ve disülfür bağları gibi etkileşimler tarafından stabilize edilir. Çoğu proteinin dördüncül yapısı yoktur ve monomer olarak işlev görürler.

 

Protein Katlanmasının Önemi Nedir?

Protein katlanmasını temsil eden animasyon

 

Bir önceki bölümde proteinlerin işlevsel hale gelme sürecinde geçirdiği yapısal değişimlerden konuştuk. Özetleyecek olursak bir protein, birçok karmaşık bükülme, dönme ve dolanma ile kendisini katlayan bir amino asit şeridinden  veya bu şeritlerin birleşmesiyle meydana gelir. Bu yapı ne yapacağını belirler. Proteinlerin ne yaptığını anlamak, yaşamın temel mekanizmalarını, ne zaman işe yarayıp ne zaman yaramadığını anlamanın en önemli adımıdır. Bunu anlayabilmek için de amino asit diziliminin nasıl olacağından katlanma şekillerinin belirlenmesine kadar ki sürecin temelini oluşturan DNA büyük önem taşımaktadır.

DNA okumasıyla canlı vücudundaki proteinlerin işleyişinin beklenen şekilde olup olmayacağı hakkında bir ön bilgi edinebiliriz. Aynı zamanda protein katlanmaları yani diğer bir değişle proteinin hangi işleve uygun olduğu hakkında bir tahminde bulunabilmemiz mümkün olabilir.

Bu öngörü sayesinde şu an küresel sağlık sorunu olarak görülen Alzheimer gibi protein birikmesi sonucu beyni tahrip eden hastalıkların altında yatan nedenleri ve bu nedenler doğrultusunda uygun tedavi yöntemleri geliştirilebilir. Bir başka örnek olarak erken tanı koymaya engel olabilecek kadar az semptom gösteren çeşitli kanser türlerini tespit etmek için belirlenen yöntemleri daha da duyarlı hale getirerek ön tanıyı mümkün kılabilir. Ya da  canlılığın gezegenimizin üzerinde nasıl başladığına dair yürütülen çalışmaların hızlanmasına ve aydınlatılmasına yardımcı olabilir.

Protein Katlanması Sorunu(AlphaFold)

Protein Katlanması Probleminin Şeması

 

Proteinin yapısından , katlanmasından ve bu yapıların önceden tahmin edilebilmesinin neden önemli olduğunu  konuştuk. Şimdi de protein katlanmasının önceden tahmin edilebilmesinin neden bilim dünyasının uğraştığı en büyük soru işaretlerinden biri olduğuna bakalım.

1972 Nobel Kimya Ödülü’nü kazanan Christian Anfinsen, teorik olarak bir proteinin amino asit dizisinin aynı proteinin yapısını tam olarak belirlemesi gerektiğini öne süren bir hipotez öne sürmüştü. Bu hipotezin ortaya atılmasıyla birlikte yalnızca amino asit dizisine (birincil yapı) dayalı olarak bir proteinin 3 boyutlu tamamlanmış yapısını hesaplamalı olarak tahmin edebilmek için yaklaşık elli yıl sürecek olan bir arayış ateşlenmiş oldu. Bu arayış büyük ilerlemelerle beslenerek devam etti. Kriyo-elektron mikroskobu (2017 yılındaNobel Kimya Ödülüyle ödüllendirilmiştir) , nükleer manyetik rezonans ve x-ışını kristalografisi gibi çözüm yolları bu arayışta öncü olmuşlardır.

Levinthal's paradoksu ve çözümü hakkında bir şema

Karşı karşıya kalınan problemse hala bilim dünyasını zorlayan bir yerdeydi : bir proteinin tamamlanmış 3 boyutlu yapısına ulaşırken teorik olarak katlanabileceği yolların sayısı astronomik sayılarla tanımlanıyordu. 1969’da Cyrus Levinthal, tipik bir proteinin tüm olası konfigürasyonlarını kaba kuvvet hesaplamasıyla sayma işleminin bilinen evrenin yaşından daha uzun süreceğini belirtti .Levinthal ayrıca tipik bir protein için 10 ^ 300 olası konformasyon olduğunu tahmin etti. (Levinthal paradoksu)

Canlı yaşamı ve protein bağlantısının şeması

 

Ayrıca yaklaşık 200 milyon bilinen proteine ek olarak her yıl 30 milyon tane daha keşfedilmekteydi. Ve bu yeni, eski bilene proteinlerin 10 ^ 300 (en az) konformasyon seçeneği bulunmakta. Kullanılan yöntemlerin çok pahalı ve aşırı yavaş olması bu kadar fazla olasılığa sahip problemin çözümünde istenen verimin alınmasını engelliyordu.

İşte bu bahsedilen 50 yılı aşkın bir süredir var olan sorun ve zorlukların bütününe bilim dünyası tarafından protein katlama problemi ismi verilmişti  – taki Deepmind-AlphaFold devreye girinceye kadar.

 

Deepmind-AlphaFold ve Getirdiği Çözüm

 

CASP Nedir?

Yapay zeka destekli çözümün detaylarına geçmeden önce yazının başında bahsi geçen CASP yani Yapı Tahmininin Kritik Değerlendirmesi yarışmasından biraz bahsedelim.

AlphaFold ve aminoasit dizilimi diyagramı

 

CASP, kurucusu olan Profesör John Moult önderliğinde iki yıllık aralıklarla  düzenlenen bir yarışma.

CASP komitesi yarışmaya katılan yapı tahmin programlarını değerlendirmek için çok yakın zamanda deneysel olarak belirlenmiş ( hatta hala değerlendirilme aşamasında bulunan) protein yapılarını seçer. Ve bu seçimleri kamuoyuyla paylaşmazlar. Yani katılımcıların proteinlerin yapısını körü körüne tahmin etmeleri gerekmektedir. Tahmin işlemi sonlandıktan sonra CASP komitesi tahmin sonuçlarıyla deneysel sonuçları karşılaştırarak değerlendirmeye alır.

CASP tarafından tahminlerin doğruluğunu ölçmek için kullanılan ana ölçü, 0-100 arasında değişen Küresel Mesafe Testidir (GDT). Profesör Moult’a göre, 90 GDT civarında bir puan alan yapı tahmin programı gayri resmi olarak deneysel yöntemlerden elde edilen sonuçlarla örtüşme kabiliyetine sahiptir.

(CASP-14 Modellemeleri için tıklayınız)

Ve Kazanan : Deepmind-AlphaFold!

Ana Yapay Sinir Ağ Modeline Genel Bir Bakış

 

DeepMind tarafından geliştirilen AlphaFold protein yapısının tahminlerini gerçekleştiren bir yapay zeka programıdır. AlphaFold’un son sürümü bu sene katıldığı CASP14 (Yapı Tahmininin Kritik Değerlendirmesi) yarışmasının sonuçlarına göre şu an alanının en başarılı yapay zeka programı.  AlphaFold tüm hedeflerde genel olarak 92.4 GDT medyan puanına ulaşmıştır. Tahminlerinde (bir atomun genişliğiyle karşılaştırılabilecek kadar küçük olan 0.16 nanometre) 1,6 Angstromluk  ortalama hataya sahip olan AlphaFold yarışmanın en zorlu modelleme kategorisinde yer alan serbest modelleme alanında bile 87.0 GDT’lik   bir puana ulaşmıştır.  (Yarışmanın sonuçları burada paylaşılmıştır.                                                                                                                                  

Serbest modelleme kategorisindeki modellerin yıllara göre GDT puan grafiği.

 

AlphaFold’un yakaladığı bu doğruluk oranları neredeyse kriyo-elektron mikroskobu gibi proteinlerin yapısını haritalamak için geliştirilen laboratuvar tekniklerinin ölçümleriyle birebir. Ama arada açık ara AlphaFold’un önde olduğu bir avantaj bulunmakta: hız. Bahsettiğimiz laboratuvar teknikleri çok pahalı ve aynı zamanda çok yavaş. Bu karşılaştırmayı daha iyi anlamak için bir karşılaştırma yapabiliriz. Laboratuvar yöntemlerinin her protein modelini hesaplayarak doğru sonuca ulaşması  yıllarca deneme yanılma gerektirebilir ; Deepmind-

AlphaFold ise sadece birkaç gün içinde bir proteinin şeklini bulabilir.

 

Yapay zeka ve getirdiği çözümler

AlphaFold  CASP yarışmasına ilk kez 2018’de katılmıştı. İki yıl önce 13.kez düzenlenen CASP’de  en yüksek tahmin puanını alan yine AlphaFold olmuştu. Ekip bir önceki AlphaFold sürümünün eksik yönlerini tespit ederek bu alanlara yoğunlaşarak başarılarını bir üst seviyeye çıkartmış bulunuyor.

AlphaFold’un son sürümünün eğitim sürecinde kullanılan veri tabanı yaklaşık 170.000  bilinen ve bilinmeyen yapıdaki protein dizilerini içeriyor. Ekibin resmi internet sitesi üzerinden yayınladığı son yazıya göre AlphaFold’un son sürümü hakkında daha detaylı bilgileri ve incelemeleri içeren makale hazırlık aşamasında bulunuyor. (AlphaFold ekibinin CASP13-2018 sonunda yayınladıkları inceleme için tıklayabilirsiniz.)

Yapay Zeka Işığında Gelecek

Protwin ktlanması ve çözüm anahtarı olan AlphaFold diyagramı

 

Bugüne kadarki en önemli yapay zeka ilerlemelerden biri  olan Alphafold hala ilerlemeye, kendini geçmeye devam ediyor. Ancak tüm bilimsel araştırmalarda olduğu gibi, hala cevaplanmayı bekleyen birçok soru var. Birden çok proteinin nasıl kompleks oluşturduğu  veya %100 doğru bir modellemenin nasıl yapılacağı hakkında öğrenilecek çok şey var.

Deepmind-AlphaFold, modellemesi bilinmeyen yüz milyonlarca proteini  keşfetme potansiyeliyle bilinen hastalıkların anlaşılmasını hızlandırmanın yanı sıra gelecekte yeni bir salgına karşı da  yararlı olabileceğine dair umut veriyor.

 Coronavirus-19

 

Hatta içinde bulunduğumuz pandemi günlerinin başlarında yapıları daha önce bilinmeyen  SARS-CoV-2 virüsünün birkaç protein yapısı ve CASP14’te, başka bir koronavirüs proteini olan ORF8’in yapısı AlphaFold tarafından tahmin edilmişti.

 

Deepmind-AlphaFold ve Akla Bile Gelmeyeni Bilmeye Doğru

 

“DeepMind on yıl önce işe koyulduğunda, yapay zekanın temel bilimsel problemler konusundaki anlayışımızı ilerletmesi için bir araç görevi göreceğini umuyorduk. Şimdiyse AlphaFold’u geliştirmeye yönelik 4 yıllık çabanın ardından çeşitli alanlara yönelik çalışmalarla  birlikte vizyonun gerçekleştiğini görmeye başlıyoruz.”

Bu sözler bizzat DeepMind-AlphaFold ekibine ait.

Christian Anfinsen yıllar önce öne sürdüğü hipotez üzerinde çalışmalarına devam ederken belki bu ilerlemeyi hayal bile edememişti. Bu açıklanan ilerleme, yapay zekanın bilginin sınırlarını genişletmede insanlığına en yararlı araç olacağını gösteriyor.

Astrobiyoloji, tıp, zooloji, mikrobiyoloji…Canlılıkla, yaşamla alakalı her alanda insanlığın bu zamana kadar bildikleri AlphaFold gibi örneklerle hızla ilerleyen yapay zeka sayesinde yeniden şekillenecek.

The Future Of Artificial Intelligence - eLearning Industry

Yapay zeka ve gelecek

 

Evrenimizin bilinmeyen birçok yönü var. Buna rağmen bir yerlerde veri kümeleri tekrar derleniyor, eğitim ve test setleri belirleniyor, yapay zeka modelleri çalışmaya başlıyor ve evrenin bilinmezlikleri biraz daha çözülüyor.

Gelecek gerçekten de heyecan verici!

 

 

Kaynakça

Callaway, E. (2020, Kasım 30). ‘It will change everything’: DeepMind’s AI makes gigantic leap in solving protein structures. Nature: https://www.nature.com/articles/d41586-020-03348-4 adresinden alındı

DeepMind. (2020, Kasım 30). AlphaFold: a solution to a 50-year-old grand challenge in biology. DeepMind: https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology adresinden alındı

DeepMind. (2020, Ocak 15). AlphaFold: Using AI for scientific discovery. DeepMind: https://deepmind.com/blog/article/AlphaFold-Using-AI-for-scientific-discovery adresinden alındı

Dursunkaya, B. (2012, Aralık 16). İkincil Protein Yapısı. Evrim Ağacı: https://evrimagaci.org/ikincil-protein-yapisi-5633 adresinden alındı

Heaven, W. D. (2020, Kasım 30). DeepMind’s protein-folding AI has solved a 50-year-old grand challenge of biology. MIT Technology Review: https://www.technologyreview.com/2020/11/30/1012712/deepmind-protein-folding-ai-solved-biology-science-drugs-disease/ adresinden alındı

Hutson, M. (2019, Temmuz 22). AI protein-folding algorithms solve structures faster than ever. Nature: https://www.nature.com/articles/d41586-019-01357-6 adresinden alındı

Vikipedi. (2020, Aralık 6). Protein yapısı. Vikipedi: https://tr.wikipedia.org/wiki/Protein_yap%C4%B1s%C4%B1#:~:text=D%C3%B6rd%C3%BCnc%C3%BCl%20yap%C4%B1%20birka%C3%A7%20protein%20veya,dis%C3%BClf%C3%BCr%20ba%C4%9Flar%C4%B1%20taraf%C4%B1ndan%20stabilize%20edilir. adresinden alındı

Görseller

https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology

https://deepmind.com/blog/article/AlphaFold-Using-AI-for-scientific-discovery

https://deepmind.com/research/case-studies/alphafold

https://elearningindustry.com/future-of-artificial-intelligence-amazing-applications

https://www.researchgate.net/figure/Solution-of-Levinthals-paradox-in-Levinthals-terms-was-obtained-at-the-level-of-the_fig4_323224404

https://www.nature.com/articles/d41586-020-03348-4

Çöplerin Yüzü

Teknolojik gelişmeler kolaylığı beraberinde getirdiği gibi devlet otoritelerini ve otokrasinin de aynı zamanda güçlü bir argümanı olmaktadır. Totaliter rejimler teknolojinin faydalarını kendi lehlerine çevirerek toplumu izleme amacı güdüyor. Günümüzde sokaktaki güvenlik kameralarından, sosyal güvenlik numarasına kadar her şey devlet otoritesinin altında işlenen kişisel veriler olarak karşımıza çıkıyor. Bu kişisel veriler her ne kadar devlet tarafından yasal hak olarak kullanılsa ve izne tabi olmasa da kötü sonuçlar doğurabilir.

Hong Kong’da sokakları temiz tutmak adına başlatılan çalışma bir hayli ilginç. Hong Kong’da “ The Face of Litter ” (Çöplerin Yüzü) kampanyası ile bilim kurgu filmlerini aratmayan bir kampanya başlatıldı. Amaç sokağa atılan çöplerdeki DNA’lardan yararlanarak bunları kimin attığını tespit etmek.

Öncelikle sokaklarda yere atılan çöpler toplanıyor. Çöplerdeki DNA’lar analiz ediliyor ve çöplerin atıldığı mahalledeki insanlar inceleniyor. Bu bilgiler dijital ortamda şekillendiriliyor. DNA ile kişilerin tam olarak resimleri çıkarılamaz ancak saç ve ten rengi, cinsiyetleri öğrenilmesi mümkün.

Bundan yararlanarak suçluların gerçeğe yakın yüz profilleri oluşturuluyor. Bununla da kalmıyor bütün billboardlara afiş olarak asılıyor ve sosyal medyada paylaşılıyor. Çevreci olan bu çalışma Hong Kong ve dünyada yankı uyandırmaya şimdiden başladı.

Her ne kadar çevreci bir uygulama olarak görülse de ileri ki süreçlerde topluma olumsuz etkileri büyük. Amerika’da yıllardır suçluları bu şekilde ifşa eden bir site bulunuyor üstelik üçüncü kişiler tarafından yaratılan bir site değil, tamamen devlet kontrolünde olan bir suçlu ifşa sitesi.

Evet bazen işlenen suçları ifşalamak toplum tarafından hoş karşılanan ve suçları azaltacağına dair bir inancın doğmasına sebep olan bir çalışma olarak görülebilir. Fakat her ne kadar bu inanca sahip de olsak olay göründüğünden çok farklı. Toplumlar suçları baskılamak amacıyla cezalar ve kanunlar geliştirmişlerdir. Her toplumda bulunan bu norm yapıları kişilerin haklarını tam anlamıyla koruduğu zaman işlevsellik kazanır. Bu gibi ifşa mekanizmalarının söz konusu olması sanığı korumayacağı için adalete olan inancı da haliyle zedeleyecektir.

İşin hukuki boyutundan tam anlamıyla çıkmadan teknolojik yükümlülüklerini de ele alacak olursak, teknoloji kötüye kullanıldığı zaman var olan tüm haklarımızı da beraberinde elimizden alacaktır. Çöp atanları ifşalamak her ne kadar teknolojik olarak ve çevreci olarak harika da olsa özgürlüklerimizi de fevkalade kısıtlayacaktır.

İzlenen ve baskılanan bir toplum özgürlükleri sınırlandığı oranda yaşama şansına sahip olurlar. Ve özgür düşünce ortamı yaratamayan toplumlar gerilemeye ve geçmişte kalmaya devam ederler. Özgürlükler toplumun tümüne yayıldığı zaman bilim ve teknoloji ilerleme gösterir.

Teknolojik aletlerle her an izlenmek ve bunların özgürlük lehine –bu tarz ifşa mekanizmalarıyla- gasp edilmesi yaşam ve düşünce özgürlüğü gibi anayasal hakları tamamıyla yok edecektir.

Dipnot: George Orwell’ın 1984 romanı bu konuda şiddetle tavsiye edebileceğim bir kitaptır.

REFERANSLAR:

 – https://bigumigu.com/haber/hong-kong-sokaklarini-kirletenler-dna-analizleri-yapilip-desifre-ediliyor/

Değişken Seçimi Hakkında Temel Bilgiler

Hayatımızın artık her yerinde aktif olarak denk geldiğimiz yapay öğrenme, derin öğrenme ve yapay zeka konuları, herkesin üzerinde çalışmalar gerçekleştirdiği, yapılan tahminlerin başarı skoru ile ölçüldüğü bir durum söz konusudur. İş süreçleri içerisinde, yapay öğrenme konusu kritik bir öneme sahiptir. Hazır olarak elinizde bulunan ya da bizzat firma tarafından toplanılarak Değişken Mühendisliği evresine gelen veri, birçok konudan özenle incelenerek son duruma hazırlanıp Veri Bilimci olarak çalışan kişinin önüne götürülür. O da veriyi anlamlaştırarak firma için veriden çıkarsama yapabilir. Böylece geliştirilen ürün ya da hizmet müşteriye sunularak test edilir ve gerekli başarı parametrelerini sağlarsa, ürünün performansını sürdürülebilir kılabiliriz. Burada en önemli basamaklardan birisi, ortaya çıkartılan ürünün ölçeklenebilir olması ve iş süreçlerine adaptasyon evresinin hızlı şekilde ayarlanmasıdır. Bir diğer olay ise korelasyon ile belirlenen değişkenlerin önem derecelerini veri seti içerisinden elde etmek, bunu anlamlı hale getirip modelleme evresi öncesinde Değişken Mühendisi sayesinde belirlemektir. Değişken Mühendisleri, Veri Bilimci’nin iş sürecini hızlandırıp ona kolaylık sağlayan bir ek güç olarak düşünebiliriz.

 

 

İş arama durumunda sık sık karşımıza çıkabilen bir ‘Değişken Mühendis’ ilanı ile karşılaşılabilir. Veri içinden öğrendiğimiz kritik bilgileri, veri hazırlama aşamasında değişken seçimi işlemi sırasında elde edebiliriz. Özellik seçme yöntemlerinin, hedef değişkeni tahmin etmek için girdi değişkenlerinin sayısını bir model için en yararlı olduğuna inanılanlara indirmesi amaçlanır. Değişken seçim işlemleri, veri ön işleme süreçleri içerisinde bulunurken mantıklı bir şekilde belirlenmesi durumunda iş yükünü olabildiğince azaltarak, çalışanlara büyük oranda kolaylık sağlar. Bunun için özel bir iş alanı mevcut olduğunu belirtmiştim. Değişken seçim durumları, verinin modelleme konusundaki başarısını da etkileyerek tahmin edilecek değerlerin başarısının ne derece olacağına direkt olarak etki eder. Bundan ötürü, ilk veriyi ele aldığımızdan ürün aşamasına kadar geçen olayların içerisindeki en önemli kısım, burada çalışan insanın değişken seçimine doğru karar vermesinden geçer. Gidişatın olumlu geçmesi, ortaya çıkacak ürünün kısa süre ile hayata geçmesini sağlar. Veriden istatistiksel çıkarımlar yapmak, hangi verinin ne derece önemli olduğunu algoritmalar aracılığıyla belirlemek kadar önemlidir. İstatistik bilimi, genel olarak veri bilimi süreçlerinin bünyesinde rol almalıdır.

 

 

İstatistiksel filtre ile belirlenecek değişken seçim yöntemleri de vardır. Bunlara değişken seçimleri içerisinde farklılık gösteren ölçekleri örnek verebiliriz. Bu alanda çalışan insanların çoğu, istatistiksel önem düzeylerini maalesef yeterince önemsemiyorlar. Veri Bilimi ve Yapay Zeka üzerine çalışan bazı kişiler içerisinde de sadece kod yazmak, bu işin temeli olarak görülüyor. Veri seti için değişkenlere kategorik ve numerik değişken örneklerini verebilirim. Ek olarak, bu değişkenler de kendi bünyesinde ikiye ayrılmaktadır. Numerik olarak gördüğümüz değişken, integer ve float olarak biliniyorken, kategorik olarak gördüğümüz değişkenler; nominal, ordinal ve boolean olarak bilinmektedir. Bunu en temel olarak aşağıda koyduğum görselde bulabilirsiniz. Değişken seçimi için bu değişkenler, kelimenin tam anlamıyla hayati öneme sahiptirler. Yapılan işlemler doğrultusunda bu değişkenlere değerlendirme aşamasında bir İstatistikçi ile birlikte karar verilebilir ve seçilen değişkenlerin analizi sağlam temellere dayanan şekilde yapılmalıdır. Bu alanda çalışanların en gerekli özelliklerinden birisi yorumlayıp iyi bir şekilde analiz yeteneğine sahip olmalarıdır. Bu sayede, hazırladıkları verileri temelleri mantıkla eşleşen halde ürün şeklinde rahatlıkla sunabilirler.

 

 

Neredeyse tam olarak en doğru metot bulunmamaktadır. Her veri seti için değişken seçimi iyi bir analizle değerlendirilmektedir. Çünkü yapılan işlemler, her bir değişken için değişkenlik gösterebilir. Yani, bir veri seti çok fazla integer ya da float değer barındırırken, üzerine çalıştığınız bir diğer veri seti ise boolean olabilir. Bundan ötürü değişken seçimi yöntemleri her veri seti için farklılık gösterdiği durumlar olabilir. Önemli olan konu, hızlı bir şekilde adapte olup veri setinin bize ne sunduğu anlayarak ona göre çözümler üretmek olabilir. Bu yol ile birlikte, yapılan işlemler boyunca alınan kararların daha sağlıklı bir şekilde devam etmesi mümkün olur. Kategorik değişkenler, ki kare testi gibi yöntemlerle belirlenebilir hatta bu yöntem daha güçlüdür ve verim oranı haliyle daha yüksek noktalara erişebilir. Ürün veya hizmet geliştirme aşamaları boyunca değişken seçimi, bir modelin başarı kriterleri içerisinde katkı sağlayan en mühim aşamadır.

 

References:

https://globalaihub.com/basic-statistics-information-series-2/

https://globalaihub.com/temel-istatistik-tanimlari-ve-aciklamalari/

https://machinelearningmastery.com/feature-selection-with-real-and-categorical-data/#:~:text=Feature%20selection%20is%20the%20process,the%20performance%20of%20the%20model.

https://www.istmer.com/regresyon-analizi-ve-degisken-secimi/

https://towardsdatascience.com/the-5-feature-selection-algorithms-every-data-scientist-need-to-know-3a6b566efd2

 

Öksürük Sesinden Koronavirüs Tespiti

Toplumumuz gibi diğer tüm dünya ülkelerini etkisi altına almış olan Koronavirüs hız kesmeden can almaya devam ediyor. İçinde bulunduğumuz süreçte virüsle savaşmak güç olmaya başlamış durumda. Her gün artan vaka sayısının tedbirsizlikle ve alınan önlemlerin yetersizliği ile doğru orantılı olduğu gözler önünde iken maske takmama konusunda inatçı vatandaşların ya da Covid pozitif olduğundan bir haber olan insanlar için çözümü ABD´de Massachusetts Teknoloji Enstitüsü (MIT) uzmanları buldu. ,yapay zeka teknolojisiyle birlikte geliştirdikleri model ile öksürük sesinden hastalık belirtisi göstermeyen insanların tespitini yapacaklarını duyurdu.

 

Peki Nedir Bu Yapay Zeka Modeli?

Covid 19 ile enfekte olmuş kişilerin bir kısmı asemptomatik olarak tanımlanırlar yani virüse dair fiziksel bir belirti, semptom taşımadan hastalığı geçirirler. Belirti taşımayan insanların test yapma olasılığı düşük olacağı için farkında olmayan pozitifli hasta, virüsü başka bir insana geçirebilir. Bu olasılığın yüzdesinin fazla olduğunu ve sonucunda ölümün kaçınılmaz olduğunu savunan MIT araştırmacıları, asemptomatik kişilerdeki görülen öksürüğün sağlıklı bir bireyin öksürüğünden farklı olduğunu tespit ettiler. Bu keşfedilen farklılığın,insan kulağı tarafından belirlenemeyeceğini ancak yapay zeka destekli bir modelin buna çözüm olabileceğini düşünüp bir model geliştirdiler.

Geliştirilen model için gönüllü insanlar bulunup, onların kaydetmiş olduğu öksürük sesi örneği ve kelime sesleri üzerinde model eğitildi. Eğitilen model, Covid 19 pozitifli insanların yüzde 98,5’ini, asemptomatik Covid-19 hastalarının yüzde 100’ünü doğru bir şekilde tespit etti ve böylece modelin yüzde 95 başarı oranı gerçekleşmiş oldu.

Ekip, modeli kullanıcı dostu bir uygulamaya dahil etmek için çalışıyor; model FDA onaylıysa ve büyük ölçüde kullanılmaya başlanırsa, korona virüs için asemptomatik olma ihtimali yüksek olan kişilerin kullanımı ücretsiz, kullanışlı bir ön tarama aracı olabilir. Bu kullanıcı telefonuna indirdiği bu uygulamayla her gün telefonuna öksürüp, virüsü taşıyıp taşıyamadığını öğrenebilir dolayısıyla bu yöntem resmi bir testin onayına tabiidir.

MIT’nin Auto-ID Laboratuvarı’nda araştırmacı bilim insanı olan ortak yazar Brian Subirana, “Bu grup teşhis aracının etkili bir şekilde uygulanması için bir sınıfa, fabrikaya veya restorana gitmeden önce kullanılırsa, salgının yayılması azaltılabilir.” Açıklamasında bulundu.

Pandeminin başlangıcı olan günlere baktığımızda, birçok araştırmacı aslında bu konunun etrafında dolaşıyordu ama hiç hayata geçen bir proje olmamıştı. Daha önceleri de araştırmacılar, zatürre ve astım gibi durumları doğru bir şekilde teşhis etmek için öksürük kayıtları üzerine algoritmalar eğitiyordu. Aynı işlemleri tekrar eden MIT ekibi de sadece hafızadaki bilgilerin kaybı değil, zayıflamış ses tellerin de görülen zayıflığı da nöromüsküler bozulmayla ilişkilendirip, alzheimer hastalığı üzerinde çalışmalar yapmıştı. Alzheimer hastalığının belirtilerini tespit edip edemeyeceklerini görmek için zorunlu öksürük kayıtlarını analiz ederek AI modelleri geliştiriyordu.

Öncelikli olarak, farklı derecelerde vokal kord gücü ile ilişkili sesleri ayırt etmek için ResNet50 olarak bilinen, genel bir makine öğrenme algoritması veya sinir ağını eğittiler. Daha önce yapılmış araştırmalarda insan duygusu olarak gösterilen ‘Hmmm’’ sesinin kalitesinin, bir kişinin ses tellerinin ne kadar zayıf veya güçlü olduğunun bir göstergesi olabileceğini göstermişti. Araştırmacılar, “onlar” kelimesini “o” ve “o zaman” gibi diğer kelimelerden ayırmak için sinir ağını 1000 saatten fazla konuşma içeren bir sesli kitap veri seti üzerinde eğitti.

Ekip konuşmada en belirgin olarak görülen duygusal ifadelerin ayırt edilebilmesi için ikinci bir sinir ağından destek almak zorunda kaldı çünkü Çünkü Alzheimer hastalarının (ve daha genel olarak nörolojik düşüşü olan kişilerin) mutluluklarını ifade etmekten çok üzgün oldukları, acı çektikleri, hayal kırıklığa uğradıklarını gösteren duyguları sergiledikleri görüldü. Bu deneyin üzerine araştırmacılar sakin, mutlu, huzurlu, nötr gibi duygusal ruh hallerini canlandıran bir veri kümesi oluşturarak, bir duyarlı konuşma sınıflandırıcı modeli geliştirdiler.

Ardından üçüncü sinir ağına ihtiyaç duyan araştırmacılar, akciğer ve solunum performansındaki değişiklikleri ayırt etmek için bir öksürük veri tabanı üzerinde yeniden bir sinir ağını eğitti.Son olarak ekip eğitmiş olduğu üç modelide birleştirerek kas zayıflamasını tespit etmek için bir algoritma yerleştirdi. Aslında algoritma bu işlemi, işittiği gürültüyü simüle ederek, güçlü öksürükleri (gürültü üzerinden duyulabilenleri) daha zayıf olanlardan ayırt ederek yapıyor.

Tüm bunların sonucunda ekip, Al desteğiyle, alzheimer hastalığı dahil olmak üzere, ses kayıtları üzerinde denemeler yaparak bunu geliştirdi ve alzheimer’in örneklerini mevcut modellerden daha iyi belirleyebileceğini göstermiş oldu. Elde edilen verilen doğrultusunda, ses teli gücü, duygu, akciğer ve solunum performansı ve kas bozulması ile birlikte hastalığın teşhisinde etkili belirteçler olduğunu gösterdi.

Aynı ekip nisan ayında, alzheimer, astım, zatürre ve Covid 19 pozitifli hastalardan on binlerce öksürük numunesi topladı. İnsanların web tarayıcısına sahip herhangi bir araçtan, bu telefon olabilir, tablet,dizüsüstü bilgisayar olabilir, öksürüklerini kaydedebilecekleri bir internet sitesi kurdular. Uygulamaya katılan katılımcılar, bu uygulamanın deneme amaçlı olup, herhangi bir doktor kontrolü veya test dahilinde olmadığına dair bir anket doldurdular. Çünkü yaptıkları bu uygulama henüz yasallaşmamış olduğu için verilen sonuçlarda tamamen deney üzerine kurulu, başarı oranı 95 e yakın olmuş olsa bile. Aynı zamanda anketin içeriğinde kullanıcıların daha önce geçirmiş olduğu hastalıklar, yaşadıkları coğrafi konum, cinsiyetleri gibi ayırt edici özellikler vardı.

         

 

Bugüne kadar araştırmacılar; her biri birkaç öksürük içeren, yaklaşık 200.000 zorla öksürük ses örneğine karşılık gelen 70.000’den fazla kayıt topladı. Araştırmacılarında kanıtladığı üzere bu zamana kadar yapılmış en kapsamlı ve belirleyici öksürük veri setine sahip bir araştırma oldu.Asemptomatik olanlar da dahil olmak üzere Covid-19 olduğu doğrulanan kişiler tarafından yaklaşık 2.500 kayıt sunuldu.

Ekip, topladıkları verileri dengelemek için kayıtlardan rastgele seçtikleri 2.500 kayıt ile birlikte Covid ile ilişkili 2.500 kaydı kullandı. AI modelini eğitmek için bu örneklerden 4.000’ini kullandılar. Kalan 1000 kaydı da daha sonra Covid hastalarının ve sağlıklı bireylerin öksürüklerini doğru bir şekilde ayırt edip edemeyeceğini görmek için model geliştirildi.

Temmuz ayında İngiltere’nin Cambridge kentindeki ‘Covid-19 Sesler Projesi’nde, nefes ve öksürük seslerinin birleşimine dayanarak, pozitif koronavirüs vakalarının yüzde 80 oranında başarıyla tespit edildiğini açıklamıştı.Uygulamanın geliştirildiği takdirde virüsün yayılma hızının,yayılma oranın düşeceği kaçınılmaz bir gerçek olduğu ispatlanmış oldu.

REFERANSLAR:

https://haberglobal.com.tr/dunya/yapay-zeka-oksuruk-sesiyle-kovid-19-hastasini-boyle-tespit-etti-77528

https://onedio.com/haber/oksuruk-sesinden-yuzde-100-isabet-koronavirus-teshisi-koyan-yapay-zeka-gelistirildi-940627

https://www.ntboxmag.com/2020/10/29/yapay-zeka-modeli-cep-telefonuyla-kaydedilen-oksurukler-sayesinde-asemptomatik-

 

 

Makale İncelemesi:CNN ile Çok Kategorili Sınıflandırma

Derin Öğrenmeyi Kullanarak Çok Kategorili Görüntülerin Sınıflandırılması : Evrişimli Bir Sinir Ağı Modeli

Bu yazıda, Ardhendu Bandhu, Sanjiban Sekhar Roy tarafından Hindistan’da 2017 senesinde ortaya konulmuş Classifying multi-category images using Deep Learning: A Convolutional Neural Network Model’ adlı makalenin incelemesi yapılmaktadır. TensorFlow ile evrişimsel sinir ağı kullanan bir görüntü sınıflandırma modeli sunulmaktadır. TensorFlow, makine öğrenimi ve derin sinir ağları için popüler bir açık kaynak kütüphanesidir. Sınıflandırma için çok kategorili bir görüntü veri kümesi dikkate alınmıştır. Geleneksel geri yayılım sinir ağı; bir giriş katmanı, gizli katman ve bir çıktıya sahiptir. Evrişimsel sinir ağında, bir evrişimsel tabaka ve bir maksimum havuzlama katmanı (pooling layer) vardır. Bu önerilen sınıflandırıcıyı, görüntü veri kümesinin karar sınırını hesaplamak için eğitiyoruz. Gerçek dünyadaki veriler çoğunlukla etiketlenmemiş ve yapılandırılmamış biçimdedir. Bu yapılandırılmamış veriler görüntü, ses ve metin verileri olabilir. Yararlı bilgiler sığ olan sinir ağlarından kolayca türetilemez, yani bunlar daha az sayıda gizli tabakaya sahip olanlardır. Çok sayıda gizli katmana sahip olan ve görüntülerden anlamlı bilgiler elde edebilen derin sinir ağı tabanlı CNN sınıflandırıcıyı önerilmektedir.

Anahtar kelimeler: Görüntü, Sınıflandırma, Evrişimsel Sinir Ağı, TensorFlow, Derin Sinir Ağı.

Öncelikle projede ortaya konulmuş adımları anlayabilmemiz için sınıflandırmanın ne olduğunu inceleyelim. Görüntü Sınıflandırması, çok sınıflı bir görüntü kümesinden görüntüleri sınıflandırmanın işlevini ifade eder. Bir görüntü veri kümesini birden çok sınıfa veya kategoriye sınıflandırmak için, veri kümesi ile sınıflar arasında iyi bir anlayış olmalıdır.

Bu makalede;

1. Görüntüleri sınıflandırmak için derin öğrenme tabanlı Evrişimsel Sinir Ağı (CNN) önerilmektedir.

2. Önerilen model, veri kümesini eğitmek ve doğrulamak için yaklaşık 300 dakika süren köpek ve kedilerin 20.000 görüntüsünü içeren veri kümesi içinde 10.000 kez yinelendikten sonra yüksek doğruluk elde eder.

Bu projede, bir evrişimsel tabaka, RELU fonksiyonu, bir pooling (havuzlama) tabakası ve fully connected (tam bağlı) bir tabakadan oluşan bir evrişimsel sinir ağı kullanılmaktadır. Evrişimsel sinir ağı, derin öğrenmeyi kullanarak görüntü tanıma söz konusu olduğunda otomatik bir seçimdir.

Convolutional Neural Network

Sınıflandırma amacıyla, evrişimsel ağı [INPUT-CONV-RELU-POOL-FC] olarak mimariye sahiptir.

INPUT- Görüntü olarak ham piksel değerleri.

CONV- İçeriği nöronların ilk kümesindeki çıktı.

RELU- Aktivasyon fonksiyonunu uygular.

POOL- Aşağı örnekleme işlemi yapar.

FC- Sınıf puanını hesaplar.

Bu yayında, resim karakterizasyonu için çok kademeli bir derin öğrenme sistemi planlanır ve uygulanır. Özellikle önerilen yapı;

1) Resim gruplama sorunu için ayrımcı ve öğretici olmayan yakındaki nöronları nasıl bulunacağı gösterilmektedir.

2) Bu alanlar göz önüne alındığında seviye sınıflandırıcıyı nasıl görüntüleyebileceğini gösterilmektedir.

YÖNTEMLER

Kaggle veri tabanından 20.000 tane köpek ve kedi görüntüsü içeren bir veri kümesi kullanılmıştır. Kaggle veri tabanında, mevcut toplam 25000 görüntü vardır. Görüntüler eğitim ve test setine bölünmektedir. Eğitim setine 12.000 görüntü ve test setine 8.000 görüntü girilmektedir. Eğitim seti ve test setinin bölünmüş veri kümesi, verilerin çapraz doğrulanmasına yardımcı olur ve hatalar üzerinde bir kontrol sağlar; çapraz doğrulama, önerilen sınıflandırıcının kedi veya köpek görüntülerini doğru bir şekilde sınıflandırıp sınıflandırmadığını kontrol eder.

Aşağıdaki deneysel kurulum, bilimsel bir Python geliştirme ortamı olan Spyder üzerinde yapılır.

  1. İlk olarak Scipy, Numpy ve Tensorflow gibi gerekli kullanılmalıdır.
  2. Bir başlangıç zamanı, eğitim yolu ve bir test yolu sabit olarak olmalıdır. Görüntü yüksekliği ve görüntü genişliği 64 piksel olarak sağlandı. Sonra 20.000 görüntü içeren görüntü veri kümesi yüklenir. Boyutların büyük sayılar olmasınedeniyle yeniden boyutlandırılır ve yinelenir. Bu süre yaklaşık olarak 5-10 dakika sürmektedir.
  3. Bu veriler TensorFlow ile beslenir. TensorFlowda, tüm veriler bir hesaplama grafiğindeki işlemler arasında geçirilir.Tensorlerin bu durumu kolayca yorumlayabilmesi için özellikler ve etiketler bir matris formunda olmalıdır.
  4. Tensorflow Tahmini: Model içindeki verileri çağırmak için, oturumu, ilgili verilerle tüm yer tutucuların adının yerleştirildiği ek bir argüman ile başlatırız. TensorFlowdaki veriler değişken şeklinde geçirildiğinden, bir grafik bir oturumda çalıştırılmadan önce başlatılması gerekir.Bir değişkenin değerini güncellemek için, daha sonra çalıştırabilecek bir güncelleme işlevi tanımlarız.
  5. Değişkenler başlatıldıktan sonra, durum değişkeninin başlangıç değerini yazdırırız ve güncelleme işlemini çalıştırırız. Bundan sonra aktivasyon fonksiyonunun dönüşü, aktivasyon fonksiyonunun seçimi ağın davranışı üzerinde büyük bir etkiye sahiptir. Belirli bir düğüm için etkinleştirme işlevi, bir girdi veya bir girdi kümesi sağlanan belirli düğümün çıktısıdır.
  6. Ardından, giriş özelliklerimizi eğitmek için ihtiyaç duyacağımız hiper parametreleri tanımlarız. Daha karmaşık sinir ağlarında daha çok hiper parametreyle karşılaşmaktayız.Hiper parametrelerimizden bazıları öğrenme oranı gibi olabilir.
     Başka bir hiper parametre, verilerimizi kaç kez eğittiğimiz yineleme sayısıdır. Bir sonraki hiper parametre, bir seferde sınıflandırma için gönderilecek görüntü kümesinin boyutunu seçen batch size boyutudur.
  7. Son olarak, tüm bunlardan sonra, TensorFlow oturumunu başlatırız, bu da TensorFlow’un çalışmasını sağlar, çünkü bir oturumu başlatmadan bir TensorFlow işe yaramaz. Bundan sonra modelimiz eğitim sürecine başlayacaktır.

SONUÇLAR

🖇 Derin mimari olarak evrişimsel bir sinir ağı kullandık ve bununla birlikte TensorFlow derin öğrenme kütüphanesini uyguladık. Aşağıdaki deneysel sonuçlar, bilimsel bir Python geliştirme ortamı olan Spyder üzerinde yapıldı. 20.000 görüntü kullanıldı ve batch size 100’e sabitlendi.

🖇 Modellerin doğruluğunun, eğitim verilerinden ziyade test verileri açısından incelenmesi esastır. TensorFlow kullanarakevrişimsel sinir ağını çalıştırmak için, Windows 10 makinesi kullanıldı, donanımın TensorFlow’un CPU sürümüne sahip olan bir 8 GB RAM ‘e sahip olduğu belirtilmiş.

📌 Yineleme sayısı arttıkça eğitim doğruluğu da artar, ancak eğitim süremiz de artar. Tablo 1, elde ettiğimiz doğrulukla sayı çizgisini gösterir.

Number of iterations vs Accuracy

Grafik, birkaç bin tekrarlamadan sonra neredeyse sabite ulaşmıştır. Farklı batch size değerleri farklı sonuçlara yol açabilir. Biz görüntüler için bir batch size değeri 100 olarak belirlenmiştir.

✨ Bu yazıda, önerilen yöntem ile görüntülerin sınıflandırılmasında yüksek doğruluk oranı elde etmiştir. CNN sinir ağı TensorFlow kullanılarak uygulandı. Sınıflandırıcının doğruluğu açısından iyi performans gösterdiği gözlendi. Bununlabirlikte, CPU tabanlı bir sistem kullanıldı. Bu yüzden deney ekstra eğitim süresi aldı, eğer GPU tabanlı bir sistem kullanılsaydı, eğitim süresi kısalırdı. CNN modeli, tıbbi görüntüleme ve diğer alanlarla ilgili karmaşık görüntü sınıflandırma probleminin çözümünde uygulanabilir.

REFERANSLAR

  1. https://www.researchgate.net/figure/Artificial-neural-network-architecture-ANN-i-h-1-h-2-h-n-o_fig1_321259051.
  2. Hinton, G. E., & Salakhutdinov, R. R. (2006). Reducing the dimensionality of data with neural networks. science, 313(5786), 504- 507.
  3. Yoshua Bengio, “Learning Deep Architectures for AI”, Dept. IRO, Universite de Montreal C.P. 6128, Montreal, Qc, H3C 3J7, Canada, Technical Report 1312.
  4. Yann LeCun, Yoshua Bengio & Geoffrey Hinton, “Deep learning “, NATURE |vol 521 | 28 may 2015
  5. Yicong Zhou and Yantao Wei, “Learning Hierarchical Spectral–Spatial Features for Hyperspectral Image Classification”,IEEE Transactions on cybernetics, Vol. 46, No.7, July 2016.

Görüntü İşleme Teknikleri ile Ön İşleme

Hedeflediğimiz birçok projenin gerçekleşmesi için mutlaka görüntü işleme adımlarından geçirilmesi gerekmektedir. Bu yazıda Gauss, Ortalama Filtre, Eşikleme Filtreleri ve Canny Kenar Algılayıcısı ile ön işleme aşamalarını birlikte ortaya koyacağız. Platform olarak benim gibi Colab’ da çalışabilirsiniz! Böylelikle hem çok hızlı hem de yer kaplamadan projelerinizi gerçekleştirebilirsiniz. 

Görüntü işleme teknikleri mevcut resimlerin analizi ile çeşitli bilgiler edinmeye yarayan sistemlerdir. Görüntü işleme teknikleri kullanım yerlerine göre, en basit algoritmalardan en karmaşık algoritmalara kadar farklı matematiksel ifadeler üzerinden çalışır.

Görüntü işleme metotlarının kullanılması için önceden elde edilmiş kamera vasıtasıyla çekilen gerçek dünya verileri üzerinde işlem yapılacaktır. İşlemler sırası ile OpenCV aracılığıyla verinin okunması, piksel değerlerinin renk kanalları açısından kontrolü, görüntüde yer alan gürültünün giderilmesi ve mevcut filtrelerin kullanılması olarak belirlenmiştir.

Projelerimiz için kullanacağımız veri setini daha önceden hazır etmemiz çalışma prensibimiz açısından daha iyi olacaktır. Görüntüler veri setiniz içerisinden imread( ) metodu ile dosyadan çekilecektir. Bu işlemimiz için gerekli kütüphaneleri yüklemekle işe koyulalım.

📍NOT: Ön işleme adımını yaptıktan sonra görüntüyü kontrol etmek için genellikle imshow() fonksiyonunu kullanmaktayım. Ancak Colab’da imshow fonksiyonumuz çalışmadığı için cv2_imshow modülünü yüklememiz gerektiğini unutmayalım!

Aşağıda gördüğünüz görselde görüntünün elde edilmesi ve piksel değerlerinin incelenmesine olanak veren kod yer almaktadır.

Kütüphanelerin Yüklenmesi
Kütüphanelerimizi yükledikten sonra kullanacağımız veri seti için bir klasöe oluşturup path değişkenine yolu kopyalamalıyız. Çünkü görüntü işleme tekniklerimiz bu klasörde yer alan görüntüler üzerinde çalışacaktır.

Kullandığım görüntüler gri seviye görüntüler olduğu için imread fonksiyonunda gördüğünüz gibi dosyanın yanına 0 ibaresini koydum. Bu şekilde görüntülerde renk tonu mümkünse bile bu görüntü gri seviyeye dönüşecektir. İlk görüntümüzü RGB imshow metoduile ekrana bastırabiliriz.

Görüntümüzün yanına 0 koyduğumuzda ise aşağıda gördüğünüz görsele ulaşmış olacağız. cv2_imshow(image) komutu ile ekranda gördüğünüz görseli yazdırmamız mümkündür. Bu adımdan sonra görüntü işleme adımlarına geçebiliriz.

Görüntü İşleme Adımları

RGB veya gri skala görüntünüzün piksel değerlerini görmek istiyorsanız print komutu ile bu şekilde ekrana bastırmanız mümkündür. Böylelikle hangi kanalda çalıştığınızı da kontrol etmiş olacaksınız. Bu görüntüde RGB bir gül görüntüsü kullandığım için piksel değerleri aşağıdaki sayıları göstermektedir.

📌 RGB Renk Kanalı: RGB en yaygın kullanılan renk alanıdır. Bu renk modelinde her renk kırmızı, yeşil ve mavi ana spektral bileşenleri olarak görür. Bu modelin altyapısında Kartezyen Koordinat Sistemi barınmaktadır.

Görüntümüzün RGB’ ye dönüştürülmesi ve piksel değerlerinin incelenmesi için gerekli koda aşağıdaki şekilde yer verilmiştir.

📌 HSV Renk Kanalı: HSV uzayının ismi, renk tonu, doygunluk ve parlaklık kelimelerinin İngilizce karşılığı olan hue, saturation ve intensity kelimelerinin baş harflerinden gelmektedir. HSV renk uzayı Hue, Saturation ve Value terimleri ile rengi tanımlar. RGB de renklerin karışımı kullanılmasına karşın HSV de renk, doygunluk ve parlaklık değerleri kullanılır. Doygunluk rengin canlılığını belirlerken parlaklık rengin aydınlığını ifade eder.

Şekilde yer alan görüntülerde RGB görüntüden HSV’ ye dönüşüm sağlanmıştır. Bir diğer renk kanalı olan LAB kanalı da son olarak incelenerek görüntünün gri seviye formatına dönüşümü sağlanmıştır.

📌 CIE-LAB Renk Kanalı: CIE 1931 renk uzayları, elektromanyetik görünür spektrumdaki dalga boylarının dağılımı ile insan renk görüşünde fizyolojik olarak algılanan renkler arasındaki ilk tanımlanmış kantitatif bağlantılardır. Bu renk uzaylarını tanımlayan matematiksel ilişkiler, renk mürekkepleri, ışıklı ekranlar ve dijital kameralar gibi kayıt aygıtlarıyla uğraşırken önemli olan renk yönetimi için gerekli araçlardır.

 

Görüntüdeki Gürültünün Giderilmesi

Görüntüler kameradan elde edilen gerçek dünya verisi oldukları için bir kameranın sensörü üzerindeki akım değişimlerinden dolayı genellikle Gauss gürültüsü içerir. Gürültülü görüntüler, eleman tespiti için kullandığımız kenar tespitinde daha kötü performansa yol açabilir. Bu nedenle, bu gürültüyü azaltmak önemlidir.

🖇 Gürültü azaltmak için literatürde birçok yöntem mevcuttur. Bugün sizlerle 2 adet yöntemi tartışacağız.

  1. Adaptive Threshold Gaussian
  2. Adaptive Threshold Mean
➡️ Adaptive Threshold Gaussian

Görüntülerimizin gauss gürültüsü giderilmiş görüntüler haline gelmesi için Gaussian yöntemi uygulandığı Python koduna aşağıdaki şekilde yer vermekteyim. Burada yer alan adaptiveThreshold metodu içerisindeki parametreler ile oynanarak istenilen sonuca ulaşmak mümkündür.

Literatürde sıkça yer verilen Gauss ve ortalama eşik filtreleri bu görüntüler üzerinde uygulandığında hemen hemen aynı blurluk (yumuşama) seviyesine yaklaşıldığı görülmüştür. Bu yöntemler sırasıyla adaptif gauss filtresi ve ortalama filtre uygulamasıdır.

➡️ Adaptive Threshold Mean (Ortalama)

Uyarlanabilir (adaptive) eşikleme, eşik değerin daha küçük bölgeler için hesaplandığı yöntemdir ve bu nedenle, farklı bölgeler için farklı eşik değerleri olacaktır.

 

Gaussian ve Mean filtreleri arasında takdir edersiniz ki çok ufak nüanslar vardır. Parametre değerlerini kendiniz değiştirerek istediğiniz filtre ile devam edebilirsiniz.

➡️ Kenar Tespiti

Kenar tespiti, unsurları tespit etmede kullanılan önemli bir tekniktir. Şekilde yer verilen kenar algılama tekniklerinden olan Canny kenar algılama algoritması görüntüler üzerinde çalıştırılmıştır.

Canny Code

Canny Image

REFERANSLAR

  1. Medium, Cerebro, Görüntü İşleme Tekniklerinde Yapay Zekâ Kullanımı, Nisan 2018.
  2. Vikipedi, Özgür Ansiklopedi, ‘Görüntü işleme’, Eylül 2020.
  3. C. Gonzalez, Rafael, E. Woods, Richard, Sayısal Görüntü İşleme, Palme Yayıncılık, (Ankara, 2014).
  4. S. Singh and B. Singh. “Effects of noise on various edge detection techniques”. In: 2015 2nd International Conference on Computing for Sustainable Global Development (INDIACom). Mar. 2015, pp. 827–830.
  5. https://www.tutorialspoint.com/opencv/opencv_adaptive_threshold.htm.
  6. Ajay Kumar Boyat and Brijendra Kumar Joshi. “A Review Paper: Noise Models in Digital Image Processing”. In: CoRR abs/1505.03489 (2015). arXiv: 1505.03489. url: http:// arxiv.org/abs/1505.03489.
  7. T. Silva da Silva et al. “User-Centered Design and Agile Methods: A Systematic Review”. In: 2011 Agile Conference. Aug. 2011, pp. 77–86. doi: 10.1109/AGILE.2011.24.

 

OpenCV Kullanımı ile Kontur Çıkarımı

Görüntü işlemede kontur denilen kavram, bir rengin veya yoğunluğunun sahip olduğu tüm sürekli noktaları birleştiren kapalı bir eğridir. Konturlar bir görüntüde bulunan nesnelerin şekillerini temsil eder. Kontur algılama, şekil analizi ve nesne algılama ve tanıma için yararlı bir tekniktir. Kenar tespiti yaptığımızda, renk yoğunluğunun önemli ölçüde değiştiği noktaları buluruz ve sonra bu pikselleri açarız. Bununla birlikte, konturlar, görüntüdeki nesnelerin şekillerine karşılık gelen soyut nokta ve segment koleksiyonlarıdır. Sonuç olarak, programımızda kontür sayısını saymak, bunları nesnelerin şekillerini kategorize etmek için kullanmak, bir görüntüden nesneleri kırpmak (görüntü bölümleme) ve çok daha fazlası gibi konturları işleyebiliriz.

Computer Vision
🖇 Kontur tespiti, görüntü segmentasyonu için tek algoritma değildir ancak mevcut son teknoloji semantik segmentasyon, hough dönüşümü ve K-Means segmentasyonu gibi başka birçok algoritma vardır. Daha iyi bir doğruluk için, bir görüntüdeki konturları başarılı bir şekilde tespit etmek için izleyeceğimiz tüm ardışık düzenler:

  • Görüntüyü ikili görüntüye dönüştürün, giriş görüntüsünün ikili görüntü olması yaygın bir uygulamadır (eşikli görüntü veya kenar algılamanın bir sonucu olmalıdır).
  • FindContours( ) OpenCV işlevini kullanarak konturları bulma.
  • Bu konturları çizin ve resmi ekrana gösterin.

Photoshop Üzerinde Kontur Uygulama

Adobe PS
Kontur çıkarımının kodlamasına geçmeden önce sizlere daha iyi edinimler kazandırmak için öncelikle Photoshop üzerinde örnek vereceğim.
Katmandan kontur çıkarımı
İlk adım olarak yukarıda gördüğünüz pencereye erişmek için Photoshop üzerinde bulunan Katmanlar penceresindeki herhangi bir katmana sağ tıklayarak karıştırma seçeneklerini seçiniz.
🔎 Katmanlar penceresi aktif değil ise üst menüden Pencere menüsüne tıklayarak katmanları aktif etmelisiniz. Windows için  kısayol tulu F7′ dir.
Sol bölümden Kontur sekmesini seçerek görüntüde oluşturmak istediğiniz kontur rengini ve opaklığını seçmeniz mümkündür. Ardından önce görüntüde oluşacak kontur çıkarımının iyi ayrıtlandırılabilmesi için arka plan çıkarımı yapılmaktadır.
People siluet
Burada gördüğünüz görselde arka plan çıkarıldıktan sonra nesnenin ön planda belirgin olabilmesi için sarı tonlarında bir seçim gerçekleştirdim. Arka plan çıkarıldıktan sonra görüntüde dış kontur uygulanarak tespitin daha başarılı olması sağlanacaktır.
People contour

Python OpenCV ile Kontur Çıkarımı

Platform olarak Google Colab ve Python programlama dilini kullanmaktayım. Düzenli olarak Python kodlayanlar var ise mutlaka tavsiyede bulunabileceğim bir platform! Haydi gelin, adım adım kodlamaya başlayalım.
📌 Projemiz için gerekli olan kütüphaneleri aşağıdaki gibi import ile yükleyelim.
Gerekli Kütüphanelerin Yüklenmesi
📌 İkinci adım olarak görüntümüzü imread fonksiyonu ile elde ediyoruz.
Görüntünün Alınması
📌 Görüntü işleme dünyasında bildiğiniz üzere görsellerimiz BGR formatında gelmektedir. BGR görüntünün ilk olarak RGB formatına dönüştürülmesi ve ardından gri skala renk kanalına atanması gerekmektedir.
Converting Color Spaces
📌 Dördüncü adım olarak görüntüde bir eşik değeri belirtilerek binary threshold (ikili eşikleme) işlemi yapılmaktadır. Binary threshold fonksiyonunun arka planda çalıştırdığı matematiğe erişmek için aşağıdaki formülü incelemelisiniz 👇
Formula
Binary threshold
Dikkat ettiyseniz threshold uygulanacak görüntü RGB değil gri seviye görüntü seçilmiştir. Lütfen bu aşamada dikkat edelim. Bu adımları sırası ile takip ettiğinizde aşağıdaki dönütü alacaksınız.
Background
📌 Bu adımda ise görüntüde yer alan konturların bulunması için findContours fonksiyonunu kullanacağız. Konturların belirleneceği görüntü ise threshold gerçekleştirdiğimiz binary görüntü olacaktır.
Find Contours
📌 Oluşturulan bu konturların görselde çizilmesi için drawContours fonksiyonunu kullanacağız.
Draw Contours
🖇 Metotta yer alan cv2.CHAIN_APPROX_SIMPLE parametresi, tüm gereksiz noktaları kaldırır ve konturu sıkıştırarak hafızadan tasarruf sağlar.
📌 Artık kontur çıkarımı yapılmış görüntümüzü ekrana bastırabiliriz.
Imshow contours

Bu şekilde çıkarımımızı yapmış olduk. Bir başka yazımda başka projelerin dünyasına yönelmek dileğiyle… Sağlıcakla kalın ✨

REFERANSLAR

  1. Contour Tracing, http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/intro.html.
  2. Edge Contour Extraction, https://www.cse.unr.edu/~bebis/CS791E/Notes/EdgeContourExtraction.pdf, Pitas, section 5.5, Sonka et al., sections 5.2.4-5.2.5.
  3. https://www.thepythoncode.com/article/contour-detection-opencv-python adresinden alınmıştır.
  4. https://www.subpng.com/png-m7emk6/ adresinden alınmıştır.
  5. OpenCV, https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html.
  6. OpenCV, https://docs.opencv.org/master/d4/d73/tutorial_py_contours_begin.html.

Microsoft Seeing Al İle Görme Engellilerin Dünyasını Aydınlatıyor

Günümüz ilerleyen teknolojisinde, sürekli geliştirilen ve üstüne yenilikler eklenilerek bize sunulan akıllı telefonların yanında yapay zekayla ilişkili ürünlerin hayatımızı kolaylaştırması hız kesmeden devam ediyor. ABD merkezli teknoloji devlerinden Microsoft, hızla gelişen ve değişen teknolojiye ayak uydurarak gündelik yaşamı kolaylaştırmak ve gelişen teknolojiyi yakalamak için ürünler çıkarıyor.Bu ürünlerden bence en önemlisi ve en çok işe yarayanı yeni duyurmuş olduğu “Seeing Al” isimli yapay zeka destekli mobil uygulaması.

Seeing Al, görme engelli insanlar için tasarlanmış bir yapay zeka uygulaması. Peki nedir bu Seeing Al? Seeing Al, telefonların kameraları yardımıyla elde ettiği görüntüleri sesli bir yapay zeka tarafından alıcıya ileten bir uygulama. Biraz daha açmamız gerekirse, görme engelli insanlara etraflarında ne olduğunu, şu an nerede olduklarını anlatan bir akıllı telefon uygulaması. Öyle ki, kameraya karşı taraf ne gösteriyorsa uygulama birebir ekranda gördüklerini sesli bir şekilde görme engelli kullanıcıya aktarıyor. Kamera tutulan nesnenin veya kişinin nasıl olduğunu, ne hissettiğini, kim olduğunu da aktaracak. Aynı zamanda uygulama, kamera bir ürünün üzerine tutulduğunda ürünün ne olduğunu da söyleyecek. Tüm bu uygulamalar telefonda bulunan yapay zeka yardımıyla gerçekleştirilecek.

Microsoft, geçtiğimiz yıllarda mart ayında düzenlediği Build konferansında Seeing Al uygulamasının ön hazırlık şeklinde prototipini göstermişti. Uygulama yaklaşık olarak 16 ayın ardından ABD’de İOS yazılımlı cihazlara sahip kullanıcılarla buluştu. Android ve diğer yazılımlı telefonlara ne zaman geleceği henüz bilinmiyor.

Uygulamanın çalışma prensibine bakacak olursak, daha önce görmüş olduğu kişileri tanıyan, yabancılarında, hislerini, duygularını, yaşlarını, fiziksel özelliklerini tahmin edebilen Seeing Al, barkod okuma özelliği sayesinde de gösterilen ürünlerin ne olduğunu iletebiliyor. Belgeleri okuyabilen ve tarayan uygulama, Amerika para birimi olan doları da tanıyabiliyor. En çok işe yarayan özelliğinin bu olduğunu savunarak size de açıklamak istiyorum. Görme engellilerin günlük yaşantılarında ne kadar zorluk çektiklerini anlamaya çalışıyor olsak da bir yere kadar onları anlayabilir onların yaşadığı zorluklara tanıklık edebiliriz. Bizim görebildiğimiz en azından şahit olduğumuz zorlukların başında alışveriş yapabilme konusu geliyor. Alışveriş esnasında yaşadıkları zorluklarla biz de zaman zaman karşılaşıyoruz. Ödeme aşaması ise alışveriş yapıyor olmanın en son ve zor adımı, ödeme yapacakları yöntemin nakit olduğu zamanlar, verdikleri paranın ne olduğunu bilemiyor, paraları birbirinden ayırt edemiyorlar ve bu durum alışveriş yapmak kadar alışverişin sonunu da zor hale getiriyor. Ki sadece para kısmıyla alışverişte karşılaşmıyorlar, bindikleri taksi, ödemeye çalıştıkları fatura, ve bunun gibi birçok para alışverişi gerektiren yerlerde zorluk çekiyorlar. Bahsetmiş olduğum gibi Seeing Al’nin ben tarafından en çok takdir gören ve yararlı bulduğum özelliği para tanıyor olabilmesi. Dolar işareti değerinden bağımsız olarak paraların boyutu, rengini ayırt etmek onlar için imkansızken Seeing Al sayesinde bu imkanlı hale geliyor.

Yapay zeka yardımıyla geliştirilen bu uygulama,etrafındakileri tanıyıp algılayabilmek için nöral ağlardan yararlanıyor. Nöral ağ teknolojisi bildiğiniz üzere, Silikon vadisinde tanıtımı yapılan sürücüsüz yani otonom araçlarda, belirli drone’larda ve daha birçok teknolojide kullanılan bir yenilik. Uygulamanın temelinde nöral ağlardan yararlanıldığı için fonksiyonları, doğrudan cihazın üzerinde yerine getiriliyor böylece uygulamanın hız konusunda ya da internete bağlantısının gecikmesi gibi sorunlar ortaya çıkmıyor. Görüş alanındaki her şeyi tanıyıp anlayabilmesi için,buna el yazısı gibi denetlenmesi gereken şeylerde dahil,bunlar için bulut bağlantısına ihtiyaç duyuyor.

Seeing Al, ilk olarak ABD’de tanıtılmış, yalnızca İngilizce dil desteğine sahip olan uygulama İOS kullanıcılarına sunulmuştu.Ülkemizde bugüne kadar İngilizce olarak kullanılıyordu bu nedenle birçok kullanıcı bu uygulamadan habersizdi. Microsoft geçtiğimiz günlerde yaptığı açıklamalarda Seeing Al’nin Türkçe dil desteğine sahip versiyonunun yayınlandığını duyurdu. Uzun bir süredir Türkçe dil desteği üzerine çalışan Microsoft Türkiye Ekibi 3 Eylül Perşembe günü Seeing AI’nin Türkçe versiyonunu Apple Store’da kullanıcıların erişimine açtı. Hâlâ sadece IOS kullanıcılarının yararlanabildiği bu uygulama ücretsiz olarak sunuldu. Yani bu uygulamaya sahip olmak isteyen tüketiciler, herhangi bir ödeme yapmak zorunda kalmıyorlar.

Microsoft Türkiye Genel müdür vekili uygulamanın Türkçe sürümünü erişime açarak Türkiye’de çok daha fazla sayıda görme engelliye ulaşacak olmanın heyecanını yaşadıklarını belirtti. Yılmaz, “Seeing AI, yapay zekâ ile engellilerin gündelik hayatına ne kadar büyük katkı sağlanabileceğini kanıtlayan eşsiz bir uygulama. Bir süpermarkette ne satın aldığından emin olmak; ödeme adımında Türk lirasını tanıtarak alışverişi güvenle tamamlayabilmek; sokakta çevresindekileri algılayabilmek, görme engelli bir birey için son derece özgürleştirici deneyimler. Seeing Al uygulamasıyla kullanıcıların WhatsApp ve sosyal medyada paylaşılan metinleri okuması; görsellerin sesli betimlemesini dinlemesi dahi artık mümkün” olduğunu söyleyerek, uygulamanın engellilerin bireysel özgürlüklerine katkı sağladığına değindi.

Yaşadığımız dönemin her alanın görsele dayalı olduğunu dile getiren Murat Yılmaz, “Teknoloji, insanların hayat kalitesini yükselttiği oranda değer kazanıyor. Ücretsiz ve kayıt gerektirmeyen bir telefon uygulamasının bizi çevreleyen dünyayı bu kadar kapsamlı şekilde betimleyebilmesi, görme engelliler için de, bu teknolojinin yaratıcısı olan Microsoft için de paha biçilemeyecek kadar değerli”dedi. Uygulamanın Türkçe sürümünün hazırlık aşamasında Microsoft ailesine katkıları bulunan birçok marka olduğunu söyleyen Murat Yılmaz, bu uygulamaya sosyal sorumluluk projesi olarak yaklaşan tüm markalara teşekkür etti.

Barkod okuma özelliğinden bahsettiğimiz bu uygulamanın veritabanına Türkiye’de bulunan 6 Milyon ürünün barkod numarası eklenmiş durumda. Bu markalar arasında, Boyner, Evyap, Koçtaş, MediaMarkt, Mondelēz International Türkiye, P&G Türkiye, Unilever Türkiye ve Watsons Türkiye gibi ünlü markalarının ürünlerinin barkodları artık Seeing Al’nin veritabanında. Söz konusu markaların tek bir alışveriş kategorisinde olmaması ise uygulamanın yelpazesinin genişliğini öne sürüyor. Bu markaların yanı sıra Microsoft’un bu uygulamasına destek veren bir diğer markada Turkcell oldu. Turkcell, uygulamayı kullanan müşterilerinin data kullanımını ücretsiz hale getirdi. Yani herhangi bir Turkcell kullanıcısı bu uygulamayı kullanırken internet paketinde azalmayla karşılaşmayacak.

Microsoft Türkiye, verileri toplu almak yerine markalarla birebir görüşerek, ürünlerin tüm özelliklerini; ölçü, renk, beden, malzeme, gramaj ve alerjen bilgisi gibi detayları göz önünde bulundurarak, sürekli değişen barkodları, düzenli güncelleyen bir veritabanı oluşturmuş oldu. Bu sayede ise, görme engelli insanlar, kimseden destek almadan ürünleri rahatlıkla tanıyabiliyor.

Microsoft Türkiye’nin hedeflemiş olduğu görme engellilere yönelik bu uygulamanın benim nezdimde de en büyük artısı olan para tanıma özelliği ile ilgili bir destek de Kuveyt Türk’ten geldi. Kuveyt Türk, banknotların görselleriyle gerekli barkodları oluşturdu. Bu sayede uygulama,dolarla birlikte Türk lirasını da tanır hale geldi.

Microsoft Türkiye yapmış olduğu bu uygulamayla görme engellilere büyük ölçüde fayda sağlayacak gibi görünüyor,Diliyorum ki diğer engellere sahip vatandaşlarımız içinde en kısa zamanda bu ve bunun gibi pek çok uygulama geliştirilir,bir nebzede olsa onlara fayda sağlanmış,hayatları biraz olsun onlar için kolay hale gelmiş olur.

REFERANSLAR:

https://shiftdelete.net/microsoft-seeing-al-uygulamasi-83563

https://www.webtekno.com/microsoft-seeing-ai-turkce-indir-h99180.html

https://www.donanimhaber.com/Microsoftun-gorme-engelliler-icin-gelistirdigi-Seeing-Ai-uygulamasi-35-ulkeye-gidiyor–95934

 

 

 

 

 

Python ile Twitter Üzerinden Kelime Bulutu ve Sentiment Analizi Çalışması

Günümüzün en popüler kavramlarından birisi, kelime bulutu ve onun üzerinden yapılan çalışmalardır. İnsanlar kelime bulutu üzerine denemeler yaparken nltk kütüphanesini kullanırlar. Burada amaç doğal dil işleme evrelerinden öncesinde yapılan işlemlerdir. Python programlama dili, her geçen gün daha geniş kitlelere ulaştığı için nltk ile yapılan projelerin çeşitliliği artmaktadır. Başlangıç seviyesinde olan insanlar, genellikle Twitter üzerinde herhangi bir konu üzerine atılan tweetleri analiz eder ve onun üzerinden görselleştirmeler, analizler ve çıkarımlar yaparlar. Kelime bulutu oluşturacak olurken kilit noktalardan birisi de tekrar sayılarıdır. Kelime ne kadar tekrar ederse, kelime bulutu içerisinde kendisini belirgin etme durumu daha ön plana çıkar. Yapacağınız araştırmaları, aşağıdaki görsel ile anlatmaya çalıştım. Burada q ile belirtilen kısım, aratacağınız kelime ya da cümlenin olduğu kısımdır. Bunları yapabilmek için öncelikle Twitter Developers hesabınızın olması gerekmektedir. Ek olarak buradan çekeceğimiz için bağlantıyı buradan sağlıyor olacaksınız. Bağlantı aracılığıyla tweetleri kendi local çalışma yerinize çekerek üzerinde işlemler yapabilirsiniz.
 

Üst taraftaki fotoğrafta da görüldüğü gibi işin en kritik kısmı, def yapısını iyi bir şekilde kurmak ve hangi değişkenler üzerinde etiket yapacağınıza karar vermektir. Token ve key değerlerini bir yere kaydedip oradan çekebilirsiniz. Burada ben gizlilikten ötürü key değerlerini göstermedim fakat Twitter Developer hesabınız olunca, bu değerlere kendiniz erişebilir ve gerekli atamaları yapabilirsiniz. Twitter üzerinde analiz yaparken spesifik değerlere erişmek isterseniz, özel aramalar yapabilirsiniz. Kaynaklar kısmında gerekli dokümantasyonu bırakacağım oradan isteğinize göre inceleyip kendi kodunuza ve analizinize entegre edebilirsiniz. Ekstra bilgi vermem gerekirse, kullanacağız nltk içerisinden birkaç metot bulunmaktadır. Benim bireysel olarak kullandıklarımdan birisi ‘stopwords’ bir diğeri ise ‘wordnet’tir. İngilizce seçeneğini üzerine çalışacağınız dile göre dilediğiniz gibi değiştirebilirsiniz. Kelime sağlamlığı ve etkinliği bakımından geniş kapsamlı olan İngilizce dilidir. Kendi diliniz üzerinde çalışırken tam anlamıyla kaliteli bir sözcük topluluğu varsa, yorumlar sekmesinden belirtebilirsiniz. Böylece etkileşimi yüksek tutabilir ve alınacak verim oranını arttırabiliriz. Aşağıda olan görselde burada anlattığım kısmı gözlemleyebilirsiniz.

 
Kelime Bulutu çalışması için ben ‘samsung’ kelimesini seçtim. Lang kısmında dil seçeneğinin kısaltmasını girerek seçtiğiniz hashtag verisini kendi çalışma alanınıza çekebilirsiniz. İlk başta gerekli kütüphaneleri ekliyoruz hemen sonrasında çalışacağımız arka plan rengini kişisel isteğinize göre değiştirebiliriz. Ek olarak plt.axis değerini ‘on’ hale getirirseniz tekrar eden kelimelerin frekansını gözlemleyebilirsiniz. Ben bunu kendim ön plana çıkarma metodu ile yaptığım için eksenlerini ekstra olarak göstermeyi gereksiz buldum. Burada yaptığım işlem temel bir wordcloud yapısı kurmak ve sizlerin giriş seviyesinde bile olsa bir şeyler kazandırmak. Doğal dil işleme için kariyer planlamanız varsa, bunu bir başlangıç olarak görüp gerekli notları takip ederek kendini geliştirmeye devam edebilirsiniz. Kelime bulutu yapısı bu işlerin en alt sekmesidir. Ben de bir junior olarak sizlere de öğretirken kendim de bu alanda çalışmaları sürdürüyorum. Doğal dil işleme kariyeri, geniş çaplı kaynak tarama ve github gibi platformlarda başkalarının neler yaptığını, nasıl kod yazdıklarını ve ne gibi projelerin yapıldığına dair her an takipte kalmanız gereken bir alandır.

 
Son kısımda da bahsedeceğimi söylediğim giriş seviyesi bir sentiment analizini göstereceğim. Burada anlatacaklarıma başlamadan önce, Python’da kod yazarken def kalıplarını iyi kurmanız ve kodunuzu burada içeriye iyice yedirmeniz gerekmektedir. Fonksiyonel işlemlerinin hızlandırılması ve ileri zamanlarda çalışırken sizden sonrasında yerinize gelecek kişilere anlaşılır, ölçeklenebilir bir kod yazmanız herkes açısından fayda sağlayacaktır. Bunu da def yapıları ile temiz kod yazarak sizin yerinize gelen kişiye kolay bir şekilde orada yaptıklarınızı aktarabilirsiniz. Sentiment analizine dönecek olursam, burada halihazırda textblob kütüphanesi aracılığıyla bu skorlama işini yapabiliriz. Twitter üzerinden atılan tweetlerin içeriği ve bu içeriğin olumlu – olumsuz kelimeler barındırılması sonucunda TextBlob bunu sınıflandırır. Bu sınıflandırma sonrası, sizlere üzerinde analiz yapılacak hazır hale gelmiş bir kolon verir. Bunu isteğinize göre analiz edebilir, farklı çalışmalar deneyebilirsiniz. Örnek olarak grafik haline dökebilir, tekrar eden kelimelerin sayısını gözlemleyebilir ve bu değerler sayesinde farklılıkları ele alarak, arka planını kendiniz düzenlediğiniz bir resme entegre edebilirsiniz.
 

References:
-https://globalaihub.com/sentiment-analysis-with-naive-bayes/
-https://globalaihub.com/duygu-analizi-nedir/
-https://www.veribilimiokulu.com/
-https://amueller.github.io/word_cloud/
-https://www.datacamp.com/community/tutorials/wordcloud-python
-https://monkeylearn.com/sentiment-analysis/

Hareketli Ortalama Algoritmasıyla Al – Sat Tavsiyeleri

Finans alanında çalışan Veri Bilimciler, genellikle portföy optimizasyonu, al – sat işlemleri ve portföy getirisi gibi hesapları yapar. Bu işin borsa üzerinde önemi çok üst seviyededir. Çünkü verilen her karar, yapılacak olan kâr miktarını etkiler. Bundan ötürü adımları dikkatli seçerek, üzerinde çalışılan sisteme entegre edilmelidir. Borsa içerisinde dünya ile etkileşim halinde olan mekanizma mevcut ve bunun değişimlerine hızlı şekilde adapte olabilen firmalar hızlıca fark yaratıp sürdürülebilir bir hal almalıdır. Bu sayede kendi farkını ortaya koyarken pazarlama şekillerini değiştirip piyasa içerisinde aktif olabilirler. Marka olarak danışmanlık sunan ve değişikliklere adapte olma potansiyeli yüksek olan firmalar, kendi isimlerinden sık bir şekilde bahsettirebilirler. Robot danışmanların arka planında yoğun bir şekilde makine öğrenmesi ve derin öğrenme algoritmaları yatmaktadır. Robot danışman sunan her şirket, kendi bünyesinde sağlam bir altyapıya sahiptir. Kodlama kısmı biraz karmaşık olsa bile sonuç kısmına vardığımız an, başarının tamamını kendi gözlerimizle göreceğimiz. Buna istinaden çıktıyı alt resimde örnek olması adına koyuyorum.

 
 
Aslında üstte gördüğünüz resim, projenin son halini temsil ediyor. Ulaşmak isteyenler için sizlere kaynaklar kısmında kod bütününü bırakacağım ve kendi sistemlerinize kolay bir şekilde adapte edebileceksiniz. Not olarak şunu belirtmeliyim. Ben Türkiye borsası içerisinde yer alan Aselsan şirketini kullanarak bu kodlamayı yaptım. Ek olarak burada gördüğünüz herhangi bir işlem yatırım tavsiyesi değildir. Bunları belirttikten sonra alt tarafta gördüğünüz şekilde kütüphaneleri ekleyip veri setimizi okuyoruz. Ardından veri hakkında istatistiksel çıktıları almak için describe() fonksiyonunu kodluyoruz. Burada ilgilendiğimiz değişken, borsanın kapanışını temsil eden ‘close’ değişkeni üzerine olacak. Veri setinin tarihlerini ben 1 Ocak 2017 itibari ile alarak kendi analizimi gerçekleştirdim. Siz istediğiniz herhangi bir zaman üzerinden analizinizi yapabilirsiniz fakat tek olması gereken şey, benim kullandığım şekilde kullanabilmeniz için hisse için tarihsel veri seti, gerekli kütüphaneler içerisinde bulunmalıdır. Aksi takdirde kodunuz çalışmayacak ve hata üretecektir. Github linkini koyduğum kodun detaylarını inceleyebilirsiniz. Herhangi bir sorunuz olursa mail adresimden bana ulaşabilirsiniz.
 

 
Borsa içerisinde birçok farklı şekilde teknik analiz yöntemi vardır. Biz burada tamamen hareketli ortalama üzerinden devam edeceğiz. Hareketli ortalama yöntemi, borsa içinde kullanılan en yaygın yöntemlerden birisidir. Bu yöntem sayesinde borsa içinde al sat tarzı işlemleri anlık olarak takip eden birçok insan vardır. Bunlara ekleyeceğimiz teknik analiz metotları halen mevcuttur. Örnek vermek gerekirse RSI, Bolinger Bandı, MACD ve Fibonacci Düzeltme Seviyeleri sayılabilir. Alt tarafta gördüğünüz çizgiler, bizim için window() fonksiyonu ile at sat işlemlerini yaptıracak, hareketli ortalama yöntemidir. Görselde mavi çizgi asıl fiyatları temsil etmektedir. Bunun haricinde diğer çizgilerin kesişim noktaları bize al sat olarak dönüyor ve getirisini kendimiz ölçebiliyoruz. Buy_sell adını verdiğim fonksiyon sayesinde bize gerekli işlemleri yapıyor. Bu da bizim için hazırlığı yapıyor. Bizim için buranın çalışması hali, işlemlerinin tamamının bittiğini gösterir. Artık geriye sadece gerekli atamaların yapılıp fonksiyonun görsel olarak en başta gösterdiğim şekilde sunumu kalmıştır. Bunu yapabilmek için matplotlib kütüphanesi size yardımcı olacaktır.
 

 
Bu yazının devamını kendimi geliştirdiğim sürece gelecek ve bunu bir seri halinde yazmayı düşünüyorum. Borsa içerisinde kullanılan al sat işlemleri ve teknik analiz metotlarının bunlara etkilerini sizlere açıklayıp bu alanda kariyer düşünen herkese yardımcı olmayı hedefliyorum. Borsa içerisinde robot danışman üzerinden işlem yapan birçok start-up bulunmaktadır. Bununla birlikte sektör bazında büyük firmalar, bu alanda çalışacak ve gelişime açık birçok ufak şirkete yatırım yaparak, piyasa içerisinde yeni şeyleri keşfederken sürekliliğini sağlamaya devam ediyor. Bilindiği üzere borsa en ufak şeylerden bile etkilenip kâr – zarar durumlarını hızlıca değiştirebiliyor. Önceden olacaklara karşı bilgi sahibi olan büyük firmalar, bu tarz değişken ortamlarını tahmin ederek piyasa içerisinde sağlam adımlar atarak kâr marjını koruyor. Bunları oluştururken kullandığı analiz sistemlerinde birçok teknik analiz metodu bulunmaktadır. Böyle işlemlerin ölçeklenebilir olması da sistemin ne tür tepki vereceğini ve verdiği tepkinin olumlu anlamda olacağının garantisini verebiliyor. Hisse fiyatlarını değerlendirip teknik analiz metotlarını Python programlama dili üzerinde işlemeye devam edeceğim. Bunun için takipte kalarak geri bildirimde bulunabilirsiniz.
 

 

References:

https://globalaihub.com/robo-advisory-in-ai/
https://globalaihub.com/importance-of-data-quality-and-data-processing/
https://github.com/tanersekmen/stocks-buy-sell/blob/main/buy-sell.ipynb
https://www.tradingview.com/symbols/BIST-ASELS/technicals/
https://finance.yahoo.com/quote/ASELS.IS?p=ASELS.IS&.tsrc=fin-srch