Temel problem
İşte benim temel sorun: Sayıları ile çok çarpık bazı değişkenler içeren bir veri kümesini kümelenmeye çalışıyorum. Değişkenler çok sayıda sıfır içerir ve bu nedenle kümeleme prosedürüm için çok bilgilendirici değildir - k-ortalama algoritması olması muhtemeldir.
Güzel, sadece değişkenleri kare kök, kutu cox veya logaritma kullanarak dönüştürün. Ancak değişkenlerim kategorik değişkenlere dayandığından, diğerlerini (kategorik değişkenin diğer değerlerine dayalı olarak) bırakırken bir değişkeni (kategorik değişkenin bir değerine dayalı olarak) kullanarak bir önyargı oluşturabileceğimden korkuyorum. .
Biraz daha ayrıntıya girelim.
Veri kümesi
Veri kümem öğelerin satın alınmasını temsil ediyor. Öğelerin farklı kategorileri vardır, örneğin renk: mavi, kırmızı ve yeşil. Satın alımlar daha sonra, örneğin müşteriler tarafından gruplandırılır. Bu müşterilerin her biri veri kümemin bir satırı ile temsil ediliyor, bu yüzden bir şekilde müşterileri satın almam gerekiyor.
Bunu yapmanın yolu, öğenin belirli bir renk olduğu satın alma sayısını saymaktır. Bunun yerine tek bir değişken color
, üç değişkenli ile bitirmek count_red
, count_blue
ve count_green
.
İşte örnek için bir örnek:
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
Aslında, sonuçta mutlak sayımlar kullanmıyorum, oranlar (müşteri başına satın alınan tüm öğelerin yeşil öğelerinin oranı) kullanıyorum.
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 0.71 | 0.29 | 0.00 |
-----------------------------------------------------------
c1 | 0.43 | 0.57 | 0.00 |
-----------------------------------------------------------
c2 | 0.09 | 0.91 | 0.00 |
-----------------------------------------------------------
c3 | 0.31 | 0.62 | 0.08 |
-----------------------------------------------------------
Sonuç aynı: Renklerimden biri için, örneğin yeşil (kimse yeşili sevmez), çok sayıda sıfır içeren sola eğik bir değişken alıyorum. Sonuç olarak, k-araçları bu değişken için iyi bir bölümleme bulamamaktadır.
Öte yandan, değişkenlerimi standartlaştırırsam (çıkarma ortalaması, standart sapmaya bölün), yeşil değişken küçük varyansı nedeniyle "patlar" ve diğer değişkenlerden çok daha geniş bir aralıktan değerler alır, bu da daha fazla görünmesini sağlar. k-anlamı için olduğundan daha önemlidir.
Bir sonraki fikir sk (r) ewed yeşil değişkenini dönüştürmektir.
Çarpık değişkeni dönüştürme
Yeşil değişkeni karekök uygulayarak dönüştürürsem biraz daha az çarpık görünür. (Burada yeşil değişken, karışıklığı sağlamak için kırmızı ve yeşil olarak çizilmiştir.)
Kırmızı: orijinal değişken; mavi: kare kök tarafından dönüştürülür.
Diyelim ki bu dönüşümün sonucundan memnunum. Şimdi dağılımları iyi görünse de kırmızı ve mavi değişkenleri ölçeklendirmeli miyim?
Sonuç olarak
Başka bir deyişle, yeşil rengi tek bir şekilde işleyerek, ancak kırmızı ve maviyi hiç kullanmadan kümeleme sonuçlarını bozabilir miyim? Sonunda, her üç değişken de birbirine aittir, bu yüzden aynı şekilde ele alınmamalıdırlar mı?
DÜZENLE
Açıklığa kavuşturmak için: k-araçlarının muhtemelen sayı temelli veriler için gidilecek yol olmadığının farkındayım . Ancak sorum gerçekten bağımlı değişkenlerin tedavisi ile ilgili. Doğru yöntemi seçmek ayrı bir konudur.
Değişkenlerimdeki doğal kısıtlama
count_red(i) + count_blue(i) + count_green(i) = n(i)
, n(i)
toplam müşteri satın alma sayısı i
.
(Veya count_red(i) + count_blue(i) + count_green(i) = 1
göreli sayımlar kullanılırken eşdeğer olarak .)
Değişkenlerimi farklı şekilde dönüştürürsem, bu kısıtlamadaki üç terime farklı ağırlıklar vermeye karşılık gelir. Amacım müşteri gruplarını en iyi şekilde ayırmaksa, bu kısıtlamayı ihlal etmekle ilgilenmeli miyim? Yoksa "son, araçları haklı çıkarıyor mu?"
count_red
, count_blue
ve count_green
veri sayar bulunmaktadır. Sağ? Öyleyse satırlar nelerdir - öğeler? Ve öğeleri kümeleyecek misin?