Чи потрібно стандартизувати ваші дані перед кластеризацією?


23

Чи потрібно стандартизувати ваші дані перед кластером? У прикладі scikit learnпро DBSCAN, ось вони роблять це у рядку:

X = StandardScaler().fit_transform(X)

Але я не розумію, для чого це потрібно. Зрештою, кластеризація не передбачає особливого розповсюдження даних - це непідвладний метод навчання, тому його мета - вивчити дані.

Чому потрібно було б перетворити дані?


Дякую за детальні відповіді! Як підсумок всіх ваших відповідей: я розумію, що якщо функції будуть на різних масштабах, це може стати проблемою. Однак, якщо показник відстані нормалізується до дисперсії, чи досягається це таким же результатом, що і стандартне масштабування перед кластеризацією? тобто я зазвичай використовую нормоване евклідова відстань , пов'язане - робить це також пом'якшити ефекти масштабування?
Candic3

Відповіді:


19

Нормалізація не завжди потрібна, але вона рідко болить.

Деякі приклади:

K-означає :

Кластеризація K-засобів є "ізотропною" у всіх напрямках простору і тому має тенденцію створювати більш-менш круглі (а не подовжені) кластери. У цій ситуації залишення дисперсій неоднаковим є рівнозначним надаванню більшої ваги змінним з меншою дисперсією.

Приклад у Matlab:

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

% Introduce denormalization
% X(:, 2) = X(:, 2) * 1000 + 500;

opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')
title('K-means with normalization')

введіть тут опис зображення

введіть тут опис зображення

(FYI: Як я можу виявити, чи мій набір даних кластеризований чи не кластеризований (тобто формує один єдиний кластер )

Розподілена кластеризація :

Порівняльний аналіз показує, що результати розподіленої кластеризації залежать від типу процедури нормалізації.

Штучна нейронна мережа (входи) :

Якщо вхідні змінні поєднуються лінійно, як у MLP, тоді рідко необхідно строго стандартизувати входи, принаймні теоретично. Причина полягає в тому, що будь-яке масштабування вхідного вектора може бути ефективно скасовано, змінивши відповідні ваги та ухили, залишивши вас з такими ж результатами, як і раніше. Однак є цілий ряд практичних причин, через які стандартизація входів може зробити навчання швидшим і зменшити шанси зациклюватися на місцевих оптимах. Крім того, зниження ваги та байєсівська оцінка можна зробити зручніше за допомогою стандартизованих входів.

Штучна нейронна мережа (входи / виходи)

Чи варто робити щось із ваших даних? Відповідь - це залежить.

Стандартизація вхідних або цільових змінних, як правило, покращує навчальний процес за рахунок поліпшення числового стану (див. Ftp://ftp.sas.com/pub/neural/illcond/illcond.html ) проблеми оптимізації та забезпечення різних за замовчуванням значення, які беруть участь у ініціалізації та припиненні, є відповідними. Стандартизація цілей також може впливати на цільову функцію.

До стандартизації справ слід підходити обережно, оскільки вона відкидає інформацію. Якщо ця інформація не має значення, стандартизація справ може бути дуже корисною. Якщо ця інформація важлива, то стандартизація випадків може бути згубною.


Цікаво, що зміна одиниць вимірювання може навіть призвести до того, щоб побачити зовсім іншу структуру кластеризації: Кауфман, Леонард та Пітер Дж. Руссоєв. "Пошук груп у даних: вступ до кластерного аналізу". (2005).

У деяких додатках зміна одиниць вимірювання може навіть призвести до того, що можна побачити зовсім іншу структуру кластеризації. Наприклад, вік (у роках) та зріст (у сантиметрах) чотирьох уявних людей наведено в Таблиці 3 та зображено на рисунку 3. Видається, що {A, B) та {C, 0) - це два добре розділені скупчення . З іншого боку, коли висота виражена в стопах, отримуємо таблицю 4 і рисунок 4, де зараз очевидні скупчення {A, C} і {B, D}. Цей розділ повністю відрізняється від першого, оскільки кожен предмет отримав іншого супутника. (Малюнок 4 був би згладжений ще більше, якби вік вимірювався днями.)

Щоб уникнути цієї залежності від вибору одиниць вимірювання, є можливість стандартизації даних. Це перетворює вихідні вимірювання в безроздільні змінні.

введіть тут опис зображення введіть тут опис зображення

Кауфман та ін. продовжує деякі цікаві міркування (стор. 11):

З філософської точки зору стандартизація насправді не вирішує проблему. Дійсно, вибір одиниць вимірювання породжує відносні ваги змінних. Вираження змінної у менших одиницях призведе до збільшення діапазону для цієї змінної, що потім матиме великий вплив на отриману структуру. З іншого боку, стандартизуючи спроби надати всім змінним однакову вагу в надії на досягнення об'єктивності. Як такий, він може бути використаний практикуючим лікарем, який не має попередніх знань. Однак цілком може бути, що деякі змінні за своєю суттю важливіші, ніж інші, у певній програмі, і тоді призначення ваг має ґрунтуватися на знаннях про предмет (див., Наприклад, Abrahamowicz, 1985). З іншої сторони, були спроби розробити методи кластеризації, які не залежать від масштабу змінних (Friedman and Rubin, 1967). Пропозиція Харді та Рассона (1982) полягає у пошуку перегородки, яка мінімізує загальний об'єм опуклих корпусів кластерів. В принципі такий метод є інваріантним щодо лінійних перетворень даних, але, на жаль, не існує алгоритму його впровадження (за винятком наближення, яке обмежується двома вимірами). Тому в даний час дилема стандартизації видається неминучою, і програми, описані в цій книзі, залишають вибір на користувачі. Пропозиція Харді та Рассона (1982) полягає у пошуку перегородки, яка мінімізує загальний об'єм опуклих корпусів кластерів. В принципі такий метод є інваріантним щодо лінійних перетворень даних, але, на жаль, не існує алгоритму його впровадження (за винятком наближення, яке обмежується двома вимірами). Тому в даний час дилема стандартизації видається неминучою, і програми, описані в цій книзі, залишають вибір на користувачі. Пропозиція Харді та Рассона (1982) полягає у пошуку перегородки, яка мінімізує загальний об'єм опуклих корпусів кластерів. В принципі такий метод є інваріантним щодо лінійних перетворень даних, але, на жаль, не існує алгоритму його впровадження (за винятком наближення, яке обмежується двома вимірами). Тому в даний час дилема стандартизації видається неминучою, і програми, описані в цій книзі, залишають вибір на користувачі.


1
Ця відповідь феноменальна
Candic3

6

Стандартизація даних рекомендується, оскільки в іншому випадку діапазон значень у кожній функції буде виконувати роль ваги при визначенні способів кластеризації даних, що зазвичай небажано.

Наприклад, розглянемо стандартну метрику для більшості алгоритмів кластеризації (включаючи DBSCAN у науковому комплекті навчання) - euclideanінакше відому як норма L2. Якщо одна з ваших функцій має діапазон значень, набагато більший за інші, кластеризація буде повністю домінувати саме над цією особливістю. Щоб проілюструвати цей погляд на простому прикладі нижче:

>>> import numpy as np
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> 
>>> X = np.array([[1,2,100],[4,3,50],[1,1,75]])
>>> 
>>> print X
[[  1   2 100]
 [  4   3  50]
 [  1   1  75]]
>>> 
>>> print euclidean_distances(X)
[[  0.          50.0999002   25.01999201]
 [ 50.0999002    0.          25.25866188]
 [ 25.01999201  25.25866188   0.        ]]
>>> print euclidean_distances(StandardScaler().fit_transform(X))
[[ 0.          3.46410162  1.73205081]
 [ 3.46410162  0.          3.46410162]
 [ 1.73205081  3.46410162  0.        ]]

З цього ви повинні бачити, що евклідові відстані між нестандартними версіями переважають у третьому стовпчику, оскільки його діапазон значень значно більший, ніж два інших. Однак, коли дані стандартизовані, це більше не стає проблемою і зважує кожну функцію як рівну при обчисленні відстані між кожною точкою даних.


1

Не обов'язково стандартизувати, незалежно від того, потрібна вона чи ні, може залежати від вибраної метрики відстані.

Наприклад, якщо ви вибрали відстань махаланобіса, то розділення буде ґрунтуватися на кількості стандартних відхилень, що розділяють точки, а не на абсолютній відстані між ними, тому що це є інваріантною шкалою.

Як і в багатьох випадках у машинному навчанні, немає важких і швидких відповідей, і єдиний спосіб точно знати - це застосувати різноманітні методи, див. Які дають найбільш відповідні результати для ваших даних.


0

У деяких випадках мені було корисно визначити функцію "оцінювання бізнесу", визначивши "важливість" параметрів, які використовуються для кластеризації. Напр., Для згуртовування молодих овочів, якщо яблука вдвічі дорожчі, ніж апельсини, кількість яблук збільшиться вдвічі.


Але, чи не могли ви просто включити це як додаткову функцію, яку ви кластеризуєте? тобто ціна стає особливістю кластеру?
Candic3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.