Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Evrişimli Sinir Ağları ve Derin Evrişimli Q-Öğrenme
Evrişimli Sinir Ağları ve Derin Evrişimli Q-Öğrenme
Herkese iyi günler! Ben Dr. Soper ve bugün evrişimli sinir ağlarını (CNN'ler) ve derin evrişimli Q-öğrenmeyi tartışacağım. Yapay sinir ağlarına veya Q-öğrenmeye aşina değilseniz, bu seriye geçmeden önce "Yapay Sinir Ağlarının Temelleri ve Derin Q-öğrenme" başlıklı bu serinin bir önceki videosunu izlemenizi tavsiye ederim.
Evrişimli sinir ağları ve derin evrişimli Q-öğrenme konusuna girmeden önce, bu derste neler öğrenmeyi bekleyebileceğinizi kısaca gözden geçirelim. Bu videonun sonunda, evrişimli sinir ağlarının ne olduğu ve nasıl çalıştıkları hakkında sağlam bir anlayışa sahip olacaksınız. Tahminler oluşturmak için özellik haritaları, evrişim, maksimum havuzlama, düzleştirme ve tamamen bağlı katmanlara bağlanma gibi önemli kavramları tartışacağız. Ek olarak, derin evrişimli Q-learning'in nasıl çalıştığını keşfedeceğiz.
Bu temel kavramları ele aldığımızda, olağanüstü görevleri yerine getirebilen evrişimli sinir ağları kurabileceğiz. Bu görevler, görüntülerde ve videolarda nesne tanımayı ve hatta video oyunlarını insan yeteneklerini aşan bir seviyede oynamayı içerir.
Öyleyse başlayalım. Öncelikle, evrişimli sinir ağlarının ne olduğu ve neden yararlı oldukları konusunda sezgisel bir anlayış geliştirelim. Basit bir ifadeyle, bir evrişimli sinir ağı (CNN), uzamsal yapıya sahip veriler için tasarlanmış bir tür yapay sinir ağıdır. Uzamsal yapılara sahip veriler görüntüleri, videoları ve hatta metni içerir (gerçi CNN'ler öncelikle bilgisayarla görme görevleri için kullanılır). Bu videonun amacı doğrultusunda, görüntü tabanlı girdiye odaklanacağız.
Görüntüler gibi uzamsal yapıya sahip veriler, belirli bir şekilde düzenlenmiş pikseller içerir. Her pikselin konumu anlam taşır ve bir görüntüdeki nesneleri tanımlamamızı sağlayan da bu düzenlemedir. Örneğin, bir görüntüdeki pikselleri rastgele yeniden sıralarsak, tanınabilir bir nesne yerine anlamsız bir gürültü yığını haline gelir. Bu mekansal düzenleme, "mekansal bir yapıya sahip veriler" ile kastettiğimiz şeydir.
Evrişimli sinir ağları, bir görüntüdeki bir pikselin konumu veya bir kelimenin bir cümledeki konumu gibi girdi değerleri arasındaki bu uzamsal ilişkileri yakalamak için kasıtlı olarak tasarlanmıştır. Bu uzamsal ilişkileri göz önünde bulundurarak, CNN'ler uzamsal yapılarla verileri etkili bir şekilde işleyebilir ve analiz edebilir.
Şimdi, CNN'lerin üst düzeyde nasıl çalıştığını tartışalım. Genel olarak konuşursak, bir CNN, her girdi durumu için bir dizi özellik haritası oluşturur. Başka bir deyişle, evrişim katmanı için veri oluşturur. Ardından, her özellik haritasını basitleştirmek için havuzlama adı verilen bir teknik uygulanır. Ardından, havuzlanmış özellik haritaları düzleştirilir ve ortaya çıkan vektörler tamamen bağlantılı katmanlara bağlanır. Bu bağlantı, bilginin ağ üzerinden yayılmasını sağlayarak tahminlerin üretilmesine yol açar.
Ayrıntılara daha derinlemesine dalmak için ilk adımla başlayalım: giriş görüntüsüne filtreler uygulamak. Özellik algılayıcıları veya çekirdekler olarak da bilinen filtreler, bir görüntüdeki çizgiler, eğriler veya şekiller gibi belirli özellikleri algılamak için tasarlanmıştır. Bu filtreleri bir giriş görüntüsüne uygulayarak özellik haritaları oluşturuyoruz. Özellik haritalarının toplanması, evrişim katmanını oluşturur.
Bu işlemi göstermek için, bir matris tarafından temsil edilen piksellerden oluşan basit bir siyah beyaz görüntüyü ele alalım. Daha sonra görüntüye dikey çizgileri algılamak için tasarlanmış 3x3 filtre gibi bir filtre uygulayabiliriz. Filtreyi görüntü boyunca kaydırarak, filtre ile görüntünün farklı bölümleri arasındaki örtüşme derecesini gösteren bir özellik haritası oluşturabiliriz.
Çeşitli özellikleri algılamak için bir görüntüye birden çok filtre uygulayabiliriz. Her filtre kendi özellik haritasını oluşturarak çizgileri, eğrileri, şekilleri ve daha fazlasını tespit etmemizi sağlar. Bu özellik haritaları toplu olarak evrişim katmanını oluşturur.
Tebrikler! Artık evrişimli sinir ağlarında evrişim sürecini anlıyorsunuz. Ardından, maksimum havuzlamayı tartışalım.
Max pooling, evrişim katmanından elde edilen özellik haritalarını alt örneklemek için CNN'lerde kullanılan bir tekniktir. Amacı, en önemli bilgileri korurken özellik haritalarının uzamsal boyutlarını azaltmaktır.
Maksimum havuzlamanın arkasındaki fikir, özellik haritasını, genellikle havuzlama pencereleri veya havuzlama bölgeleri olarak adlandırılan, örtüşmeyen bölgelere bölmektir. Her bölge için, diğer değerler atılırken yalnızca o bölge içindeki maksimum değer korunur. Bu maksimum değer daha sonra havuzlanmış özellik haritasına dahil edilir.
Maksimum değeri seçerek, maksimum havuzlama, giriş verilerinin en göze çarpan özelliklerinin korunmasına yardımcı olur. Ayrıca bir dereceye kadar çeviri değişmezliği sağlar, yani bir özelliğin konumu biraz kaysa bile, onunla ilişkili maksimum değer muhtemelen yine de yakalanacaktır.
Bu işlemi göstermek için, bir özellik haritasına uygulanan 2x2 maksimum havuzlama işlemini ele alalım. Özellik haritasını örtüşmeyen 2x2 bölgelere ayırıyoruz ve havuzlanmış özellik haritasını oluşturmak için her bölgeden maksimum değeri alıyoruz. Bu, özellik haritasının uzamsal boyutlarını 2 kat küçültür.
Maksimum havuzlama, bir CNN'de birden çok kez gerçekleştirilebilir ve bu da uzamsal boyutlarda daha fazla azalmaya yol açar. Bu aşağı örnekleme, ağın hesaplama karmaşıklığını azaltmaya yardımcı olarak onu daha verimli hale getirir.
Maksimum havuzlama işlemi tamamlandıktan sonra, bir sonraki adım havuzlanmış özellik haritalarını düzleştirmektir. Düzleştirme, çok boyutlu özellik haritalarının tek boyutlu bir vektöre dönüştürülmesini içerir. Bu dönüşüm, verilerin geleneksel sinir ağlarındaki standart katmanlar olan tamamen bağlantılı katmanlara bağlanmasını sağlar.
Düzleştirilmiş vektör, ağın üst düzey temsilleri çıkarmayı ve bu temsillere dayalı tahminler yapmayı öğrendiği tamamen bağlı katmanlara girdi görevi görür. Tamamen bağlantılı katmanlar, küresel bağlamı dahil etmekten ve evrişimli katmanlar tarafından çıkarılan özelliklere dayalı olarak karmaşık kararlar almaktan sorumludur.
Bir CNN'deki bilgi akışını özetlemek gerekirse:
Bu özellik çıkarma, alt örnekleme ve karar verme süreci, CNN'lerin girdi verilerindeki uzamsal ilişkileri etkili bir şekilde yakalamasına ve doğru tahminler yapmasına olanak tanır.
Artık evrişimli sinir ağlarını iyi anladığımıza göre, derin evrişimli Q-öğrenmeyi inceleyelim.
Derin evrişimli Q-öğrenme, karmaşık görevleri çözmek için CNN'lerin gücünü takviyeli öğrenme teknikleri, özellikle Q-öğrenme ile birleştirir. Q-learning, bir temsilcinin bir ortamla etkileşime girerek ve ödüller alarak en uygun eylemleri öğrenmesini sağlayan bir tür takviyeli öğrenme algoritmasıdır.
Derin evrişimli Q-öğrenme bağlamında, etmen tipik olarak bir bilgisayar programı gibi yapay bir etmendir ve ortam, video oyunu oynamak gibi görsel tabanlı bir görevdir. Aracı, oyunun mevcut durumunu gözlemler (resimlerle temsil edilir) ve her eylemle ilişkili Q değerlerine dayalı olarak eylemler gerçekleştirir. Q değerleri, belirli bir durumda belirli bir eylemde bulunmanın beklenen gelecekteki ödüllerini temsil eder.
Q değerlerine yaklaşmak için derin bir evrişimli sinir ağı kullanılır. CNN mevcut durumu (resmi) girdi olarak alır ve olası her eylem için bir Q değeri verir. Q değerleri daha sonra bir politikaya göre gelecekte beklenen en yüksek ödüle sahip eylemi seçmek için kullanılır.
Aracı, eylemlerde bulunarak, ödüller alarak ve gözlemlenen ödüllere ve tahmin edilen Q değerlerine dayalı olarak Q değerlerini güncelleyerek çevre ile etkileşime girer. Ortamla etkileşim kurma ve Q-değerlerini güncelleme süreci, aracının karar verme yeteneklerini geliştirmek için yinelemeli olarak tekrarlanır.
Derin evrişimli sinir ağları ve Q-öğrenme kombinasyonu, aracının karmaşık görsel kalıpları öğrenmesine ve bunlara dayalı kararlar almasına olanak tanır. Bu yaklaşım, video oyunları oynamak, otonom sürüş ve robotik dahil olmak üzere çeşitli alanlarda başarılı oldu.
Optimum Makine Öğrenimi Modellerini Hızla Tanımlamak için Açgözlü Çapraz Doğrulamayı Kullanma
Optimum Makine Öğrenimi Modellerini Hızla Tanımlamak için Açgözlü Çapraz Doğrulamayı Kullanma
Herkese selamlar. Ben Dr. Soper ve bugün geliştirmekte olduğum "Greedy Cross Validation" adlı bir teknikten bahsetmek istiyorum. Bu teknik, optimum veya optimuma yakın makine öğrenimi modellerini verimli bir şekilde belirlemek için bir temel görevi görür.
Kısa bir girişle ve bu sorunun neden büyük önem taşıdığını açıklayarak başlayalım. Makine öğrenimi çözümleri geliştirirken, hangisinin en iyi performansı gösterdiğini belirlemek için çeşitli modelleri test etmek adettendir. Burada "model" terimi, bir makine öğrenimi algoritmasının belirli bir kombinasyonunu ve ayarlanabilir parametreleri için seçilen değerleri ifade eder.
Makine öğrenimi uygulayıcıları, bir analitik veya veri bilimi projesi için nihai bir seçime karar vermeden önce genellikle yüzlerce hatta binlerce modeli test etme zorluğuyla karşı karşıya kalır. Bu süreç zaman alıcı, hesaplama açısından yoğun ve maliyetli olabilir. Bazı gelişmiş makine öğrenimi modellerinin eğitilmesi saatler hatta günler gerektirir.
Çok sayıda modeli test etmenin yoğun kaynak gerektiren doğası göz önüne alındığında, araştırmacılar mümkün olan en kısa sürede en iyi performans gösteren modeli belirlemenin yollarını aradılar. Mevcut yöntemler arasında diğerleri arasında Bayes yaklaşımları, gradyan iniş yöntemleri, evrimsel yaklaşımlar ve nüfusa dayalı eğitim yer alır. Bu yöntemler tipik olarak, model parametreleri ile performans metriği arasındaki ilişkileri belirlemeyi amaçlar ve arama uzayının gelecek vaat eden bölgelerini keşfetmelerini sağlar.
Mevcut yöntemlerin aksine, Greedy Cross Validation, en iyi performans gösteren modelin tanımlanmasını hızlandırmak için farklı bir yaklaşım benimsiyor. Greedy Cross Validation, arama alanı içinde gelecek vaat eden bölgeleri bulmaya odaklanmak yerine, optimum makine öğrenimi modellerini hızlı bir şekilde belirlemek için bir temel olarak model performansını ölçmeye odaklanır.
Bir model, toplu olarak hiperparametreler olarak anılan hem yapısal hem de algoritmik parametreleri içerir. Yapısal parametreler, bir sinir ağındaki gizli katmanların veya düğümlerin sayısı gibi faktörleri içerirken, mini parti boyutu veya öğrenme hızı gibi algoritmik parametreler öğrenme sürecini kontrol eder. Belirli bir makine öğrenimi sorunu için hiperparametre ayarlarının en uygun kombinasyonunu bulma görevi, hiperparametre optimizasyonu olarak bilinir.
Açgözlü Çapraz Doğrulama kavramını kavramak için, hiperparametre optimizasyonu aracılığıyla optimal bir model aramanın basit bir örneğini ele alalım. Bu durumda, yatay ve dikey eksenlerde temsil edilen iki hiperparametremiz var. Her turuncu kare, benzersiz hiperparametre değerleri kombinasyonuyla belirli bir modeli temsil eder. Her modelin performansını değerlendirmek, en iyi modeli belirlememizi sağlar ve bu amaca yönelik yaygın bir yaklaşım, "ızgara araması" olarak bilinir.
Şimdi, bir modelin gerçek dünyadaki performansını nasıl tahmin ederiz? En yaygın çözüm, "k-katlı çapraz doğrulama" olarak bilinen bir süreç olan, eğitim sırasında karşılaşmadığı verileri kullanarak her modeli test etmektir. İşte nasıl çalıştığı:
Modelin genel performansı daha sonra her kat değerlendirmesinden elde edilen performans değerlerinin ortalaması olarak hesaplanır. Bu, modelin performansının sağlam bir tahminini sağlar.
Artık standart çapraz doğrulamanın nasıl çalıştığını anladığımıza göre, genel hiperparametre optimizasyon sürecindeki rolünü keşfedebiliriz. Standart çapraz doğrulama kullanarak birden çok aday modeli değerlendirirken, belirli bir model için her bir kat, performans tahminimizi günceller. Bir model için tüm kıvrımları değerlendirdiğimizde, genel performansının nihai tahminini elde ederiz. Bu işlemi tüm modeller için tekrarlayarak en iyi adayı belirleyebiliriz.
Bunun aksine, Greedy Cross Validation farklı bir yaklaşım benimsiyor. Sırayla her model için tüm kıvrımları değerlendirmek yerine, farklı modeller için kıvrımları yinelemeli olarak değerlendirir. Daha sonra değerlendirilecek belirli kat, her aday modelin mevcut ortalama performansına göre dinamik olarak seçilir. Başlangıçta, her model için bir kat değerlendirilir ve sonraki katlar, o ana kadar değerlendirilen modellerin performansına göre seçilir.
Greedy Cross Validation'ın ardındaki ana fikir, erken vaat gösteren modellerin değerlendirilmesine öncelik vermektir. Bunu yaparak, iyi performans göstermesi muhtemel modelleri hızlı bir şekilde belirleyebilir ve bunlara daha fazla hesaplama kaynağı ayırabiliriz. Bu yaklaşım, her bir model için tüm katları değerlendirme ihtiyacını ortadan kaldırarak önemli ölçüde zaman ve hesaplama kaynakları tasarrufu sağlar.
Greedy Cross Validation'ı uygulamak için şu adımları takip ediyoruz:
Greedy Cross Validation, modellerin mevcut ortalama performansına göre değerlendirmek üzere bir sonraki katmanı dinamik olarak seçerek, en iyi performans gösteren modelleri hızlı bir şekilde belirleyebilir. Bu yaklaşım, iyi performans gösterme olasılığı düşük olan modelleri göz ardı ederken hesaplama kaynaklarını en umut verici modellere odaklamamıza izin verir.
Greedy Cross Validation'ın avantajlarından biri, çok sayıda aday modeli verimli bir şekilde işleme yeteneğidir. Greedy Cross Validation, tüm katlardaki tüm modelleri kapsamlı bir şekilde değerlendirmek yerine, performanslarına göre modelleri uyarlamalı olarak önceliklendirip değerlendirir ve genel hesaplama gereksinimlerini önemli ölçüde azaltır.
Greedy Cross Validation'ın mutlak en iyi modeli bulmak için garantili bir yöntem olmadığına dikkat etmek önemlidir. Diğer hiperparametre optimizasyon teknikleri gibi, buluşsal yöntemlere dayanır ve her zaman global optimumu belirlemeyebilir. Ancak, özellikle çok sayıda adayla uğraşırken, yüksek performanslı modelleri hızlı bir şekilde belirlemek için pratik ve verimli bir yaklaşım sağlar.
Greedy Cross Validation, makine öğreniminde hızlandırılmış hiperparametre optimizasyonu için bir tekniktir. Modelleri performanslarına göre uyarlamalı olarak seçip değerlendirerek, en iyi performans gösteren modellerin verimli bir şekilde tanımlanmasını sağlar. Mutlak en iyi modeli bulmayı garanti etmese de, hiperparametre arama uzayında verimli bir şekilde gezinmek için pratik bir çözüm sunar.
1.1 Kursa genel bakış (L01: Makine Öğrenimi Nedir)
1.1 Kursa genel bakış (L01: Makine Öğrenimi Nedir)
Herkese merhaba!
Yeni yarıyıla tekrar hoş geldiniz. Umarım hepiniz harika bir yaz tatili geçirmişsinizdir. Bu videoda, her zamanki yüz yüze oturumlardan biraz farklı olacağından, kurs materyalini gözden geçirmek ve bu kursta birlikte nasıl çalışacağımızı tartışmak için biraz zaman ayırmak istiyorum.
Bu ders için planım dersleri asenkron olarak kaydetmek. Bu, dersleri önceden kaydedeceğim ve her hafta başında sizinle paylaşacağım anlamına geliyor. Bu şekilde, materyali size en uygun zamanda, istediğiniz zaman izleyebilirsiniz. Bu yaklaşım, gerektiğinde videoları birden çok kez izleme esnekliği sağlar. Ayrıca, yavaş bir internet bağlantınız varsa, izlerken akış sorunları yaşamamak için videoları bilgisayarınıza indirebilirsiniz.
Dersler arasında gezinmeyi kolaylaştırmak için, her dersi farklı konulara dayalı birden fazla videoya böleceğim. Örneğin, Ders 1'de, kursu genel olarak tartışan, makine öğrenimine giriş, makine öğrenimi kategorileri, notasyon ve makine öğrenimi uygulamalarını tartışan ayrı videolarım olacak. Bu döküm, belirli konulara odaklanmanıza ve içeriği kolayca gözden geçirmenize yardımcı olacaktır.
Eşzamansız öğrenmenin avantajları olduğu gibi, ders sırasında soru soramamak gibi dezavantajları da olduğunu anlıyorum. Bunu ele almak için, gerçek zamanlı tartışmalar yapabileceğimiz canlı ofis saatleri düzenleyeceğim. Mesai saatleri ile ilgili daha fazla detayı yakında vereceğim.
Şimdi Ders 1'e başlayalım. Bu derste derse genel bakışı, müfredatı ve sömestr boyunca işleyeceğimiz konuları ele alacağız. Slaytlarımı gözden geçireceğim ve kurs ve makine öğrenimi ile ilgili diğer konular hakkında daha fazla ayrıntı vereceğim.
Ders içeriğinden bahsetmişken, dönemi yedi bölüme veya modüle ayırdım. Bu bölüm, öğrenme yolculuğumuzu yapılandırmamıza yardımcı olacaktır. İlk bölümde, temel kavramları açıklayacağım ve K-en yakın komşular olarak adlandırılan bir makine öğrenme algoritmasının basit bir örneğini vereceğim makine öğrenimine girişle başlayacağız.
Giriş bölümünden sonra, Python'a kısa bir giriş ve bunun makine öğrenimi ile ilişkisini içeren hesaplama temellerine geçeceğiz. Python ile önceden deneyim sahibi olmak zorunlu olmasa da, bu kursta Python'u kapsamlı bir şekilde kullanacağımız için temel bir anlayışa sahip olmak faydalı olacaktır. Doğrusal cebir için NumPy ve ana makine öğrenimi kitaplığı olan scikit-learn gibi belirli kitaplıklara odaklanacağız.
Sonraki bölümlerde, ağaç tabanlı yöntemler, model değerlendirme, boyut azaltma, denetimsiz öğrenme ve Bayes öğrenmeyi ele alacağız. Bu konular, çeşitli makine öğrenimi algoritmalarını ve uygulamalarını anlamada çok önemlidir. Zaman izin verirse, Bayes teoremine dayalı yöntemleri kapsayan Bayesci öğrenmeyi derinlemesine inceleyeceğiz.
Dönem sonuna doğru sınıf proje sunumlarımız olacak. Dönem boyunca ilerledikçe sınıf projeleri hakkında daha fazla bilgi vereceğim.
Her ders ve içeriği hakkında ayrıntılı bilgi için Canvas'ta bir kurs web sitesi oluşturdum. Ders videoları, slaytlar, ders notları ve ödevler dahil tüm kaynakları bu platformda bulacaksınız. Videoları izlemeden önce slaytları indirmenizi tavsiye ederim, böylece not alabilir ve materyalle daha etkili şekilde ilgilenebilirsiniz.
Kursta ilerledikçe, derslere, slaytlara ve diğer ilgili kaynaklara erişebileceğiniz Canvas'ta haftalık modüller yayınlayacağım. Ayrıca, kursla ilgili herhangi bir güncelleme veya önemli bilgiler hakkında sizi bilgilendirmek için Canvas'ta duyurular yapacağım. Lütfen duyurular için bildirimleri etkinleştirdiğinizden emin olun ve güncel kalmak için e-postanızı düzenli olarak kontrol etmenizi tavsiye ederim.
Bu yüzden muhtemelen videoları yeniden yüklemem ve düzgün yüklenip yüklenmediklerini kontrol etmem gerekecek. Verdiğimiz rahatsızlıktan dolayı özür dileriz ve biz bu teknik sorunları çözmeye çalışırken gösterdiğiniz sabır için teşekkür ederiz.
Ders videolarının yanı sıra GitHub üzerinden kod örnekleri ve ev ödevleri gibi tamamlayıcı materyaller de sağlayacağım. Bu kaynakların bağlantılarını Canvas'ta ilgili haftanın modülünde bulacaksınız. GitHub, makine öğrenimi topluluğunda kod paylaşmak ve projeler üzerinde işbirliği yapmak için yaygın olarak kullanılmaktadır, bu nedenle bu platforma aşina olmanız faydalı olacaktır.
Kanvas duyurularını düzenli olarak kontrol etmenin önemini vurgulamak istiyorum. Önemli güncellemeler için e-posta bildirimleri göndereceğim, ancak tüm bilgileri almanızı sağlamak için duyurular için bildirimleri etkinleştirmeniz önemlidir. Kursla ilgili değişiklikleri, hatırlatmaları veya ek kaynakları iletmek için Canvas duyuru özelliğini kullanacağım.
Şimdi kurs yapısını daha ayrıntılı olarak tartışalım. Daha önce de belirtildiği gibi, dönem, her biri makine öğrenimi ile ilgili belirli konuları kapsayan yedi bölüme veya modüle ayrılmıştır. Bu modüller, önceki kavramları temel alarak ve yenilerini tanıtarak ilerici bir öğrenme deneyimi sağlamak için tasarlanmıştır.
İlk bölümde, alanın temellerini açıklayacağım ve K-En Yakın Komşular adlı basit bir makine öğrenimi algoritması örneği vereceğim makine öğrenimine girişle başlayacağız. Bu size makine öğreniminin nasıl çalıştığına dair bir fikir verecek ve gelecek modüller için temel oluşturacaktır.
İkinci bölüm, temel Python programlamayı ve doğrusal cebir için NumPy ve makine öğrenimi algoritmalarını uygulamak için scikit-learn gibi makine öğreniminde kullanılan temel kitaplıkları ele alacağımız hesaplama temellerine odaklanır. Önceden Python deneyimi zorunlu olmasa da, gerekirse Python'a alışmak için Canvas'ta vereceğim etkileşimli alıştırmaları tamamlamanızı tavsiye ederim.
Sonraki bölümlerde, makine öğrenimindeki belirli konuları inceleyeceğiz. Üçüncü bölüm, karar ağaçları, rastgele ormanlar ve gradyan artırma dahil olmak üzere ağaç tabanlı yöntemleri kapsayacaktır. Bu yöntemler, çeşitli makine öğrenimi uygulamalarında yaygın olarak kullanılmaktadır ve size tahmine dayalı modeller oluşturmak için değerli araçlar sağlayacaktır.
Dördüncü bölüm, makine öğreniminin önemli bir yönü olan model değerlendirmesine odaklanacak. Farklı makine öğrenimi algoritmalarını ve modellerini karşılaştırmaya ve değerlendirmeye yönelik teknikleri tartışarak, gerçek dünya senaryolarında modelleri seçip dağıtırken bilinçli kararlar vermenizi sağlayacağız.
Beşinci bölüm, boyut azaltmayı ve denetimsiz öğrenmeyi keşfedecek. "Denetimsiz öğrenme" terimi gözünüzü korkutmasın; Derslerde detaylı olarak anlatacağız. Bu bölüm, açık etiketler olmadan verilerden kalıpları analiz eden ve çıkaran, veri keşfi ve analizi için yeni olasılıklar açan yöntemlere odaklanmaktadır.
Zaman izin verirse, altıncı bölümde, Bayes teoremine dayalı yöntemleri içeren Bayesçi öğrenmeyi inceleyeceğiz. Bayes sınıflandırıcılarını, saf Bayes sınıflandırıcılarını ve potansiyel olarak Bayes ağlarını tartışacağız. Bayes öğrenme, makine öğrenimindeki belirsizliği anlamak ve modellemek için olasılıksal bir çerçeve sağlar.
Son olarak dönem sonunda sınıf proje sunumlarımız olacak. Dönem ilerledikçe sınıf projeleri hakkında daha fazla bilgi vereceğim, ancak bu, bilgi ve becerilerinizi belirli bir soruna veya ilgilendiğiniz veri kümesine uygulamanız için bir fırsat olacaktır. Kurs materyalini anladığınızı göstermek ve makine öğrenimi tekniklerini uygulama becerinizi göstermek için bir şans olacaktır.
Dönem boyunca, ders materyali veya aklınıza gelebilecek herhangi bir soru hakkında gerçek zamanlı tartışmalara katılabileceğimiz canlı ofis saatleri düzenleyeceğim. Bu çalışma saatlerinin ayrıntıları zamanı gelince verilecektir ve sizi benimle ve sınıf arkadaşlarınızla etkileşime geçmek için bu fırsattan yararlanmaya davet ediyorum.
İletişimi ve işbirliğini kolaylaştırmak için soru gönderebileceğiniz, tartışmalara katılabileceğiniz ve benden veya meslektaşlarınızdan zamanında yanıtlar alabileceğiniz çevrimiçi bir platform olan Piazza'yı da kullanacağız. Piazza'ya aktif olarak katılmanızı tavsiye ederim, çünkü bu sadece size fayda sağlamakla kalmayacak, aynı zamanda sınıfın toplu öğrenme deneyimine de katkıda bulunacaktır.
Sonuç olarak, kursun yapısını ve kullanabileceğiniz çeşitli kaynakları özetledim. Umarım bu genel bakış, size dönem boyunca nasıl ilerleyeceğimiz konusunda net bir anlayış sağlamıştır. Herhangi bir sorunuz veya endişeniz varsa, lütfen mesai saatleri içinde bana ulaşmaktan veya Piazza'da yayınlamaktan çekinmeyin. Öğrenme yolculuğunuzu desteklemek için buradayım ve hepinizle birlikte bu makine öğrenimi macerasına atılmaktan heyecan duyuyorum.
Teşekkür ederim ve kursa genel bakış ve müfredatla ilgili Ders 1 ile başlayalım.
1.2 Makine Öğrenimi Nedir (L01: Makine Öğrenimi Nedir)
1.2 Makine Öğrenimi Nedir (L01: Makine Öğrenimi Nedir)
Yeni döneme başlarken hepinize sıcak bir hoş geldiniz demek istiyorum. Umarım hepiniz harika bir yaz tatili geçirmişsinizdir.
Bu videoda, kursun bazı önemli yönlerini ve birlikte nasıl çalışacağımızı tartışmak için biraz zaman ayırmak istiyorum. Bu kurs, yüz yüze oturumlarımızın olduğu geleneksel formattan biraz farklı olacaktır. Eşzamansız öğrenmeden yararlanacağız, yani dersleri önceden kaydedeceğim ve her hafta başında sizinle paylaşacağım. Bu, materyali size en uygun zamanda, istediğiniz zaman izlemenizi sağlar. Ayrıca, videoları gerektiğinde birden çok kez izleyebilir ve daha yavaş internet bağlantısı olanlar için videoları çevrimdışı izlemek için de indirebilirsiniz.
Dersler arasında gezinmeyi kolaylaştırmak için, her dersi farklı konulara dayalı birden fazla videoya böleceğim. Örneğin, ilk derste kursa genel bakış, müfredat ve farklı makine öğrenimi kategorileri gibi çeşitli konuları ele alacağım. Bu ders altı videoya bölünecek.
Eşzamansız öğrenmenin dezavantajlarından biri ders sırasında soru soramamanız olsa da, sorularınızı veya endişelerinizi tartışabileceğimiz canlı ofis saatleri sunacağım. Çalışma saatleri hakkında daha fazla ayrıntıyı daha sonra vereceğim.
Şimdi ders içeriğine geçelim. Dönem yedi bölüme veya modüle bölünecektir. İlk bölümde, makine öğrenimine giriş ve K en yakın komşu adı verilen basit bir makine öğrenimi algoritması örneği ile başlayacağız. Ardından, Python'a kısa bir giriş, lineer cebir ve ana makine öğrenimi kitaplığı scikit-learn dahil olmak üzere hesaplama temellerini ele alacağız. Daha önce Python deneyiminiz yoksa endişelenmeyin. Öğrenmesi kolay ve hızlanmanıza yardımcı olmak için Canvas'ta isteğe bağlı etkileşimli alıştırmalar sağlayacağım.
Hesaplamalı temellerden sonra, karar ağaçları, rastgele ormanlar ve gradyan artırma gibi ağaç tabanlı yöntemleri keşfedeceğiz. Ardından, farklı makine öğrenimi algoritmalarını ve modellerini karşılaştırmamızı sağlayan önemli bir konu olan model değerlendirmesini inceleyeceğiz. Kursun bu bölümü, sizi gerçek dünya uygulamaları için en iyi modelleri değerlendirme ve seçme becerileriyle donatacaktır.
Ardından, boyutluluk azaltma ve denetimsiz öğrenmeyi ele alacağız. Boyut azaltma teknikleri, karmaşık veri kümelerini işlemek için hayati öneme sahiptir ve denetimsiz öğrenme, modellerimizi eğitmek için etiketli verilere sahip olmadığımız yöntemleri size tanıtacaktır.
Zaman izin verirse, Naive Bayes sınıflandırıcıları ve Bayes ağları gibi teknikleri kapsayan Bayesci öğrenmeye de değineceğiz. Bu konu, Bayes teoremine dayalı sınıflandırma yöntemlerinin anlaşılmasını sağlar.
Dönem sonunda sınıf proje sunumlarımız olacak. Dönem sonunda sınıf projeleri hakkında daha fazla bilgi vereceğim. Canvas'a yüklediğim kurs web sitesinde ek ayrıntılar ve kaynaklar bulabilirsiniz. Web sitesini keşfetmenizi ve verilen bilgileri okumanızı tavsiye ederim.
İletişim ve kaynaklarla ilgili olarak, kursla ilgili tüm etkinlikler için öncelikle Canvas'ı kullanacağız. Ders videoları, slaytlar ve ek materyaller Canvas'ta mevcut olacaktır. Ayrıca önemli güncellemeleri ve bilgileri paylaşmak için Canvas duyurularını kullanacağım. Bu duyuruları e-posta yoluyla almak için lütfen bildirim ayarlarınızın etkinleştirildiğinden emin olun.
Öğrenme deneyiminizi geliştirmek için, videoları izlemeden önce slaytları indirerek doğrudan üzerlerine notlar almanızı öneririm. Not almak, materyalin daha iyi anlaşılması ve akılda tutulması için yardımcı olabilir.
Kurs materyallerine erişirken herhangi bir teknik zorlukla karşılaşırsanız, Canvas ile en iyi şekilde çalışma eğiliminde olduklarından, tarayıcınız olarak Firefox veya Chrome kullanmanızı tavsiye ederim.
1.3 Makine Öğrenimi Kategorileri (L01: Makine Öğrenimi Nedir)
1.3 Makine Öğrenimi Kategorileri (L01: Makine Öğrenimi Nedir)
Makine öğreniminin farklı kategorilerini veya türlerini daha ayrıntılı olarak inceleyelim. En kapsamlı kategori, etiketlenmiş verilerle ilgilenen denetimli öğrenmedir. Denetimli öğrenmede, verilen girdi verilerine dayalı olarak bir çıktıyı tahmin etmeyi amaçlıyoruz. Örneğin, e-posta spam sınıflandırmasında, etiketler "spam" ve "spam değil" olacaktır. Amaç, bir e-postanın spam olup olmadığını gelecekteki e-postalar için tahmin etmektir. Bu kategori, algoritmayı iyileştirmek ve sınıflandırma doğruluğunu artırmak için doğru veya yanlış tahminlerin kullanıldığı bir geri bildirim döngüsü içerir.
Denetimli öğrenme içinde, bir alt kategori sınıflandırmadır. Sınıflandırma, spam değil spam gibi sınıf etiketleri atamaya odaklanır. Örneğin, X1 ve X2 tarafından temsil edilen girdi bilgilerine dayalı olarak bu iki sınıf arasında ayrım yapmayı amaçlayan "eksi" ve "artı" gibi sınıf etiketlerimiz olabilir. Bir makine öğrenimi algoritması, sürekli olarak doğru etiketleri atamayı öğrenerek ölçümleri inceler ve tahminler yapar. Algoritmayı çok sayıda örnek içeren bir veri kümesi üzerinde eğiterek, sınıfları ayıran çizgi olan bir karar sınırı çizmeyi öğrenebilir. Karar sınırının bir tarafına düşen yeni veri noktaları, muhtemelen belirli bir sınıf olarak sınıflandırılır.
Denetimli öğrenmenin başka bir türü, sürekli bir hedef veya çıktı değeri atamakla ilgilenen regresyondur. Regresyon analizi, girdi özelliklerine dayalı olarak sürekli bir sonucu tahmin etmeye odaklanır. Örneğin, doğrusal regresyon, hataları en aza indirmek için veri noktaları boyunca bir çizgi yerleştirerek bir çıkış değerini (Y) tahmin etmeyi amaçlayan, tek giriş değişkenli basit bir modeldir.
Denetimsiz öğrenmeye devam eden bu kategori, gizli kalıpları veya yapıları keşfetmek için etiketlenmemiş verileri analiz etmeyi içerir. Etiketler veya geri bildirim olmadan denetimsiz öğrenme, veri kümesi içinde anlamlı içgörüler bulmayı amaçlar. Kümeleme, benzer veri noktalarının kalıplara veya yoğunluklara göre gruplandırıldığı denetimsiz öğrenmeye bir örnektir. Benzer veri noktalarını tanımlamak ve gruplandırmak için k-means, DBSCAN veya hiyerarşik kümeleme gibi çeşitli kümeleme algoritmaları kullanılabilir.
Boyut azaltma, denetimsiz öğrenmenin başka bir örneğidir. Veri kümesindeki özelliklerin veya boyutların sayısını azaltmayı içerir. Özellik çıkarımı ve özellik seçimi, boyut indirgemede kullanılan yaygın tekniklerdir. Bu yöntemler, karmaşıklığı azaltırken en alakalı bilgileri yakalamak için özelliklerin sıkıştırılmasına veya dönüştürülmesine yardımcı olur.
Makine öğreniminin son kategorisi pekiştirmeli öğrenimdir. Takviyeli öğrenmede, bir aracı, belirli bir hedefe ulaşmak veya belirli bir ortamda ödülleri en üst düzeye çıkarmak için bir dizi eylemi öğrenir. Bu tür bir öğrenme, temsilcinin eylemlerinin sonucuna göre geri bildirim aldığı bir ödül sistemini içerir. Temsilci, deneme yanılma yoluyla daha iyi kararlar almayı ve performansını optimize etmeyi öğrenir. Takviyeli öğrenme genellikle robotik, oyun ve karmaşık karar verme senaryolarında uygulanır.
Takviyeli öğrenme önemli bir konu olsa da, bu derste kapsamlı bir şekilde ele alınmayacağını not etmek önemlidir. Ancak, pekiştirmeli öğrenmeyi daha fazla keşfetmek isteyenler için özel kaynaklar mevcuttur.
Bu farklı makine öğrenimi kategorileri, farklı türdeki sorunları çözmek için çeşitli teknikleri ve algoritmaları anlamak ve uygulamak için geniş bir çerçeve sağlar.
Şimdi, yarı denetimli öğrenme adı verilen makine öğreniminin farklı bir yönünü inceleyelim. Adından da anlaşılacağı gibi, denetimli ve denetimsiz öğrenme arasında yer alır. Yarı denetimli öğrenmede, etiketlenmiş ve etiketlenmemiş verilerin bir karışımına sahibiz. Etiketli veriler, girdilerimizin ve karşılık gelen sınıf etiketlerinin olduğu denetimli öğrenmede tartıştığımız verilere benzer. Bununla birlikte, yarı denetimli öğrenmede, sınıf etiketleri olmayan büyük miktarda etiketlenmemiş veriye de sahibiz.
Yarı denetimli öğrenmenin amacı, öğrenme sürecini iyileştirmek için etiketlenmemiş ek verilerden yararlanmaktır. Algoritma, etiketli ve etiketsiz verileri birleştirerek, verilerde yalnızca etiketli verilerle belirgin olmayan kalıpları ve ilişkileri keşfedebilir. Bu, daha doğru tahminlere ve daha iyi genellemeye yol açabilir.
Yarı denetimli öğrenme, etiketli veri elde etmenin pahalı veya zaman alıcı olduğu senaryolarda özellikle yararlı olabilir. Büyük miktarda veriyi manuel olarak etiketlemek yerine, iyi sonuçlar elde etmek için daha büyük bir etiketlenmemiş veri seti ile birlikte daha küçük bir etiketli veri seti kullanabiliriz.
Yarı denetimli öğrenmeye yönelik bir yaklaşım, kendi kendine eğitim veya birlikte eğitim gibi teknikleri kullanmaktır. Kendi kendine eğitimde, algoritma başlangıçta etiketli verileri eğitir ve ardından etiketlenmemiş veriler için sözde etiketler oluşturmak için tahminlerini kullanır. Bu sözde etiketler daha sonra modeli yeniden eğitmek için orijinal etiketli verilerle birleştirilir. Bu süreç, modelin tahminlerini iyileştirerek ve performansı artırmak için etiketlenmemiş verilerden yararlanarak birçok kez yinelenir.
Ortak eğitimde, algoritma verilerin çoklu görünümlerinden öğrenir. Birden çok sınıflandırıcı, farklı özellik alt kümeleri veya verilerin farklı temsilleri üzerinde eğitilir. Başlangıçta, her sınıflandırıcı, etiketlenmiş veriler üzerinde eğitilir. Ardından, tahminlerini etiketlenmemiş veriler üzerinde değiş tokuş ederek, her bir sınıflandırıcının diğerinin tahminlerinden öğrenmesine izin verir. Bu yinelemeli süreç, her sınıflandırıcının tahminlerini diğerlerinin fikir birliğine dayalı olarak iyileştirmesiyle devam eder.
Yarı denetimli öğrenme, büyüyen bir araştırma alanıdır ve etiketlenmemiş verileri etkili bir şekilde kullanma zorluğunun üstesinden gelmek için çeşitli algoritmalar ve teknikler mevcuttur. Etiketli veriler sınırlı olduğunda makine öğrenimi performansını iyileştirmek için umut verici fırsatlar sunan heyecan verici bir alandır.
Denetimli öğrenme, denetimsiz öğrenme, takviyeli öğrenme ve yarı denetimli öğrenme dahil olmak üzere farklı makine öğrenimi kategorilerini tartıştık. Her kategorinin kendine has özellikleri ve uygulamaları vardır. Denetimli öğrenme, etiketlenmiş verilerle ilgilenir ve tahminler yapmaya veya sınıf etiketleri atamaya odaklanır. Denetimsiz öğrenme, etiketlenmemiş verilerdeki gizli yapıları veya kalıpları bulmayı amaçlar. Takviyeli öğrenme, bir ödül sistemi aracılığıyla bir dizi eylemi öğrenmeyi içerir. Son olarak, yarı denetimli öğrenme, öğrenme performansını artırmak için etiketli ve etiketsiz verileri birleştirir.
1.4 Gösterim (L01: Makine Öğrenimi Nedir)
1.4 Gösterim (L01: Makine Öğrenimi Nedir)
Artık makine öğrenimi kavramını ve makine öğreniminin ana kategorilerini tartıştığımıza göre, denetimli öğrenimin derinliklerine inelim. Daha önce de belirttiğimiz gibi, denetimli öğrenme, makine öğreniminin en büyük kategorisidir. Bu bölümde denetimli öğrenme ile ilgili notasyonu, terminolojiyi ve kavramları keşfedeceğiz.
Denetimli öğrenme belirli bir iş akışını takip eder. Giriş özelliklerinin örneklerini ve bunlara karşılık gelen hedef bilgilerini veya etiketlerini içeren bir eğitim veri seti ile başlıyoruz. Girdi özellikleri aynı zamanda gözlemler olarak da adlandırılabilir. Veri kümesi daha sonra bir makine öğrenimi algoritmasına sağlanır. Bu kursta daha sonra keşfedeceğimiz çeşitli makine öğrenimi algoritmaları vardır. Algoritma, eğitim verilerinden öğrenir ve tahmine dayalı bir model oluşturur.
Model, eğitim verilerinden öğrenilen bilgileri temsil eder ve yeni, görünmeyen veriler üzerinde tahminlerde bulunmak için kullanılabilir. Yeni veriler, aynı özellikler dahil olmak üzere eğitim verileriyle aynı formata sahipse, eğitilen model tahmin yapmak için kullanılabilir. Bu, denetimli öğrenmenin ana iş akışıdır.
Şimdi denetimli öğrenme gösteriminin resmi yönlerini inceleyelim. Eğitim veri setini, N eğitim örneğinden oluşan D olarak gösteriyoruz. Her eğitim örneği, bir özellik vektörü (X) ve karşılık gelen bir etiket (Y) içerir. Üst simge 'i', veri kümesindeki konumunu belirten eğitim noktasının dizinini temsil eder. Üst simge, onu daha sonra tanıtacağımız alt simgeden ayırmak için burada kullanılır.
Eğitim veri seti, özelliklere etiketler atayan, genellikle bilinmeyen, altta yatan bir işleve dayalı olarak oluşturulur. Bu işlev tipik olarak açıkça tanımlanmamıştır ve doğal bir fenomen veya insan etiketleme süreci olabilir. Makine öğreniminde amacımız, bir model veya hipotez kullanarak bu fonksiyona (F(X)) yaklaşmaktır. Model, bilinmeyen işleve benzer bir şekilde girdi özellikleri (X) ve etiketler (Y) arasındaki eşlemeyi yakalamalıdır.
Geleneksel olarak, makine öğrenimi algoritması tarafından öğrenilen hipotez veya model H olarak adlandırılır. Model, özellik vektörünü (X) alır ve tahmin edilen bir etiket (Y şapkası) üretir. Regresyon problemlerinde tahmin edilen etiket sürekli bir değerken, sınıflandırma problemlerinde tahmin edilen etiket olası değerler kümesine aittir. Sınıflandırmada, olası etiketler kümesi tipik olarak tamsayılar kullanılarak temsil edilir, ancak diğer semboller veya harfler kullanılarak da temsil edilebilir.
Model değerlendirmesi sırasında, modelin performansını değerlendirmek için ayrı bir veri seti kullanılır. Model tarafından yapılan tahminler, modelin doğruluğunu ölçmek için gerçek etiketlerle karşılaştırılır. Regresyonda, tahminlerin gerçek etiketlere yakınlığı değerlendirilirken, sınıflandırmada tahmin edilen etiketler ile gerçek etiketler arasındaki uyum incelenir.
Bu kavramları açıklamak için, gerçek bir veri kümesi örneği olan Iris veri kümesini ele alalım. Bu veri seti, iris çiçeklerinin sepal ve petal boyutları gibi farklı özelliklerinin ölçümlerinden oluşur. Amaç, bu ölçümlere dayanarak çiçeğin türünü tahmin etmektir. Üç tür vardır: setosa, versicolor ve virginica.
İris veri setinde, her eğitim örneği, boyutları temsil eden özellikler ve çiçek türlerini temsil eden etiket ile bir çiçek ölçümüne karşılık gelir. Veri seti, N=150 olarak gösterilen 150 eğitim örneği ve M=4 olarak gösterilen dört özellik içerir.
Denetimli öğrenme, altta yatan bilinmeyen bir işleve yaklaşan bir modeli öğrenmek için bir eğitim veri kümesinin kullanılmasını içerir. Model girdi özelliklerini alır ve tahminler üretir. Modelin doğruluğu ayrı veriler kullanılarak değerlendirilir. Bu bölümde tartışılan gösterim ve terminoloji, denetimli öğrenme algoritmalarını anlamak ve bunlarla çalışmak için bir temel sağlar.
1.5 ML uygulaması (L01: Makine Öğrenimi Nedir)
1.5 ML uygulaması (L01: Makine Öğrenimi Nedir)
Denetimli öğrenmeyi çevreleyen notasyonu ve biçimciliği tartıştıktan sonra, denetimli öğrenme ardışık düzenini tekrar ziyaret edelim ve uygulamada makine öğrenimi sorunlarına nasıl yaklaştığımızı keşfedelim. Ayrıca, süreç sırasında genellikle göz önünde bulundurduğumuz bireysel bileşenleri de inceleyeceğiz.
Daha önce incelediğimiz basitleştirilmiş şekil, denetimli öğrenmenin iş akışını tasvir ediyordu. Bu iş akışında, özellikler için etiketlerimizin olduğu etiketli bir eğitim veri kümesiyle başlıyoruz. Ardından, bir modeli eğitim verilerine uydurmayı öğrenen bir makine öğrenimi algoritması uyguluyoruz. Ortaya çıkan model, yeni, görünmeyen veriler üzerinde tahminler yapmak için kullanılabilir. Bu işlemin, yeni verilerin eğitim verileriyle aynı dağılımdan geldiğini varsaydığını not etmek önemlidir.
Şimdi, pratik makine öğreniminde yer alan çeşitli bileşenleri gösteren daha ayrıntılı bir akış şemasına geçelim. Temel bileşenler, önceki şekildekiyle aynı kalır: bir eğitim veri seti, bir öğrenme algoritması ve sonuç modeli. Ancak, dikkate alınması gereken ek ayrıntılar vardır.
Uygulamada, eğitim verilerini almadan önce, tipik olarak bazı ön işleme adımlarını gerçekleştiririz. Önceden hazırlanmış bir veri seti edinmediğimiz sürece, verilerden çıkarılacak özellikleri belirlememiz gerekir. Bu, geleneksel makine öğreniminde özellikle önemlidir. Örneğin, iris çiçeklerinin ölçümlere dayalı olarak sınıflandırılması durumunda, elimizde gerçek dünya senaryolarından görüntü verileri veya gözlemsel veriler olabilir. Her iki durumda da, makine öğrenimi algoritmasına sağlamak için ilgili özellikleri çıkarmamız gerekir. Görüntülerden ham pikseller kullanmak yerine, önceden işlenmiş veya ayıklanmış özellikleri kullanmak genellikle daha etkilidir. İris çiçeği örneği için bu özellikler sepal uzunluğu, sepal genişliği vb. içerebilir. Çiçekleri sınıflandırma durumunda botanikçiler gibi sorun hakkında bilgi sahibi olan alan uzmanlarını dahil etmek yaygındır. Uzmanlıkları, sınıflandırma için yararlı özelliklerin seçilmesine yardımcı olabilir.
Özellikleri ham verilerden çıkardığımızı varsayarsak, örnek uzunluğu, örnek genişliği, taç yaprağı uzunluğu ve taç yaprağı genişliğinden oluşan bir eğitim seti elde ederiz. Özellik ölçeklendirme, özellik seçimi (hangi özelliklerin dahil edileceğini seçme) ve boyut azaltma gibi ek ön işleme adımları söz konusu olabilir. Bu ön işleme adımları, diğerlerinin yanı sıra veri kümesinin alt örneklemesini de içerebilir. Bu kurs boyunca, bu ön işleme adımlarından bazılarını daha ayrıntılı olarak inceleyeceğiz.
Ön işleme tamamlandıktan sonra, öğrenme algoritmasına verileri sağlar ve modeli sığdırırız. Bununla birlikte, modeli yeni veriler üzerinde kullanmadan önce, veri setini iki kısma ayırmak yaygındır: bir eğitim seti ve bir test seti. Eğitim seti, algoritmayı eğitmek ve modeli elde etmek için kullanılırken, test seti, modelin performansını değerlendirmek için bağımsız bir veri seti görevi görür. Bu değerlendirme adımı, modeli gerçek dünyadaki, görünmeyen verilere uygulamadan önce ne kadar iyi performans gösterdiğini değerlendirmemize yardımcı olur. Eğitim sürecinde, hiperparametrelerin ayarlanmasına yardımcı olan model seçimi ve çapraz doğrulama gibi değerlendirme adımlarının da yer aldığına dikkat etmek önemlidir. Bu derste bu konuları kapsamlı bir şekilde ele alacağız.
Nihai modeli elde ettikten sonra, test setini kullanarak performansını değerlendiririz. Bu değerlendirme, test seti için etiketleri tahmin etmek için modelin kullanılmasını ve bu tahminlerin gerçek etiketlerle karşılaştırılmasını içerir. Sınıflandırma örneklerinde, değerlendirme genellikle sınıflandırma doğruluğu veya hatası etrafında döner ve doğru sınıflandırılan örneklerin yüzdesini gösterir. Örneğin çiçekleri doğru sınıflandırmada %95 doğruluk elde edebiliriz. Model değerlendirildikten sonra, gerçek dünya uygulamalarında tahminler yapmak için yeni veriler üzerinde kullanılabilir.
Bu slayt, sunulan bilgi miktarı nedeniyle bunaltıcı görünse de, bu kurs boyunca bu adımların her birini daha ayrıntılı olarak inceleyeceğimizden emin olabilirsiniz.
Uygulamada, bir makine öğrenimi uygulaması geliştirirken genellikle beş ana adım vardır. Öncelikle çözmek istediğimiz problemi tanımlamamız gerekiyor.
Çözmek istediğimiz problemi tanımladıktan sonraki adım verilerin toplanması ve hazırlanmasıdır. Bu, çözmeye çalıştığımız sorunun örneklerini içeren bir veri kümesi elde etmeyi içerir. Veri kümesi, hem giriş özelliklerini hem de bunlara karşılık gelen etiketleri içermelidir.Veri kümesini aldıktan sonra, bir sonraki adım verileri ön işlemek ve temizlemektir. Bu, eksik değerleri ele almayı, aykırı değerlerle uğraşmayı, özellikleri normalleştirmeyi veya ölçeklendirmeyi ve gerekli dönüşümleri veya kodlamayı gerçekleştirmeyi içerebilir. Veri setinin kalitesini ve güvenilirliğini sağlamanın yanı sıra öğrenme algoritmasına hazırlamak için veri ön işleme esastır.
Verileri önceden işledikten sonra, uygun bir makine öğrenme algoritması seçen üçüncü adıma geçiyoruz. Algoritma seçimi problemin doğasına, veri tipine ve mevcut kaynaklara bağlıdır. Karar ağaçları, destek vektör makineleri, sinir ağları ve çok daha fazlası dahil olmak üzere aralarından seçim yapabileceğiniz çeşitli algoritma türleri vardır. Her algoritmanın kendi güçlü ve zayıf yönleri vardır ve eldeki problem için en uygun olanı seçmek çok önemlidir.
Algoritma seçildikten sonraki adım, hazırlanan veri setini kullanarak modeli eğitmektir. Eğitim sürecinde model, girdi verilerinden ve bunlara karşılık gelen etiketlerden genelleme yapmayı öğrenir. Bu, tahmin hatasını en aza indirmek için modelin dahili parametrelerinin ayarlanmasını içerir. Eğitim süreci tipik olarak, gözlemlenen hatalara dayalı olarak model parametrelerini yinelemeli olarak güncelleyen, gradyan iniş gibi bir optimizasyon algoritması içerir.
Model eğitildikten sonraki adım performansını değerlendirmektir. Bu, genellikle doğrulama seti veya bekletme seti olarak adlandırılan ayrı bir değerlendirme veri seti kullanılarak yapılır. Kullanılan değerlendirme ölçütleri, sorunun türüne bağlıdır. Sınıflandırma görevleri için doğruluk, kesinlik, hatırlama ve F1 puanı gibi ölçütler yaygın olarak kullanılır. Regresyon görevleri için ortalama hatanın karesi (MSE) veya ortalama mutlak hata (MAE) gibi ölçümler kullanılır. Değerlendirme, modelin görünmeyen verileri ne kadar iyi genelleştirdiğini değerlendirmemize yardımcı olur ve güçlü ve zayıf yönleri hakkında fikir verir.
Modelin performansı tatmin ediciyse son adım, modeli dağıtmak ve onu yeni, görülmemiş veriler üzerinde tahminler yapmak için kullanmaktır. Bu, karar vermeyi otomatikleştirmek veya eldeki sorunu çözmeye yardımcı olmak için modelin daha büyük bir sisteme veya uygulamaya entegre edilmesini içerebilir.
Makine öğrenimi sürecinin yinelemeli olduğunu ve genellikle adımlar arasında gidip gelmeyi içerdiğini belirtmekte fayda var. Örneğin, modelin performansı tatmin edici değilse, modelin performansını iyileştirmek için veri ön işleme adımını tekrar gözden geçirmemiz, farklı algoritmalar denememiz, hiperparametreleri ayarlamamız veya daha fazla veri toplamamız gerekebilir.
Bu genel bakış, pratik makine öğreniminde yer alan tipik adımların üst düzeyde anlaşılmasını sağlar. Bu kursta ilerledikçe, her adımı daha derinlemesine inceleyeceğiz, farklı algoritmaları ve teknikleri keşfedeceğiz ve makine öğrenimini gerçek dünya problemlerine uygulama konusunda uygulamalı deneyim kazanacağız.
1.6 ML motivasyonu (L01: Makine Öğrenimi Nedir)
1.6 ML motivasyonu (L01: Makine Öğrenimi Nedir)
Daha önce, makine öğrenimi problemlerini çözme yaklaşımını tartışmıştık. Süreç, eldeki sorunu tanımlamakla başlayan birkaç adımdan oluşuyordu. Çalışmak için uygun bir veri seti toplamanın veya bulmanın önemini vurguladık. Veri kümesini aldıktan sonra, sorunu çözmek için bir algoritma veya algoritma sınıfı seçerdik. Ardından, modeli etkili bir şekilde eğitmek için bir optimizasyon metriği tanımlamamız gerekiyordu. Eğitimden sonra, bir değerlendirme metriği kullanarak modelin performansını değerlendireceğiz.
İleriye dönük olarak, farklı makine öğrenimi yaklaşımlarını ve makine öğrenimini kullanmanın arkasındaki motivasyonları kısaca inceledik. Washington Üniversitesi'nden Profesör Pedro Domingos, bu yaklaşımları beş gruba ayırdı: sembolistler, bağlantıcılar, evrimciler, Bayesçiler ve analojiciler. Her kabile, model için seçilen farklı bir gösterimi, bir değerlendirme bölümünü (amaç fonksiyonu) ve bir optimizasyon yaklaşımını temsil eder.
Örneğin, bağlantıcılar kabilesi, seçtikleri model temsili olarak sinir ağlarını kullanır. Amaç fonksiyonu olarak karesel hatayı veya çapraz entropiyi optimize ederler ve optimizasyon yaklaşımı olarak gradyan inişini veya geri yayılımı kullanırlar. Benzer şekilde, evrimciler kabilesi, model gösterimi olarak genetik programlarla birlikte, optimizasyon için genetik araştırmayı kullanır. Bayes kabilesi, arka olasılığı en üst düzeye çıkarmak için grafik modeller ve olasılıksal çıkarım kullanır.
Bu örnekler, makine öğrenimine yönelik farklı yaklaşımlara genel bir bakış sağlar. Bu kategorilerin kapsamlı olmadığını ve her kabile için yalnızca birkaç örneği temsil ettiğini not etmek önemlidir.
Karar ağaçları ve rastgele ormanlar üzerine çalışmalarıyla tanınan etkili bir istatistikçi olan Leo Breiman, makine öğrenimi motivasyonlarına ilişkin bir başka bakış açısı sunuyor. İki kültür fikrini ortaya attı: tahmin ve bilgi. Tahmin kültürü, girdi ve çıktı değişkenleri arasındaki temel ilişkiyi anlamadan doğru tahminler yapmak için makine öğrenimini kullanmaya odaklanır. Bilgi kültürü ise bilgi elde etmeyi ve değişkenler arasındaki ilişkinin doğasını anlamayı amaçlar.
Breiman, tüm modellerin yanlış olduğunu ancak bazılarının faydalı olduğunu belirtti. Bu, model yorumlanabilirliği ve performans arasındaki değiş tokuşu vurgular. Daha basit modellerin yorumlanması daha kolaydır ancak yüksek performans elde edemeyebilirken, daha karmaşık modeller daha iyi performans gösterebilir ancak yorumlanması daha zordur.
Ek olarak, makine öğrenimini incelemek için farklı motivasyonlar vardır. Mühendisler genellikle gerçek dünya sorunlarını çözmek için makine öğrenimini uygulamaya odaklanırken, matematikçiler, bilgisayar bilimcileri ve istatistikçiler makine öğrenimi teorisi geliştirmekle daha çok ilgilenebilirler. Sinirbilimciler, insan beynini daha iyi anlamak ve işleyişinden ilham alan algoritmalar geliştirmek için makine öğrenimi üzerinde çalışabilirler.
Ayrıca yapay zeka, makine öğrenimi ve derin öğrenme arasındaki ilişkiyi tartıştık. Makine öğrenimi, yapay zekanın bir alt alanı olarak ortaya çıktı ve derin öğrenme, makine öğreniminin bir alt alanıdır. Derin öğrenme, özellikle çok katmanlı sinir ağlarına odaklanır ve bunların ötesine geçer. Derin öğrenme, sinir ağlarının yeniden markalanması olarak düşünülebilir. AI sistemleri, kendi kendini süren arabalar veya satranç oynayan programlar gibi kurallar aracılığıyla zeka sergileyen biyolojik olmayan sistemlerdir. Yapay zeka sistemleri makine öğrenimi teknikleri kullanılmadan geliştirilebileceğinden, makine öğrenimi yapay zeka için bir gereklilik değildir.
Özetlemek gerekirse, bu kursun öncelikle makine öğrenimini kapsayacağını, yapay zeka ve derin öğrenmenin ise farklı bağlamlara girdiğini ve diğer kurslarda keşfedilebileceğini belirttik.
Makine öğrenimi alanında, makine öğrenimi modellerini uygulamak ve bunlarla çalışmak için yaygın olarak kullanılan birkaç popüler programlama dili ve kitaplığı vardır. Bu araçlar bir dizi işlevsellik sağlar ve araştırmacıların ve uygulayıcıların makine öğrenimi modellerini geliştirmesini, eğitmesini ve değerlendirmesini kolaylaştırmak için tasarlanmıştır.
Makine öğrenimi alanında en yaygın kullanılan programlama dillerinden biri Python'dur. Python, makine öğrenimi için özel olarak hazırlanmış zengin bir kitaplık ekosistemi sunan, çok yönlü ve öğrenmesi kolay bir dildir. Bu kitaplıklar, çeşitli makine öğrenimi algoritmalarının verimli uygulamalarının yanı sıra veri işleme, görselleştirme ve değerlendirme araçları sağlar.
Makine öğrenimi için popüler Python kitaplıklarından bazıları şunlardır:
NumPy: NumPy, Python'da bilimsel bilgi işlem için temel bir kitaplıktır. Büyük, çok boyutlu diziler ve matrisler için desteğin yanı sıra bu diziler üzerinde verimli bir şekilde çalışmak için bir dizi matematiksel işlev sağlar. NumPy, diğer birçok makine öğrenimi kitaplığının temelidir.
Pandas: Pandas, güçlü bir veri işleme ve analiz kitaplığıdır. Tablo verileri gibi yapılandırılmış verileri verimli bir şekilde işlemek için veri yapıları ve işlevleri sağlar. Pandas, verileri makine öğrenimi modellerine aktarmadan önce ön işleme ve temizleme için özellikle kullanışlıdır.
Scikit-learn: Scikit-learn, sınıflandırma, regresyon, kümeleme, boyutluluk azaltma ve daha fazlası için çok çeşitli algoritmalar ve araçlar sunan kapsamlı bir makine öğrenimi kitaplığıdır. Birleşik bir arabirim sağlar ve tutarlı bir API izleyerek farklı algoritmalarla denemeler yapmayı ve performanslarını karşılaştırmayı kolaylaştırır.
TensorFlow: TensorFlow, Google tarafından sayısal hesaplama ve makine öğrenimi için geliştirilmiş açık kaynaklı bir kitaplıktır. Özellikle derin öğrenmeye odaklanarak çeşitli makine öğrenimi modelleri oluşturmak ve eğitmek için esnek bir mimari sunar. TensorFlow, sinir ağları oluşturma ve eğitme sürecini basitleştiren Keras adlı üst düzey bir API sağlar.
PyTorch: PyTorch, dinamik hesaplama grafikleri ve Python ile sorunsuz entegrasyon sağlayan bir başka popüler derin öğrenme kitaplığıdır. Esnekliği ve kullanım kolaylığı ile bilinir, bu da onu derin öğrenme projelerinde çalışan araştırmacılar ve uygulayıcılar için tercih edilen bir seçim haline getirir. PyTorch ayrıca, model dağıtımı için önceden eğitilmiş modellerden ve araçlardan oluşan zengin bir ekosistem sunar.
Bunlar, Python'da makine öğrenimi için mevcut olan birçok aracın yalnızca birkaç örneğidir. Projenizin özel gereksinimlerine bağlı olarak, ihtiyaçlarınızı karşılayan diğer kitaplıkları ve çerçeveleri keşfedebilirsiniz. Alandaki en son gelişmelerden haberdar olmak ve hedeflerinize ve tercihlerinize en uygun araçları seçmek önemlidir.
Python'a ek olarak, R ve Julia gibi diğer programlama dilleri de özel makine öğrenimi kitaplıklarına ve ekosistemlerine sahiptir. Özellikle R, istatistiksel analiz için yaygın olarak kullanılır ve makine öğrenimi için zengin bir paket koleksiyonuna sahiptir. Julia ise sayısal hesaplama için özel olarak tasarlanmış bir dildir ve makine öğrenimi için yüksek performanslı kitaplıklar sunar.
Bu kurs boyunca, makine öğrenimi algoritmalarını keşfetmek ve uygulamak için güçlü ve esnek bir ortam sağladıkları için öncelikle Python ve ilişkili kitaplıklarını kullanmaya odaklanacağız. Ancak, bu derste işlenen kavram ve ilkeler diğer programlama dillerine ve araçlarına da uygulanabilir.
Umarım bu size kullanacağımız araçlar ve bunların makine öğrenimi alanındaki önemi hakkında bir genel bakış sunar. Başka sorunuz varsa veya açıklamaya ihtiyacınız varsa, lütfen sormaktan çekinmeyin.
2.1 NN'ye Giriş (L02: En Yakın Komşu Yöntemler)
2.1 NN'ye Giriş (L02: En Yakın Komşu Yöntemler)
Herkese merhaba ve tekrar hoş geldiniz! Umarım harika bir ilk hafta geçirmişsindir. Neleri ele aldığımızı kısaca özetleyelim. Ders 1'de, makine öğrenimi kavramını tanıttık ve sınıf projesiyle ilgili en yaygın soruyu tartıştık. Yakında proje ile ilgili ayrı bir duyuru yapacağım. Bahsetmek istediğim bir şey, Piazza'da proje için ekip üyeleri bulmanızı sağlayan bir işlevi etkinleştirdiğim. Daha fazla detay ayrı bir duyuru ile paylaşılacaktır.
Şimdi Ders 2'ye geçelim. Bugün öncelikle klasik bir makine öğrenme algoritması olan ve günümüzde de yaygın olarak kullanılan k-en yakın komşu (KNN) algoritmasına odaklanacağız. Makine öğrenimi algoritmalarının işleyişini anlamamıza izin verdiği için makine öğrenimine en nazik ve en basit giriş olduğunu düşünüyorum. KNN artık en popüler algoritma olmasa da projelerinize eklemenizi şiddetle tavsiye ederim. Sınıflandırma görevleri ve hatta sürekli çıktıları tahmin etmek için bir performans kriteri olarak hizmet eder. KNN, tahmin doğruluğu ve hesaplama verimliliği hakkında bilgi sağlayabilir.
Hesaplamalı yönlerden bahsetmişken, KNN'nin nasıl çalıştığını açıklamanın yanı sıra, Big O gösterimi kavramına da değineceğiz. Bu gösterim, bilgisayar bilimlerinde farklı algoritmaların verimliliğini analiz etmek için yaygın olarak kullanılır. Kulağa teknik gibi gelse de, Big O gösterimini anlamak yalnızca makine öğrenimi için değil, genel programlama için de yararlıdır.
Bu dersin sonuna doğru, size KNN'yi nasıl kullanacağınızı göstermek için Python'da bazı örnekler göstereceğim. Ancak, lütfen bunun kısa bir genel bakış olacağını unutmayın ve Ders 3'te kurulum ve NumPy ve scikit-learn gibi ana kitaplıklar da dahil olmak üzere Python'u daha derinlemesine inceleyeceğiz.
Öyleyse Ders 2 ile başlayalım! KNN'ye giriş de dahil olmak üzere esas olarak en yakın komşu yöntemlerine odaklanacağız. Dersi daha ulaşılabilir kılmak için altı bölüme ayırdım:
En yakın komşu yöntemlerinin uygulamaları: Web kullanımı veri madenciliği, biyometri, görüntü sınıflandırması ve protein analizi gibi KNN'nin gerçek dünyadaki uygulamalarını keşfedeceğiz. Bu örnekler konuyu motive etmeye yardımcı olacaktır.
En yakın komşu yöntemi: KNN'ye dalmadan önce, en yakın komşu yöntemi olan en basit durumu tartışacağız. Bu yöntem, bir sorgu noktasına en çok benzeyen veri noktasını bulmayı ve onun etiketini tahmin olarak kullanmayı içerir.
En yakın komşu yönteminin karar sınırı: En yakın komşu yönteminin karar sınırını nasıl belirlediğini inceleyerek iç işleyişinin daha iyi anlaşılmasını sağlayacağız.
K-en yakın komşu yöntemlerine giriş: Bir yerine birden çok en yakın komşuyu dikkate aldığımız KNN'ye geçeceğiz. K-en yakın komşu sınıflandırıcıları ve regresörleri ele alacağız.
K-en yakın komşu algoritmalarının Big O çalışma zamanı karmaşıklığı: Big O gösterimini kullanarak KNN'nin hesaplama verimliliğini keşfedeceğiz. Bu konu, algoritmaların performansını analiz etmek için çok önemlidir.
K-en yakın komşu algoritmalarını geliştirme: Bu bölümde, KNN'nin performansını artırmak için fikirler ve püf noktaları sunacağım. Bu bölüm, algoritmayı optimize etmeye odaklanmaktadır.
Bu kavramsal kısımlara değindikten sonra Python'da KNN uygulamasına geçeceğiz. Bu, bazıları için en eğlenceli kısım olsa da, pratik uygulamaya geçmeden önce kavramları kavramak önemlidir.
Bir sonraki ders olan Ders 3'te, Python kurulumunu derinlemesine inceleyeceğiz ve NumPy ve scikit-learn dahil olmak üzere ana kütüphaneleri ele alacağız. Bu yüzden, bizi izlemeye devam ettiğinizden emin olun! En yakın komşu yöntemlerini ve K-en yakın komşu algoritmasını keşfedeceğimiz ve bu işleme eğitim setindeki tüm veri noktaları için devam edeceğimiz Ders 2'ye başlayalım. Döngünün sonunda, sorgulama noktasına en yakın veri noktasını belirlemiş olacağız.
En yakın noktayı bulduktan sonra, onun etiketini sorgu noktası için tahmin edilen etiket olarak kullanırız. Sınıflandırma problemlerinde, etiket genellikle bir sınıfı veya kategoriyi temsil eden kategorik bir değerdir. Regresyon problemlerinde, etiket sürekli bir değerdir.
En yakın komşu algoritmasının tahmin adımını özetlemek gerekirse:
En yakın komşu yöntemini tartıştığımıza göre, k en yakın komşunun daha genel durumuna geçelim. k en yakın komşu algoritması, en yakın veri noktasını bulma kavramını k en yakın veri noktasını bulmaya genişletir. Sadece en yakın komşuyu dikkate almak yerine, eğitim setindeki sorgulama noktasına en yakın k veri noktasını dikkate alıyoruz.
Sınıflandırma durumunda, tahmin edilen etiket k en yakın komşu arasında oy çokluğu ile belirlenir. Her komşunun oyu eşit ağırlıktadır ve en yüksek oyu alan sınıf tahmin edilen etiket olur.
Regresyon problemleri için, tahmin edilen etiket genellikle k en yakın komşunun etiketlerinin ortalaması veya medyanıdır. Etiketleri birleştirmenin özel yöntemi, sorunun doğasına ve istenen sonuca bağlıdır.
En yakın komşu yönteminin karar sınırını göstermek için, iki boyutlu bir özellik uzayı düşünelim. Farklı sembollerle (ör. üçgenler ve kareler) temsil edilen iki sınıfımız var, sınıf 0 ve sınıf 1. Karar sınırı, farklı sınıfların bölgelerini ayıran çizgi veya eğridir.
En yakın komşu yöntemi durumunda, karar sınırı, eğitim veri noktalarının konturunu takip eder. Özellik uzayındaki her nokta, en yakın eğitim veri noktasının etiketine göre sınıflandırılır. Karar sınırı düzgün bir eğri değil, her eğitim noktasının etrafındaki küçük bölgelerin bir koleksiyonudur.
k'nin 1'den büyük olduğu k en yakın komşu yöntemini kullanırken, karar sınırı daha düzgün hale gelir. Daha fazla komşu noktayı göz önünde bulundurduğumuzda, bireysel eğitim veri noktalarının etkisi azalır ve bu da daha genelleştirilmiş bir sınırla sonuçlanır. Karar sınırı k en yakın komşunun çoğunluk oyu ile belirlenir ve bu da sınıflar arasında daha yumuşak ve daha sürekli bir ayrıma yol açar.
Karar sınırı kavramını anlamak, k en yakın komşu algoritmasının performansını ve sınırlamalarını değerlendirmede çok önemlidir. Karar sınırının şekli ve karmaşıklığı, algoritmanın yeni veri noktalarını doğru bir şekilde sınıflandırma veya tahmin etme yeteneğini etkileyebilir.
K en yakın komşu algoritmasını tartışmaya ek olarak, algoritma verimliliği konusuna da değineceğiz. Büyük O gösterimi, farklı algoritmaların verimliliğini analiz etmenin ve karşılaştırmanın yaygın bir yoludur. Girdi boyutu arttıkça yürütme süresinin nasıl büyüdüğünü gösteren algoritmanın zaman karmaşıklığının bir ölçüsünü sağlar.
K en yakın komşu algoritmasının çalışma zamanı karmaşıklığını analiz etmek, hesaplama verimliliğini anlamamıza yardımcı olur. Bu konuyu kısaca inceleyeceğiz ve algoritmanın verimliliğinin büyük veri kümeleri üzerindeki performansını nasıl etkileyebileceğini tartışacağız.
Bu dersin sonuna doğru, Python kullanarak k en yakın komşu algoritmasını uygulamanın pratik örneklerine dalacağız. Algoritmanın sınıflandırma ve regresyon görevleri için nasıl kullanılacağını gösterecek ve gerçek dünya senaryolarında uygulamasını göstereceğiz. Bununla birlikte, uygulamaya geçmeden önce, k en yakın komşunun temel kavramlarını ve ilkelerini kavramak önemlidir.
Özetlemek gerekirse, ikinci derste, en yakın komşu algoritmalarının basit bir durumu olarak en yakın komşu yöntemini ele aldık. Algoritmanın bir sorgu noktasına en yakın veri noktasını nasıl belirlediğini ve tahmin için en yakın noktanın etiketini nasıl kullandığını inceledik. Ayrıca karar sınırı kavramını ve en yakın komşu yöntemindeki şeklini de tanıttık. Ek olarak, yalnızca bir tane yerine birden çok en yakın komşuyu dikkate alan k en yakın komşu algoritmasını tartıştık. Sınıflandırma problemlerinde tahmin edilen etiketin çoğunluk oyu ile nasıl belirlendiğinden ve regresyon problemlerinde ortalamanın veya ortanca değerin nasıl belirlendiğinden bahsetmiştik. Ayrıca, Big O notasyonuna ve bunun k en yakın komşu algoritması da dahil olmak üzere algoritmaların verimliliğini analiz etmedeki uygulamasına kısaca değindik.
Bir sonraki ders olan Ders 3'te, Python kullanarak k en yakın komşu algoritmasının uygulanmasını inceleyeceğiz. Bu algoritmayı etkili bir şekilde kullanmak için gerekli adımları, kitaplıkları ve teknikleri ele alacağız. Bu yüzden, bir sonraki derste bana katıldığınızdan emin olun!
2.2 En yakın komşu karar sınırı (L02: En Yakın Komşu Yöntemleri)
2.2 En yakın komşu karar sınırı (L02: En Yakın Komşu Yöntemleri)
Bu ikinci videoda, özellikle en yakın komşu sınıflandırıcıya odaklanarak en yakın komşu algoritmasının karar sınırını inceleyeceğiz. İnsanların görselleştirmesi daha kolay olduğundan, örnekleme amacıyla iki boyutlu bir veri seti kullanacağız.
Veri seti, mavi noktalarla temsil edilen beş veri noktasından oluşur. A ve B noktalarını yakınlaştıralım ve aralarındaki karar sınırını keşfedelim. Karar sınırı, A ve B noktalarını ayıran bir çizgi veya sınırdır. Veri kümesine en yakın bir komşu modeli yerleştirirsek, bu karar sınırı nasıl görünür?
Bu soruyu cevaplamak için eşitlik kavramını anlamamız gerekiyor. Karar sınırında bulunan herhangi bir nokta, A ve B noktalarından eşit uzaklıkta olmalıdır. Videoyu duraklatmak için bir dakikanızı ayırın ve karar sınırının nasıl görüneceğini düşünün. A ve B noktaları için karar sınırı, bir Öklid mesafe ölçüsü kullanılarak çizilen bir çizgi olacaktır. Bu çizgi üzerindeki herhangi bir nokta, A ve B noktalarından eşit uzaklıktadır, yani çizgi üzerindeki nokta ile A ve B noktaları arasındaki mesafe, çizginin her yerinde aynıdır. Şimdi A ve C noktalarına geçelim ve karar sınırlarını belirleyelim. A ve C noktaları için karar sınırı, A ve C'yi birleştiren çizgiye dik bir çizgi olacaktır. Bu çizgi üzerindeki her nokta, A ve C noktalarından eşit uzaklıktadır.
İlgili karar sınırlarını belirlemek için veri kümesindeki C ve D gibi tüm nokta çiftleri için bu alıştırmaya devam edebiliriz. Her nokta çifti için tüm bu karar sınırlarını birleştirerek, sağ alt köşede gösterildiği gibi en yakın komşu sınıflandırıcının karar sınırını elde ederiz.
Diyagrama yakından bakarsak, bir Voronoi diyagramına veya Voronoi mozaiklemeye benzediğini fark edebiliriz. Bu şema, veri setini, her bölge bir çift nokta arasındaki karar sınırına karşılık gelecek şekilde bölgelere ayırır. Bir sınır çizgisi üzerindeki her nokta, bitişik iki noktaya eşit uzaklıktadır.
Ancak, henüz işimiz bitmedi. Önceki slaytta, gerçek sınıf etiketlerini dikkate almadan yalnızca karar bölgelerini gösterdik. Şimdi sınıf etiketlerini veri kümesine yeniden ekleyelim. Üçgenler 1. sınıfı, kareler ise 0. sınıfı temsil eder.
Bir en yakın komşu algoritmasının sınıflandırma için kullanacağı karar bölgelerini elde etmek için, aynı sınıf etiketine ait bölgelerin birleşimini almamız gerekir. Örneğin, kırmızı üçgenler, kırmızı üçgenlerin en yakın noktalarına karşılık gelen sınırlarla çevrili bir karar bölgesine sahiptir. Benzer şekilde mavi karelerin de kendi karar bölgeleri vardır. Bu bölgeleri ilgili renkleriyle doldurarak, en yakın komşu sınıflandırıcının karar sınırını elde ederiz.
Anlayışınızı test etmek için basit bir soru soralım. Veri kümesindeki beş veri noktası göz önüne alındığında, soru işareti noktasına en yakın nokta hangisidir? Videoyu bir an duraklatın ve cevabınızı düşünün. Bu soruyu cevaplamak, yakınlığı belirlemek için kullanılan mesafe ölçüsünün bilinmesini gerektirir. Bu durumda Öklid mesafesini kullanıyoruz, ancak diğer mesafe ölçüleri de kullanılabilir. Seçilen mesafe ölçüsüne göre soru işareti noktasına en yakın nokta değişebilir.
Videoda iki mesafe ölçüsü gösterildi: Öklid mesafesi ve Manhattan mesafesi. Öklid mesafesi, iki nokta arasındaki düz çizgi mesafesini ölçerken, Manhattan mesafesi, koordinatlar arasındaki mutlak farkları toplayarak mesafeyi ölçer.
Ek olarak video, özelliklerin dağılımını dikkate alan Mahalanobis mesafesinden kısaca bahsediyor. Bir veri noktasının dağılımına olan uzaklığını standart sapmalar cinsinden dikkate alır. İki vektör arasındaki açıyı ölçen kosinüs benzerliğinden de uzaklık ölçüsü olarak bahsedilmektedir.
Uygulamada, mesafe ölçüsü seçimi, belirli soruna ve veri setinin özelliklerine bağlıdır. Eldeki probleme göre dikkatle seçilmesi gereken en yakın komşu algoritmasının bir hiperparametresi olarak düşünülebilir.
Şimdi bir en yakın komşu algoritmasının bir uzantısı olan k-en yakın komşu algoritmasını tartışalım. k-en yakın komşu algoritmasında, sadece en yakın noktayı dikkate almak yerine, sorgulama noktasına en yakın k noktayı dikkate alıyoruz. k-en yakın komşu algoritmasının karar sınırı, bir oylama mekanizması tarafından belirlenir. Belirli bir sınıfın karar bölgesindeki her nokta, o sınıfın oylanmasına katkıda bulunur. En yakın k komşudan en yüksek oyu alan sınıf, sorgu noktası için tahmin edilen sınıf olarak atanır.
Örneğin, yeşil yıldızla temsil edilen bir sorgu noktamız olduğunu varsayalım. 3 en yakın komşu algoritması kullanırsak, sorgulama noktasına en yakın üç noktaya bakarız. Bu noktalardan ikisi 0 sınıfına ve biri 1 sınıfına aitse, çoğunluk oyu sorgu noktasını 0 sınıfına atar. Benzer şekilde, k değerini 5'e yükseltirsek, sorguya en yakın beş noktayı dikkate alırız. nokta. Bu noktalardan üçü 1. sınıfa ve ikisi 0. sınıfa aitse, çoğunluk oyu sorgu noktasını 1. sınıfa atar.
k değerinin seçilmesi, k-en yakın komşu algoritmasında önemli bir husustur. Daha küçük bir k değeri, algoritmanın verilerdeki yerel dalgalanmalara karşı çok hassas hale geldiği fazla uydurmaya yol açabilir. Öte yandan, k'nin daha büyük bir değeri, karar sınırının çok pürüzsüz hale geldiği ve daha ince ayrıntıları yakalayamadığı durumlarda yetersiz uyum ile sonuçlanabilir. Herhangi bir algoritmada olduğu gibi, yapılacak değiş tokuşlar vardır ve k seçimi veri kümesine ve eldeki soruna bağlıdır. Farklı k değerleri ile deney yapmak ve optimal değeri bulmak için çapraz doğrulama gibi teknikleri kullanmak yaygındır.
k-en yakın komşu algoritması, en yakın k noktayı dikkate alarak en yakın komşu algoritmasını genişletir. Karar sınırı, k en yakın komşunun sınıf etiketlerine dayanan bir oylama mekanizması tarafından belirlenir. k'nin seçimi, fazla uydurma ve yetersiz uydurma arasında denge kurmak için dikkatle seçilmesi gereken bir hiperparametredir.