为什么要降维?
原因
高维机器学习具有大量的特征(变量),这些对机器学习计算有一定的障碍,但是其中的一些特征(变量)可能存在一定的相关性,在保证不损失太多的信息条件下,将特征处理为一组新的变量,达到降低为原始数据的维度。
主成分分析PAC
主成分分析(PAC)在处理降维是应用最为广泛。
思想
大量相关变量组成的数据集的维数,同时尽可能保持数据集的方差
找到一组新的变量,原来的变量只是它们的线性组合
新的变量称为主成分(Principal Component)
理解原理:传送门
下面使用鸢尾花的内置数据集来展开PCA示例
import pandas as pd
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
df = pd.read_csv(url, names=['sepal length','sepal width','petal length','petal width','target'])
print(df.head())
数据大概长这样
第一步:标准化
这里用到了sklearn模块的StandardScaler方法
from sklearn.preprocessing import StandardScaler
variables = ['sepal length','sepal width','petal length','petal width']
x = df.loc[:, variables].values
y = df.loc[:,['target']].values
x = StandardScaler().fit_transform(x)
x = pd.DataFrame(x)
print(x)
标准化后长这样
第二步:PCA
from sklearn.decomposition import PCA
pca = PCA()
x_pca = pca.fit_transform(x)
x_pca = pd.DataFrame(x_pca)
x_pca.head()
结果成了这样
原始数据集中有四个特征。所以PCA会提供相同数量的主成分
我们利用pca.explained_variance_ratio_来获取,每一个主成分提取的信息占比
第三步:计算主成分(方差贡献)
explained_variance = pca.explained_variance_ratio_
print(explained_variance)
# 返回一个向量
[0.72770452 0.23030523 0.03683832 0.00515193]
解释:它显示第一个主成分占72.22%的方差,第二,第三和第四个占23.9%,3.68%和0.51%的方差。我们可以说第一和第二主成分捕获了72.22 + 23.9 = 96.21%的信息。我们经常希望只保留重要的特征并删除无关紧要的特征。经验法则是,保留能捕获显著方差的主成分,忽略较小的方差。
第四步:合并成新数据
x_pca[‘target’]=y
x_pca.columns = [‘PC1’,’PC2',’PC3',’PC4',’target’]
x_pca.head()
展示
第五步:结果可视化
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.set_xlabel(‘Principal Component 1’)
ax.set_ylabel(‘Principal Component 2’)
ax.set_title(‘2 component PCA’)
targets = [‘Iris-setosa’, ‘Iris-versicolor’, ‘Iris-virginica’]
colors = [‘r’, ‘g’, ‘b’]
for target, color in zip(targets,colors):
indicesToKeep = x_pca[‘target’] == target
ax.scatter(x_pca.loc[indicesToKeep, ‘PC1’]
, x_pca.loc[indicesToKeep, ‘PC2’]
, c = color
, s = 50)
ax.legend(targets)
ax.grid()
惊奇的发现,主成分12,在空间上是可以分的。
Kernel PAC
总的来说,PAC是基于线性变换,而KPAC,是基于非线性变换的结果,用于处理线性不可分的数据集。
KPCA的大致思路是:对于输入空间(Input space)中的矩阵 [公式] ,我们先用一个非线性映射把 [公式] 中的所有样本映射到一个高维甚至是无穷维的空间(称为特征空间,Feature space),(使其线性可分),然后在这个高维空间进行PCA降维。
原理解析参考
传送门
线性判别分析-LDA
提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个