ML | Introduction to Kernel PCA - GeeksforGeeks

26 Aug, 2019
PRINCIPAL COMPONENT ANALYSIS: is a tool which is used to reduce the dimension of the data. It allows us to reduce the dimension of the data without much loss of information. PCA reduces the dimension by finding a few orthogonal linear combinations (principal components) of the original variables with the largest variance.The first principal component captures most of the variance in the data. The second principal component is orthogonal to the first principal component and captures the remaining variance, which is left of first principal component and so on. There are as many principal components as the number of original variables.These principal components are uncorrelated and are ordered in such a way that the first several principal components explain most of the variance of the original data. To learn more about PCA you can read the article Principal Component Analysis
KERNEL PCA:
PCA is a linear method. That is it can only be applied to datasets which are linearly separable. It does an excellent job for datasets, which are linearly separable. But, if we use it to non-linear datasets, we might get a result which may not be the optimal dimensionality reduction. Kernel PCA uses a kernel function to project dataset into a higher dimensional feature space, where it is linearly separable. It is similar to the idea of Support Vector Machines.
There are various kernel methods like linear, polynomial, and gaussian.
Code: Create a dataset which is nonlinear and then apply PCA on the dataset.
import matplotlib.pyplot as pltfrom sklearn.datasets import make_moons  X, y = make_moons(n_samples = 500, noise = 0.02, random_state = 417)  plt.scatter(X[:, 0], X[:, 1], c = y)plt.show()
Code: Let’s apply PCA on this dataset
from sklearn.decomposition import PCApca = PCA(n_components = 2)X_pca = pca.fit_transform(X)   plt.title("PCA")plt.scatter(X_pca[:, 0], X_pca[:, 1], c = y)plt.xlabel("Component 1")plt.ylabel("Component 2")plt.show()
As you can see PCA failed to distinguish the two classes. Code: Applying kernel PCA on this dataset with RBF kernel with a gamma value of 15.
from sklearn.decomposition import KernelPCAkpca = KernelPCA(kernel ='rbf', gamma = 15)X_kpca = kpca.fit_transform(X)  plt.title("Kernel PCA")plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c = y)plt.show()
In the kernel space the two classes are linearly separable. Kernel PCA uses a kernel function to project the dataset into a higher-dimensional space, where it is linearly separable.Finally, we applied the kernel PCA to a non-linear dataset using scikit-learn.
References:https://en.wikipedia.org/wiki/Kernel_principal_component_analysishttp://fourier.eng.hmc.edu/e161/lectures/kernelPCA/node4.html
Machine Learning
Machine Learning
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction to Recurrent Neural Network
Support Vector Machine Algorithm
Intuition of Adam Optimizer
CNN | Introduction to Pooling Layer
Convolutional Neural Network (CNN) in Machine Learning
Markov Decision Process
Singular Value Decomposition (SVD)
k-nearest neighbor algorithm in Python
SARSA Reinforcement Learning
Q-Learning in Python