Чи існує "прокляття розмірності" насправді в реальних даних?


17

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

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

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

Іншими словами, велика ймовірність, що дані не містять експоненціального рівня інформації, тобто багато особливостей сильно корелюються і багато функцій відповідають 80-20 правилам (багато примірників мають однакове значення).

У такому випадку я думаю, що такі методи, як KNN, все ще працюватимуть досить добре. (У більшості книг «прокляття розмірності» говорить про те, що розмірність> 10 може бути проблематичною. У демонстраціях вони використовують рівномірний розподіл у всіх вимірах, де ентропія дійсно висока. Я сумніваюся, що в реальному світі це буде коли-небудь.)

Мій особистий досвід з реальними даними полягає в тому, що "прокляття розмірності" не впливає занадто сильно на шаблонний метод (наприклад, KNN) і в більшості випадків розміри ~ 100 все одно спрацьовують.

Це правда для інших людей? (Я працював з реальними даними в різних галузях промисловості протягом 5 років, ніколи не спостерігав, щоб "усі пари відстаней мають аналогічні значення", як описано в книзі.)


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

7
Бінарні / манекенні /
однокольорові

2
Моя колега працювала з продажами сонцезахисних окулярів. Досить багато особливостей були категоричними з великою кількістю можливих рівнів (наприклад, марки, матеріали різних частин окулярів тощо). Я безумовно боявся CoD, але завжди важко сказати, чи він присутній у конкретному наборі даних, і, напевно, ми не зробили багато стандартних хитрощів, не будучи експертами в даному конкретному типі аналізу.
S. Kolassa - Відновіть Моніку

@StephanKolassa Отже, чи використовувались дистанційні методи у випадку використання сонячного скла?
Haitao Du

Не надто добре. Це був не дуже вдалий проект.
С. Коласа - Відновіть Моніку

Відповіді:


15

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

(1) Педро Домінго, "Кілька корисних речей, які потрібно знати про машинне навчання"


7

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

from numpy.random import normal
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import precision_score
import matplotlib.pyplot as plt
import numpy as np
from math import sqrt
from scipy.special import gamma

N=10000
N_broad=2
scale=20

dims=[]
precs=[]


def avg_distance(k):
    return sqrt(2)*gamma((k+1)/2)/gamma(k/2)

for dim in range(N_broad+1,30):
    clf = KNeighborsClassifier(1, n_jobs=-1)

    X_train=np.hstack([normal(size=(N,N_broad)), normal(size=(N,dim-N_broad))/avg_distance(dim-N_broad)/scale])
    y_train=(X_train[:,N_broad]>0).astype(int)
    clf.fit(X_train, y_train)

    X_test=np.hstack([normal(size=(N,N_broad)), normal(size=(N,dim-N_broad))/avg_distance(dim-N_broad)/scale])
    y_test=(X_test[:,N_broad]>0).astype(int)
    y_test_pred=clf.predict(X_test)

    prec=precision_score(y_test, y_test_pred)
    dims.append(dim)
    precs.append(prec)
    print(dim, prec)

plt.plot(dims, precs)
plt.ylim([0.5,1])
plt.xlabel("Dimension")
plt.ylabel("Precision")
plt.title("kNN(1) on {} samples".format(N))
plt.show()

Вам не сподобалися повністю рівномірні розподіли, тому я зробив це двовимірне колектор з меншими розмірами (зменшеним на scale), посипаним навколо двовимірної площини перших двох координат. Як це буває, один з менших розмірів є передбачувальним (мітка дорівнює 1, коли цей вимір є позитивним).

Точність швидко падає із збільшенням розмірності.kNN точність

Звичайно, точність = 0,5 була б випадковою здогадкою. З поверхнею рішення, яка складніша за площину, вона стане ще гіршою.

Наче кулі kNN занадто рідкі, щоб бути корисними при зондуванні плавного гіперплана. З більшими розмірами вони відчувають себе все більш самотніми.

З іншого боку, такі методи, як SVM, мають глобальний погляд і роблять набагато краще.


5

Розглянемо для прикладу часові ряди (і зображення, і аудіо). Показання датчиків (Інтернет речей) дуже поширені.

Прокляття розмірності набагато частіше, ніж ви думаєте. Там велика надмірність, але і багато шуму.

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


П(Х)=П(Х1)н=2NП(Хн|Хн-1)

1
Можливо, більшість реальних даних отримують із сенсорів, таких як зображення, відео та часові ряди?
Аноні-Мус-Відновити Моніку

2
@ hxd1011 властивість markov - це абстракція, яка може не мати нічого спільного з реальними даними!
Sycorax каже, що поверніть Моніку

0

Є чудова стаття Бреймана "Статистичне моделювання: дві культури" . Він пояснює дві групи вчених, які мають справу з даними, і як кожна з них дивиться на «розмірність». Відповідь на ваше запитання - "залежить", в якій групі ви знаходитесь. Перевірте папір.


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