Науката за данни е интердисциплинарна област, която се занимава с извличане на знания от сложни и големи набори от данни. В много приложения от реалния свят данните са многоизмерни, което означава, че съдържат голям брой функции. Такива набори от данни могат да бъдат трудни за анализиране, визуализиране и моделиране и могат да доведат до пренастройване или лошо обобщение. Техниките за намаляване на размерността са набор от методи, които имат за цел да се справят с този проблем чрез намаляване на броя на характеристиките, като същевременно запазват съществената информация в данните.
В тази статия ще разгледаме някои от най-популярните техники за намаляване на размерността, използвани в науката за данни, включително примери в 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. Тези техники са само върхът на айсберга и има много други методи за намаляване на размерността, които могат да се използват в зависимост от конкретния проблем и набор от данни. Чрез усвояването на тези техники учените по данни могат да получат ценна информация от сложни и големи набори от данни.