Снижение размерности методом случайной проекции

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы будем изучать случайную проекцию для снижения размерности с использованием библиотеки scikit-learn. Случайная проекция - это метод, который позволяет уменьшить размерность данных, сохраняя при этом попарные расстояния между примерами. Это может быть полезно для ускорения вычислений и уменьшения потребления памяти в алгоритмах машинного обучения.

Советы по использованию ВМ

После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71133{{"Снижение размерности методом случайной проекции"}} end

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек для этого практического занятия.

import numpy as np
from sklearn import random_projection

Генерируем случайные данные

Далее, давайте сгенерируем некоторые случайные данные, которые мы можем использовать для снижения размерности.

X = np.random.rand(100, 10000)

Здесь мы генерируем двумерный массив X с 100 примерами и 10 000 признаками. Это будут наши исходные данные с высокой размерностью.

Гауссовская случайная проекция

Теперь давайте применим Гауссовскую случайную проекцию для уменьшения размерности наших данных.

transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)

В этом шаге мы создаем экземпляр класса GaussianRandomProjection и настраиваем его на наших данных X. Затем мы применяем преобразование, вызвав метод fit_transform. Результат сохраняется в переменной X_new.

#稀疏随机投影

接下来,让我们尝试另一种称为稀疏随机投影的随机投影类型。

transformer = random_projection.SparseRandomProjection()
X_new = transformer.fit_transform(X)

在这里,我们创建了SparseRandomProjection类的一个实例,并使用fit_transform方法将其应用于我们的数据X。结果存储在X_new变量中。

Обратное преобразование

Трансформеры случайной проекции имеют возможность вычислить обратную матрицу проекции. Давайте исследуем эту функцию, применяя обратное преобразование к нашим проектированным данным.

transformer = random_projection.SparseRandomProjection(compute_inverse_components=True)
X_new = transformer.fit_transform(X)

## Compute the inverse transform
X_new_inversed = transformer.inverse_transform(X_new)

В этом шаге мы создаем экземпляр класса SparseRandomProjection с параметром compute_inverse_components, установленным в True. Затем мы настраиваем трансформер на наших данных X и применяем преобразование. Наконец, мы вычисляем обратное преобразование, вызвав метод inverse_transform для проектированных данных X_new.

Проверка

Для проверки правильности обратного преобразования мы можем сравнить исходные данные X с результатом обратного преобразования.

X_new_again = transformer.transform(X_new_inversed)
np.allclose(X_new, X_new_again)

Здесь мы применяем преобразование к обратно преобразованным данным X_new_inversed и проверяем, равно ли оно исходным проектированным данным X_new с использованием функции np.allclose.

Резюме

В этом практическом занятии мы узнали, как выполнять случайную проекцию для уменьшения размерности данных с использованием библиотеки scikit - learn. Мы изучили как Гауссовскую случайную проекцию, так и спарсную случайную проекцию. Также мы узнали, как вычислить обратное преобразование проектированных данных для восстановления исходных данных. Случайная проекция может быть полезным инструментом для уменьшения размерности высокомерных данных в задачах машинного обучения.