Anasayfa / Genel bir bakış / Python ile Makine Öğrenmesi 1: “kavramların dedikodusu”

Python ile Makine Öğrenmesi 1: “kavramların dedikodusu”

Bomba gibi bir seriye hazır mıyız??? Python ile karşınızdayım 😀 

Makine öğrenmesi, bize bir veri kümesi hakkında ilginç şeyler söyleyebilen algoritmalar oluşturma fikridir. Yani kod yazmak yerine algoritmayı veriyle besleriz ve bu algoritma veriye dayanarak kendi mantığını oluşturur. Çok heyecan verici değil mi? Bilgisayarlara veriden öğrenme, veriyi anlamlandırma yeteneği kazandırıyoruz. Bu öğrenme yeteneği temelde üç gruba ayrılır:

Denetimli öğrenme (supervised learning)

Denetimsiz öğrenme (unsupervised learning)

Pekiştirmeli öğrenme (reinforcement learning)

Neye Benziyorsan Osun

Denetimli öğrenme, bütün öğrenicilerin doğru yanıtı onlara söyleyecek bir öğretmene ihtiyaç duymasıdır. Yani birisi “tümör” veya “sağlıklı hücre” diye etiketlemedikçe tümörleri sağlıklı hücreden ayırt edemezler. Dolayısıyla veri kümemizin ne olduğunu ve bu verilerden istediğimiz çıktının ne olması gerektiğini biliyoruz. Konuyu daha iyi anlamak adına, boş bir muayenehaneye gizlice girdiğinizi düşünelim ve çok geçmeden bir hasta gelip size semptomlarını anlatsın. Elinizdeki tek şey hasta dosyalarıyla dolu bir dolap; hasta dosyalarında da semptomlar, teşhisler, tedaviler yer alıyor. Ne yaparsınız? En kolay yol, hastanızın semptomlarına en çok benzeyen dosyaları bulmak ve aynı teşhisi koymaktır. Kısaca elimizde bir problem var bunun hangi sınıfa girdiğini araştırıyoruz. Daha önceden bu sınıflar belli, algoritmamız bu sınıfların hangi özellikleri içerdiğini biliyor ve yeni gelen bilginin özelliklerine bakarak bu bilgiyi bir sınıfa atıyor.

Buradan hareketle hücreye tümör ve sağlıklı hücre diyebilmek, iki sınıf arasında ayrım yapabilmek için algoritmamızın bir dizi kural öğrenerek karar verdiğini açıkladık. Bununla birlikte sınıflar ikili bir yapıya sahip olmak zorunda değildir. El yazısından karakter tanıma örneğini ele alalım: Alfabedeki her harf için birden fazla el yazısı örneğinden oluşan bir eğitim veri seti toplayabiliriz. Şimdi bir kullanıcı bir cihazla yeni bir el yazısı karakteri sağlıyorsa, tahmin modelimiz alfabedeki doğru harfi belirli bir doğrulukla da tahmin edebilir.

Buraya kadar denetimli öğrenmenin sınıfandırma görevinden bahsettik. Modelimizi birtakım verilerle eğittik ve yeni gelen örneklere kategorik etiketler atadık. Bu yeni gelen örneğin bir evin özellikleri olduğunu düşünelim ve bu özellikler yardımıyla evin fiyatını tahmin etmek istiyoruz. Artık hedef değişkenimiz fiyat gibi sürekli verilerden oluşuyorsa, denetimli öğrenmenin ikinci bir türü olan regresyonla başbaşayız.

Pekiştirerek Öğrenmek

Diğer bir makine öğrenimi türü pekiştirmeli öğrenmedir. Burada amaç çevre ile etkileşimlerine dayanarak performansını artıran bir sistem geliştirmektir.

Örneğin bir bebeğin sıcak bir bardağa dokunup elinin yanmasından sonra bu bardağa dokunmaktan çekinmesi gibi. Bu durumda öğrenme bebeğin çevresiyle olan etkileşimi ve çevreden geri bildirim(ödül/ceza) almasıyla gerçekleşti.

Pekiştirmeli öğrenme doğru etiket ya da değer eşleşmelerinin verilmemesi ve uygun olmayan eylemlerin dışarıdan düzeltilmemesi yönleriyle denetimli öğrenmeden ayrılır. Dahası, pekiştirmeli öğrenmede; deneme yanılma yoluyla keşfetme ve mevcut bilgiyi de kullanma arasında bir denge kurma söz konusudur. Aslında canlıların öğrenme şeklini taklit ediyor. Hayatımızdaki belirsizlikleri, yaşadığımız olaylar sonucunda neden-sonuç ilişkisiyle modelliyoruz.

 

 

Öğretmen Olmadan Öğrenmek

Yaşasın özgürlük! Denetim yok, belirli eylemler için ödül ölçüsü de yok! En sevdiğim, bebek öğrenmesi 😀

Denetimsiz öğrenmede bilinen bir sonuç değişkeni ya da ödül mekanizmasının yönlendirmesi olmadan anlamlı bilgiler çıkarmak için verilerimizdeki yapıyı, örüntüyü keşfediyoruz.

Kafadarları Bir Araya Topla

Kümeleme bilgiyi yapılandırmak ve veriler arasında anlamlı ilişkiler kurmak için harika tekniktir. Bir küme benzer yapıları veya diğer kümelerin üyelerinden çok birbirine benzeyen varlıkları kapsar. Kümelemek bizim doğamızda vardır; gece gökyüzüne baktığımızda ister istemez yıldız kümeleri görürüz ve onları hayalci bir biçimde andırdıkları şekillere göre adlandırırız. Bazı element kümelerinin çok benzer kimyasal özelliklere sahip olduğunu fark etmek, periyodik tabloyu keşfetmenin ilk adımıydı. Bu kümelerin her biri artık tablonun içindeki bir sütundur. Arkadaşlarımızın yüzlerinden seslerine kadar algıladığımız her şey bir kümedir. Onlar olmadan kaybolurduk.

Baştaki emlak örneğimize geri dönelim. Her evin satış fiyatını bilmeseydik ne olurdu? Evlerin özelliklerine bakarak benzer özellik gösteren evleri bir grupta toplayabiliriz. Milyonlarca evi kümelere ayırarak büyük resmi görmemiz kolaylaştı. Büyük veri dünyasında tek problem gözlem büyüklüğü mü? Yani bir de her ev için yüzlerce öznitelik olduğunu düşünün. Şimdi ne yapacağız?

 

Kuru Kalabalığa Gerek Yok!

Denetimsiz öğrenmenin başka bir alanı, boyut azaltmadır. Gerçek hayattaki veriler çok fazla boyuta (özniteliğe) sahip oluyor ve boyut büyüdükçe veri temizlemeden model kurmaya kadar olan süreçlerde harcamamız gereken zaman ve kaynaklar artıyor. Ne kadar çok boyuta sahip olursak görselleştirme de o kadar zor oluyor. Üç boyuttan sonrasını hayal etmek zorlaşıyor. Hemen her veri setinde bazı öznitelikler arasında yüksek korelasyon oluyor ve bu bizim gereksiz bilgiye sahip olmamıza ve modelimizde overfitting problemine sebep olabiliyor.

 

Azıcıkta Kodlayalım…

Python programlama dilini hemen hemen her ticari firma tarafından bir şekilde kullanılmaktadır. Bunlara en güzel örnek Google’dır. Dünyanın en hızlı arama motoru olan Google bir çok işlemde Python’u tercih ediyor. Yahoo da bazı servislerinde bu dili kullanmaktadır. NASA gizli uygulamalarını Python ile geliştiriyor.  Aynı zamanda diğer dillere göre çok hızlıdır. Sonuç olarak python programlama dili büyük bir deryadır. Projelerimizde pythona hakim olmak, aradığınız kodu internet ortamında bulmak oldukça kolaydır.

Programlama için her ne kadar bir metin editörü yetse de, bir IDE’nin sağladığı kolaylıklar yabana atılamaz. Bu serimizde Jupyter Notebook’u kullanacağız.
Jupyter Notebook tek başına da yüklenebilir. Ancak benim tavsiyem Anaconda dağıtımını kurmanız. Bu dağıtım ile birlikte bilgisayarınıza hem Jupyter Notebook kurulacak, hem de çeşitli paketlerle zenginleştirilmiş bir python programlama diline sahip olacaksınız. Programı anaconda.org adresinden kendi işletim sisteminize uygun versiyonu indirerek kurabilirsiniz.

Anaconda’yı başarıyla yükledikten sonra, komut satırına aşağıdaki komutu yazarak yeni python paketlerini yükleyebiliriz:

conda install packageName

Mevcut paketler aşağıdaki komut kullanılarak güncellenebilir:

conda update packageName

Bu seri için scipy ve arkadaşlarını çeşitli görevler için kullanacağız.

conda install numpy
conda install scipy
conda install scikit-learn
conda install matplotlib
conda install pandas

 

Evet bu bölümde büyük resme odaklandık. Gelecek bölümlerde daha derin tartışacağımız konularla tanıştık. Python ortamımızı oluşturduk ve kullanacağımız paketleri indirdik.

Eee daha kim tutar bizi 😎

 

 

KAYNAKLAR

Python Machine Learning – Sebastian Raschka

https://www.datasciencecentral.com/profiles/blogs/unsupervised-learning-an-angle-for-unlabelled-data-world

https://towardsdatascience.com/supervised-vs-unsupervised-learning-14f68e32ea8d

https://datafloq.com/read/machine-learning-explained-understanding-learning/4478

https://towardsdatascience.com/machine-learning-classifiers-a5cc4e1b0623

https://www.toptal.com/machine-learning/supervised-machine-learning-algorithms

https://scikit-learn.org/stable/tutorial/basic/tutorial.html

https://scikit-learn.org/stable/tutorial/statistical_inference/supervised_learning.html

https://youtu.be/1fN_fv0rDyU 

 

Hakkında Tuğbanur GÜVELİ

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Veri Analizi – E-ticaret Uygulaması

Merhaba VBO okuyucuları! Bu yazımda, e-ticaret örnek verisi üzerinden veri analizi uygulaması yapacağız. Bir önceki …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir