Bir bilgisayar mühendisi için programlama dili, öğrendiklerini sınadığı, deneyler yaptığı bir laboratuardır ve mühendisler deneylerini, kestiremedikleri sonuçları gözlemlemek için değil, öngördükleri sonuçları doğrulamak için yapar...

Çekirdek Metodu I - Boyut Yüseltmenin Ne Faydası Olabilir?

Bizi tercih eden her öğrenciye tablet veriyoruz.
www.iste.edu.tr
Çekirdek metodu ile ilgili yazı dizisinin ilk parçası. Bir veri kümesini neden daha yüksek boyutlu uzaylara taşımak isteyelim?

Şimdiye kadar hiçbir konuyu yazı dizisi şeklinde yayınlamadım. Ama bu seferki taslak biraz uzun oldu. Bloga birşeyler yazmak için de çok zamanım olmuyor zaten. O yüzden konuyu, fırsat buldukça parçalar halinde yazacağım. Tabi ki yine detaylar ve kod örnekleri ile birlikte...

Belli boyutlardaki bir uzayda yer alan noktaları bu noktaların koordinatlarının doğrusal olmayan kombinasyonlarını kullanarak daha yüksek boyutlu başka bir uzaya eşlediğimizi düşünelim. Çekirdek metodu, bu doğrusal olmayan dönüşümü yapmak ve yeni uzaydaki koordinatları hesaplamak zorunda kalmadan yeni uzayda bazı işlemlerin sonuçlarını hesaplayabilmemizi sağlayan harika bir kısayol. Çekirdek metodu sayesinde normalde yapılması imkansız olan bazı işlemlerin de sonuçlarını öğrenebiliyoruz. Mesela yazı dizisinin sonunda, yöntemi problemlere nasıl uyarlayabileceğimizi örneklemek için sonsuz boyutlu bir uzayda, konumlarını hesaplamamızın mümkün olmadığı ama oralarda bir yerlerde yaşadığını bildiğimiz noktalar arasındaki mesafeleri, o uzayı hiç ziyaret etmeden hesaplayabileceğiz.

Şimdi yanıtlamaya çalışacağımız ilk soru şu; neden doğrusal olmayan bir dönüşüm kullanarak boyut yükseltmek isteyelim?

Ana Başlıklar

Boyut Yükseltmenin Ne Faydası Olabilir?

Önce boyuttan kasıt ne, onu özetleyelim. Bir veri kümesindeki her örnek, örneği temsil eden değerlerin sayısı kadar boyutu olan bir uzayda bir nokta olarak düşünülebilir. Bu noktaları ifade etmek için kullandığımız vektörler, uzayın merkezinden örneği temsil eden noktalara uzanır. Vektörlerin her bir bileşeni, noktaların uzaydaki bir koordinatıdır. Vektörün bileşenlerinin sayısı ne kadar az olursa, o vektör üzerinde yapacağımız işlemlerin sayısı da o kadar az olur. Peki o zaman neden bir veri kümesini içinde bulunduğu uzaydan daha yüksek boyutlu bir uzaya taşımak isteyelim? Bu soruyu çok basit bir örnek vererek ve örneğimizi Matlab'in bize sunduğu olanakları kullanıp grafiklere dökerek yanıtlayalım.

Öncelikle 2 boyutlu uzayda doğrusal olarak ayırt edilemeyecek iki küme oluşturalım ve bunların grafiğini çizelim:

% 100'er elemanlı iki küme oluşturalım.
kacarNokta=100;
kacBoyutlu=2;
d=linspace(-pi,pi,kacarNokta); % [-pi,+pi] aralığını parçalara bölerek ver
yaricap=1; % İlk kümenin noktalarının merkeze uzaklıkları
noktalar1=yaricap*[sin(d);cos(d)]'; % Bir çemberi örneklemiş olduk aslında
% Düzgün bir çember olmasın. Noktaları etrafa hafifçe ve rastgele saçalım.
noktalar1=noktalar1+yaricap*0.1*randn(kacarNokta,kacBoyutlu);

% Aynı şekilde, ama merkeze daha yakın 100 nokta daha.
yaricap=0.15;
noktalar2=yaricap*[sin(d);cos(d)]';
noktalar2=noktalar2+yaricap*0.5*randn(kacarNokta,kacBoyutlu);
noktalar=[noktalar1;noktalar2];

% Şimdi bu kümeleri görelim.
f1=figure;hold on;axis equal;
scatter(noktalar(1:kacarNokta,1),noktalar(1:kacarNokta,2),'.red');
scatter(noktalar(kacarNokta+1:end,1),noktalar(kacarNokta+1:end,2),'.blue');

Yukarıdaki kod, kümeleri oluşturup aşağıdaki gibi bir grafik çizilmesini sağlayacak (noktalar rastgele olarak dağıtıldığı için kodu her çalıştırdığınızda aşağıdakinden farklı kümeler oluşacak). Adım adım ilerleyeceğimiz için açılacak olan grafikleri kapatmayın. Örnek ilerledikçe bu grafikler üzerinde yeni çizimler yapacağız.

Rastgele, dairesel olarak oluşturduğumuz nokta kümeleri.

Bu iki kümeyi doğrusal olarak ayıramayacağımız ortada. Noktaları 3 boyutlu uzaydaki başka noktalara eşleyen şöyle bir fonksiyonumuz olsun:

Noktaları 3 boyutlu uzaya eşleyecek fonksiyon.

Burada Φ(x) fonksiyonu 2 boyutlu bir vektör alıp, 3 boyutlu yeni bir vektör döndürmekte. Yeni koordinatlar belirlenirken, 2 boyutlu uzaydaki koordinatların doğrusal olmayan kombinasyonlarının kullandığına dikkat edin. Fonksiyonu neden bu şekilde seçtiğimizi ilerleyen kısımlarda detaylandıracağız. Şimdi kodlara devam edelim; noktaların yeni uzaydaki yerlerini bulalım ve grafiklerini çizelim:

noktalar3b=zeros(kacarNokta*2,3);
for i=1:kacarNokta*2
    noktalar3b(i,1)=noktalar(i,1).^2;
    noktalar3b(i,2)=sqrt(2)*noktalar(i,1)*noktalar(i,2);
    noktalar3b(i,3)=noktalar(i,2)^2;
end

% 3 boyutlu uzaydaki yeni noktalarımızı çizelim.
f2=figure;hold on;axis equal;
scatter3(noktalar3b(1:kacarNokta,1),noktalar3b(1:kacarNokta,2), ...
         noktalar3b(1:kacarNokta,3),'.red');
scatter3(noktalar3b(kacarNokta+1:end,1),noktalar3b(kacarNokta+1:end,2), ...
         noktalar3b(kacarNokta+1:end,3),'.blue');

% Sınırları ve grafiğe bakış açımızı ayarlayalım.
xlim([0 1]);ylim([-1 1]);zlim([0 1]);
view(-106,40);

Çizilen grafikte Φ fonksiyonunun, noktalarımızı 3 boyutlu uzayda yer alan aşağıdaki noktalara eşlediğini görüyoruz:

Dönüşümden sonra, 3 boyutlu uzaydaki yeni noktalar.

Grafiği çizdirildikten sonra istediğiniz gibi döndürüp inceleyebilirsiniz. Kümelerin bu uzayda doğrusal olarak çok rahat bir şekilde ayırt edilebileceğini açıkça görebiliyoruz. Şimdi beynimizin "grafik işlemcisi"ne yüklenip göz kararı ile bu iki kümeyi ayıran bir düzlem denklemi belirlemeye çalışalım. Mesela yukarıdaki grafikte, xy düzlemini 45 derecelik açıyla kesen z=-x düzlemini hayal edin. Bu düzlemi merkezden +x tarafına hafif ötelersek (örneğin z=-x+0.3) bu iki kümeyi çok güzel ayıracak gibi görünüyor.

colormap(gray); % Yüzeyde renklendirme istemiyoruz, kafa karıştırıcı görünmesin.
ezsurf('-x+0.3',[-0.5 0.5],f2); % z=-x+0.3 düzlemini [-0.5 0.5] aralığında çizdirelim.
xlim([0 1]);ylim([-1 1]);zlim([0 1]); % Sadece ilgilendiğimiz alan görünsün.

Ayırıcı düzlem.

Normalde 2 boyutlu uzaydayken doğrusal olarak ayırt edilemeyen kümelerimizi 3 boyutlu uzaydaki noktalara doğrusal olmayan bir fonksiyon kullanarak eşlediğimizde bulduğumuz yeni noktalar, doğrusal olarak ayırt edilebilir hale gelebiliyor. Peki 3 boyutlu uzayda kümeleri ayırt edebildiğini gördüğümüz bu düzlemi dönüşümün tersini uygulayarak eski uzaya taşısak acaba nasıl bir şey ile karşılaşırız? Yeni koordinatlara x', y' ve z' diyelim ve karşılık gelen ifadeleri yerlerine yazalım:

Ayırıcı düzlemimizin denklemini iki boyutlu uzaya döndürünce elde ettiğimiz ifade.

Yaptığımız tek şey, z' yerine y2, x' yerine de x2 yazmaktı. Elde ettiğimiz denklem, yarıçapının karesi 0.3'e eşit olan bir çemberin denklemi. İlginç değil mi? Doğrusal bir ayırıcı bulamadığımız kümeleri doğrusal olmayan bir dönüşümle daha çok boyutlu yeni bir uzaya eşleyip orada doğrusal bir ayırıcı bulabildik. Ama yeni uzayda bulduğumuz düzlem, ilk uzayımızda aslında bir çembere karşılık geliyormuş.

Bu çemberi de çizip örneği ve konu ile ilgili ilk yazıyı burada tamamlamış olalım:

ezplot('y^2=-x^2+0.3',f1);

3 boyutlu uzaydaki ayırıcı düzlemin 2 boyutlu uzaydaki karşılığı.

Sonraki: Çekirdek Metodu II - Çekirdek Metodu ve Polinomal Çekirdekler

Sayfayı
Yayın tarihi: 08 Mart 2016 Salı, 23:10
Anahtar kelimeler: çekirdek metodu, yüksek boyutlu uzaylara eşleme, kernel trick

Yorum Gönder

 
Yorumunuzu -1. yoruma yanıt olarak gönderiyorsunuz. Yanıtlamayı iptal etmek için buraya tıklayabilirsiniz.

 

Yorumlar (2)

hasan
Yanıtla
05 Nisan 2016 Salı, 19:06
#1

salam necesiz/ siteniz cox gozeldi. Men azerbaycandan izliyorum bu siteni. cok derin bilgiler paylasmiwsiz/ cox sagolun. Emeyinize sagliq

Hüseyin Atasoy
Yanıtla
10 Nisan 2016 Pazar, 22:40
#2

Teşekkür ederim.

 
 
Sayfa 38 sorgu ile 0.007 saniyede oluşturuldu.
Atasoy Blog v4 © 2008-2017 Hüseyin Atasoy