Науката за данни е интердисциплинарна област, която се занимава с извличане на знания от сложни и големи набори от данни. В много приложения от реалния свят данните са многоизмерни, което означава, че съдържат голям брой функции. Такива набори от данни могат да бъдат трудни за анализиране, визуализиране и моделиране и могат да доведат до пренастройване или лошо обобщение. Техниките за намаляване на размерността са набор от методи, които имат за цел да се справят с този проблем чрез намаляване на броя на характеристиките, като същевременно запазват съществената информация в данните.

В тази статия ще разгледаме някои от най-популярните техники за намаляване на размерността, използвани в науката за данни, включително примери в Python.

Анализ на главните компоненти (PCA)

PCA е линейна техника, която има за цел да намери нискоразмерно представяне на данните, което улавя най-значимото количество променливост в оригиналния набор от данни. PCA постига това чрез идентифициране на основните компоненти на данните, които са посоките в пространството на характеристиките, по които данните варират най-много. Чрез проектиране на данните върху тези основни компоненти, PCA може да намали размерността на данните, като същевременно запази основната им структура.

В Python PCA може да се реализира с помощта на класа PCA от модула sklearn.decomposition:

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

t-разпределено стохастично съседно вграждане (t-SNE)

t-SNE е нелинейна техника, която е особено полезна за визуализиране на данни с големи размери. t-SNE има за цел да намери нискоразмерно представяне на данните, което запазва разстоянията по двойки между точките от данни в пространството с високи измерения. t-SNE постига това чрез минимизиране на различията между две вероятностни разпределения: едно, което измерва приликите по двойки в пространството с високи измерения и друго, което измерва приликите по двойки в пространството с ниски измерения.

В Python t-SNE може да се реализира с помощта на класа TSNE от модула sklearn.manifold:

from sklearn.manifold import TSNE

tsne = TSNE(n_components=2)
X_tsne = tsne.fit_transform(X)

Автоенкодери

Автоенкодерите са модели на невронни мрежи, които могат да научат компресирано представяне на данните чрез обучение за реконструиране на оригиналния вход от представяне с по-ниско измерение. Автоенкодерите могат да бъдат обучени чрез неконтролирано или контролирано обучение и могат да се използват както за намаляване на размерите, така и за обучение на функции.

В Python автокодерите могат да бъдат реализирани с помощта на класа Sequential от модула keras.models:

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(256, activation='relu', input_dim=n_features))
model.add(Dense(128, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(2, activation='linear'))
model.add(Dense(16, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(n_features, activation='linear'))
model.compile(optimizer='adam', loss='mse')
model.fit(X, X, epochs=100, batch_size=32)
X_autoencoder = model.predict(X)

Заключение

Техниките за намаляване на размерността са мощни инструменти за опростяване на анализа, визуализацията и моделирането на данни с големи размери. В тази статия проучихме някои от най-популярните техники, използвани в науката за данни, включително PCA, t-SNE и автоенкодери, с примери в Python. Тези техники са само върхът на айсберга и има много други методи за намаляване на размерността, които могат да се използват в зависимост от конкретния проблем и набор от данни. Чрез усвояването на тези техники учените по данни могат да получат ценна информация от сложни и големи набори от данни.