Техники аппроксимации ядра в Scikit-Learn

Beginner

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

Введение

В этом руководстве вы узнаете, как использовать методы аппроксимации ядра в scikit-learn.

Ядерные методы, такие как методы опорных векторов (SVM), являются мощными инструментами для нелинейной классификации. Эти методы основаны на понятии ядровой функции, которая отображает входные данные в пространство признаков высокой размерности. Однако работа с явными отображениями признаков может быть вычислительно дорогой, особенно для больших наборов данных. Методы аппроксимации ядра предоставляют решение путём генерации низкоразмерных приближений пространства признаков ядра.

В этом руководстве мы рассмотрим несколько методов аппроксимации ядра, доступных в scikit-learn, включая метод Ньюстроема, аппроксимацию ядра с радиальной базисной функцией (RBF), аппроксимацию ядра с добавленным квадратом хи-квадрат (ACS), аппроксимацию ядра с отклонённым квадратом хи-квадрат (SCS) и аппроксимацию полиномиального ядра с использованием тензорного эскиза. Мы покажем, как использовать эти методы, и обсудим их преимущества и ограничения.

Советы по работе с ВМ

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

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

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

Метод Ньюстроема для аппроксимации ядра

Метод Ньюстроема - это общий метод для аппроксимации ядер с использованием низкоранговой аппроксимации. Он подвыбирает подмножество данных, на которых оценивается ядро. По умолчанию он использует ядро RBF, но может использоваться с любой ядровой функцией или предварительно вычисленной матрицей ядра.

Для использования метода Ньюстроема для аппроксимации ядра следуйте шагам:

  1. Инициализируйте объект Ньюстроема с желаемым количеством компонентов (то есть целевой размерностью преобразования признаков).
from sklearn.kernel_approximation import Nystroem

n_components = 100
nystroem = Nystroem(n_components=n_components)
  1. Обучите объект Ньюстроема на своих тренировочных данных.
nystroem.fit(X_train)
  1. Преобразуйте свои тренировочные и тестовые данные с использованием объекта Ньюстроема.
X_train_transformed = nystroem.transform(X_train)
X_test_transformed = nystroem.transform(X_test)

Аппроксимация ядра с радиальной базисной функцией (RBF)

Класс RBFSampler реализует приближенное отображение для ядра RBF, также известного как Random Kitchen Sinks. Эта техника позволяет явно моделировать карту ядра перед применением линейного алгоритма, такого как линейный SVM или логистическая регрессия.

Для использования RBFSampler для аппроксимации ядра следуйте шагам:

  1. Инициализируйте объект RBFSampler с желаемым значением gamma (параметром ядра RBF) и количеством компонентов.
from sklearn.kernel_approximation import RBFSampler

gamma = 0.1
n_components = 100
rbf_sampler = RBFSampler(gamma=gamma, n_components=n_components)
  1. Обучите объект RBFSampler на своих тренировочных данных.
rbf_sampler.fit(X_train)
  1. Преобразуйте свои тренировочные и тестовые данные с использованием объекта RBFSampler.
X_train_transformed = rbf_sampler.transform(X_train)
X_test_transformed = rbf_sampler.transform(X_test)

Аппроксимация ядра с добавленным квадратом хи-квадрат (ACS)

Ядро ACS - это ядро на гистограммах, широко используемое в компьютерном зрении. Класс AdditiveChi2Sampler предоставляет приближенное отображение для этого ядра.

Для использования AdditiveChi2Sampler для аппроксимации ядра следуйте шагам:

  1. Инициализируйте объект AdditiveChi2Sampler с желаемым количеством выборок (n) и параметром регуляризации (c).
from sklearn.kernel_approximation import AdditiveChi2Sampler

n_samples = 1000
c = 1.0
additive_chi2_sampler = AdditiveChi2Sampler(n_samples=n_samples, sample_steps=2, sample_interval=2, sample_octave=2, c=c)
  1. Обучите объект AdditiveChi2Sampler на своих тренировочных данных.
additive_chi2_sampler.fit(X_train)
  1. Преобразуйте свои тренировочные и тестовые данные с использованием объекта AdditiveChi2Sampler.
X_train_transformed = additive_chi2_sampler.transform(X_train)
X_test_transformed = additive_chi2_sampler.transform(X_test)

Аппроксимация ядра с отклонённым квадратом хи-квадрат (SCS)

Ядро SCS - это вариант возведённого в степень квадрата хи-квадрат ядра, которое позволяет получить простую приближённую оценку с использованием метода Монте-Карло для карты признаков. Класс SkewedChi2Sampler предоставляет приближенное отображение для этого ядра.

Для использования SkewedChi2Sampler для аппроксимации ядра следуйте шагам:

  1. Инициализируйте объект SkewedChi2Sampler с желаемым количеством выборок (n) и параметром регуляризации (c).
from sklearn.kernel_approximation import SkewedChi2Sampler

n_samples = 1000
c = 1.0
skewed_chi2_sampler = SkewedChi2Sampler(n_samples=n_samples, sample_steps=2, sample_interval=2, sample_octave=1, c=c)
  1. Обучите объект SkewedChi2Sampler на своих тренировочных данных.
skewed_chi2_sampler.fit(X_train)
  1. Преобразуйте свои тренировочные и тестовые данные с использованием объекта SkewedChi2Sampler.
X_train_transformed = skewed_chi2_sampler.transform(X_train)
X_test_transformed = skewed_chi2_sampler.transform(X_test)

Аппроксимация полиномиального ядра с использованием тензорного эскиза

Полиномиальное ядро - это популярная ядровая функция, которая моделирует взаимодействия между признаками. Класс PolynomialCountSketch предоставляет масштабируемый метод для аппроксимации этого ядра с использованием подхода TensorSketch.

Для использования PolynomialCountSketch для аппроксимации ядра следуйте шагам:

  1. Инициализируйте объект PolynomialCountSketch с желаемой степенью (d) и количеством компонентов.
from sklearn.kernel_approximation import PolynomialCountSketch

degree = 3
n_components = 100
polynomial_count_sketch = PolynomialCountSketch(degree=degree, n_components=n_components)
  1. Обучите объект PolynomialCountSketch на своих тренировочных данных.
polynomial_count_sketch.fit(X_train)
  1. Преобразуйте свои тренировочные и тестовые данные с использованием объекта PolynomialCountSketch.
X_train_transformed = polynomial_count_sketch.transform(X_train)
X_test_transformed = polynomial_count_sketch.transform(X_test)

Обзор

Аппроксимация ядра - это мощная техника, которая позволяет эффективно использовать методы с ядрами, особенно для больших наборов данных. В этом руководстве мы рассмотрели несколько методов аппроксимации ядра, доступных в scikit - learn, включая метод Ньюстрёма, аппроксимацию ядра RBF, аппроксимацию ядра ACS, аппроксимацию ядра SCS и аппроксимацию полиномиального ядра с использованием тензорного эскиза. Мы узнали, как использовать эти техники, и обсудили их преимущества и ограничения. Используя аппроксимацию ядра, мы можем эффективно применять методы с ядрами к широкому спектру задач машинного обучения.