Técnicas de Aproximação de Kernel no Scikit-Learn

Beginner

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

Introdução

Este tutorial guiará você pelo processo de utilização de técnicas de aproximação de kernel em scikit-learn.

Métodos de kernel, como máquinas de vetores de suporte (SVM), são técnicas poderosas para classificação não linear. Esses métodos dependem do conceito de uma função kernel que mapeia dados de entrada para um espaço de características de alta dimensão. No entanto, trabalhar com mapeamentos explícitos de características pode ser computacionalmente caro, especialmente para conjuntos de dados grandes. Métodos de aproximação de kernel fornecem uma solução gerando aproximações de baixa dimensão do espaço de características do kernel.

Neste tutorial, exploraremos várias técnicas de aproximação de kernel disponíveis em scikit-learn, incluindo o método Nystroem, aproximação de kernel Radial Basis Function (RBF), aproximação de kernel Additive Chi Squared (ACS), aproximação de kernel Skewed Chi Squared (SCS) e aproximação de kernel polinomial usando Tensor Sketch. Demonstraremos como utilizar essas técnicas e discutiremos suas vantagens e limitações.

Dicas de Máquina Virtual

Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação de operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para você.

Método Nystroem para Aproximação de Kernel

O método Nystroem é uma técnica geral para aproximar kernels usando uma aproximação de baixa classificação. Ele subamostra o conjunto de dados no qual o kernel é avaliado. Por padrão, ele usa o kernel RBF, mas pode ser usado com qualquer função kernel ou uma matriz kernel pré-calculada.

Para usar o método Nystroem para aproximação de kernel, siga estas etapas:

  1. Inicialize o objeto Nystroem com o número desejado de componentes (ou seja, a dimensionalidade de destino da transformação de características).
from sklearn.kernel_approximation import Nystroem

n_components = 100
nystroem = Nystroem(n_components=n_components)
  1. Ajuste o objeto Nystroem aos seus dados de treinamento.
nystroem.fit(X_train)
  1. Transforme seus dados de treinamento e teste usando o objeto Nystroem.
X_train_transformed = nystroem.transform(X_train)
X_test_transformed = nystroem.transform(X_test)

Aproximação de Kernel Radial Basis Function (RBF)

A classe RBFSampler implementa um mapeamento aproximado para o kernel RBF, também conhecido como Random Kitchen Sinks. Essa técnica permite modelar explicitamente um mapeamento de kernel antes de aplicar um algoritmo linear, como SVM linear ou regressão logística.

Para usar o RBFSampler para aproximação de kernel, siga estas etapas:

  1. Inicialize o objeto RBFSampler com o valor desejado de gamma (o parâmetro do kernel RBF) e o número de componentes.
from sklearn.kernel_approximation import RBFSampler

gamma = 0.1
n_components = 100
rbf_sampler = RBFSampler(gamma=gamma, n_components=n_components)
  1. Ajuste o objeto RBFSampler aos seus dados de treinamento.
rbf_sampler.fit(X_train)
  1. Transforme seus dados de treinamento e teste usando o objeto RBFSampler.
X_train_transformed = rbf_sampler.transform(X_train)
X_test_transformed = rbf_sampler.transform(X_test)

Aproximação de Kernel Aditivo Chi-Quadrado (ACS)

O kernel ACS é um kernel aplicado a histogramas, comumente utilizado em visão computacional. A classe AdditiveChi2Sampler fornece um mapeamento aproximado para este kernel.

Para usar o AdditiveChi2Sampler para aproximação de kernel, siga estas etapas:

  1. Inicialize o objeto AdditiveChi2Sampler com o número desejado de amostras (n) e o parâmetro de regularização (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. Ajuste o objeto AdditiveChi2Sampler aos seus dados de treinamento.
additive_chi2_sampler.fit(X_train)
  1. Transforme seus dados de treinamento e teste usando o objeto AdditiveChi2Sampler.
X_train_transformed = additive_chi2_sampler.transform(X_train)
X_test_transformed = additive_chi2_sampler.transform(X_test)

Aproximação de Kernel Chi-Quadrado Deslocado (SCS)

O kernel SCS é uma variante do kernel chi-quadrado exponenciado que permite uma simples aproximação de Monte Carlo do mapa de características. A classe SkewedChi2Sampler fornece um mapeamento aproximado para este kernel.

Para usar o SkewedChi2Sampler para aproximação de kernel, siga estas etapas:

  1. Inicialize o objeto SkewedChi2Sampler com o número desejado de amostras (n) e o parâmetro de regularização (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. Ajuste o objeto SkewedChi2Sampler aos seus dados de treinamento.
skewed_chi2_sampler.fit(X_train)
  1. Transforme seus dados de treinamento e teste usando o objeto SkewedChi2Sampler.
X_train_transformed = skewed_chi2_sampler.transform(X_train)
X_test_transformed = skewed_chi2_sampler.transform(X_test)

Aproximação de Kernel Polinomial via Tensor Sketch

O kernel polinomial é uma função kernel popular que modela interações entre recursos. A classe PolynomialCountSketch fornece um método escalável para aproximar este kernel usando a abordagem TensorSketch.

Para usar PolynomialCountSketch para aproximação de kernel, siga estas etapas:

  1. Inicialize o objeto PolynomialCountSketch com o grau desejado (d) e o número de componentes.
from sklearn.kernel_approximation import PolynomialCountSketch

degree = 3
n_components = 100
polynomial_count_sketch = PolynomialCountSketch(degree=degree, n_components=n_components)
  1. Ajuste o objeto PolynomialCountSketch aos seus dados de treinamento.
polynomial_count_sketch.fit(X_train)
  1. Transforme seus dados de treinamento e teste usando o objeto PolynomialCountSketch.
X_train_transformed = polynomial_count_sketch.transform(X_train)
X_test_transformed = polynomial_count_sketch.transform(X_test)

Resumo

A aproximação de kernel é uma técnica poderosa que nos permite usar métodos de kernel de forma eficiente, especialmente para grandes conjuntos de dados. Neste tutorial, exploramos vários métodos de aproximação de kernel disponíveis no scikit-learn, incluindo o método Nystroem, a aproximação de kernel RBF, a aproximação de kernel ACS, a aproximação de kernel SCS e a aproximação de kernel polinomial usando Tensor Sketch. Aprendemos como usar essas técnicas e discutimos suas vantagens e limitações. Ao aproveitar a aproximação de kernel, podemos aplicar eficazmente métodos de kernel a uma ampla gama de tarefas de aprendizado de máquina.