Veritabanından 1d veri farklı kümeleri belirleme


24

Farklı düğümler arasında veri transferleri veritabanı tablosu var. Bu büyük bir veri tabanıdır (yaklaşık 40 milyon transferle). Özniteliklerden biri, 0 byte ile 2 tera byte arasında değişen bayt sayısı (nbyte) transferidir. Nbaytları kümelemek isterim ki, k kümeleri verildiğinde bazı x1 transferleri k1 kümesine, x2 k2 vb.

Kullandığım terminolojiden neyle gittiğimi tahmin etmiş olabilirsiniz: K-anlamına gelir. Bu 1d veri çünkü nbytes umrumda olan tek özellik. Bunun için farklı yöntemler ararken EM'nin kümelenme dışı bir yaklaşımla birlikte birkaç kez bahsedildiğini gördüm. Bu soruna nasıl yaklaşılacağına dair görüşlerinizi bilmek istiyorum (özellikle kümelemeyi veya kümelememeyi).

Teşekkürler!


"X1 transfer", "x2 transfer" vb. Nedir? "Transfer tipi" ikinci bir değişken midir?
Peter Flom - Monica'yı yeniden kurun

x1 transferleri, bu 500 transferin bazı değerlerin etrafında transfer büyüklüğüne sahip olduğunu söylememin bir yoludur (bu, bu küme için k-aracındaki ortalama olacaktır).
Shaun,

5
Kümelenme konusunda uzman değilim, ancak çok fazla veri ve sadece 1 boyutla, farklı bant genişlikleri kullanarak sadece bazı çekirdek yoğunluğu grafikleri yapabilir misiniz ve ne kadar mod / tepe noktası bulduğunuza ve sonucun nasıl göründüğüne bakabilir misiniz? sizin için faydalı olurdu.
gung - Reinstate Monica

1
Küme yapıp yapmamayı siz istediniz. Kümelemeden hedefiniz ne olurdu? Kümeleri başka bir amaç için kullanır mısınız, yoksa bu teorik ilgi alanı mı?
Peter Flom - Monica'yı yeniden kurun

Tablodaki diğer özniteliklerden bazıları kullanıcı adı, başlangıç ​​ve bitiş tarihleridir. Umudum transfer büyüklüğüne göre transferleri kümelemekle, o zaman yılın hangi ayında kimin transfer ettiğini görmek için belirli bir transferin diğer niteliklerine başvurabilirim. Bu gözlemle ne yapacağız, henüz bilmiyorum. Ama bu nereye gideceğim tür.
Shaun,

Yanıtlar:


43

Bir boyutlu veride küme analizi kullanmayın.

Küme analizi genellikle çok değişkenli bir tekniktir. Ya da onu daha iyi anlatabilmeme izin verin: tek boyutlu veriler için - tamamen sıralı olarak - çok daha iyi teknikler var. Burada k-aracı ve benzer teknikleri kullanmak, onları 1-d durum için optimize etmek için yeterince çaba göstermediğiniz sürece, toplam bir atıktır.

Sadece size bir örnek vermek gerekirse: k-araçları için, ilk rastgele tohumları k rastgele nesneler olarak kullanmak yaygındır. Tek boyutlu veriler için, bu sadece uygun miktarlarını kullanarak daha iyi yapmak oldukça kolaydır (/ 2k 1 / 2k 3, 5 / 2k vs.), veri sıraladıktan sonra bir kez bu başlangıç noktasından optimize sonra, vb. Bununla birlikte, 2B veriler tamamen sıralanamaz. Ve bir ızgarada, muhtemelen boş hücreler olacaktır.

Ayrıca küme demezdim. Onu çağırır aralık . Gerçekten yapmak istediğiniz şey aralık sınırlarını optimize etmektir. K-aracı yaparsanız, her bir nesneyi başka bir kümeye taşınması gerekiyorsa test eder. Bu, 1B'de bir anlam ifade etmiyor: sadece aralık sınırındaki nesnelerin kontrol edilmesi gerekiyor. Açıkçası çok daha hızlı, çünkü orada sadece ~ 2k nesneler var. Zaten başka aralıkları tercih etmiyorlarsa, daha merkezi nesneler de olmaz.

Örneğin, Jenks Natural Breaks optimizasyonu gibi tekniklere bakmak isteyebilirsiniz .

Veya bir çekirdek yoğunluğu tahmini yapabilir ve orada bölünecek yoğunluğun yerel asgari değerine bakabilirsiniz. İşin güzel yanı, bunun için k belirtmenize gerek yok!

PS, lütfen arama işlevini kullanın. İşte 1-d veri kümelemesi ile ilgili kaçırdığınız bazı sorular:


Kuantiller, kümelere mutlaka uymuyor. Bir 1d dağıtımı, her birinin verinin% 10'unu tuttuğu ve sonuncusu verilerin% 80'ini içeren 3 doğal kümeye sahip olabilir. Bu yüzden buraya kümelemenin mümkün olduğunu düşünüyorum, ancak tohumları akıllıca toplayarak veya başka fikirler kullanarak çalışmayı optimize etmenin mantıklı olduğu konusunda hemfikir olduğumu düşünüyorum.
Bitwise

Kuantiller muhtemelen optimize etmek için iyi tohum noktalarıdır , ben de bunu kastediyordum. Ve sadece 1D'de yapabileceklerinize bir örnek vermek gerekirse, 2+ boyutta iyi çalışmaz.
Anony-Mousse,

Quantiles'i tohum olarak kullanmanın bir şans olacağını kabul ediyorum, ancak yine de bazı rastgele başlangıçlar deneyeceğim (verdiğim gibi). Her durumda, en iyi yöntem sadece histogram / yoğunluk grafiğine bakmak ve tohumları manuel olarak seçmek ve daha sonra bunları kümelemeyle optimize etmek olacaktır. Bu çok hızlı bir şekilde iyi bir çözüme kavuşacaktır.
Bitwise

3
Jenks olan 1D k-anlamına gelir.
whuber

1
@whuber matematiksel olsa bile, umarım verilerin sıralanabilmesi için yeterince zekidir . Lloyd yaklaşımını 1 boyutlu verilerde k-aracı yapmak için kullanırsanız, aptalsınızdır, çünkü atlayabileceğiniz birçok hesaplama yapıyorsunuzdur. Ve çoğu insan için, k-anlamına gelir Lloyd. Bazı insanlar gereksiz yeniden hesaplamalar yapmaktan kaçınıyor.
Anony-Mousse

1

Sorunuz kümelenmeli mi yoksa kümelemek için hangi yöntemi kullanmalısınız?

Kümelemeniz gerekip gerekmediğine ilişkin olarak, verilerinizi otomatik olarak bölümlere ayırmak isteyip istemediğinize bağlıdır (örneğin, bu bölümlemeyi birkaç kez tekrarlamak istiyorsanız). Bunu yalnızca bir kez yapıyorsanız, değerlerin dağılımının histogramına bakabilir ve yorumlarda önerildiği gibi gözle bölümlendirebilirsiniz. Yine de veriye göz atmanızı öneririm, çünkü kaç tane küme istediğinizi ve kümelenmenin "çalışıp çalışmadığını" belirlemenize yardımcı olabilir.

Küme türüne ilişkin olarak, verilerde "gerçek" kümeler varsa, k-araçları iyi olmalıdır. Histogramda herhangi bir küme görmüyorsanız, yine de kümelemenin bir anlamı yoktur, çünkü veri aralığınızın herhangi bir bölümü geçerli kümelere neden olur (veya kmean'ların rasgele başlatılması durumunda, farklı kümeler elde edersiniz) Her koşmak).


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.