Kümelemeden önce verileri ölçeklendirmek önemli mi?


44

Kümelemeden önce özelliklerde scale işlevini çalıştırmanız gerektiğini öneren bu öğreticiyi buldum (verileri z puanlarına dönüştürdüğüne inanıyorum).

Bunun gerekli olup olmadığını merak ediyorum. Çoğunlukla soruyorum çünkü verileri ölçeklemediğimde güzel bir dirsek noktası var, ancak ölçeklendiğinde kayboluyor. :)

Yanıtlar:


59

Mesele, davalar arasında iyi bir uzaklık ölçüsüdür.

İki özelliğe sahipseniz, biri vakalar arasındaki farkın büyük, diğeri küçük ise, birincisini neredeyse yalnızca mesafeli sürücü olarak görmeye hazır mısınız?

Örneğin, insanları kiloları ve kilogramı cinsinden ağırlıkları üzerinde kümelendiyseniz, 1kg'lık bir fark, yükseklikteki 1m'lik bir fark kadar önemli midir? Kilogram cinsinden ağırlık ve santimetre cinsinden yükseklik konusunda farklı kümelenmeler almanızın bir önemi var mı? Cevaplarınız sırasıyla "hayır" ve "evet" ise, muhtemelen ölçeklendirmelisiniz.

Öte yandan, Kanada'yı doğu / batı ve kuzey / güney mesafelerine göre kümelendiriyorsanız, o zaman tipik olarak doğu / batıdaki çok daha büyük farklılıklar olsa da, yalnızca kilometre veya kilometrelerde ölçeklendirilmemiş mesafeleri kullanmaktan mutlu olabilirsiniz. (dünyanın eğriliği için boylam ve enlem derecelerini ayarlamak isteyebilirsiniz).


33

Diğer cevaplar doğrudur, ancak bir örnek görerek sorunun sezgisel bir şekilde anlaşılmasına yardımcı olabilir. Aşağıda, iki açık kümeye sahip bir veri kümesi oluşturuyorum, ancak kümelenmemiş boyut kümelenmiş boyuttan çok daha büyük (eksenlerdeki farklı ölçeklere dikkat edin). Normalleştirilmemiş verilere kümelenme başarısız olur. Normalleştirilmiş verilere kümelenme çok iyi çalışıyor.

Aynısı her iki boyutta da kümelenmiş veriler için de geçerlidir, ancak normalleşme daha az yardımcı olacaktır. Bu durumda, bir PCA yapmak daha sonra normalleşebilir, ancak bu yalnızca kümeler doğrusal olarak ayrılırsa ve PCA boyutlarıyla çakışmazsa yardımcı olur. (Bu örnek yalnızca düşük küme sayısından dolayı çok net çalışır)

Sentetik kümelenmiş veriler, hem normalize hem de normalize edilmemiş versiyonlarda k anlamına gelir

import numpy as np
import seaborn
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

rnorm = np.random.randn

x = rnorm(1000) * 10  
y = np.concatenate([rnorm(500), rnorm(500) + 5])

fig, axes = plt.subplots(3, 1)

axes[0].scatter(x, y)
axes[0].set_title('Data (note different axes scales)')

km = KMeans(2)

clusters = km.fit_predict(np.array([x, y]).T)

axes[1].scatter(x, y, c=clusters, cmap='bwr')
axes[1].set_title('non-normalised K-means')

clusters = km.fit_predict(np.array([x / 10, y]).T)

axes[2].scatter(x, y, c=clusters, cmap='bwr')
axes[2].set_title('Normalised K-means')

17

Bu sizin verilere bağlıdır .

Eğer iyi tanımlanmış bir anlamı olan niteliklere sahipseniz. Enlem ve boylam deyin, o zaman verilerinizi ölçeklendirmemelisiniz, çünkü bu bozulmaya neden olur. (K-araçları da kötü bir seçim olabilir - doğal / lonu doğal olarak idare edebilecek bir şeye ihtiyacınız var)

Her bir niteliğin tamamen farklı bir şey olduğu (örneğin ayakkabı boyu ve ağırlığı) karışık sayısal verileriniz varsa, farklı birimlerin ekli (lb, ton, m, kg ...) olması durumunda, bu değerler gerçekten hiçbir şekilde karşılaştırılamaz; Onları z-standartlaştırma onlara eşit ağırlık vermenin en iyi yoludur.

İkili değerleriniz, ayrık nitelikler veya kategorik nitelikleriniz varsa, k-araçlarından uzak durun. K-ortalama ihtiyaçları hesaplamak için araçlar ve ortalama değer verilerinin bu tür anlamlı değildir.


5

Bu yazıda açıklandığı gibi , k-araçları Newton algoritması, yani gradyan tabanlı bir optimizasyon algoritması kullanarak hata fonksiyonunu en aza indirir. Verilerin normalleştirilmesi, bu tür algoritmaların yakınsamasını iyileştirir. Bununla ilgili bazı ayrıntılar için buraya bakın .

Fikir, eğer farklı veri bileşenleri (özellikler) farklı ölçeklere sahipse, o zaman türevler daha kötü / daha yavaş yakınsamaya yol açan daha yüksek değişkenlikle yönler boyunca hizalanma eğilimindedir.


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.