0
点赞
收藏
分享

微信扫一扫

机器学习实战—降维

君之言之 2022-11-09 阅读 219

文章目录

一.简介

二.降低维度的主要方法

2.1 简介

2.2 投影

在这里插入图片描述

投影的缺点:

在这里插入图片描述

2.3 流形学习

现在我们给出流形学习的定义,例如我们可以假设某些高维数据,例如图像,本身是由某些低维分布产生的。那么,我们就可以通过流形学习的手段,将数据从高维降低到低维,从而更好地把握数据的本质。例如下图我们取 x 1 x_1 x1=5作为我们的决策边界,然后展开流行就得到了图2的2D效果(可以看出有很好的分类效果),这就是通过流形学习降低维度的原理。

在这里插入图片描述

三.PCA降维

3.1 简介

3.2 保留差异性

在这里插入图片描述

3.3 主要成分

那么训练集的主成分是如何找的,PCA使用的是一种称为奇异值分解(SVD矩阵论知识)的标准矩阵分解技术,来获取主成分矩阵的:
V = ( C 1 , C 2 , C 3 , . . . . . , C n ) V= \begin{pmatrix} \\ C_1,C_2,C_3,.....,C_n \\ \\ \end{pmatrix} V= C1,C2,C3,.....,Cn

在Python代码中可以使用Numpy中的svd()函数来获得所有的主主成分:

from sklearn.datasets import load_iris
import numpy as np
iris=load_iris()
x=iris.data
xcenter=x-x.mean(axis=0)#求每个特征的均方差
U,S,Vt=np.linalg.svd(xcenter)
Vt.T

结果分析:
在这里插入图片描述

3.4 向下投影到d维度

X d − p r o j = X W d X_{d-proj}=XW_d Xdproj=XWd

python代码如下:

W2=Vt.T[:,:2]  #这里的2就是选取V的前两列,即将4维的鸢尾花数据映射到2维上
X2D=xcenter.dot(W2)

在这里插入图片描述

3.5 在Scikit-learn使用PCA的接口

from sklearn.decomposition import PCA
pca=PCA(n_components=2)#降为2维
X2D2=pca.fit_transform(x)

在这里插入图片描述

3.6 可解释方差比

pca.explained_variance_ratio_

在这里插入图片描述

pca=PCA(n_components=0.95)
X_reduce=pca.fit_transform(x)
X_reduce

在这里插入图片描述

3.7 随机PCA

rnd_pca=PCA(n_components=2,svd_solver="randomized")
x_reduce=rnd_pca.fit_transform(x)

3.8 增量PCA(IPCA)

from sklearn.decomposition import IncrementalPCA
n_batcher=6 #将鸢尾花数据分为6个批量
inc_pca=IncrementalPCA(n_components=2)
for X_batch in np.array_split(x,6):
    inc_pca.partial_fit(X_batch)
X_reduce=inc_pca.transform(x)

四.内核PCA

4.1 简介

4.2 scikiit-learn接口使用

from sklearn.decomposition import KernelPCA
rbf_pca=KernelPCA(n_components=2,kernel="rbf",gamma=0.04)
X_reduce=rbf_pca.fit_transform(x)
X_reduce

在这里插入图片描述

五.LLE降维

5.1 简介

5.2 Scikit-learn中使用

from sklearn.manifold import LocallyLinearEmbedding
lle=LocallyLinearEmbedding(n_components=2,n_neighbors=10)#n_neighbors就是我们要求线性关系的邻居实例的数量
X_reduce=lle.fit_transform(x)
X_reduce

5.3 LLE的工作原理

  1. 首先LLE对每个训练实例 x i x_i xi,算法会识别出最近的邻居,这个和knn算法找邻居的原理是一样的,所以可以使用knn算法来找到邻居
  2. ,LLE会尝试将 x i x_i xi重构为这些邻居的线性函数,即找到权重系数 w i , j ,使得 x i w_{i,j},使得x_i wi,j,使得xi ∑ j = 1 m w i , j x i \sum_{j=1}^m w_{i,j}x_i j=1mwi,jxi之间的距离尽可能小(线性回归拟合问题),W是权重矩阵

W ^ = a r g m i n ∑ i = 1 m ( x i − ∑ j = 1 m w i , j x j ) 2 \hat W=argmin\sum_{i=1}^m(x_i-\sum_{j=1}^m w_{i,j}x_j)^2 W^=argmini=1m(xij=1mwi,jxj)2
满足 { w i , j , x j 不属于 x i 的邻居 ∑ j = 1 m w i , j = 1 , 其中 i = 1 , 2 , 3 , . . . . , m 满足 \begin{cases} w_{i,j}, & x_j不属于x_i的邻居 \\ \sum_{j=1}^m w_{i,j}=1, & 其中i=1,2,3,....,m \end{cases} 满足{wi,j,j=1mwi,j=1,xj不属于xi的邻居其中i=1,2,3,....,m

  1. 什么求出权重矩阵后我们已经在高维空间找到了实例的局部线性关系,现在就需要将训练实例映射到低维空间,同时尽可能保留这些局部关系到低维。如何保证这个约束条件,我们可以让d维度空间中 x i x_i xi的图像与关系 ∑ j = 1 m w i , j x i \sum_{j=1}^m w_{i,j}x_i j=1mwi,jxi的距离同样保持最小,注意这里的 ∑ j = 1 m w i , j x i \sum_{j=1}^m w_{i,j}x_i j=1mwi,jxi是从高维映射到低维的,因为局部线性关系在降维中是保持不变的,所以这里在低维度空间中我们同样希望降维后的实例依然与 ∑ j = 1 m w i , j x i \sum_{j=1}^m w_{i,j}x_i j=1mwi,jxi保持最小的距离。
    Z ^ = a r g m i n ∑ i = 1 m ( z i − ∑ j = 1 m w i , j z j ) 2 \hat Z=argmin\sum_{i=1}^m(z_i-\sum_{j=1}^m w_{i,j}z_j)^2 Z^=argmini=1m(zij=1mwi,jzj)2
举报

相关推荐

0 条评论