Makine Öğrenimi ve Sinir Ağları - sayfa 74

 

13.0 Özellik Seçimine Giriş (L13: Özellik Seçimi)


13.0 Özellik Seçimine Giriş (L13: Özellik Seçimi)

Herkese merhaba! Umarım hepiniz verimli bir dönem geçirmişsinizdir ve bu dersten değerli bilgiler edinmişsinizdir. Bu dönemin çoğumuz için oldukça yoğun geçtiğini anlıyorum, bu yüzden sizi ek içeriklerle bunaltıp daha fazla strese sokmak istemedim. Ancak bazı konuları müfredatta vaat edildiği gibi işleyemediğim için özür dilerim. Bunu telafi etmek için bugünden itibaren kış tatilinde bazı bonus dersler hazırladım.

Bu video dizisinde, boyut indirgemeye, özellikle iki yönteme odaklanacağım: özellik seçimi ve özellik çıkarma. Bu teknikler inanılmaz derecede faydalıdır ve anlaşılması önemlidir. Bugünün dersinde özellik seçimine, nasıl çalıştığını, neden gerekli olduğunu ve pratik uygulamalarını keşfedeceğiz. Bir sonraki video setinde alternatif bir yaklaşım olarak özellik çıkarma konusunu ele alacağız.

Özellik seçimi ve özellik çıkarmanın ayrıntılarına girmeden önce, boyut indirgeme kavramını ve neden önemli olduğunu kısaca tartışalım. Boyut azaltma, bir veri kümesindeki özelliklerin sayısını azaltmayı amaçlar. Örneğin, dört özellikten oluşan iyi bilinen İris veri setini düşünün: sepal uzunluğu, sepal genişliği, petal uzunluğu ve petal genişliği. Özellik seçiminde, makine öğrenimi algoritmalarımızda kullanmak üzere bu özelliklerin sepal genişliği ve petal uzunluğu gibi bir alt kümesini seçiyoruz. Öte yandan, özellik çıkarımı, doğrusal dönüşümler gibi tekniklerle yeni özellikler yaratmayı içerir. Temel Bileşen Analizi (PCA), birden çok özelliği daha küçük bir özellik alanında birleştiren böyle bir yöntemdir.

Bu ders dizisinde, birincil odak noktamız, veri kümesinden orijinal özellikleri seçtiğimiz özellik seçimidir. Boyut azaltma, genel olarak, daha küçük özellik alanları yaratmayı içerir. Şimdi, bu daha küçük boyutlu özellik uzaylarını neden önemsiyoruz? Bazı nedenleri keşfedelim:

  1. Boyutsallığın laneti: Makine öğrenimi sınıflandırıcıları, özellik sayısı arttıkça genellikle mücadele eder. Aşırı uyumdan, özellikle K-en yakın komşular ve karar ağaçları gibi algoritmalardan muzdarip olabilirler. Özellik setinin azaltılması, bu tür algoritmaların performansını artırabilir.

  2. Hesaplama verimliliği: Çok sayıda özelliğe sahip büyük veri kümelerinin işlenmesi, hesaplama açısından pahalı olabilir. Özellik setini azaltarak, tahmini performanstan ödün vermeden hesaplama performansını artırabiliriz.

  3. Daha kolay veri toplama: Bazen daha basit bir özellik alt kümesi, daha büyük bir özellik alt kümesine kıyasla benzer performans sağlayabilir. Belirli özelliklerin toplanması daha ucuz veya daha erişilebilir olabileceğinden, bu, veri toplamayı daha kolay ve daha uygun maliyetli hale getirebilir.

  4. Depolama alanı: Büyük miktarda veriyi depolamak zorlu ve pahalı olabilir. Özellik çıkarma ve seçme teknikleri, verinin boyutunun azaltılmasına yardımcı olarak depolamayı daha uygulanabilir ve verimli hale getirir.

  5. Yorumlanabilirlik: Özelliklerin anlaşılması, karmaşık makine öğrenimi algoritmalarının yorumlanmasına yardımcı olabilir. Müşterilerin otomatik sistemler tarafından alınan kararların dayanağını bilme hakkına sahip olduğu müşteri kredi kartı başvuruları gibi açıklamaların gerekli olduğu alanlarda özellikle önemlidir.

Özetlemek gerekirse, boyut indirgeme iki alt probleme ayrılabilir: özellik seçimi ve özellik çıkarma. Bugünün dersinde, özellik seçimine odaklanacağız. Bir sonraki derste, özellik çıkarma işlemini daha ayrıntılı olarak ele alacağız.

Özellik seçiminin önemini göstermek için, bofa balığını inceleyen biyokimyacılarla ortak bir projeden bir örnek paylaşmama izin verin. Amaç, Büyük Göller'deki deniz taş otu popülasyonunu kontrol etmek için federal bir mon reseptörü inhibitörü bulmaktı. Hangi moleküler özelliklerin çok önemli olduğunu anlamak için özellik seçimini kullandık. Bir makine öğrenimi sınıflandırıcı kullanarak farklı özellik alt kümelerinin performansını değerlendirerek, kükürt oksijen sayısı gibi bazı basit özelliklerin oldukça bilgilendirici olduğunu keşfettik. Daha fazla özellik eklemek, performansı önemli ölçüde iyileştirmedi, bu da bu basit özelliklerin sınıflandırma görevimiz için en önemli olduğunu gösteriyor. Bu bilgi, milyonlarca molekülü taramamızda ve sonunda ümit verici inhibisyon gösteren bir bileşik bulmamızda bize rehberlik etti.

Feromon sinyali sadece seçilen özellikleri kullanarak önemli bir yüzdede. Bu örnek, istenen sonuca katkıda bulunan temel bileşenleri veya özellikleri belirlemede özellik seçiminin gücünü göstermektedir.

Şimdi, özellik seçimine ve alaka düzeyine daha derinlemesine bakalım. Özellik seçimi, ilgili ve anlamlı bilgileri korurken bir veri kümesindeki özelliklerin veya değişkenlerin sayısını azaltmayı amaçlayan boyut indirgemenin bir alt kategorisidir. Nihai hedef, veri setini basitleştirmek ve hesaplama verimliliğini, yorumlanabilirliği ve tahmin performansını geliştirmektir.

Özellik seçiminin önemli ve faydalı olmasının birkaç nedeni vardır. İlk olarak, boyutsallığın laneti, makine öğreniminde bir zorluk teşkil ediyor. Özellik sayısı arttıkça, belirli algoritmalar azalan performans yaşayabilir veya fazla uydurmaya daha yatkın hale gelebilir. Özellik setini azaltarak, bu sorunları azaltabilir ve özellikle K-en yakın komşular ve karar ağaçları gibi algoritmalar için modellerin doğruluğunu ve güvenilirliğini artırabiliriz.

İkincisi, hesaplama verimliliği, büyük veri kümeleriyle uğraşırken önemli bir husustur. Makine öğrenimi modellerini eğitme ve test etme hesaplama maliyeti, özellik sayısıyla birlikte artar. İlgili özelliklerin bir alt kümesini seçerek hesaplama yükünü azaltabilir ve performanstan ödün vermeden süreci hızlandırabiliriz.

Ayrıca, özellik seçimi daha kolay veri toplamaya olanak tanır. Bazen, basitleştirilmiş bir özellik alt kümesi, daha büyük bir özellik kümesiyle karşılaştırıldığında benzer tahmin performansı sağlayabilir. Bu, özellikle veri toplamanın zor veya maliyetli hale geldiği durumlarda değerlidir. Örneğin, tıbbi teşhis bağlamında, yine de doğru sonuçlar veren kolayca elde edilebilen özelliklerin belirlenmesi, kaynakları koruyabilir ve süreci hastalar için daha erişilebilir hale getirebilir.

Ek olarak, özellik seçimi, depolama alanı optimizasyonuna yardımcı olur. Veri üretiminin üstel büyümesiyle birlikte, büyük veri kümelerini depolamak ve yönetmek önemli bir endişe haline geliyor. İlgili özellikleri seçerek, genel performanstan veya verilerden elde edilen içgörülerden ödün vermeden depolama gereksinimlerini azaltabiliriz.

Ayrıca, yorumlanabilirlik, özellikle otomatik sistemler veya düzenlenmiş alanlarla uğraşırken çok önemli bir rol oynar. Özellik seçimi, karar verme sürecinin daha iyi anlaşılmasını ve açıklanmasını sağlayarak en etkili ve yorumlanabilir özelliklerin belirlenmesine yardımcı olur. Yasal veya etik gerekliliklerin kararlar için açıklama gerektirdiği durumlarda, özellik seçimi uyumluluğu ve hesap verebilirliği kolaylaştırabilir.

Özetlemek gerekirse, boyut indirgeme, özellikle öznitelik seçimi, çeşitli alanlarda çok sayıda avantaj sunar. En bilgilendirici özellikleri seçerek, boyutsallığın lanetini azaltabilir, hesaplama verimliliğini artırabilir, veri toplamayı basitleştirebilir, depolama alanını optimize edebilir ve yorumlanabilirliği geliştirebiliriz. Bu avantajlar, daha doğru ve verimli makine öğrenimi modellerine katkıda bulunur ve karmaşık sorunların daha derinden anlaşılmasını sağlar.

Gelecek derslerde, başka bir boyut indirgeme tekniği olarak özellik çıkarımını keşfedeceğiz. Özellik çıkarımı, temel bileşen analizi (PCA) gibi yöntemlerle orijinal özelliklerin yeni bir özellik grubuna dönüştürülmesini içerir. Bu süreç, boyutsallığı azaltırken ilgili bilgileri yakalamamızı sağlar. Hem özellik seçimini hem de özellik çıkarımını anlayarak, veri kümesinin ve eldeki sorunun belirli özelliklerine ve gereksinimlerine dayalı olarak uygun tekniği kullanabiliriz.

Bu nedenle, bir sonraki derste, özellik çıkarımı konusunu derinlemesine inceleyeceğiz ve tekniklerini, avantajlarını ve uygulamalarını keşfedeceğiz. Boyut azaltmanın büyüleyici dünyasında ve bunun makine öğrenimi üzerindeki etkisinde yolculuğumuza devam ederken bizi izlemeye devam edin.

13.0 Introduction to Feature Selection (L13: Feature Selection)
13.0 Introduction to Feature Selection (L13: Feature Selection)
  • 2021.12.08
  • www.youtube.com
This video gives a brief intro of how we care about dimensionality reduction and introduces feature selection as a subcategory that we will cover in more det...
 

13.1 Özellik Seçiminin Farklı Kategorileri (L13: Özellik Seçimi)


13.1 Özellik Seçiminin Farklı Kategorileri (L13: Özellik Seçimi)

Önceki videoda, boyut azaltmanın bir alt kategorisi olarak özellik seçimi kavramını inceledik. Özellik seçimi, makine öğrenimi modellerinin performansını iyileştirmek için bir veri kümesinden özelliklerin alt kümelerinin seçilmesini içerir. Öngörü performansını ve hesaplama verimliliğini artırmak, depolama alanını optimize etmek ve verilere ilişkin içgörüler elde etmek gibi özellik seçimi için çeşitli motivasyonları tartıştık.

Şimdi, özellik seçme algoritmalarının farklı kategorilerini daha derinlemesine inceleyelim: filtre yöntemleri, gömülü yöntemler ve sarmalayıcı yöntemler. Filtre yöntemleri, özelliklerin kendilerine özgü özelliklerine odaklanır ve bir model veya sınıflandırıcı içermez. Özellikleri, varyans veya ikili korelasyonlar gibi bireysel özelliklerine göre analiz ederler. Örneğin, bir özelliğin varyansının hesaplanması, farklı eğitim örnekleri arasında ayrım yapmak için kullanışlılığının belirlenmesine yardımcı olur. Özellik değerleri eksen boyunca dağılmışsa, önemini gösterir. Öte yandan, yüksek oranda ilişkili özellikler fazlalık anlamına gelir ve bunlardan biri fazla bilgi kaybı olmadan elenebilir. Filtreleme yöntemleri, tek veya çift değişkenleri analiz ettikleri için genellikle tek değişkenli veya çift değişkenli istatistikler olarak adlandırılır.

Gömülü yöntemler, adından da anlaşılacağı gibi, özellik seçimini öğrenme algoritmasına dahil eder. Bu yöntemler, model optimizasyon sürecine gömülüdür ve amaç fonksiyonunu optimize etmeyi amaçlar. Bir örnek, ağacı büyütürken özelliklerin dahili olarak seçildiği karar ağaçlarıdır. Karar ağacı, her bölmede bilgi kazancını maksimize eden özelliği seçer ve bu da önemli özelliklerin seçilmesiyle sonuçlanır. Nihai karar ağacında kullanılmayan özellikler daha az önemli olarak kabul edilebilir.

Sarmalayıcı yöntemler, tahmini performansı optimize etme hedefiyle yakından uyumludur. Bu yöntemler, bir modeli farklı özellik alt kümelerine uydurmayı ve modelin performansına dayalı olarak özellikleri seçmeyi veya ortadan kaldırmayı içerir. Farklı özellik alt kümelerinde eğitilmiş modellerin performansını karşılaştırarak her bir özelliğin önemini belirleyebiliriz. Örneğin, bir özelliğin kaldırılması doğrulukta önemli bir düşüşe yol açıyorsa, bu özelliğin modelin performansı için önemli olduğunu gösterir. Sarmalayıcı yöntemler, doğrudan modelin doğruluğunu kullanarak özelliğin önemi hakkında değerli bilgiler sağlar.

Sarma yöntemleri doğru özellik seçimi sunarken, özellikle büyük özellik kümeleriyle uğraşırken hesaplama açısından pahalı olabilirler. Modelleri farklı alt kümelere uydurma ve performanslarını değerlendirme süreci zaman alıcı olabilir. Buna karşılık, filtre yöntemleri hesaplama açısından daha verimlidir, ancak sarma yöntemleri kadar doğru sonuçlar vermeyebilirler. Doğruluk ve hesaplama verimliliği arasındaki denge, özellik seçiminde çok önemli bir husustur.

Gelecek videolarda, özellik seçim algoritmalarının her bir kategorisini daha derinlemesine inceleyeceğiz. Filtre yöntemlerini daha ayrıntılı olarak keşfedeceğiz, ardından gömülü yöntemler ve sarmalayıcı yöntemler gelecek. Bu teknikleri anlayarak, özellik seçimi ve bunun makine öğrenimi modellerini geliştirmek için nasıl uygulanabileceği konusunda kapsamlı bir anlayış kazanabiliriz.

Filtre yöntemlerini derinlemesine tartışacağımız bir sonraki video için bizi izlemeye devam edin.

13.1 The Different Categories of Feature Selection (L13: Feature Selection)
13.1 The Different Categories of Feature Selection (L13: Feature Selection)
  • 2021.12.09
  • www.youtube.com
In this video, I am introducing the three main categories of feature selection: filter methods, embedded methods, and wrapper methods.Slides: https://sebasti...
 

13.2 Özellik Seçimi için Filtre Yöntemleri -- Varyans Eşiği (L13: Özellik Seçimi)


13.2 Özellik Seçimi için Filtre Yöntemleri -- Varyans Eşiği (L13: Özellik Seçimi)

Evet, önceki videoda özellik seçiminin üç farklı kategorisini tartıştık: filtre yöntemleri, gömülü yöntemler ve sarmalayıcı yöntemler. Şimdi, kategorilerden biri olan filtre yöntemlerini daha derinlemesine inceleyelim. Gelecek videolarda, gömülü yöntemleri ve sarıcı yöntemleri de keşfedeceğiz. Ancak şimdilik ana konu olarak filtreleme yöntemleri üzerinde duralım.

Filtreleme yöntemleri, öncelikle özelliklerin kendi iç özelliklerini dikkate alan özellik seçim teknikleridir. Özellik seçimi için belirli bir modele güvenmezler. Filtre yöntemine bir örnek, varyans eşiğidir. Varyans eşiğinin nasıl çalıştığına daha yakından bakalım.

Özellik seçimi için bir varyans eşiği kullanırken, her bir özelliğin varyansını hesaplarız. Varsayım, daha yüksek varyanslı özelliklerin, bir sınıflandırıcı veya regresyon modelinin eğitimi için daha yararlı bilgiler içerebileceğidir. Ama bu neden doğru? Bunu anlamak için X1 adlı bir özelliği ele alalım. Sol tarafta, yüksek varyansa sahip bir özelliğimiz var ve özellik değerleri iyi dağılmış durumda. Sağ tarafta, düşük varyansa sahip bir özelliğimiz var ve özellik değerleri daha az dağılmış durumda. Daha yüksek bir varyans, bu özelliğe dayalı olarak karar sınırlarını yeniden oluşturmamıza izin verir. Bu, doğru tahminler yapmak için çok önemlidir. Sınıfların çakıştığı en kötü durum senaryosunda bile, iyi yayılmış özellikler yine de karar sınırlarının oluşturulmasına yardımcı olabilir.

Bu kavramı daha fazla açıklamak için, bir ikili sınıflandırma durumunu ele alalım. Diyelim ki iki sınıfımız var, class square ve class star. En iyi senaryoda, bir sınıftaki tüm veri noktaları bir tarafta, diğer sınıftaki tüm veri noktaları diğer taraftadır. Bu, sınıfları mükemmel şekilde ayıran bir karar sınırı oluşturmayı kolaylaştırır. Ancak, gerçek dünya senaryolarında, mükemmel ayrım her zaman elde edilemez. Sınıflar örtüştüğünde bile, yüksek varyansa sahip bir özellik, karar sınırlarının oluşturulmasına yardımcı olabilir. Örneğin, bir karar ağacı, kodlama örneğinde gösterildiği gibi, iyi yayılmış özelliklere dayalı olarak veri noktalarını doğru bir şekilde sınıflandırabilir.

Artık varyansın önemini anladığımıza göre, onu özellik seçimi için bir ölçü olarak nasıl kullanabileceğimizi tartışalım. Ayrık bir rasgele değişkenin varyansı, belirli bir formül kullanılarak hesaplanabilir, ancak pratikte, genellikle olasılık dağılımını bilmediğimiz veri kümeleriyle çalışırız. Bu nedenle, tekdüze ağırlıklar varsayıyoruz ve gözlemlenen veri noktalarına dayalı olarak varyansı hesaplıyoruz. Örneğin, kategorik özelliklerle uğraşırken, ikili değişkenler oluşturmak için one-hot kodlama yaparız. Bu durumda, bir Bernoulli değişkeninin varyansı, p * (1 - p) olarak hesaplanabilir; burada p, 1 değerini gözlemleme olasılığıdır. Bu varyans hesaplaması, özellikle kategorik özellik senaryolarında özellik seçimi için kullanışlıdır.

Varyansa dayalı özellik seçimini uygulamak için Scikit-learn, VarianceThreshold sınıfını sağlar. Bu sınıf, düşük varyanslı özellikleri çıkarmamıza izin verir. Bir sapma eşiği belirleyerek, etiketlerin belirli bir yüzdesinin aynı olduğu özellik sütunlarını ortadan kaldırabiliriz. Örneğin, etiketlerin %80'inden fazlasının benzer olduğu özellikleri kaldırmak istiyorsak, varyans eşiğini 0,16 olarak ayarlayabiliriz (0,8 * (1 - 0,8) olarak hesaplanır). Bu eşik, çok az ayrım gücüne sahip özelliklerin atılmasını sağlar.

Özet olarak, varyans eşiği gibi filtre yöntemleri, özelliklerin içsel özelliklerini dikkate aldıkları için özellik seçimi için değerlidir. Özelliklerin varyansını analiz ederek, sınıflandırma veya regresyon görevleri için sınırlı bilgi sağlayanları belirleyebilir ve kaldırabiliriz.

13.2 Filter Methods for Feature Selection -- Variance Threshold (L13: Feature Selection)
13.2 Filter Methods for Feature Selection -- Variance Threshold (L13: Feature Selection)
  • 2021.12.10
  • www.youtube.com
Sorry, I had some issues with the microphone (a too aggressive filter to remove background noise). Should be better in the next vids!Description: This video ...
 

13.3.1 Katıştırılmış Özellik Seçimi Olarak L1-düzenli Lojistik Regresyon (L13: Özellik Seçimi)


13.3.1 Katıştırılmış Özellik Seçimi Olarak L1-düzenli Lojistik Regresyon (L13: Özellik Seçimi)

Bir önceki videoda, özellikle özelliklerin özelliklerine dayanan filtre yöntemlerine odaklanarak, özellik seçimi için farklı yöntemleri tartışmıştık. Şimdi, iki farklı özellik seçimi kategorisini inceleyelim: gömülü yöntemler ve sarmalayıcı yöntemler. Bu kategorilerin her ikisi de özellik seçimi için sınıflandırıcı gibi bir model kullanmayı içerir. Bu videoda, özellik seçiminin dolaylı olarak model eğitimi veya optimizasyon sürecinin bir parçası olarak gerçekleştiği gömülü yöntemlere odaklanacağız.

Gömülü yöntemler, özellik seçimini model eğitim sürecine entegre eder. Bu kavramı, Kement regresyonu olarak da bilinen L1-düzenli lojistik regresyon bağlamında inceleyeceğiz. Devam etmeden önce, bu videonun lojistik regresyona temel düzeyde aşinalık varsaydığını belirtmek önemlidir. Bununla birlikte, fazla dikkati dağıtmamak için yalnızca temel kavramları ele alacağız.

Petal uzunluğu ve petal genişliği olmak üzere iki özelliğe sahip Iris veri setini kullanarak iki sınıflı bir ikili lojistik regresyon modelini ele alarak başlayalım. Lojistik regresyon, iki sınıfı ayırmak için doğrusal bir karar sınırı üretir. Karar sınırı, doğrusal olmayan bir dönüşüme uğrayan girdilerin ağırlıklı toplamına bir eşik uygulanarak belirlenir.

Lojistik regresyonu daha iyi anlamak için modelin grafik gösterimini inceleyelim. Bu şemada, sol tarafta ağırlıklar (w) var, w1 ve w2 iki özelliğin ağırlıklarını temsil ediyor. Ek olarak, bir kesme terimi olarak hareket eden önyargı birimine (B) sahibiz. Ağırlıklı toplam, her bir ağırlığın ve buna karşılık gelen özelliğin çarpımının toplamı artı yanlılık terimi olarak hesaplanır. Bu ağırlıklı toplam daha sonra, lojistik sigmoid olarak da bilinen ve 0 ile 1 arasında bir değer veren bir sigmoidal fonksiyondan geçirilir. Bu değer, sınıf üyelik olasılığını temsil eder ve gözlenen özellikler göz önüne alındığında bir veri noktasının sınıf 1'e ait olma olasılığını gösterir. . Bir eşik (tipik olarak 0,5) uygulayarak, veri noktasını sınıf 0 veya sınıf 1 olarak sınıflandırarak ikili tahminler yapabiliriz.

Artık lojistik regresyon hakkında temel bir anlayışa sahip olduğumuza göre, L1-düzenli lojistik regresyona odaklanalım. L1 düzenlemesinin kilit yönü, ağırlıkların büyüklüğünü ölçen bir L1 norm teriminin dahil edilmesidir. Bu terim, kayıp fonksiyonuna eklenir ve büyük ağırlıklarla karmaşık modelleri etkili bir şekilde cezalandırır. Lojistik regresyonda ağırlıkları minimuma indirirken kayıp fonksiyonunu da minimuma indirmeyi hedefliyoruz.

Bunu görselleştirmek için, kayıp fonksiyonunu temsil eden kontur çizgilerini hayal edin. Dış konturlar büyük kayıp değerlerine karşılık gelirken, merkeze yakın konturlar daha küçük kayıp değerlerini temsil eder. Düzenlileştirme olmadan kayıp fonksiyonunun global minimumu, kaybı en aza indirmek için en uygun ağırlıkları gösteren merkezde gerçekleşir. Bununla birlikte, L1 ceza terimi daha küçük ağırlıkları tercih eder ve basitliği teşvik eder. Bu ceza terimini getirerek, kaybı en aza indirmekle cezayı en aza indirmek arasında bir denge arıyoruz. Dikkate değer bir şekilde, L1-düzenli lojistik regresyon, bazı ağırlıkların tam olarak sıfır olduğu seyrek ağırlıklar üretme eğilimindedir. Bu özellik seçimi yönü, L1 düzenlemesini çekici kılan şeydir.

Pratikte L1-düzenli lojistik regresyonu göstermek için, wine veri setini kullanacağız. Bu veri seti, çeşitli şarap özelliklerine ilişkin 13 farklı özellik içerir ve görev, şarapları farklı türlere göre sınıflandırmaktır. Makine öğreniminde yaygın bir uygulama olan verileri eğitim ve test kümelerine bölerek başlıyoruz.

Lütfen ayrıntılı kod örneklerinin ve daha fazla açıklamanın aşağıda sağlanacak olan bu videoya eşlik eden not defterinde bulunabileceğini unutmayın.

Şimdi Lasso olarak da bilinen L1 düzenlileştirme yaklaşımını kullanarak özellik seçimi kısmına geçelim. Scikit-learn'den L1 düzenleme cezasını uygulamamıza izin veren Lojistik Regresyon modelini kullanacağız.

 from sklearn.linear_model import LogisticRegression

# Create a Logistic Regression model with L1 regularization
model = LogisticRegression(penalty= 'l1' , solver= 'liblinear' )

# Fit the model on the training data
model.fit(X_train, y_train)

Ceza parametresini 'l1' olarak ayarlayarak, L1 düzenlemesini kullanmak istediğimizi belirtiyoruz. Çözücü parametresi, üzerinde çalıştığımız gibi küçük veri kümeleri için uygun olan "liblinear" olarak ayarlanmıştır.

Modeli eğitim verilerine uydurduktan sonra, her bir özelliğe atanan ağırlıkları temsil eden öğrenilen katsayılara erişebiliriz. Katsayıları yazdıralım:

# Get the learned coefficients
coefficients = model.coef_

# Print the coefficients
for i, coef in enumerate(coefficients[ 0 ]):
    print(f 'Feature {i+1}: {coef:.4f}' )
Modelin coef_ niteliği katsayıları içerir. Katsayıları yineliyoruz ve her katsayıyı karşılık gelen özelliği ile ilişkilendirerek yazdırıyoruz.

Ardından, seçilen özellikler olduğundan, sıfır olmayan katsayılara sahip özellikleri belirleyebiliriz. Seçilen özellikleri bulalım ve yazdıralım:

# Find the indices of non-zero coefficients
selected_features = [i for i, coef in enumerate(coefficients[ 0 ]) if coef != 0 ]

# Print the selected features
print( 'Selected features:' )
for feature in selected_features:
    print(f 'Feature {feature+1}' )
Katsayılar üzerinde yeniden yineliyoruz, bu kez seçili_features listesinde sıfır olmayan katsayıların indekslerini saklıyoruz. Son olarak, seçilen özelliklerin çıktısını alıyoruz.

Lojistik Regresyon modeli, L1 düzenlemesini uygulayarak, bazı katsayıları sıfıra sürerek öznitelik seçimini dolaylı olarak gerçekleştirir. Sıfır olmayan katsayılara sahip özellikler, modelin tahminleri için önemli kabul edilir.

Düzenlileştirme parametresi C seçiminin uygulanan düzenleme derecesini etkilediğine dikkat etmek önemlidir. Daha küçük bir C değeri, potansiyel olarak sıfır katsayılı daha fazla özelliğe yol açan daha güçlü düzenlileştirme ile sonuçlanır.

Artık Lojistik Regresyon'da L1 düzenlemesini kullanan gömülü özellik seçim yöntemini anladınız. Bir sonraki videoda, karar ağaçları ve rastgele ormanlarla özellik seçimini keşfedeceğiz.

Bir sonraki videoda, karar ağaçlarını ve rastgele ormanları kullanarak özellik seçimini keşfedeceğiz. Bu yöntemler topluluk yöntemleri olarak bilinir ve hem sınıflandırma hem de regresyon problemleri için kullanılabilir.

Karar ağaçları, özellik uzayını bölgelere ayırarak ve her bölgeye bir etiket atayarak tahminler yapan basit ama güçlü modellerdir. Rastgele ormanlar ise, her ağacın verilerin ve özelliklerin rastgele bir alt kümesi üzerinde eğitildiği bir karar ağaçları topluluğudur.

Özellik seçimi için scikit-learn'deki Random Forest Classifier'ı kullanarak başlayalım:

 from sklearn.ensemble import RandomForestClassifier

# Create a Random Forest Classifier
model = RandomForestClassifier()

# Fit the model on the training data
model.fit(X_train, y_train)

Modeli eğitim verilerine uydurduktan sonra, modelin tahminlerindeki her bir özelliğin göreli önemini temsil eden özellik önemlerine erişebiliriz. Özellik önemlerini yazdıralım:

# Get the feature importances
importances = model.feature_importances_

# Print the feature importances
for i, importance in enumerate(importances):
    print(f 'Feature {i+1}: {importance:.4f}' )
Modelin feature_importances_ niteliği, özellik önemlerini içerir. Önemleri yineliyoruz ve her bir önemi karşılık gelen özelliği ile ilişkilendirerek yazdırıyoruz.

Ardından, özellikleri önemlerine göre sıralayabilir ve en iyi k özelliği seçebiliriz. En iyi k özelliği bulalım ve yazdıralım:

# Rank the features based on importances
feature_ranks = sorted(range(len(importances)), key=lambda i: importances[i], reverse=True)

# Select the top k features
k = 5   # Number of top features to select
top_features = feature_ranks[:k]

# Print the top features
print(f 'Top {k} features:' )
for feature in top_features:
    print(f 'Feature {feature+1}' )

Özelliklerin indekslerini önemlerine göre azalan düzende sıralarız. Daha sonra feature_ranks listesini dilimleyerek ilk k özelliği seçiyoruz. Son olarak, en önemli özellikleri yazdırıyoruz.

Rastgele ormanlar, topluluktaki tüm karar ağaçlarında her özelliğin ortalama katkısını dikkate alır. Önem ne kadar yüksekse, özellik tahminlerde o kadar etkilidir.

Bu şekilde, rastgele ormanlar, önem puanlarına dayalı olarak özellik seçimini gerçekleştirmek için basit bir yol sağlar.

Artık karar ağaçlarını ve rastgele ormanları kullanarak özellik seçimi konusunda bir anlayışa sahipsiniz. Bir sonraki videoda özyinelemeli özellik eleme yöntemini ele alacağız.

13.3.1 L1-regularized Logistic Regression as Embedded Feature Selection (L13: Feature Selection)
13.3.1 L1-regularized Logistic Regression as Embedded Feature Selection (L13: Feature Selection)
  • 2021.12.13
  • www.youtube.com
Without going into the nitty-gritty details behind logistic regression, this lecture explains how/why we can consider an L1 penalty --- a modification of the...
 

13.3.2 Karar Ağaçları ve Rastgele Orman Özelliğinin Önemi (L13: Özellik Seçimi)


13.3.2 Karar Ağaçları ve Rastgele Orman Özelliğinin Önemi (L13: Özellik Seçimi)

Selam izleyiciler! Önceki videomuzda, düzenli lojistik regresyon örneğine odaklanarak özellik seçimi için gömülü yöntemler hakkındaki tartışmamıza başladık. Bugün, gömülü yöntemlerin başka bir örneğini, yani karar ağaçlarını inceleyeceğiz ve her bir düğümde özellikleri nasıl seçtiklerini inceleyeceğiz. Ayrıca, zaten aşina olabileceğiniz bir kavram olan rastgele orman özelliği önemi ile ilişkilerini de keşfedeceğiz. O halde hemen başlayalım!

Ama devam etmeden önce, küçük bir duyuru yapacağım. Ne yazık ki, iPad kalemim veya kalemim artık çalışmıyor, bu yüzden bir kalem tablet kullanmaya geçtim. Ancak alışmanın beklediğimden biraz daha zor olduğunu itiraf etmeliyim. Bu konuda gerçekten rahat ve yetkin hale gelmem birkaç video daha alabilir. Ek olarak, yeni ekran açıklama yazılımı deniyorum, bu nedenle herhangi bir aksaklık olursa lütfen bana katlanın. Umarım gelecek videolarda ek açıklama süreci daha sorunsuz hale gelir. Şimdi konumuza yeniden odaklanalım.

Özetlemek gerekirse, özellik seçimi genel olarak üç ana yönteme ayrılabilir: filtre yöntemleri, sarma yöntemleri ve gömülü yöntemler. Önceki videomuzda, gömülü yöntemlere bir örnek olarak Lasso veya L1-düzenli lojistik regresyonu inceledik. Bugün dikkatimizi karar ağaçlarına ve rastgele ormanlara kaydırıyoruz.

İlk olarak, karar ağaçlarını ve özellik seçimini nasıl gerçekleştirdiklerini tartışalım. Bunu göstermek için daha önce incelediğimiz bir veri setini ele alalım. İki özellik, x1 ve x2 ve iki sınıftan oluşur: kareler (sınıf 0) ve üçgenler (sınıf 1). Amacımız veri noktalarını sınıflandırmak ve karar sınırını iki sınıfı ayıran bir bölme çizgisi olarak görselleştirebiliriz. Birazdan göstereceğim gibi, çoklu karar sınırları bunu başarabilir.

Şimdi bir karar ağacının veri setini nasıl böldüğüne daha yakından bakalım. Scikit-learn kullanarak bir karar ağacı eğittim ve sizin için çizdim. Bu ağaç iki yarık sergiliyor. İlk bölme, x1 özelliğinde 5,5'lik bir kesme değerinde gerçekleşir ve verileri iki gruba ayırır. İkinci bölme, x2 özelliğinde 10,5'lik bir kesme değerinde gerçekleşir ve verileri daha da bölümlendirir. Bu bölmeleri yaparak, karar ağacı veri setini başarıyla sınıflandırır. Bu bölmelerin etkinliğini, sınıflardaki karışma veya düzensizlik düzeyini gösteren entropiyi inceleyerek değerlendirebiliriz. Amacımız, entropiyi mümkün olduğu kadar azaltmak, ideal olarak mükemmel sınıflandırma anlamına gelen sıfır değerine ulaşmaktır. Örneğimizde, entropinin her bölünmede azaldığını ve sonunda sıfıra ulaştığını gözlemliyoruz.

Dikkat çekici olan şey, karar ağaçlarının doğası gereği özellik seçimini gerçekleştirmesidir. Her düğümde ağaç, bölme için hangi özelliğin kullanılacağına karar verir. Bu karar, entropideki azalmayı maksimize eden veya bilgi kazancını maksimize eden özelliğe dayanmaktadır. Sonuç olarak, karar ağacı, sınıflandırma modelini oluşturmak için en bilgilendirici özellikleri otomatik olarak seçer.

Şimdi, odak noktamızı karar ağaçları toplulukları olan rastgele ormanlara kaydıralım. Rastgele ormanlar, özellik önemini tahmin etmek için bir araç sağlar. Bunu göstermek için, şarabın alkol içeriği, malik asit, kül ve daha fazlası gibi çeşitli özelliklerine ilişkin 13 farklı özelliği içeren şarap veri kümesine dönelim. Sağ tarafta, rastgele orman tarafından oluşturulan bir özellik önem grafiğini görebilirsiniz. Özellik önemleri, her bir özelliğin göreli önemini temsil eden 0 ile 1 arasında değişir ve toplamı 1'e kadar çıkar. Arsa, en önemli özelliği solda olacak şekilde azalan düzende sıralanmıştır.

Bu çizimi oluşturmak için, rastgele orman modeline dayalı olarak özellik önemlerini hesaplayan scikit-learn'ün feature_importances_ niteliğini kullandım. Gördüğünüz gibi bu veri setindeki en önemli özellik prolin, ardından flavanoidler ve renk yoğunluğu geliyor.

Özellik önem değerleri, rastgele ormandaki tüm karar ağaçlarında her bir özelliğin bölünmesiyle elde edilen safsızlıktaki (genellikle Gini safsızlığı veya entropi ile ölçülür) toplam azalma ölçülerek belirlenir. Safsızlıkta sürekli olarak daha büyük bir azalmaya yol açan özellikler daha önemli kabul edilir.

Özellik öneminin rastgele orman modeli bağlamında göreceli bir ölçü olduğunu not etmek önemlidir. Değerler, eğittiğiniz rastgele ormana özeldir ve diğer modellere veya veri kümelerine genellenemez. Ancak yine de hangi özelliklerin tahminlerde bulunmada en etkili olduğuna dair değerli bilgiler sağlayabilir.

Artık karar ağaçlarını ve rastgele ormanları ele aldığımıza göre, şimdiye kadar öğrendiklerimizi özetleyelim. Karar ağaçları, entropiyi azaltmayı ve sınıflandırmayı iyileştirmeyi amaçlayarak, her bölmede en bilgilendirici özelliği seçerek öznitelik seçimini dolaylı olarak gerçekleştirir. Öte yandan, bir karar ağaçları topluluğu olarak rastgele ormanlar, tüm ağaçlarda her bir özellik tarafından elde edilen kirlilikteki toplam azalmayı değerlendirerek özelliğin öneminin bir ölçüsünü sağlar.

Özelliğin önemini anlamak, çeşitli şekillerde faydalı olabilir. Hedef değişkeni tahmin etmek için en alakalı özelliklerin belirlenmesine yardımcı olur, en bilgilendirici özelliklere odaklanarak boyutsallığın azaltılmasına izin verir ve özellikler ile hedef değişken arasındaki temel ilişkilere ilişkin içgörüler sağlar.

Şimdi, rastgele ormanlarda özellik önemini değerlendirme sürecini daha derine inelim. Permütasyon önemi adı verilen bir yöntemi keşfedeceğiz. Ancak bunu yapmadan önce, önyükleme örneklemesine ve torba dışı örnekler kavramına kısaca tekrar bakalım.

Önyükleme örneklemesi, orijinal veri kümesinin değiştirilerek rasgele örneklenmesini içerir ve bu da yinelenen veri noktalarına neden olur. Sonuç olarak, bazı örnekler bootstrap örneğine dahil edilmez, bu da torba dışı örnekler dediğimiz şeyi oluşturur. Bu örnekler, eğitim sırasında ağaçlar onları görmediği için doğrulama veya değerlendirme setleri olarak hizmet eder.

Şimdi permütasyon önemi olan B yöntemine odaklanalım. Daha önce tartıştığımız poşet dışı örnekleri kullanır. İlk olarak, eğitim sırasında rastgele ormandaki karar ağaçlarının tahmin performansını değerlendirebiliriz. Her ağaç için, o ağaca özel doğrulama veya test veri noktaları olarak hareket eden torba dışı numuneler için tahminler yapılabilir.

Permütasyon önemini hesaplamak için, çantadan çıkmış örnekler için orijinal özellik değerlerini içeren bir özellik matrisi ile başlıyoruz. Rastgele ormandaki her karar ağacı için, çantadan çıkmış örneklerde J özelliğinin değerlerini değiştiriyoruz. Bu, sınıf etiketlerini değiştirmeden tutarken özellik değerlerini rastgele karıştırdığımız anlamına gelir.

Daha sonra, mevcut karar ağacını kullanarak çantadan çıkan örnekler üzerinde tahminler yapmak için izin verilen özellik matrisini kullanıyoruz. Unutmayın, bu tahminler değiştirilen özellik değerlerine dayalıdır, dolayısıyla J özelliği rastgele seçildiğinde modelin performansını temsil ederler.

Her bir kullanıma hazır örnek için değiştirilen tahminleri orijinal tahminlerle karşılaştırırız ve J özelliğinin permütasyonu nedeniyle doğru sınıf tahmininin kaç kez değiştiğini sayarız. Bu sayı, J özelliğinin modelin doğruluğu üzerindeki etkisini yansıtır. J özelliği önemliyse, değerlerinin değiştirilmesi, tahmin doğruluğunda önemli bir düşüşe yol açmalıdır.

Bu işlemi, veri kümesindeki her özellik için tekrarlayarak, her bir özelliğin modelin doğruluğu üzerindeki etkisini hesaplıyoruz. Bir özelliğin permütasyonu tahminleri ne kadar çok etkilerse, o kadar önemli kabul edilir.

Özelliğin önemini ölçmek için, her özelliği değiştirmenin neden olduğu doğruluktaki düşüşü hesaplıyoruz. Bu, izin verilen doğruluğu orijinal doğruluktan çıkararak ve bu farkın rastgele ormandaki tüm karar ağaçlarında ortalaması alınarak yapılır.

Son olarak, öznitelik önem değerlerini, öznitelikler arasında göreli bir önem ölçüsü sağlayarak bire toplayacak şekilde normalleştiririz. Bu normalleştirme, önem değerlerinin karşılaştırılabilir ve yorumlanabilir olmasını sağlar.

Ancak, permütasyon önemi yönteminin bazı sınırlamaları ve dikkate alınması gereken hususlar olduğunun bilinmesi önemlidir.

İlk olarak, permütasyon önemi, ilişkili özelliklerin önemini hafife alabilir. Bir özelliği değiştirirken, diğer ilişkili özellikler için tahminlerde değişikliklere yol açabilir. Sonuç olarak, ilişkili özelliklerin önemi, özellik önem grafiğinde tam olarak yansıtılamayabilir. Önemlerini yorumlarken özellikler arasındaki ilişkiyi dikkate almak önemlidir.

İkinci olarak, permütasyon önemi, özellik öneminin yalnızca modelin tahmin doğruluğuna dayandığını varsayar. Tahmin doğruluğu çok önemli bir faktör olsa da, özelliğin öneminin tüm yönlerini kapsamayabilir. Bir özelliğin yorumlanabilirliği veya alan bilgisi ile ilgisi gibi başka önemli boyutlar da olabilir.

Bu sınırlamalara rağmen, permütasyon önemi, özellik öneminin değerli bir nicel ölçüsünü sağlar. Araştırmacıların ve uygulayıcıların, hangi özelliklerin modelin tahminleri üzerinde en fazla etkiye sahip olduğunu anlamalarına olanak tanır ve özellik seçimi, model yorumlama ve boyut azaltma ile ilgili kararlara rehberlik edebilir.

Bir sonraki videoda, sarma yöntemleri adı verilen başka bir özellik seçme yöntemi kategorisini inceleyeceğiz. Sarmalayıcı yöntemler, belirli bir makine öğrenimi modeli kullanarak farklı özellik alt kümelerini değerlendirmeyi içerir. Özyinelemeli özellik eleme ve ileri/geri özellik seçimini inceleyeceğiz. Bu yöntemler, özellik sayısı fazla olduğunda ve model performansı için en uygun alt kümeyi seçmenin çok önemli hale geldiği durumlarda özellikle yararlı olabilir.

Özetlemek gerekirse, öznitelik seçimi teknikleri olarak gömülü yöntemleri, özellikle karar ağaçlarını ve rastgele ormanları ele aldık. Karar ağaçları, entropiyi azaltmayı ve sınıflandırmayı iyileştirmeyi amaçlayarak, her bölmede en bilgilendirici özelliği seçerek öznitelik seçimini dolaylı olarak gerçekleştirir. Rastgele ormanlar, bir karar ağaçları topluluğu olarak, tüm ağaçlarda her bir özelliğin elde ettiği kirlilikteki toplam azalmayı değerlendirerek özelliğin öneminin bir ölçüsünü sağlar. Özellik değerlerini değiştirerek ve bunların modelin doğruluğu üzerindeki etkisini ölçerek özelliğin önemini ölçen permütasyon önem yöntemini de tartıştık.

Özelliğin önemini anlamak, veri bilimcileri ve uygulamacıları özellik seçimi hakkında bilinçli kararlar alma, modelleri yorumlama ve özellikler ile hedef değişken arasındaki temel ilişkiler hakkında fikir edinme konusunda güçlendirir. Daha iyi model performansına ve anlayışına katkıda bulunabilen, makine öğrenimi araç takımında bulunan değerli bir araçtır.

Önceki videolarımızda, filtre yöntemleri, sarma yöntemleri ve gömülü yöntemler dahil olmak üzere özellik seçimi için farklı yöntemleri ele aldık. Bu videoda sarmalayıcı yöntemlerine, özellikle özyinelemeli özellik eleme (RFE) ve ileri/geri özellik seçimine odaklanacağız.

Sarmalayıcı yöntemler, belirli bir makine öğrenimi modeli kullanarak özelliklerin farklı alt kümelerini değerlendirmeyi içeren özellik seçme teknikleridir. İstatistiksel ölçümlere dayanan filtre yöntemlerinden ve özellik seçimini model eğitim sürecine entegre eden gömülü yöntemlerden farklı olarak, sarmalayıcı yöntemler, özellikleri seçme kriteri olarak bir modelin performansını kullanır.

Özyinelemeli özellik ortadan kaldırmayı (RFE) tartışarak başlayalım. RFE, özellikleri yinelemeli olarak ortadan kaldırarak ve kalan özellikler üzerinde modeller oluşturarak çalışan yinelemeli bir özellik seçimi yaklaşımıdır. Tam özellik setinde bir model eğiterek başlar ve özellikleri önemlerine göre sıralar. Daha sonra, en önemsiz özellik(ler)i eler ve kalan özelliklerle işlemi tekrarlar. Bu yinelemeli süreç, belirli sayıda özelliğe ulaşılana veya önceden tanımlanmış bir performans eşiğine ulaşılana kadar devam eder.

RFE'nin arkasındaki fikir, daha az önemli özellikleri yinelemeli olarak kaldırarak, modelin performansına en çok katkıda bulunan en bilgilendirici özelliklere odaklanmasıdır. RFE, özelliğin önemini veya özellik ağırlıklarını ölçen herhangi bir makine öğrenimi modeliyle birlikte kullanılabilir. RFE ile kullanılan popüler modeller, lojistik regresyon, destek vektör makineleri ve rastgele ormanları içerir.

Şimdi ileri/geri özellik seçimine geçelim. Bunlar, modelin performansına katkılarına göre özellikleri yinelemeli olarak ekleyerek veya kaldırarak özelliklerin en uygun alt kümesini arayan iki ilgili sarmalayıcı yöntemidir.

İleri özellik seçimi, boş bir özellik seti ile başlar ve her defasında bir özelliği yinelemeli olarak ekler. Her yinelemede, çapraz doğrulama veya başka bir değerlendirme metriği kullanarak modelin performansını değerlendirir ve performansı en çok artıran özelliği seçer. Süreç, istenen sayıda özelliğe ulaşmak veya performans iyileştirmede bir platoya ulaşmak gibi önceden tanımlanmış bir durdurma kriteri karşılanana kadar devam eder.

Geriye doğru özellik seçimi ise tam özellik seti ile başlar ve her seferinde bir özelliği yinelemeli olarak kaldırır. Her yinelemede modelin performansını değerlendirir ve performans üzerinde en az etkiye sahip olan özelliği kaldırır. Durdurma kriteri sağlanana kadar süreç devam eder.

Hem ileri hem de geri özellik seçimi, özellikle çok sayıda özellikle uğraşırken hesaplama açısından pahalı olabilir. Bunu hafifletmek için, arama sürecini hızlandırmak için buluşsal yöntemler veya yaklaşımlar kullanmak gibi çeşitli stratejiler kullanılabilir.

RFE, ileriye doğru seçim ve geriye doğru seçim dahil olmak üzere sarmalayıcı yöntemlerin, değerlendirme metriğinin ve kullanılan makine öğrenimi modelinin seçimine duyarlı olabileceğini belirtmekte fayda var. Farklı değerlendirme ölçütleri, seçilen özelliklerin farklı alt kümelerine yol açabilir ve seçilen özelliklerin performansı farklı modellerde değişiklik gösterebilir.

Uygulamada, modelin farklı özellik alt kümeleriyle performansının sağlam bir tahminini elde etmek için çapraz doğrulama yapılması veya harici bir doğrulama seti kullanılması önerilir. Bu, fazla uydurmanın önlenmesine ve görünmeyen verilere iyi genelleme yapan özelliklerin seçilmesine yardımcı olur.

Özetlemek gerekirse, özyinelemeli özellik eleme (RFE), ileri özellik seçimi ve geriye doğru özellik seçimi gibi sarmalayıcı yöntemler, bir modelin performansına dayalı olarak özelliklerin farklı alt kümelerini değerlendiren yinelemeli özellik seçimi teknikleridir. Bu yöntemler, belirli bir makine öğrenimi görevi için en alakalı özelliklerin belirlenmesine, modelin yorumlanabilirliğinin geliştirilmesine ve özellik alanının boyutsallığının azaltılmasına yardımcı olabilir.

Bir sonraki videoda, özellik seçimi için genetik algoritmalar ve ana bileşen analizi (PCA) dahil olmak üzere diğer gelişmiş teknikleri keşfedeceğiz. Bu yöntemler, farklı optimizasyon ilkelerine ve istatistiksel tekniklere dayalı olarak özellikleri seçmek için ek seçenekler sunar. Bunun için bizi izlemeye devam edin!

Özellik seçimi, makine öğrenimi ardışık düzeninde kritik bir adımdır ve doğru özellik seçme yönteminin seçimi, belirli veri kümesine, makine öğrenimi görevine ve model performansı, yorumlanabilirlik ve hesaplama verimliliği arasında istenen ödünleşimlere bağlıdır.

13.3.2 Decision Trees & Random Forest Feature Importance (L13: Feature Selection)
13.3.2 Decision Trees & Random Forest Feature Importance (L13: Feature Selection)
  • 2021.12.22
  • www.youtube.com
This video explains how decision trees training can be regarded as an embedded method for feature selection. Then, we will also look at random forest feature...
 

13.4.1 Özyinelemeli Özellik Eleme (L13: Özellik Seçimi)


13.4.1 Özyinelemeli Özellik Eleme (L13: Özellik Seçimi)

Bu bölümde, filtre yöntemleri ve gömülü yöntemler üzerine önceki tartışmalarımızı temel alarak özellik seçimi için Sarmalayıcı yöntemleri konusunu inceleyeceğiz. Sarmalayıcı yöntemler, özellikleri seçmek için açık bir şekilde modeller kullanır. Sarmalama yönteminin popüler bir örneği, bu videoda odaklanacağımız özyinelemeli özellik elemedir (RFE). Ek olarak, gelecek videolarda sarmalayıcı teknikleri kullanan diğer özellik seçim yöntemlerini de inceleyeceğiz.

Genel bir bakış sağlamak için, özellik seçimi için üç ana yöntem vardır: filtre yöntemleri, gömülü yöntemler ve sarmalayıcı yöntemler. Bugün, odak noktamız sarmalayıcı yöntemlerdir. RFE'nin arkasındaki ana fikir üç adımda özetlenebilir.

İlk olarak, tipik olarak doğrusal regresyon veya lojistik regresyon gibi doğrusal modeller kullanarak veri kümesine bir model uyduruyoruz. Bu adım sıra dışı bir şey değil.

Ardından, modeli inceliyoruz ve özellikle birazdan daha ayrıntılı olarak tartışacağımız model katsayılarına bakıyoruz. Bu katsayıların büyüklüklerine göre en küçük katsayıya sahip özelliği elemekteyiz. En küçük katsayıya sahip özelliği en az önemli olarak kabul ederek, onu daha fazla değerlendirmeden kaldırabiliriz. Özelliklerin normalleştirilmesinin veya standartlaştırılmasının, karşılaştırılabilir bir ölçekte olmalarını sağlayarak bu süreç için önemli olduğunu belirtmekte fayda var. Bunun somut örneklerini ileride göreceğiz.

Son adım, istenen özellik sayısına ulaşana kadar birinci ve ikinci adımları tekrarlamaktır. Temelde, modeli sürekli olarak uydurur ve istenen özellik setini elde edene kadar en az önemli özelliği eleriz. Bu basit ama etkili yöntem, özellik seçimine basit bir yaklaşım sağlar.

Özyinelemeli özellik elemenin kritik bir yönü, model katsayılarının veya ağırlıklarının ortadan kaldırılmasında yatmaktadır. Bunu göstermek için doğrusal regresyon ve lojistik regresyon modellerini ele alalım. Sürekli hedefleri modellemek için doğrusal regresyon kullanılırken, lojistik regresyon ayrık veya kategorik etiketler için bir sınıflandırıcıdır. Daha önceki derslerde ele alındığı için bu modellerin ayrıntılarına burada girmeyeceğiz.

Hem doğrusal hem de lojistik regresyonda, modellerin katsayıları veya ağırlıkları vardır. Doğrusal regresyonda bu ağırlıklar eğimleri temsil ederken, lojistik regresyonda her özelliğin sınıflandırma sonucu üzerindeki etkisiyle ilişkilendirilirler. Bu ağırlıkların büyüklüklerini inceleyerek, her bir özelliğin önemini belirleyebiliriz. En küçük ağırlık veya katsayıya sahip özelliğin elenmesi, etkin bir şekilde değerlendirmeden çıkarır. Alternatif olarak, ağırlıklı toplam hesaplama özelliğin katkısını hariç tuttuğundan, ağırlığı sıfıra ayarlamak aynı sonuca ulaşır.

Özellik elemenin nasıl çalıştığını daha iyi anlamak için, lojistik regresyonu kullanan bir örneği inceleyelim. x1 ve x2 olmak üzere iki özelliğe sahip bir ikili sınıflandırma problemimiz var ve sınıf üyelik olasılığını belirlemek istiyoruz. Özellik değerlerini ve model ağırlıklarını kullanarak ağırlıklı toplamı hesaplayarak net girdiyi elde ederiz. Net girdiye bir lojistik sigmoid fonksiyonu uygulayarak, sınıf üyelik olasılığını elde ederiz. Bu olasılığı, genellikle 0,5 olan bir eşikle karşılaştırmak, sınıf etiketleri atamamıza izin verir.

Temel çıkarım, bu modellerdeki ağırlıkların her bir özelliğin önemini yansıtmasıdır. Daha büyük ağırlıklar, net girdiye daha önemli ölçüde katkıda bulundukları ve daha sonra sınıflandırma sonucunu etkiledikleri için daha büyük önemi gösterir. Ağırlıkları standardize etmek veya normalleştirmek, aynı ölçekte olmalarını sağlayarak önemlerinin daha iyi yorumlanmasını kolaylaştırır.

Devam ederek, şarap veri kümesiyle scikit-learn'de özyinelemeli özellik eleme kullanımına ilişkin bir örneği keşfedelim. Burada sunulan kod süreci göstermektedir. Veri setini önce eğitim ve test setlerine ayırarak hazırlıyoruz, ardından özellikleri standardize ediyoruz. Ardından, scikit-learn'de RFE sınıfından bir RFE nesnesi başlatıyoruz. RFE nesnesine bir lojistik regresyon tahmincisi gönderiyoruz ve seçilecek istenen özellik sayısını belirtiyoruz (örn. bu durumda 5).

RFE nesnesini başlattığımızda, fit yöntemini kullanarak onu eğitim verilerimize sığdırabiliriz. Bu, özyinelemeli özellik eleme sürecini başlatacaktır. RFE nesnesi, lojistik regresyon modelini eğitim verileri üzerinde eğitecek ve ardından en küçük katsayıya sahip özelliği ortadan kaldıracaktır. İstenilen özellik sayısına ulaşılana kadar bu işlemi yinelemeli olarak tekrar edecektir.

RFE nesnesini sığdırdıktan sonra, support_ niteliğini kullanarak seçilen özelliklere erişebiliriz. Bu öznitelik, hangi özelliklerin seçildiğini gösteren bir Boole maskesi döndürür. Ayrıca rank_ niteliğini kullanarak özelliklerin önemlerine göre sıralamasını da elde edebiliriz. Derece ne kadar düşükse, özellik o kadar önemlidir.

Bir sonraki adımda, orijinal eğitim verilerimizi ve test verilerimizi, RFE nesnesinin dönüştürme yöntemini kullanarak yalnızca seçilen özellikleri içerecek şekilde dönüştürebiliriz. Bu, yalnızca seçilen özelliklerle yeni özellik setleri oluşturacaktır.

Son olarak, dönüştürülmüş eğitim verileri üzerinde bir lojistik regresyon modeli eğitebilir ve dönüştürülmüş test verileri üzerindeki performansını değerlendirebiliriz. Bu, özellik seçim sürecinin etkinliğini değerlendirmemize ve modelin tahmin doğruluğunu iyileştirip iyileştirmediğini belirlememize olanak sağlayacaktır.

Seçilecek özellik sayısı ve adım boyutunun, belirli bir veri kümesi ve model için en uygun yapılandırmayı bulmak üzere ayarlanabilecek hiperparametreler olduğunu belirtmek gerekir. Bu parametrelerin en iyi kombinasyonunu bulmak için ızgara arama veya diğer hiperparametre optimizasyon teknikleri kullanılabilir.

Genel olarak, özyinelemeli özellik eleme, özellik seçimi için bir modeli eğitmeye ve en az önemli özellikleri yinelemeli olarak ortadan kaldırmaya dayanan bir sarmalayıcı yöntemidir. Hem regresyon hem de sınıflandırma problemlerine uygulanabilir ve farklı model türleri ile birlikte kullanılabilir. Özelliklerin seçimi, model tarafından özelliklere atanan katsayılara veya ağırlıklara bağlıdır. RFE, en az önemli özellikleri yinelemeli olarak kaldırarak, en bilgilendirici özelliklere odaklanarak model performansını iyileştirmeyi amaçlar.

13.4.1 Recursive Feature Elimination (L13: Feature Selection)
13.4.1 Recursive Feature Elimination (L13: Feature Selection)
  • 2021.12.27
  • www.youtube.com
In this video, we start our discussion of wrapper methods for feature selection. In particular, we cover Recursive Feature Elimination (RFE) and see how we c...
 

13.4.2 Özellik Permütasyonunun Önemi (L13: Özellik Seçimi)


13.4.2 Özellik Permütasyonunun Önemi (L13: Özellik Seçimi)

Permütasyonun önemi konusuna değineceğimiz bu videoya hoş geldiniz. Permütasyonun önemi, önceki videoda kısaca tartıştığımız özellik seçimi için sarmalayıcı yöntemlerin bir parçasıdır. Sarmalayıcı yöntemler, özellik seçimini gerçekleştirmek veya özelliğin önemini tahmin etmek için bir model kullanmayı içerir. Önceki bir derste, bir sarmalayıcı yöntemi örneği olarak özyinelemeli özellik elemeyi inceledik. Şimdi odağımızı permütasyon önemine kaydıracağız. Gelecek videolarda, sıralı özellik seçimi adı verilen başka bir yöntemi de keşfedeceğiz.

Permütasyon öneminin nasıl çalıştığına dair ince ayrıntılara dalmadan önce, size yönteme kısa bir genel bakış sunmama izin verin. Özünde, permütasyon önemi, bir veri kümesindeki her özellik sütununun karıştırılmasını içerir. Ardından, önceden eğitilmiş bir model kullanarak, modelin karışık veri kümesindeki performansını değerlendirir ve orijinal performansla karşılaştırırız. Tipik olarak, bir özellik sütunu karıştırıldığında performansta bir düşüş gözlemleriz. Performanstaki bu düşüş, özelliğin öneminin bir göstergesidir. Tabii ki, yöntemi sadece iki adımda özetlemek biraz karmaşık görünebilir, bu nedenle önümüzdeki slaytlarda size süreci daha ayrıntılı ve daha yavaş bir şekilde anlatacağım.

Veri kümesindeki her sütuna permütasyon önemi uygulayarak, her bir özelliğin önemini gösteren bir çubuk grafik oluşturabiliriz. Ek olarak, isteğe bağlı olarak önem değerlerinin standart sapmasını grafikte dahil edebiliriz. Gelecek videoda böyle bir arsanın nasıl oluşturulacağına dair bir kod örneği vereceğim.

Şimdi, permütasyon öneminin ve arkasındaki algoritmanın ayrıntılı açıklamasına geçmeden önce, dikkate değer bazı gerçeklerin üzerinden geçelim. Permütasyon önemi genellikle safsızlığa dayalı rastgele orman özelliği önemine benzer sonuçlar verir. Bununla birlikte, permütasyon öneminin avantajı, modelden bağımsız olmasıdır, yani her türlü makine öğrenimi algoritması veya modeliyle kullanılabilir. Permütasyon öneminin kesin olarak bir özellik seçme yöntemi olmamasına rağmen, bir modelin en çok dayandığı özelliklere ilişkin içgörüler sağladığını not etmek önemlidir. Sonuç olarak, özellikleri seçmek için bir temel olarak özellik önem ölçülerini kullanabiliriz.

Rastgele orman özelliğinin önemi ile ilgili önceki tartışmamızı hatırlarsanız, permütasyon önemini o videodaki yöntemlerden birinin, özellikle Yöntem B'nin bir genellemesi olarak düşünebilirsiniz. Bununla birlikte, torba dışı örnekleri kullanmak yerine, permütasyon önemi uzatma setini kullanır. Torbadan çıkan örneklerle ilgili tazelemeye ihtiyacınız varsa önceki videoyu tekrar ziyaret etmekten çekinmeyin.

Şimdi, adım adım permütasyon öneminin algoritmasına dalalım. İlk olarak, eğitim setine uyan bir modelle başlıyoruz. Bu model, herhangi bir makine öğrenimi modeli veya algoritması olabilir. Örnek olarak, rastgele bir orman sınıflandırıcısını ele alalım. Rastgele ormanı, standart bir adım olan eğitim setinde eğitiyoruz.

Ardından, doğrulama seti veya test seti gibi bağımsız bir veri seti üzerinde modelin tahmini performansını tahmin ediyoruz. Bu performansı temel performans olarak kaydediyoruz. Örneğin, uygun rastgele orman modelimizi kullanarak doğrulama setinde %99 doğruluk elde ettiğimizi varsayalım. Bunu temel performans olarak kabul ediyoruz.

Veri kümesindeki her bir özellik sütunu için, diğer sütunları ve sınıf etiketlerini değiştirmeden tutarken, o belirli sütunu rastgele karıştırırız. Bu karıştırma işlemi, örnek bir veri kümesiyle gösterilmektedir. Üç özellik sütunu ve dört eğitim örneği içeren bir veri setimiz olduğunu varsayalım. Örnekte farklı bir renkle temsil edilen birinci sütunu karıştırmaya odaklanıyoruz. Karıştırma işleminden sonra, o sütundaki değerlerin sırası değişir. İkinci ve üçüncü sütunlardaki orijinal değerleri korurken değerleri rastgele değiştiriyoruz.

Permütasyon öneminin bir başka avantajı, ilişkili özellikleri iyi bir şekilde işleyebilmesidir. Değerlerini karıştırarak her bir özelliğin önemini ayrı ayrı değerlendirdiğinden, diğer özelliklerle olan korelasyonlarından bağımsız olarak her bir özelliğin modelin performansına benzersiz katkısını yakalar. Bu, birbiriyle ilişkili özelliklere sahip yüksek boyutlu veri kümelerinin olduğu senaryolarda özellikle kullanışlıdır.

Permütasyon önemi ayrıca, bazı modellerin sağladığı doğal özellik öneminden daha güvenilir olan bir özellik önemi ölçüsü sağlar. Örneğin, karar ağaçlarında veya rastgele ormanlarda, bir özelliğin önemi, verileri bölerken elde ettiği safsızlık azaltmasına bağlıdır. Bununla birlikte, bu ölçüm, birçok olası bölünmeye sahip veya ağaç yapısında daha yüksek görünen özelliklere yönelik önyargılı olabilir. Permütasyon önemi, her bir özelliğin karıştırılmasının etkisini doğrudan değerlendirerek, özelliğin öneminin daha doğrudan ve yansız bir tahminini sağlar.

Olumsuz tarafı, özellikle model eğitim süreci zaman alıyorsa veya çok sayıda özellik varsa, permütasyon önemi hesaplama açısından pahalı olabilir. Permütasyon işlemi, modelin performansının birden çok kez yeniden değerlendirilmesini gerektirdiğinden, önemli ölçüde ek yük getirebilir. Ancak, paralel hesaplama kullanmak veya permütasyon sayısını azaltmak gibi bu sorunu hafifletmeye yardımcı olabilecek optimizasyon teknikleri ve paralelleştirme stratejileri vardır.

Permütasyon öneminin, özellik seçimi veya model yorumlaması için sihirli değnek olmadığını belirtmek gerekir. Bireysel özelliklerin önemine dair değerli bilgiler sağlarken, diğer teknikler ve alan bilgisi ile birlikte kullanılmalıdır. Tek başına özelliğin önemi, bir özelliğin öngörü gücünü veya alaka düzeyini garanti etmez. Bağlamı, belirli sorunu ve modelin sınırlamalarını dikkate almak önemlidir.

Özetle, permütasyon önemi, bir makine öğrenimi modelindeki özelliklerin önemini değerlendirmek için güçlü ve modelden bağımsız bir yöntemdir. Özellik değerlerini karıştırarak ve karıştırmadan önce ve sonra modelin performansını karşılaştırarak, özelliğin öneminin güvenilir bir ölçüsünü sağlar. Anlaşılması kolaydır, ilişkili özellikleri iyi idare eder ve fazla uydurmaya duyarlı değildir. Ancak, hesaplama açısından pahalı olabilir ve kapsamlı özellik seçimi ve model yorumlama için diğer tekniklerle birlikte kullanılmalıdır.

13.4.2 Feature Permutation Importance (L13: Feature Selection)
13.4.2 Feature Permutation Importance (L13: Feature Selection)
  • 2021.12.29
  • www.youtube.com
This video introduces permutation importance, which is a model-agnostic, versatile way for computing the importance of features based on a machine learning c...
 

13.4.3 Özellik Permütasyon Önem Kodu Örnekleri (L13: Özellik Seçimi)


13.4.3 Özellik Permütasyon Önem Kodu Örnekleri (L13: Özellik Seçimi)

Pekala, permütasyon öneminin temel girişini yaptığımıza göre, permütasyon önemini pratikte nasıl kullanabileceğimizi görmek için bazı kod örneklerine göz atalım. Evet ve her zaman olduğu gibi, videonun altında bağlantı verilen Jupyter Notebooks'taki kod örneklerine de sahibim. Ayrıca, her zamankinden farklı olarak, işleri basitleştirmek için yeniden bir rüzgar veri kümesiyle çalışacağız.

Yani rüzgar veri seti yine 13 sütundan oluşan bir veri setidir. Ve işte ilk beş sıranın nasıl göründüğüne dair bir genel bakış. Yani üç sınıf var, Birinci Sınıf, iki ve üç. Ve 13 sütun var, ancak alan kısıtlamaları nedeniyle tüm sütunlar burada gösterilmiyor. Ama evet, bu rüzgar veri setini çok ayrıntılı olarak tartışmayacağız çünkü bunu daha önce birçok kez gördük.

Evet, ayrıca, her zaman olduğu gibi, veri setini eğitim ve test setine ayıracağız. Burada yaptığımız şey, etiket sütunu olan ilk sütun dışında veri kümesini almak. Bu nedenle, veri setini bir eğitim ve bir test setine ayıracağız; burada verinin %30'u test için ve %70'i buna göre eğitim için kullanılacaktır. Burada herhangi bir doğrulama seti oluşturmadığımıza dikkat edin. Yani bu sadece benim kişisel görüşüm. Ancak permütasyon performansını hesaplarsak mutlaka bir doğrulama setine ihtiyacımız olduğunu düşünmüyorum çünkü evet, genellikle test setimizi bağımsız tutmalıyız. Ancak, önceki videoya dayalı olarak permütasyon performansının nasıl çalıştığını tekrar düşünürseniz, burada yalnızca bir özellik sütununu permüte ettiğimizde performans düşüşüne bakıyoruz. Bu yüzden test doğruluğunu gerçekten yeniden hesaplamıyoruz, sadece bir sütunu karıştırırsak performansın ne kadar düşeceğine bakmak için test setini kullanıyoruz.

Evet, burada hala kurulum aşamasındayız. İşte bu slaytta modelimizi hazırlıyoruz. Ve aslında, burada rastgele bir orman sınıflandırıcısı var. Önceki videoda, permütasyon öneminin modelden bağımsız bir yöntem olduğunu öğrendik. Bu, herhangi bir model türü için bunu hesaplayabileceğimiz anlamına gelir. Bununla birlikte, burada rastgele bir orman kullanıyoruz, böylece permütasyon önemini rastgele orman safsızlığına dayalı performansla karşılaştırabiliriz ki bu ilginç bir karşılaştırma olabilir. Burada 100 ağaçlı rastgele bir orman sınıflandırıcı kuruyoruz. Ve bunu eğitim setine uyduruyoruz. Ve işte sadece doğruluk hesaplaması. Eğitim doğruluğunun %100 ve test doğruluğunun da %100 olduğunu görebiliriz, bu da bunun aslında oldukça iyi bir model olduğunu gösterir veya veri setinin sınıflandırılmasının oldukça kolay olduğunu da gösterebilir.

Burada ayrıca belirtmek istediğim bir şey de, permütasyon önemini hesapladığımızda, özellik önemini genel bir özellik önemi olarak yorumlamak istiyorsak, çok iyi performans gösteren bir modele sahip olmamızın önemli olduğudur. Çünkü iyi performans gösteren bir modelimiz yoksa, modelin en çok hangi özelliklere dayandığını öğrenebiliriz, ancak bu bize, diyelim ki, özelliğin hedef değişken bağlamında ne kadar önemli olduğunu gerçekten söylemez. model çok doğru değilse. Dolayısıyla, sadece referans olması için permütasyon önemine bakmadan önce, burada yine safsızlığa dayalı önem var. Bu, daha önceki bir videoda tartıştığımız rastgele orman safsızlığına dayalı önemdir. Yine, bu sadece referans içindir, modeli uydurduktan sonra bu özelliğin önem özelliğine eriştiğimiz yer.

Ardından arg_sort uyguluyoruz, böylece önem değerlerinin büyükten küçüğe sıralamasını elde ediyoruz. Yani en büyüğünden en küçüğüne. Ve sonra yaptığımız şey, katışıklığa dayalı önemi görselleştirmek için bir çubuk grafiği oluşturmaktır. Çubuk grafiği, özellik adlarını x ekseninde ve karşılık gelen önem değerlerini y ekseninde gösterecektir. Önem değerlerini azalan düzende sıralayarak, en önemli özellikler önce çizilir.

Daha sonra kod, permütasyon önemini hesaplamaya geçer. Permütasyon önemi, test setindeki her bir özelliğin değerleri rastgele karıştırılarak ve modelin performansındaki düşüş ölçülerek hesaplanır. Performanstaki düşüş ne kadar yüksek olursa, özellik o kadar önemli kabul edilir. Kod, veri kümesindeki her özelliği yinelemek için bir for döngüsü kullanır.

Döngü içinde, test setindeki özellik değerleri np.random.permutation() kullanılarak karıştırılır. Ardından, karıştırılmış test seti, tahmin edilen etiketleri elde etmek için eğitilmiş rastgele orman sınıflandırıcısından geçirilir. Karıştırılmış test setindeki modelin doğruluğu correct_score() işlevi kullanılarak hesaplanır. Orijinal test doğruluğu ile karıştırılmış test doğruluğu arasındaki fark, özelliği değiştirmenin neden olduğu performans düşüşünü temsil eder.

Her özelliğin performansındaki düşüş, önem_değerleri adlı bir listede saklanır. Tüm özellikleri yineledikten sonra, önem_vals listesi, her bir özellik için performans değerlerindeki düşüşü içerir.

Son olarak, permütasyon önemini görselleştirmek için bir çubuk grafiği oluşturulur. Özellik adları x ekseninde ve karşılık gelen performans değerlerindeki düşüş y ekseninde çizilir. Yine, en önemli özellikleri vurgulamak için önem değerleri azalan düzende sıralanır.

Bu kod, kirlilik tabanlı önem ile permütasyon önemi arasında bir karşılaştırma sağlar. İki grafiği karşılaştırarak, iki yöntem arasında özellik önem sıralamasında herhangi bir farklılık olup olmadığını gözlemleyebilirsiniz.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# Load the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Create a random forest classifier
clf = RandomForestClassifier(n_estimators= 100 , random_state= 42 )
clf.fit(X, y)

# Compute impurity-based feature importances
importances = clf.feature_importances_

# Plot impurity-based feature importances
plt.figure(figsize=( 8 , 6 ))
plt.bar(range(X.shape[ 1 ]), importances, align= 'center' )
plt.xticks(range(X.shape[ 1 ]), iris.feature_names, rotation= 90 )
plt.xlabel( 'Features' )
plt.ylabel( 'Importance' )
plt.title( 'Impurity-based Feature Importances' )
plt.show()

# Compute permutation importances
importance_vals = []
for feature in range(X.shape[ 1 ]):
    X_permuted = X.copy()
    np.random.shuffle(X_permuted[:, feature])
    y_pred = clf.predict(X_permuted)
    accuracy = accuracy_score(y, y_pred)
    drop_in_performance = accuracy_score(y, y_pred) - accuracy
    importance_vals.append(drop_in_performance)

# Plot permutation importances
plt.figure(figsize=( 8 , 6 ))
plt.bar(range(X.shape[ 1 ]), importance_vals, align= 'center' )
plt.xticks(range(X.shape[ 1 ]), iris.feature_names, rotation= 90 )
plt.xlabel( 'Features' )
plt.ylabel( 'Drop in Performance' )
plt.title( 'Permutation Importances' )
plt.show()
Bu kod yan yana iki çubuk grafiği oluşturacaktır. İlk çizim safsızlığa dayalı özellik önemlerini gösterecek ve ikinci çizim permütasyon önemlerini gösterecektir. Bu çizimleri inceleyerek, bu iki yönteme göre İris veri kümesindeki farklı özelliklerin göreli önemi hakkında fikir edinebilirsiniz.

matplotlib, numpy, sklearn.ensemble.RandomForestClassifier, sklearn.datasets.load_iris ve sklearn.metrics.accuracy_score gibi gerekli kitaplıkların içe aktarıldığından emin olun.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.inspection import permutation_importance
from sklearn.model_selection import train_test_split

# Load the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# Create a random forest classifier
clf = RandomForestClassifier(n_estimators= 100 , random_state= 42 )
clf.fit(X_train, y_train)

# Perform permutation importances
result = permutation_importance(clf, X_test, y_test, n_repeats= 10 , random_state= 42 , n_jobs=- 1 )

# Get the feature importances and their indices
importances = result.importances_mean
indices = np.argsort(importances)

# Plot permutation importances
plt.figure(figsize=( 8 , 6 ))
plt.barh(range(X.shape[ 1 ]), importances[indices], align= 'center' )
plt.yticks(range(X.shape[ 1 ]), iris.feature_names[indices])
plt.xlabel( 'Importance' )
plt.ylabel( 'Features' )
plt.title( 'Permutation Importances' )
plt.show()
Bu kodda, permütasyon önemlerini hesaplamak için sklearn.inspection modülündeki permutation_importance işlevini kullanıyoruz. Veri kümesi, train_test_split kullanılarak eğitim ve test kümelerine bölünür. Daha sonra, eğitim verilerine rastgele bir orman sınıflandırıcısı yerleştiririz ve test verilerini kullanarak permütasyon önemlerini hesaplarız.

Ortaya çıkan permütasyon önemleri, önem değişkeninde saklanır. Önemleri artan düzende sıralayacak endeksleri elde etmek için np.argsort'u kullanırız. Bu, önemleri doğru sırada çizmeye yardımcı olur.

Son olarak, permütasyon önemlerini göstermek için plt.barh'ı kullanarak yatay bir çubuk çizimi oluşturuyoruz. Y ekseni özellikleri, x ekseni ise önem değerlerini temsil eder. Plt.xlabel, plt.ylabel ve plt.title işlevleri, çizime etiketler ve başlık eklemek için kullanılır.

Lütfen matplotlib, numpy, sklearn.ensemble.RandomForestClassifier, sklearn.datasets.load_iris, sklearn.inspection.permutation_importance ve sklearn.model_selection.train_test_split gibi gerekli kitaplıkların içe aktarıldığından emin olun.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.inspection import permutation_importance
from sklearn.model_selection import train_test_split

# Load the Iris dataset
iris = load_iris()
X = iris.data
y = iris.target

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# Create a random forest classifier
clf = RandomForestClassifier(n_estimators= 100 , random_state= 42 )
clf.fit(X_train, y_train)

# Perform permutation importances
result = permutation_importance(clf, X_test, y_test, n_repeats= 10 , random_state= 42 , n_jobs=- 1 )

# Get the feature importances and their indices
importances = result.importances_mean
indices = np.argsort(importances)

# Plot permutation importances
plt.figure(figsize=( 8 , 6 ))
plt.barh(range(X.shape[ 1 ]), importances[indices], align= 'center' )
plt.yticks(range(X.shape[ 1 ]), iris.feature_names[indices])
plt.xlabel( 'Importance' )
plt.ylabel( 'Features' )
plt.title( 'Permutation Importances' )
plt.show()
Bu kodda, permütasyon önemlerini hesaplamak için sklearn.inspection modülündeki permutation_importance işlevini kullanıyoruz. Veri kümesi, train_test_split kullanılarak eğitim ve test kümelerine bölünür. Daha sonra, eğitim verilerine rastgele bir orman sınıflandırıcısı yerleştiririz ve test verilerini kullanarak permütasyon önemlerini hesaplarız.

Ortaya çıkan permütasyon önemleri, önem değişkeninde saklanır. Önemleri artan düzende sıralayacak endeksleri elde etmek için np.argsort'u kullanırız. Bu, önemleri doğru sırada çizmeye yardımcı olur.

Son olarak, permütasyon önemlerini göstermek için plt.barh'ı kullanarak yatay bir çubuk çizimi oluşturuyoruz. Y ekseni özellikleri, x ekseni ise önem değerlerini temsil eder. Plt.xlabel, plt.ylabel ve plt.title işlevleri, çizime etiketler ve başlık eklemek için kullanılır.

matplotlib, numpy, sklearn.ensemble.RandomForestClassifier, sklearn.datasets.load_iris, sklearn.inspection.permutation_importance ve sklearn.model_selection.train_test_split gibi gerekli kitaplıkların içe aktarıldığından emin olun.

13.4.3 Feature Permutation Importance Code Examples (L13: Feature Selection)
13.4.3 Feature Permutation Importance Code Examples (L13: Feature Selection)
  • 2021.12.30
  • www.youtube.com
This video shows code examples for computing permutation importance in mlxtend and scikit-learn. Permutation importance is a model-agnostic, versatile way fo...
 

13.4.4 Sıralı Özellik Seçimi (L13: Özellik Seçimi)


13.4.4 Sıralı Özellik Seçimi (L13: Özellik Seçimi)

Önceki videolarda en sevdiğim teknik olarak permütasyon önemini kullanarak özellik önemi kavramını tanıtmıştım. Bu videoda, daha önce bahsettiğimiz sarmalayıcı yöntemlerin bir parçası olan sıralı özellik seçimi adı verilen bir başka önemli teknikten bahsetmek istiyorum.

Sıralı özellik seçimine dalmadan önce, şimdiye kadar tartıştığımız farklı özellik seçimi yöntemlerini kısaca özetleyelim. Filtre yöntemleriyle başladık, ardından özyinelemeli özellik eleme gibi gömülü yöntemlere geçtik ve şimdi sarmalayıcı yöntemlere odaklanıyoruz.

Sarmalayıcı yöntemler, tüm olası özellik kombinasyonlarını deneyerek en uygun özellik alt kümesini bulmayı amaçlar. Bu yaklaşım kapsamlı özellik seçimi olarak bilinir. Nasıl çalıştığını anlamak için, dört özelliği olan Iris veri kümesi örneğini ele alalım: sepal uzunluğu, sepal genişliği, petal uzunluğu ve petal genişliği. Modelimiz için en iyi özellik kombinasyonunu bulmak için, tek özelliklerden tam özellik setine kadar tüm olası alt kümeleri denememiz gerekir.

İris veri kümesi için bu, bir, iki, üç ve dört özelliğin alt kümeleri dahil olmak üzere 15 olası kombinasyonla sonuçlanacaktır. Bununla birlikte, ayrıntılı özellik seçimi, hesaplama açısından pahalı olabilir ve fazla uydurmaya eğilimli olabilir. Bu sorunları azaltmak için, farklı özellik alt kümelerinin performansını değerlendirmek üzere bir doğrulama seti veya K-katlı çapraz doğrulama kullanabiliriz.

Basitliğine rağmen, ayrıntılı özellik seçimi, çok sayıda özelliğe sahip veri kümelerine uygulandığında bir sınırlamaya sahiptir. Olası özellik alt kümelerinin sayısı, özelliklerin sayısıyla birlikte katlanarak artar ve bu da onu büyük veri kümeleri için kullanışsız hale getirir. Bu sınırlama, tüm olası kombinasyonları değerlendirmek yerine özellik kombinasyonlarının bir alt kümesini araştıran bir yaklaşım tekniği olan sıralı özellik seçiminin kullanımını motive eder.

Sıralı özellik seçimi, orijinal özellik seti ile başlayan ve performanslarına göre özellikleri kademeli olarak seçen veya kaldıran yinelemeli bir süreçtir. Popüler bir yaklaşım, tam özellik kümesiyle başladığımız ve her seferinde bir özelliği yinelemeli olarak kaldırdığımız sıralı geriye doğru seçimdir. Her yinelemede, kalan özelliklerin performansını değerlendirir ve en yüksek performansa sahip alt kümeyi seçeriz. Bu işlem, tek bir özelliği olan bir alt kümemiz kalana kadar devam eder.

Sıralı geriye doğru seçim algoritması şu şekilde özetlenebilir:

  1. Orijinal özellik seti ile başlayın.
  2. Her seferinde bir özelliği kaldırarak n-1 boyutunda tüm olası özellik alt kümelerini oluşturun.
  3. Her aday altkümenin performansını değerlendirin.
  4. En yüksek performansa sahip alt kümeyi seçin ve bu alt kümede olmayan özelliği kalıcı olarak kaldırın.
  5. İstenen özellik boyutuna ulaşılana kadar (örneğin, yalnızca bir özellik kalana kadar) 2-4 arası adımları tekrarlayın.

2-4. adımları tekrarlayarak, en uygun alt kümeye ulaşana kadar özellik kümesini kademeli olarak azaltırız. Nihai alt küme, en yüksek değerlendirme puanına göre seçilir ve bir eşitlik olması durumunda, hesaplama verimliliği için daha küçük alt küme tercih edilir. Ardışık geriye doğru seçimde iterasyon sayısı, özellik sayısından bir eksiğe eşittir.

Sıralı ileri seçim, sıralı özellik seçiminin başka bir çeşididir. Sıralı ileri seçim, özellikleri kaldırmak yerine boş bir özellik seti ile başlar ve kademeli olarak her seferinde bir özellik ekler. Süreç, her bir özellik için bir sınıflandırıcının eğitilmesini ve performansının değerlendirilmesini içerir. En yüksek performansa sahip özellik seçilir ve alt kümeye eklenir. Bu işlem maksimum özellik sayısına ulaşılana kadar devam eder.

Özetle, sıralı özellik seçimi, özelliklerin optimal bir alt kümesini bulmak için kullanışlı bir tekniktir. Hesaplama verimliliği ile iyi bir özellik kombinasyonu bulma arasında bir değiş tokuş sunar. Sıralı geriye doğru seçim ve sıralı ileriye doğru seçim, sıralı özellik seçiminin iki yaygın varyasyonudur ve her birinin kendi avantajları ve kullanım durumları vardır. Bir sonraki videoda sıralı özellik seçiminin programlı olarak nasıl uygulanacağını keşfedeceğiz ve kapsamlı özellik seçiminin sınırlamalarını ele alacağız.

13.4.4 Sequential Feature Selection (L13: Feature Selection)
13.4.4 Sequential Feature Selection (L13: Feature Selection)
  • 2022.01.05
  • www.youtube.com
This video explains how sequential feature selection works. Sequential feature selection is a wrapper method for feature selection that uses the performance ...
 

13.4.5 Sıralı Özellik Seçimi -- Kod Örnekleri (L13: Özellik Seçimi)


13.4.5 Sıralı Özellik Seçimi -- Kod Örnekleri (L13: Özellik Seçimi)

Tamam, özellik seçimi hakkındaki tartışmamızı bitirmenin zamanı geldi. Bu videoda Python'da sıralı özellik seçiminin nasıl kullanıldığını göstereceğim. Size birkaç yıl önce geliştirdiğim orijinal uygulama olan MLxtend kitaplığını kullanarak bir örnek göstererek başlayacağım. Daha sonra, daha düzenli bir uygulama sunan scikit-learn kullanarak aynı sonuçlara nasıl ulaşılacağını da göstereceğim.

Koda girmeden önce, çok uzun ve bunaltıcı hale getirmemek için bu videoda ele almayacağım ek örnekler içeren belgelere göz atmanızı tavsiye ederim. Daha ayrıntılı bilgi için belgelere başvurmak her zaman yararlıdır.

Öncelikle defterlerimin ve yazılım kitaplıklarımın yıllar içindeki sürümlerini izlemek için geliştirdiğim "filigran" eklentisini yükleyerek başlayalım. Özellikle sürüm tutarsızlıkları nedeniyle bazı seçenekler artık çalışmayabilirse, sürüm numaralarının beklentilerimizle eşleşmesini sağlamak iyi bir uygulamadır. Daha sonra matplotlib kütüphanesini de kullanacağız, bu yüzden grafiklerin not defterinde doğru görüntülendiğinden emin olmak için onu içe aktaralım.

Şimdi özellik seçimi için veri setini hazırlamaya geçelim. Önceki videolarda olduğu gibi wine veri setini kullanacağız. Pandaları kullanarak veri setini UCI makine öğrenimi veri seti deposundan yüklüyoruz. Veri setini yükledikten sonra, her şeyin doğru yüklendiğinden emin olmak için bazı temel bilgileri yazdırıyoruz. Sınıf etiketlerinin tam sayı olarak temsil edilip edilmediğini kontrol etmek de önemlidir.

Daha sonra önceki videolarda yaptığımız gibi veri setini eğitim ve test setlerine ayırıyoruz. Ek olarak, özellik ölçeklendirmeye duyarlı bir K-en yakın komşu sınıflandırıcı kullanacağımız için veri setini standartlaştırıyoruz. Veri setini %80 eğitim seti ve %20 test seti olarak ayırıp her iki seti de standardize ediyoruz.

Özellik seçiminden önce bir temel oluşturmak için, standartlaştırılmış veri setine bir K-en yakın komşu sınıflandırıcısı yerleştirdik ve eğitim ve test doğruluklarını hesapladık. Bu örnekte, sınıflandırıcı için keyfi olarak beş komşu seçiyoruz, ancak bu parametre optimum performans için ızgara aramasına tabi olabilir. Kodu ve videoyu daha basit tutmak için burada ızgara araması yapmayacak olsak da, ızgara aramayı sıralı özellik seçimiyle birleştirmek yaygın bir yaklaşımdır. Bunun örneklerini belgelerde bulabilirsiniz.

Temel sonuçlar, eğitim setinde %98,6 doğruluk ve test setinde %94 doğruluk elde ettiğimizi gösteriyor. Şarap veri kümesindeki 13 özelliğin tümü kullanıldığında performans oldukça iyidir. Bununla birlikte, K-en yakın komşu sınıflandırıcılarla ilişkili boyutsallık laneti nedeniyle biraz fazla uydurma olabilir. Bunu azaltmak için, performansı potansiyel olarak iyileştirmek üzere daha küçük bir özellik alt kümesi seçebiliriz.

Şimdi, beş özelliğin bir alt kümesini seçmek için sıralı özellik seçiminin nasıl kullanılacağını gösterelim. SequentialFeatureSelector sınıfını MLxtend kitaplığından içe aktarıyoruz ve içe aktarma adını kolaylık olması için sfs olarak kısaltıyoruz. Bu sınıf, modeli, istenen özellik alt kümesi boyutunu ve seçim yönünü (ileri, geri, kayan) girdi olarak alır. Sıralı ileri seçimi için yönü ileri olarak ayarladık. Ayrıntılı parametre, eğitim sırasında görüntülenen çıktı miktarını kontrol etmemize izin verir ve bu, ilerlemeyi izlemek için yararlı olabilir. Puanlama metriğini doğruluk olarak belirtiyoruz ve özellik alt kümelerini değerlendirmek için 5 katlı çapraz doğrulama kullanıyoruz. Paralel işleme, mevcut tüm CPU çekirdeklerini kullanmak için n_jobs parametresi pozitif bir tam sayıya veya -1'e ayarlanarak etkinleştirilebilir. Bu durumda, daha hızlı yürütme için 8'e ayarladık.

Çıktı, özellik seçim sürecinin ilerlemesini gösterir, bir özellikle başlar ve istenen beş altküme boyutuna ulaşana kadar özelliklerin sayısını kademeli olarak artırır. Her bir özellik alt kümesinin performansı da görüntülenerek, daha fazla özellik eklendikçe iyileştiğini gösterir.

Tamamlandıktan sonra, sfs nesnesinin sırasıyla k_feature_idx_ ve k_feature_names_ özniteliklerini kullanarak seçilen özellik indekslerine ve karşılık gelen özellik adlarına erişebiliriz. Ek olarak, özellik alt kümelerinin performans geçmişine k_score_ özniteliğini kullanarak erişebiliriz. Seçilen özellik indekslerini, isimlerini ve bunlara karşılık gelen puanları yazdıralım:

print( 'Selected feature indices:' , sfs.k_feature_idx_)
print( 'Selected feature names:' , sfs.k_feature_names_)
print( 'Selected feature scores:' , sfs.k_score_)

Çıktı, seçilen beş özelliğin endekslerini, adlarını ve puanlarını gösterecektir.

Ardından, K-en yakın komşu sınıflandırıcısını seçilen özellik alt kümesinde yeniden eğitebiliriz. Bunun için sadece seçilen özellikleri içeren yeni bir eğitim ve test seti oluşturmamız gerekiyor. Orijinal veri kümelerini yeni özellik uzayına dönüştürmek için sfs nesnesinin dönüştürme yöntemini kullanabiliriz:

X_train_selected = sfs.transform(X_train)
X_test_selected = sfs.transform(X_test)
Veri kümelerini dönüştürdükten sonra, seçilen özellik alt kümesine yeni bir K-en yakın komşu sınıflandırıcısı yerleştirebilir ve eğitim ve test doğruluklarını hesaplayabiliriz. Sonuçları yazdıralım:

knn_selected = KNeighborsClassifier(n_neighbors= 5 )
knn_selected.fit(X_train_selected, y_train)

train_acc_selected = knn_selected.score(X_train_selected, y_train)
test_acc_selected = knn_selected.score(X_test_selected, y_test)

print( 'Training accuracy on selected features:' , train_acc_selected)
print( 'Test accuracy on selected features:' , test_acc_selected)
Çıktı, yalnızca seçilen beş özellik kullanılarak elde edilen eğitim ve test doğruluklarını gösterecektir.

Sonuçları temel doğruluklarla karşılaştırarak, özellik seçiminin sınıflandırıcının performansı üzerindeki etkisini değerlendirebiliriz. Bazı durumlarda, özellik seçimi, fazla uydurmayı azaltarak ve alakasız veya gereksiz özellikleri kaldırarak daha iyi genellemeye ve gelişmiş model performansına yol açabilir.

MLxtend kitaplığının kullanıldığı tanıtım için bu kadar. Şimdi sıralı özellik seçimi için scikit-learn kullanımına geçelim.

Scikit-learn'de SequentialFeatureSelector sınıfı, feature_selection modülünde bulunur. Aşağıdaki gibi içe aktarıyoruz:

from sklearn.feature_selection import SequentialFeatureSelector
Scikit-learn sürümünün kullanımı, MLxtend sürümüne benzer, ancak parametre adlarında ve öznitelik erişiminde bazı küçük farklılıklar vardır. Scikit-learn sürümü, farklı özellik seçme algoritmaları ve puanlama ölçütlerini kullanma açısından da daha fazla esneklik sağlar.

Umarım bu tanıtım, Python'da sıralı özellik seçimini nasıl kullanacağınızı anlamanıza yardımcı olur. Ek örnekler ve bilgiler için belgelere başvurmayı unutmayın.

13.4.5 Sequential Feature Selection -- Code Examples (L13: Feature Selection)
13.4.5 Sequential Feature Selection -- Code Examples (L13: Feature Selection)
  • 2022.01.06
  • www.youtube.com
This final video in the "Feature Selection" series shows you how to use Sequential Feature Selection in Python using both mlxtend and scikit-learn.Jupyter no...