Ana içeriğe geç

Makine Öğreniminde Özellik Çıkarımı: Kapsamlı Rehber

Görüntü, ses ve zaman serisi verileri için uygulamalı Python örnekleriyle özellik çıkarım tekniklerini öğrenin. Ham veriyi anlamlı özelliklere dönüştürmeyi ve makine öğrenimi uygulamalarındaki yaygın zorlukların üstesinden gelmeyi keşfedin.
· 13 dk. oku

Yapay Zeka ile Keşfedin

Makine öğreniminde özellik çıkarımı, ham veriyi anlamlı özellikler kümesine dönüştürerek temel bilgiyi yakalarken fazlalığı azaltır. Boyut indirgeme tekniklerini ve mevcut veriden yeni özellikler oluşturan yöntemleri içerebilir.

Bir pazarda meyveleri tanımlamaya çalıştığınızı hayal edin. Sayısız özelliği (ağırlık, renk, doku, şekil, koku vb.) dikkate alabileceğiniz gibi, elma ile portakalı ayırt etmek için yalnızca birkaç temel özelliğin, örneğin renk ve boyutun, yeterli olduğunu fark edebilirsiniz. Özellik çıkarımı tam olarak bunu yapar. Verinizin en bilgilendirici özelliklerine odaklanmanıza yardımcı olur.

Özellik çıkarımı yapılırken, özgün veriler matematiksel olarak yeni bir özellik kümesine dönüştürülür. Bu yeni özellikler, verinin en önemli yönlerini yakalayacak ve muhtemelen karmaşıklığını azaltacak şekilde tasarlanır. Çıkarılan özellikler çoğu zaman, özgün veride hemen göze çarpmayabilecek altta yatan örüntüleri veya yapıları temsil eder.

feature extraction

Özellik Çıkarımı

Sıradaki bölümlerde, özellik çıkarımının makine öğreniminde neden bu kadar önemli olduğunu inceleyecek ve farklı veri türlerinden özellik çıkarmaya yönelik çeşitli yöntemlere ve bunların kodlarına bakacağız. Uygulamalı örnekler isterseniz, özellik çıkarımına ayrılmış bir bölümü bulunan Python ile Boyut İndirgeme kursumuza göz atın.

Makine Öğreniminde Özellik Çıkarımı neden önemlidir?

Özellik çıkarımı, makine öğreniminde önemli bir rol oynar. Başarısız olan bir model ile başarılı olan bir model arasındaki farkı yaratabilir. Etkili makine öğrenimi modelleri kurmak için bunun neden temel olduğunu görelim.

Model doğruluğunu ve verimliliğini artırma

Ham verilerle çalışırken, makine öğrenimi modelleri çoğunlukla anlamlı örüntülerle gürültüyü ayırt etmekte zorlanır. Özellik çıkarımı, modellerinizin öğrenme ve performansını önemli ölçüde iyileştirebilecek bir veri ön işleme adımıdır.

Model Performance versus Training Time

Model Performansı ve Eğitim Süresi

Örneğin, bir model ham veriyle %85 doğruluk elde ederken, aynı model özenle çıkarılmış özelliklerle eğitildiğinde %95 doğruluğa ulaşabilir. Bu iyileşme modelin değiştirilmesinden değil, modele öğrenmesi için daha kaliteli girdi verilmesinden kaynaklanır.

Yüksek boyutlu veri kümelerini yönetme

Modern veri kümeleri sıklıkla yüzlerce hatta binlerce özellikle gelir. Özellik çıkarımı, bu durumun doğurduğu çeşitli zorlukları ele almaya yardımcı olur.

  • Boyutlanma laneti: Özellik sayısı arttıkça, veri özellik uzayında giderek seyrekleşir. Bu da modellerin anlamlı örüntüler bulmasını zorlaştırır. Özellik çıkarımı, önemli ilişkileri korurken boyutu azaltan daha kompakt bir temsil oluşturur.
  • Yüksek bellek kullanımı: Yüksek boyutlu veriler işleme sırasında daha fazla depolama ve belleğe ihtiyaç duyar. Yalnızca en ilgili özellikleri çıkararak, veri kümelerimizin bellek ayak izini, bilgilendirici değerlerini korurken önemli ölçüde azaltabiliriz.
  • Veri görselleştirme: Üçten fazla boyutu doğrudan görselleştirmek imkânsızdır. Özellik çıkarımı, boyutu iki veya üç özelliğe indirerek veriyi çizilebilir ve yapısı görsel olarak anlaşılabilir hâle getirir.

Özellik çıkarımı, temel bilgiyi korurken boyutu azaltarak bu zorlukları ele alır. Bu azalma, geniş, yüksek boyutlu verileri daha kompakt ve yönetilebilir bir forma dönüştürür; bu da model performansını artırır.

Hesaplama karmaşıklığını azaltma ve aşırı uyumu önleme

Özellik çıkarımı, makine öğrenimi modelleri için iki kritik fayda sağlar:

  1. Daha düşük hesaplama gereksinimleri
    1. Daha az özellik daha hızlı eğitim süreleri demektir
    2. Model dağıtımı sırasında azaltılmış bellek kullanımı
    3. Daha verimli tahmin üretimi
  2. Daha iyi genelleme
    1. Daha basit özellik uzayları aşırı uyumu önlemeye yardımcı olur
    2. Modeller daha sağlam örüntüler öğrenir
    3. Yeni, görülmemiş verilerde iyileştirilmiş performans

Feature Extractions versus Without Feature Extraction

Özellik Çıkarımı Olan ve Olmayan Durumların Karşılaştırması

Yukarıdaki görselleştirme, özellik çıkarımının nasıl daha basit ve daha sağlam modellere yol açabileceğini gösterir. Soldaki grafikte gürültülü, yüksek boyutlu veriye uymaya çalışan karmaşık bir model; sağdaki grafikte ise özellik çıkarımının nasıl daha net ve genellenebilir bir örüntü ortaya koyduğu görülüyor.

Ham veri yerine çıkarılmış özelliklerle çalışmak, modele öğrenmesi gereken bilginin berrak ve damıtılmış bir hâlini sunmak gibidir. Bu, öğrenme sürecini yalnızca daha verimli kılmakla kalmaz; gerçek dünya uygulamalarında daha iyi performans gösterme olasılığı yüksek modeller üretir.

Şimdi farklı özellik çıkarımı yöntemlerine bakalım.

Özellik Çıkarımı Yöntemleri

Özellik çıkarımı yöntemleri genel olarak iki yaklaşıma ayrılır: manuel özellik mühendisliği ve otomatik özellik çıkarımı. Ham veriyi anlamlı özelliklere dönüştürmede her iki yöntemin de nasıl yardımcı olduğuna bakalım.

Manuel özellik mühendisliği

Manuel özellik mühendisliği, alan bilgisini kullanarak ham veriden ilgili özellikleri belirlemeyi ve oluşturmayı içerir. Bu uygulamalı yaklaşım, anlamlı özellikler oluşturmak için probleme ve veriye dair anlayışımıza dayanır.

 Görüntü işlemeye gelince, manuel özellik mühendisliği; nesne sınırlarını belirlemek için kenar tespiti, renk dağılımını yakalamak için renk histogramları, örüntüleri nicemlemek için doku analizi ve nesne geometrisini tanımlamak için şekil betimleyicileri gibi teknikleri içerebilir.

image feature extraction

Görüntü Özellik Çıkarımı

Tablo verileri için manuel özellik mühendisliği; mevcut özellikler arasında etkileşim terimleri oluşturmayı, değişkenleri logaritmik veya polinom fonksiyonlarla dönüştürmeyi, veri noktalarını anlamlı istatistiklere toplulaştırmayı ve kategorik değişkenleri kodlamayı içerir. 

Tabular data Feature Extraction

Tablo verilerinde özellik çıkarımı

Bu teknikler, alan bilgisinin rehberliğinde veri temsilinin kalitesini artırır ve model performansını önemli ölçüde iyileştirebilir.

Otomatik özellik çıkarımı

Otomatik özellik çıkarımı, açık insan yönlendirmesi olmadan özellikleri keşfetmek ve oluşturmak için algoritmalar kullanır. Manuel özellik mühendisliğinin pratik olmayabileceği veya verimsiz kalabileceği karmaşık veri kümeleriyle çalışırken özellikle kullanışlıdır.

Yaygın otomatik yaklaşımlar şunlardır:

Temel Bileşenler Analizi (PCA): Veriyi, her bileşenin kalan maksimum varyansı yakaladığı, birbiriyle ilişkisiz bileşenler kümesine dönüştürür. Bu yaklaşım, verideki temel bilgiyi korurken yapısını basitleştirdiği için boyut indirgeme için özellikle kullanışlıdır.

Principal Component Analysis(PCA)

Temel Bileşenler Analizi (PCA)

Otoenkoderler: Verinin sıkıştırılmış temsillerini öğrenerek doğrusal olmayan ilişkileri yakalayan sinir ağlarıdır. Geleneksel doğrusal yöntemlerin yetersiz kalabileceği yüksek boyutlu veri kümelerinde özellikle etkilidirler.

Özellik mühendisliği görevlerini basitleştirmek için çeşitli araç ve kütüphaneler ortaya çıkmıştır. Örneğin, Scikit-learn'ün decomposition modülü çeşitli boyut indirgeme yöntemleri sunar; PyCaret ise otomatik özellik seçimi yetenekleri sağlar.

Hem manuel hem de otomatik yaklaşımların güçlü yanları vardır. Her bir yaklaşımın güçlü yönlerine bakalım.

Manuel Mühendislik

Otomatik Çıkarım

Alan bilgisi entegrasyonu

Ölçeklenebilirlik

Yorumlanabilir özellikler

Karmaşık örüntüleri işler

İnce ayarlı kontrol

İnsan önyargısını azaltır

Özgül ihtiyaçlara uyarlanır

Gizli ilişkileri keşfeder

Manuel ve otomatik yöntemler arasındaki seçim genellikle veri kümesi karmaşıklığı, alan bilgisinin mevcudiyeti, yorumlanabilirlik gereksinimleri, hesaplama kaynakları ve zaman kısıtları gibi faktörlere bağlıdır.

Çok karmaşık veri kümeleri için veya zaman ve kaynakların sınırlı olduğu durumlarda, otomatik yöntemler hızla faydalı özellikler üretebilir. Buna karşılık, alan bilgisinin mevcut olduğu ve yorumlanabilirliğin öncelik taşıdığı durumlarda, eldeki problemle yakından uyumlu, özel özellik mühendisliğine imkân tanıdığı için manuel yöntemler tercih edilebilir.

Uygulamada, başarılı birçok makine öğrenimi projesi her iki yaklaşımı da birleştirir: alan bilgisini özellik mühendisliğine yön vermek için kullanırken, insan uzmanlara hemen görünmeyebilecek ek örüntüleri keşfetmek üzere otomatik yöntemlerden yararlanır.

Bir sonraki bölümde, çeşitli alanlarda birkaç özellik çıkarımı tekniğine bakacağız.

Özellik Çıkarımı Teknikleri

Her veri türü, kendine özgü özellikleri için optimize edilmiş belirli özellik çıkarımı teknikleri gerektirir. Farklı veri türleri için en yaygın tekniklere bakalım.

Feature Extraction Techniques

Özellik Çıkarımı Teknikleri

Görüntü özellik çıkarımı

Görüntü özellik çıkarımı, ham piksel verilerini temel görsel bilgileri yakalayan anlamlı temsillere dönüştürür. Modern bilgisayarla görmede kullanılan üç ana teknik kategorisi vardır: geleneksel yöntemler, derin öğrenme tabanlı yöntemler ve istatistiksel yöntemler.

Image Feature Extraction Methods

Görüntü Özellik Çıkarma Yöntemleri

Her bir yönteme bakalım.

Geleneksel bilgisayarla görme yöntemleri

Ölçekten Bağımsız Özellik Dönüşümü (SIFT), görüntülerde ayırt edici yerel özellikleri tespit eden sağlam bir yöntemdir. İlgi noktalarını belirleyerek ve şu özelliklere sahip betimleyiciler oluşturarak çalışır:

  • Görüntü ölçekleme ve döndürmeye karşı değişmezlik
  • Aydınlatma değişimlerine kısmi dayanıklılık
  • Yerel geometrik bozulmaya karşı sağlamlık

SIFT algoritması, görüntüleri birkaç aşamada işler. Ölçeğe karşı değişmez ilgi noktalarını belirlemek için ölçek-uzayı uç değer tespiti ile başlar. Ardından, ilgi noktası yerelleştirme bu adayları kesin konumlarını belirleyerek iyileştirir ve kararsız noktaları eler.

Bunu, her ilgi noktası için tutarlı bir yönelim belirleyerek dönmeye karşı değişmezliği sağlayan yönelim ataması izler. Son olarak, ilgi noktası betimleyici oluşturma, yerel görüntü gradyanlarına dayalı ayırt edici betimleyiciler üretir ve görüntüler arasında sağlam eşleşmeyi kolaylaştırır.

Bir diğer yöntem ise Yönlendirilmiş Gradyanlar Histogramı (HOG). Görüntü boyunca gradyan örüntülerini analiz ederek yerel şekil bilgisini yakalar. Süreç, kenar detaylarını vurgulamak için görüntü genelinde gradyanların hesaplanmasıyla başlar. 

Daha sonra görüntü küçük hücrelere bölünür ve her hücre için yerel yapıyı özetlemek üzere gradyan yönelimlerinin histogramı oluşturulur. Son olarak, bu histogramlar aydınlatma ve kontrasttaki değişimlere karşı dayanıklılığı sağlamak için daha büyük bloklar üzerinde normalize edilir; böylece nesne tespiti ve tanıma gibi görevler için sağlam bir özellik betimleyici elde edilir.

Derin öğrenme yöntemleri

Evrişimsel Sinir Ağları (CNN'ler), hiyerarşik temsilleri otomatik olarak öğrenerek özellik çıkarımına bakışımızı değiştirdi.

Feature Extraction with CNN

CNN ile Özellik Çıkarımı

CNN'ler özellikleri hiyerarşik yapıları aracılığıyla öğrenir. Erken katmanlarda kenarlar ve renkler gibi temel görsel öğeleri tespit ederler. Orta katmanlar bu öğeleri birleştirerek desenleri ve şekilleri tanır; daha derin katmanlar ise karmaşık nesneleri yakalar ve sahne anlayışını mümkün kılar.

Transfer öğrenimi, büyük veri kümeleri üzerinde eğitilmiş modellerden bu önceden öğrenilmiş özellikleri kullanmamıza olanak tanır; sınırlı veriyle çalışırken özellikle değerlidir.

İstatistiksel yöntemler

İstatistiksel yöntemler, görüntülerden hem küresel hem de yerel örüntüleri çıkararak sağlam görüntü analizi ve yorumlamayı kolaylaştırır. 

Örneğin, renk histogramları bir görüntü içindeki renk dağılımını temsil eder ve dönme ile ölçeğe karşı değişmez özellikler sunar; bu da onları görüntü sınıflandırma ve geri getirme gibi görevler için özellikle faydalı kılar.

Doku analizi, Gri Seviye Birliktelik Matrisleri (GLCM) gibi tekniklerle tekrarlayan örüntüleri ve yüzey özelliklerini yakalar; malzeme tanıma ve sahne sınıflandırma gibi uygulamalarda etkilidir.

Kenar tespiti ise Sobel, Canny ve Laplacian operatörleri gibi yöntemlerle sınırları ve önemli yoğunluk değişimlerini belirler; nesne tespiti ve şekil analizinde kritik rol oynar.

Özellik çıkarımı yönteminin seçimi birkaç faktöre bağlıdır. Görevinizin özgül gereksinimleriyle uyumlu olmalı, mevcut hesaplama kaynaklarını dikkate almalı ve yorumlanabilirlik ihtiyacını gözetmelidir. 

Ayrıca, veri kümenizin boyutu, gürültü düzeyi ve karmaşıklığı gibi özellikler ile ölçek, dönme ve aydınlatma gibi istenen değişmezlik özellikleri de kritik öneme sahiptir.

Ses özellik çıkarımı

Bir bilgisayarı, insanların yaptığı gibi konuşmayı anlaması için eğitmeye çalıştığınızı düşünün. İşte burada Mel-Frekans Kepstrum Katsayıları (MFCC) devreye girer.

MFCC'ler, sesi kulaklarımızın işlediğine benzer bir şekilde ayrıştıran özel ses özellikleridir. Özellikle etkilidirler çünkü insanların en duyarlı olduğu frekanslara odaklanırlar. Onları, sesi hem bilgisayarların hem de insan işitmesinin anlamlı bulacağı bir formata çeviren bir araç gibi düşünebilirsiniz.

mfcc feature extraction

Mel-Frekans Kepstrum Katsayıları

Süreç, ses sinyalini tipik olarak 20-40 milisaniye uzunluğunda kısa parçalara bölerek başlar. Her parça için, ham ses dalgalarını frekans bileşenlerine dönüştüren bir dizi matematiksel dönüşüm uygularız. İşin ilginç kısmı burada başlar. Tüm frekansları eşit şekilde ele almak yerine, Mel ölçeği denilen bir şey kullanırız.

Bu formül karmaşık görünebilir, ancak yalnızca frekansları, insanların sesi algılayış biçimine uyacak şekilde eşler. Kulaklarımız düşük frekanslardaki farkları yüksek frekanslardakinden daha iyi algılar ve Mel ölçeği bu doğal eğilimi hesaba katar.

Ses tanımada, MFCC'ler kimin konuştuğunu ve ne söylediğini anlamanın temelini oluşturur. Telefonunuzun sanal asistanıyla konuştuğunuzda, sesinizi işlemek için muhtemelen MFCC'leri kullanır. Bu katsayılar, her bir kişinin sesinin benzersiz özelliklerini yakalamaya yardımcı olur; bu da onları konuşmacı tanıma sistemleri için çok değerli kılar.

Konuşmada duygu analizi için MFCC'ler, duyguları gösteren seste ince değişimleri tespit etmeye yardımcı olur. Birinin mutlu, üzgün, kızgın veya nötr olduğunu gösterebilecek perde, ton ve konuşma hızındaki değişimleri yakalayabilirler. Örneğin, müşteri hizmetleri çağrılarını analiz ederken MFCC'ler, yalnızca ne söylediklerine değil nasıl konuştuklarına bakarak müşteri memnuniyet düzeylerini belirlemeye yardımcı olabilir.

Zaman serisi özellik çıkarımı

 Zaman serisi verileriyle çalışırken, anlamlı özelliklerin çıkarılması zaman içinde evrilen örüntü ve eğilimleri yakalamamıza yardımcı olur. Ham zaman serisi verisini yararlı özelliklere dönüştürmek için kullanılan bazı temel tekniklere bakalım.

time series feature extraction

Zaman Serisi Özellik Çıkarma Yöntemleri

Fourier Dönüşümü, zaman serisi verilerini frekans bileşenlerine ayrıştırarak gizli periyodik örüntüleri ortaya çıkarır. Formül şöyledir:

İstatistiksel yöntemler, zamansal özellikleri yakalayarak frekans analizini tamamlar. Yaygın özellikler arasında hareketli ortalamalar, standart sapmalar ve trend bileşenleri bulunur. Bu teknikler özellikle finansal tahminlemede güçlüdür; piyasa eğilimlerini ve aykırı değerleri belirlemeye yardımcı olurlar.

Örneğin, hisse senedi piyasası analizinde Fourier özelliklerini istatistiksel ölçülerle birleştirmek hem uzun vadeli eğilimleri hem de döngüsel örüntüleri ortaya çıkarabilir. Benzer şekilde, endüstriyel ortamlarda bu yöntemler, zaman içinde sensör verisi örüntülerini analiz ederek ekipman anormalliklerini tespit etmeye yardımcı olur.

Özellik Çıkarımı için Araçlar ve Kütüphaneler

Bu özellik çıkarımı yöntemlerini uygulamayı kolay ve verimli kılan bazı temel araçlara bakalım.

Tools and Libraries for Feature Extraction

Özellik Çıkarımı için Araçlar ve Kütüphaneler

Görüntü işleme için OpenCV ve scikit-image, çeşitli özellik çıkarımı tekniklerini uygulamaya yönelik kapsamlı araçlar sunar. Bu kütüphaneler, SIFT, HOG ve önceki bölümlerde ele aldığımız diğer algoritmaların verimli uygulamalarını sağlar. Derin öğrenme yaklaşımlarıyla çalışırken TensorFlow ve PyTorch gibi çerçeveler paha biçilmezdir. Daha fazla bilgi edinmek için OpenCV eğitimimize başlayabilirsiniz.

Ses işleme görevleri, MFCC ve diğer akustik özellikleri çıkarmada başarılı olan LibROSA gibi kütüphanelerle basitleştirilir. PyAudioAnalysis ise ses analizi görevleri için üst düzey arayüzlerle bu yetenekleri genişletir.

Zaman serisi verileri için tsfresh ve Featuretools özellik çıkarım sürecini otomatikleştirir. Bu kütüphaneler, zamansal verinizden ilgili özellikleri otomatik olarak üretebilir ve seçebilir; böylece özellik mühendisliği yerine model geliştirmeye odaklanmayı kolaylaştırır.

Özellik Çıkarımı Örneği

Bilgimizi bazı uygulamalı örneklerle pratiğe dökelim. Bilgisayarla görmenin en yaygın uygulamalarından biri olan görüntü özellik çıkarımıyla başlayacağız.

OpenCV kullanarak görüntü özellik çıkarımı 

Önce gerekli kütüphaneleri içe aktaralım

# Import required libraries
import cv2
import numpy as np
import matplotlib.pyplot as plt

Şimdi, ilgili özellikleri çıkarmak için bir görüntü yükleyelim. Bu örnekte, internetten indirilen bir Godzilla görselini kullanacağız.

# Load the image
image = cv2.imread('godzilla.jpg')

# Convert BGR to RGB (OpenCV loads in BGR format)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Display the original image
plt.imshow(image_rgb)
plt.title('Original Image')
plt.axis('off')
plt.show()

Çıktı:

Kenar tespiti uygulamadan önce görüntümüzü ön işlemden geçirmemiz gerekir. Bunu şu şekilde yapıyoruz:

# Convert the image to grayscale
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Apply Gaussian blur to reduce noise
blurred = cv2.GaussianBlur(gray_image, (5, 5), 0)

Son olarak, Canny kenar tespiti algoritmasını uygulayalım ve sonuçları görselleştirelim:

# Apply Canny edge detection
edges = cv2.Canny(blurred, threshold1=100, threshold2=200)

# Display the results
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(image_rgb)
plt.title('Original Image')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(edges, cmap='gray')
plt.title('Edge Detection')
plt.axis('off')

plt.tight_layout()
plt.show()

Çıktı:

Canny kenar algılayıcı, görüntümüzdeki önemli sınırları ve özellikleri belirlemeye yardımcı olur; bu da daha ileri analizler veya makine öğrenimi modellerine girdi olarak kullanılabilir.

LibROSA ile sesten MFCC çıkarımı

Ses dosyalarını işlemeye başlamadan önce gerekli kütüphaneleri kurmamız gerekir. LibROSA Python'un standart kütüphanesine dahil olmadığından, pip ile kuracağız:

# Install required libraries
# Run these commands in your terminal or command prompt
pip install librosa
pip install numpy
pip install matplotlib

LibROSA, müzik ve ses analizi için tasarlanmış güçlü bir kütüphanedir; bu nedenle onu ve diğer gerekli kütüphaneleri içe aktararak başlayalım:

# Import required libraries
import librosa
import librosa.display
import numpy as np
import matplotlib.pyplot as plt

Ses dosyaları dalga formu formatında çok miktarda bilgi içerir. Bu verilerle çalışmak için önce programımıza yüklememiz gerekir. LibROSA, ses dosyasını analiz edebileceğimiz bir formata dönüştürerek bunu yapmamıza yardımcı olur:

# Load the audio file
# Duration is limited to 10 seconds for this example
audio_path = 'audio_sample.wav'
y, sr = librosa.load(audio_path, duration=10)

# Display the waveform
plt.figure(figsize=(10, 4))
plt.plot(y)
plt.title('Audio Waveform')
plt.show()

Çıktı:

Artık sesimizi yüklediğimize göre, ondan anlamlı özellikler çıkarmamız gerekiyor. Kulaklarımız sesleri doğal olarak farklı frekans bileşenlerine ayırır ve MFCC bu süreci taklit eder. Bu katsayıları hesaplamak için librosa'nın özellik çıkarım işlevini kullanırız:

# Extract MFCC features
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)

# Display the MFCC
plt.figure(figsize=(10, 4))
librosa.display.specshow(mfccs, x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('MFCC')
plt.show()

Çıktı:

Burada n_mfcc=13 olarak ayarladık; çünkü ilk 13 katsayı genellikle konuşma tanıma gibi görevlerde yardımcı olan sesin en önemli yönlerini yakalar. Ortaya çıkan görselleştirme, bu özelliklerin zaman içinde nasıl değiştiğini gösterir; daha parlak renkler daha yüksek değerleri temsil eder.

tsfresh ile zaman serisi verilerinden özellik çıkarımı

Önce gerekli kütüphaneleri kuralım. Finansal verileri almak için yfinance kullanacağız; özellik çıkarımı için de tsfresh kullanacağız:

# Install required libraries
# Run these commands in your terminal or command prompt
pip install tsfresh
pip install pandas
pip install numpy
pip install matplotlib
pip install yfinance

Şimdi kütüphanelerimizi içe aktaralım ve gerçek finansal veriler çekelim:

# Import required libraries
import pandas as pd
import numpy as np
from tsfresh import extract_features
from tsfresh.feature_extraction import MinimalFCParameters
import matplotlib.pyplot as plt
import yfinance as yf

Gerçek hisse senedi verisi alalım. Örnek olarak Apple'ın hisse verilerini kullanacağız:

# Download Apple's stock data for the last 2 years
aapl = yf.Ticker("AAPL")
df = aapl.history(period="2y")

# Prepare the data in the format tsfresh expects
df_tsfresh = pd.DataFrame({
    'id': [0] * len(df),  # Each time series needs an ID
    'time': range(len(df)),
    'closing_price': df['Close']  # We'll use closing prices
})

# Display first few rows of our data
print("Original stock data shape:", df_tsfresh.shape)
print("\nFirst few rows:")
print(df_tsfresh.head())

Çıktı:

Şimdi finansal zaman serisi verilerimizden özellikler çıkaralım:

# Set up the feature extraction parameters
extraction_settings = MinimalFCParameters()

# Extract features automatically
extracted_features = extract_features(df_tsfresh, 
                                   column_id='id', 
                                   column_sort='time',
                                   column_value='values',
                                   default_fc_parameters=extraction_settings)

# Display the extracted features
print("\nExtracted features shape:", extracted_features.shape)
print("\nExtracted features:")
print(extracted_features.head())

Çıktı:

Burada, hangi özelliklerin çıkarılacağını belirtmek için MinimalFCParameters() kullanıyoruz. Bu, ortalama, varyans ve trend özellikleri gibi verimizdeki örüntüleri anlamak için gerekli temel zaman serisi özelliklerini verir.

Özellik Çıkarımındaki Zorluklar

Özellik çıkarımıyla çalışırken sık sık zorluklarla karşılaşırız.

Yüksek boyutluluk ve hesaplama kısıtları, büyük veri kümeleriyle uğraşırken sıklıkla ortaya çıkar. Örneğin, yüksek çözünürlüklü görüntülerden veya uzun ses dosyalarından özellik çıkarmak önemli miktarda bellek ve işlem gücü tüketebilir.

Alakasız veya yinelenen özellikler nedeniyle aşırı uyum da yaygın bir sorundur. Çok fazla özellik çıkarıldığında, modeller anlamlı örüntüler yerine gürültüyü öğrenebilir. Bu durum, binlerce özelliğin üretilebildiği görüntü ve ses işlemede özellikle yaygındır.

Bu zorlukların üstesinden gelmek için şu stratejileri göz önünde bulundurun:

  • İlgili özellikleri seçmek için alan bilgisini kullanın
  • Boyutu azaltmak için özellik seçimi yöntemlerini uygulayın
  • Veri türünüze uygun uygun özellik mühendisliği tekniklerini uygulayın

Bu zorluklar, özellik zenginliği ile hesaplama verimliliği arasında dikkatli bir değerlendirme ve denge gerektirir.

Sonuç

Özellik çıkarımı, ham veriyi anlamlı temsillere dönüştüren, makine öğreniminde temel bir beceridir. OpenCV, LibROSA ve tsfresh ile yaptığımız uygulamalı örneklerde, farklı veri türlerinden nasıl özellik çıkarılacağını gördük. Bu teknikleri ve zorluklarını anlayarak etkili makine öğrenimi modelleri kurabiliriz.

Daha derine inmeye hazır mısınız? Şu kaynaklara göz atın:

Özellik Çıkarımı Hakkında SSS

Özellik çıkarımı ile özellik seçimi arasındaki fark nedir?

Özellik çıkarımı mevcut veriden yeni özellikler oluştururken, özellik seçimi en ilgili mevcut özellikleri seçer.

Özellik çıkarımı aşırı uyumu azaltabilir mi?

Evet, özellik çıkarımı verinin daha kompakt bir temsilini oluşturarak aşırı uyumu azaltabilir.

Özellik çıkarımı model performansını nasıl iyileştirir?

Veri karmaşıklığını azaltır ve önemli örüntüleri vurgular; bu da daha iyi model doğruluğu ve verimlilik sağlar.

Ne zaman özellik çıkarımı kullanmalıyım?

Yüksek boyutlu verilerle uğraşırken veya verinizdeki temel örüntüleri yakalamanız gerektiğinde özellik çıkarımı kullanın.

Yazar

Rajesh Kumar

Ben bir veri bilimi içerik yazarıyım. YZ/ML/DS konuları etrafında içerik üretmeyi seviyorum. Ayrıca yeni YZ araçlarını keşfediyor ve onlar hakkında yazıyorum.

Konular

İlgili