Tesadüfi Özellikler (Random Features), makine öğrenmesinde, özellikle çekirdek yöntemleri (kernel methods) bağlamında kullanılan bir tekniktir. Büyük veri kümeleriyle çalışırken çekirdek yöntemlerinin hesaplama karmaşıklığını azaltmaya yarar. Temelde, orijinal veriyi daha düşük boyutlu bir uzaya rastgele bir şekilde eşleyerek, çekirdek yöntemlerini uygulamayı daha verimli hale getirir. Bu yöntem, çekirdek yaklaşımı (kernel approximation) olarak da bilinir.
Makine öğrenmesinde, doğrusal olmayan (non-linear) ilişkileri modellemek için Çekirdek Yöntemleri sıklıkla kullanılır. Ancak, bu yöntemlerin hesaplama karmaşıklığı, veri kümesi boyutuyla birlikte önemli ölçüde artar. Tesadüfi Özellikler, bu sorunu çözmek için geliştirilmiş bir yaklaşımdır. Veriyi rastgele bir şekilde daha düşük boyutlu bir uzaya eşleyerek, çekirdek yöntemlerinin uygulanmasını daha hızlı ve verimli hale getirir.
Çekirdek Yöntemleri <a name="çekirdek-yöntemleri"></a>: Veriyi daha yüksek boyutlu bir uzaya eşleyerek, doğrusal olmayan ilişkileri modellemeyi amaçlayan bir dizi algoritmadır. Destek Vektör Makineleri (SVM), çekirdek yöntemlerine bir örnektir. Çekirdek fonksiyonları, bu eşlemeyi açıkça gerçekleştirmeden, iki veri noktası arasındaki benzerliği ölçmek için kullanılır.
Mercer Teoremi <a name="mercer-teoremi"></a>: Bir fonksiyonun bir çekirdek fonksiyonu olabilmesi için gerekli ve yeterli koşulları belirtir. Temel olarak, bir çekirdek fonksiyonunun, bir iç çarpım uzayında bir eşlemeyi temsil edebilmesi için pozitif yarı kesin (positive semi-definite) olması gerektiğini söyler.
Bozner (Bochner) Teoremi <a name="bochner-teoremi"></a>: Zamanla değişmeyen (stationary) bir çekirdek fonksiyonunun, bir olasılık yoğunluk fonksiyonunun Fourier dönüşümü olması gerektiğini belirtir. Bu teorem, tesadüfi özelliklerin teorik temelini oluşturur.
Tesadüfi Özelliklerin temel prensibi, Bozner (Bochner) Teoremi'ne dayanır. Bu teorem, zamanla değişmeyen bir çekirdek fonksiyonunun Fourier dönüşümü alınarak, bu çekirdeğe denk bir eşleme (mapping) bulunabileceğini belirtir.
Tesadüfi özellikleri kullanan bazı popüler algoritmalar şunlardır:
Bir k(x, y) çekirdek fonksiyonu için, Bozner (Bochner) Teoremi'ne göre:
k(x, y) = ∫ p(w) exp(iw^T(x - y)) dw
Burada p(w), k(x, y)'nin Fourier dönüşümüdür.
Tesadüfi özellik yaklaşımı, bu integrali Monte Carlo yöntemleriyle yaklaşık olarak hesaplar. N adet rastgele örnek w_i (i=1, ..., N) p(w) dağılımından çekilirse, x verisini φ(x) özellik vektörüne eşleyen bir eşleme şu şekilde tanımlanabilir:
φ(x) = [cos(w_1^T x), sin(w_1^T x), ..., cos(w_N^T x), sin(w_N^T x)] / sqrt(N)
Bu eşleme, k(x, y) çekirdeğine yaklaşım sağlar:
k(x, y) ≈ φ(x)^T φ(y)
import numpy as np
from sklearn.kernel_approximation import RBFSampler
from sklearn.linear_model import SGDClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# Sentetik veri kümesi oluşturma
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# RBF çekirdeği için rastgele özellikler oluşturma
rbf_feature = RBFSampler(gamma=0.5, n_components=100, random_state=42)
X_train_transformed = rbf_feature.fit_transform(X_train)
X_test_transformed = rbf_feature.transform(X_test)
# SGDClassifier ile sınıflandırma (doğrusal model)
clf = SGDClassifier(max_iter=500, random_state=42)
clf.fit(X_train_transformed, y_train)
# Başarıyı değerlendirme
accuracy = clf.score(X_test_transformed, y_test)
print(f"Başarı: {accuracy}")
Bu kod, sklearn
kütüphanesini kullanarak bir RBF (Gaussian) çekirdeği için rastgele özellikler oluşturur ve ardından doğrusal bir sınıflandırıcı (SGDClassifier) ile sınıflandırma yapar.