opencv——PCA(主要成分分析)数学原理推导

引言:

最近一直在学习主成分分析(PCA),所以想把最近学的一点知识整理一下,如果有不对的还请大家帮忙指正,共同学习。

首先我们知道当数据维度太大时,我们通常需要进行降维处理,降维处理的方式有很多种,PCA主成分分析法是一种常用的一种降维手段,它主要是基于方差来提取最有价值的信息,虽然降维之后我们并不知道每一维度的数据代表什么意义,但是它将主要的信息成分保留了下来,那么PCA是如何实现的呢?

本文详细推导了PCA的数学原理,最后以实例进行演算。


PCA的数学原理

(一)降维问题

大家都知道,PCA主要是用来将高维数据降为低维数据,并保留主要成分的。但是降维的现实意义是什么呢?如何保留主要成分呢?

一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2020年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下:

( 浏览量, 访客数, 下单数, 成交数, 成交金额)T=(500,240,25,13,2312.15)T

我们对这组5维向量进行降维分析:

从经验我们可以知道,“浏览量”和“访客数”往往具有较强的相关关系,而“下单数”和“成交数”也具有较强的相关关系。这里我们非正式的使用“相关关系”这个词,可以直观理解为“当某一天这个店铺的浏览量较高(或较低)时,我们应该很大程度上认为这天的访客数也较高(或较低)”。这种情况表明,如果我们删除浏览量或访客数其中一个指标,我们应该期待并不会丢失太多信息。因此我们可以删除一个,以降低机器学习算法的复杂度。

这就是降维的朴素思想描述,可以有助于直观理解降维的动机和可行性,但并不具有操作指导意义。

那么我们到底删除哪一列损失的信息才最小?亦或根本不是单纯删除几列,而是通过某些变换将原始数据变为更少的列但又使得丢失的信息最小?到底如何度量丢失信息的多少?如何根据原始数据决定具体的降维操作步骤?

上一篇:python-当给定一个数百个数组时,Sklearn PCA返回一个只有一个值的数组


下一篇:不使用路由器来实现不同网段(子网)计算机之间通信的方法