Karma veriler neden öklid tabanlı kümeleme algoritmaları için bir sorundur?


21

Klasik kümeleme ve boyutsallık azaltma algoritmalarının çoğu (hiyerarşik kümeleme, temel bileşen analizi, k-araçları, kendi kendini düzenleyen haritalar ...) özel olarak sayısal veriler için tasarlanmıştır ve girdi verileri bir öklid uzayında noktalar olarak görülür.

Bu, elbette bir sorun, çünkü gerçek dünyadaki birçok soru karışık veriler içeriyor: örneğin otobüsleri incelersek, yükseklik ve uzunluk ve motor boyutu sayılar olacak, ancak renkle de ilgilenebiliriz (kategorik değişken: mavi / kırmızı / yeşil ...) ve kapasite sınıfları (sıralı değişken: küçük / orta / büyük kapasite). Özellikle, bu farklı değişken türlerini aynı anda incelemek isteyebiliriz.

Klasik kümeleme algoslarını karışık verilere genişletmek için bir dizi yöntem vardır, örneğin hiyerarşik kümelemeye veya çok boyutlu ölçeklemeye takmak için bir Gower benzerliği veya giriş olarak bir mesafe matrisi alan diğer yöntemler. Veya örneğin bu yöntem, SOM'un karışık verilere genişletilmesi.

Sorum şu: neden sadece öklid mesafesini karışık değişkenler üzerinde kullanamıyoruz? ya da bunu yapmak neden kötü? Neden sadece kategorik değişkenleri kukla olarak kodlayamıyoruz, tüm değişkenleri gözlemler arasındaki mesafeye benzer bir ağırlığa sahip olacak şekilde normalleştiremiyoruz ve bu matrisler üzerinde olağan algoları çalıştıramıyoruz?

Bu gerçekten kolay ve hiç yapılmadı, bu yüzden çok yanlış olduğunu düşünüyorum, ama kimse bana nedenini söyleyebilir mi? Ve / veya bana bazı referanslar verir misin? Teşekkürler


5
Onları Öklid uzayında puan olarak temsil etmek için verilerinizle istediğiniz her şeyi yapabilirsiniz, ancak özelliklerin anlamı ortadan kalkabilir. Sorun, mekan düzeyinde değil, ölçüm ölçeği seviyesindedir. Sıradan ölçek uygun şekilde ölçülmelidir, kukla kodlama yardımcı olmaz. Asimetrik duyunun ikili ölçeği (mevcut veya yok) doğal olarak Öklid mesafesinden başka bir mesafe metriği gerektirir; artı enterpolasyon problemi (evet ve hayır arasında önemli bir ortalama olamaz).
ttnphns

(devam) Öklid uzayı yaklaşık iki şeydir: sürekli (ince taneli) ve herhangi bir yöne izin verir. Tüm veri türleri, verilerin niteliğinden kaynaklanan farklılıkları karşılamak için böyle bir alan gerektirmez veya karşılamaz.
ttnphns

Hiyerarşik kümeleme her tür benzerlikle çalışır, btw. (Ward gibi bazı durumlar hariç) - özellikle, bazı kategorik / ikili durumlar için anlamlı olan Jaccard katsayısı kullanabilirsiniz.
Anony-Mousse-Monica'yı

Yanıtlar:


5

Bu bir şeyi hesaplayamamakla ilgili değil .

Mesafeler çok anlamlı bir şeyi ölçmek için kullanılır . Bu, kategorik verilerle çok daha erken başarısız olacaktır. Birden fazla değişkenle çalışırsa, bu ...

Ayakkabı boyutu ve vücut kütlesi özelliklerine sahipseniz, Öklid mesafesi de pek mantıklı değildir. X, y, z mesafeler olduğunda iyidir. Öklid mesafesi noktalar arasındaki görüş mesafesi çizgisidir.

Şimdi değişkenleri kukla kodlarsanız , bunun anlamı nedir?

Ayrıca, verileriniz ayrık olduğunda Öklid mesafesi de bir anlam ifade etmez.

Yalnızca x ve y tamsayıları varsa, Öklid mesafesi hala tamsayı olmayan mesafeler verir. Verilerle eşleşmezler. Benzer şekilde, kukla kodlanmış değişkenler için, mesafe bir miktar kukla değişkenle eşleşmez ...

Daha sonra, örneğin k-kümeleme anlamına gelmeyi planladığınızda, bu sadece mesafelerle ilgili değil, ortalamanın hesaplanmasıyla da ilgilidir . Ancak kukla kodlanmış değişkenler için makul bir ortalama yoktur, değil mi?

Son olarak, boyutsallığın laneti var . Değişken sayısını artırdığınızda Öklid mesafesinin azaldığı bilinmektedir. Sahte kodlanmış değişkenler eklemek, mesafe kontrastını oldukça hızlı kaybettiğiniz anlamına gelir. Her şey diğer her şeyle aynıdır, çünkü tek bir kukla değişken tüm farkı yaratabilir.


3

Bu metrik tabanlı kümelenme sorunlarının merkezinde enterpolasyon fikri vardır.

Belirttiğiniz yöntemi kullanın ve ağırlık gibi sürekli bir değişkeni ele alalım. 100kg ve verilerinizde 10kg var. Yeni bir 99kg gördüğünüzde, metrik hiç görmemiş olsanız bile 100kg'a yaklaşmanıza olanak tanır. Ne yazık ki, ayrık veriler için enterpolasyon mevcut değildir.

Bu sorunun başka bir argümanı, bunu yapmanın doğal bir yolu olmadığıdır. R'ye 3 değer atamak ve her çift arasında eşit mesafe yapmak istiyorsunuz, bu imkansız olacaktır. Bunları farklı kategorilere atarsanız ve diyelim ki PCA'yı çalıştırırsanız, aslında aynı kategoriyi yansıttıkları bilgileri kaybedersiniz.


1
Teşekkürler! İnterpolasyon problemini anlıyorum, ancak birçok uygulamada bu bir sorun değil (örneğin, otobüslerin yeşil, kırmızı veya mavi olduğunu ve veri setimizde başka bir renk olmadığını bildiğimizde). Ve kukla değişkenleri standardize etmenin kolay yolları olduğunu düşünüyorum, böylece her kategorik değişken her sayısal değişkeninkine benzer bir "ağırlığa" sahip olur (eğer sayısal değişkenler önceden standartlaştırılmışsa). Veya keyfi olarak farklı değişkenlere ağırlık atamak için ...
Jubo

0

Sınırsız kategorik değerlerle ilgili bir sorun, eğer onları kukla kodlarsanız, bir sıralamayı ve böylece değişkenler için yeni bir anlamı zorlamanızdır. Örneğin maviyi 1, turuncu ve 2 ve yeşil 3 olarak kodlarsanız, turuncu değeri olan bir veri modelinin, yeşil değeri olan bir desene mavi değeri olandan daha yakın olduğunu ima edersiniz.

Bunu ele almanın bir yolu onları yeni özellikler (sütunlar) haline getirmektir. Her farklı değer için yeni bir ikili özellik oluşturursunuz ve bunu true / false olarak ayarlarsınız (başka bir deyişle, ikili değerleri değerleri kodlar ve her biti bir sütun yapar). Bu yeni özellik kümesindeki her veri modeli için, yalnızca bir özellik 1 değerine ve diğer tüm değerlere 0 sahip olacaktır. Ancak bu genellikle 1'den daha fazla özelliğe yakın sentroid değerleri atamak için egzersiz algoritmasını durdurmaz. Bu durum yorumlama sorunlarına neden olabilir, çünkü bu veri alanında anlamsızdır.

"Kapasite sınıfları" yani sıralı kategorilerle aynı probleminiz yoktur, çünkü bu durumda sayısal değerler ataması gerçekleşir.

Ve tabi ki, farklı doğanın veya ölçüm biriminin veya farklı değer aralığının özelliklerini kullanmanız, o zaman değerleri normalleştirmeniz gerekir.

/programming/19507928/growing-self-organizing-map-for-mixed-type-data/19511894#19511894

/programming/13687256/is-it-right-to-normalize-data-and-or-weight-vectors-in-a-som/13693409#13693409


Kategorik değişkenler için "kukla kodlama" ile kastettiğim budur, ama teşekkürler. Ve btw Düzenli faktörler ("kapasite sınıfları") hakkındaki ifadenize katılmıyorum çünkü örneğin arasında seçim yapmanın bir yolu yok. (1,2,3) veya (1,2,100). Bu, mesafe tabanlı bir algoritma için büyük bir fark yaratacaktır.
jubo

0

Cevap aslında oldukça basit, sadece bir kukla değişkenteki bilginin gerçekte ne olduğunu anlamamız gerekiyor. Sahte değişken fikri, faktör düzeylerinin (kategorik değişkenin ayrık değerleri) varlığını veya yokluğunu gösterir. Ölçülemeyen, ölçülemeyen bir şeyi orada olup olmadığı bilgisini saklayarak temsil etmek içindir. Bu nedenle kukla bir değişken, temsil ettiği kategorik değişkenin (veya eksi 1) ayrık değerleri kadar ikili basamaklarla ifade edilir.

Faktör düzeylerini 0/1 değerleri olarak göstermek, doğrusal bir model gibi analitik bir denklemde anlamlıdır (bu, istatistiksel modellerin katsayılarını yorumlayabilenler için kolay bir kavramdır). Bir kukla değişkente, temel kategorik değişkenin bilgisi bit sırasına göre saklanır. Bir giriş örneğini bir özellik boşluğuna eşlemek için bu bitleri boyut olarak kullanırken (benzerlik / mesafe matrisinde olduğu gibi), bitler sırasındaki bilgiler tamamen kaybolur.


1
Teşekkürler! Aslında, kukla kodlanmış kategorik değişkenlerin öklid mesafesinde (belirli) bir anlam ifade ettiği: değerler farklıysa, kare mesafeye 2 ekler, değilse 0 ekler. Ve farklı mankenleri normalleştirebilirsiniz kategori sayısını veya olasılıklarını hesaba katmanın yolları.
jubo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.