机器学习|主成分分析法PCA

作   者:echoy189
介   绍:spark数据处理与算法交流
公众号:spark推荐系统

PCA(Principal Component Analysis)即主成分分析方法,是一种使用最广泛的数据线性降维的算法主要思想是将n维特征映射到k维上(k<n),且尽量减少信息的损失。应用领域包括:维度降低,有损数据压缩,特征抽取,数据可视化等

目录

  1. 预备知识

  2. 降维的目的

  3. PCA实现原理

  4. PCA的最大方差形式

  5. PCA算法总结

  6. 代码展示

一) 预备知识

1.矩阵乘法

2矩阵转置

3.矩阵的特征向量与特征值(定义及求解)

https://wenku.baidu.com/view/f14c18215901020207409c97?ivk_sa=1023194j

4.拉格朗日函数(等式约束条件)

二) 降维的目的

1.使得数据集更易使用

2.降低算法的计算开销

3.去噪,降噪

4.使w参数变少,使用模型也会更快

5.数据可视化

6.数据压缩

降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。

三) PCA实现原理

首先考虑将数据X(n行D列)投影到一维空间中

我们可以使用D维向量u1来定义该D维空间上的一个方向,由于我们只关心u1的方向,并不关心u1的长度,所以假设 u1•u1转置=1

将x1:n条数据投影到该u1方向得到n个值,便是将m条D维的数据降维到1维的过程

向量的投影公式为:u1转置 • Xn

这样,每个数据点Xn被投影到一个标量u1转置 • Xn上,投影后数据的均值为u1转置•x拔

那么何种投影方式最好呢?

如下图展示,是一个二维的数据集合,将数据(n行2维)进行降维到(n行1维),选择一个u1特征向量(2维)进行投影,u1有无数组情况,那么u1如何选择?

==》

方法1:选择投影之后的数据,方差最大 那个的u1

方法2:选择投影之后的数据,离u1距离最近的u1

(两种方法结论一致,本文用方差最大进行求解)

四) PCA的最大方差形式

方差最大的u1怎么找?

所以求S(数据集Xn协方差)中特征值最大所对应的特征向量,就是投影后方差最大的u1

注:特征值与特征向量求法参考预备知识

五) PCA算法总结

目标:在信息损失最小的基础上,将n个d维数据降维至k维

1.拿到n个d维数据

2.计算其协方差矩阵S(通常会先对数据进行标准化),此时 S = X转置•X  (特征工程部分)

3.寻找方阵S的最大的k个特征值,找到对应这k个特征值的k个特征向量 u1:k   (算法部分)

4.对n个数据中每一个分别计算其在u1:k 方向上的投影,得到k个实数值,作为新的k个维度的取值

5.4的操作等价于 将X 矩阵 乘以 u1:k向量组成的矩阵

6.新来的数据也可以按照4或5操作,直接进行映射

六) 代码展示

# python 实现pca
import numpy as np

'''
X: 样本
k: 降维后的维度数
'''
def pca(X, k):
    # 获取样本条数,特征数
    n_samples, n_features = X.shape
    # 对每列求均值
    mean = np.array([np.mean(X[:, i]) for i in range(n_features)])
    # 协方差矩阵
    norm_X = X - mean
    scatter_matrix = np.dot(np.transpose(norm_X), norm_X)
    # 求协方差矩阵中特征值域特征向量
    eig_val, eig_vec = np.linalg.eig(scatter_matrix)
    # 取特征值top k个特征向量
    eig_paris = [(np.abs(eig_val[i]), eig_vec[:, i]) for i in range(n_features)]
    eig_paris.sort(reverse=True)
    feature = np.array([ele[1] for ele in eig_paris[:k]])
    # 根据top k特征向量进行降维
    data = np.dot(norm_X, np.transpose(feature))

    return data


X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])

# 将2维映射到1维
print(pca(X, 1))

降维结果

[[-0.50917706][-2.40151069][-3.7751606][1.20075534][2.05572155][3.42937146]]

往期精选

机器学习|支持向量机SVM(一)

机器学习|支持向量机SVM(二)

机器学习|支持向量机SVM(三)

机器学习|支持向量机SVM(四)

机器学习-线性回归(一)

机器学习-线性回归(二)

机器学习|梯度下降法

机器学习|逻辑回归


长按识别二维码关注我

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值